From 1ad5033e8bc46a6b26f7382e10f3b517eba03ac2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=AF=E8=88=AA?= Date: Fri, 1 Mar 2024 19:44:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Ejd-api=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/sql/qihang-oms.sql | 4 +- jd-api/.gitignore | 38 +++ jd-api/pom.xml | 118 +++++++ jd-api/src/main/java/com/qihang/jd/JdApi.java | 23 ++ .../qihang/jd/config/MybatisPlusConfig.java | 19 ++ .../qihang/jd/controller/HomeController.java | 12 + .../com/qihang/jd/mapper/SysUserMapper.java | 130 ++++++++ .../jd/service/impl/SysUserServiceImpl.java | 293 ++++++++++++++++++ jd-api/src/main/resources/application.yaml | 32 ++ .../resources/mapper/user/SysUserMapper.xml | 195 ++++++++++++ .../src/test/java/com/qihang/jd/AppTest.java | 38 +++ pom.xml | 3 +- tao-api/pom.xml | 15 - 13 files changed, 902 insertions(+), 18 deletions(-) create mode 100644 jd-api/.gitignore create mode 100644 jd-api/pom.xml create mode 100644 jd-api/src/main/java/com/qihang/jd/JdApi.java create mode 100644 jd-api/src/main/java/com/qihang/jd/config/MybatisPlusConfig.java create mode 100644 jd-api/src/main/java/com/qihang/jd/controller/HomeController.java create mode 100644 jd-api/src/main/java/com/qihang/jd/mapper/SysUserMapper.java create mode 100644 jd-api/src/main/java/com/qihang/jd/service/impl/SysUserServiceImpl.java create mode 100644 jd-api/src/main/resources/application.yaml create mode 100644 jd-api/src/main/resources/mapper/user/SysUserMapper.xml create mode 100644 jd-api/src/test/java/com/qihang/jd/AppTest.java diff --git a/doc/sql/qihang-oms.sql b/doc/sql/qihang-oms.sql index baf4abe6..6d74a6d1 100644 --- a/doc/sql/qihang-oms.sql +++ b/doc/sql/qihang-oms.sql @@ -11,7 +11,7 @@ Target Server Version : 80032 File Encoding : 65001 - Date: 01/03/2024 18:47:38 + Date: 01/03/2024 19:24:01 */ SET NAMES utf8mb4; @@ -88,7 +88,7 @@ CREATE TABLE `sys_platform` ( -- Records of sys_platform -- ---------------------------- INSERT INTO `sys_platform` VALUES (1, '天猫', 'TMALL', '12175777', '368dbbd183a77d551735be13f59bbcda'); -INSERT INTO `sys_platform` VALUES (2, '京东', 'JD', NULL, NULL); +INSERT INTO `sys_platform` VALUES (2, '京东', 'JD', 'FB4CC3688E6F9065D4FF510A53BB60FF', '40e8c8b2427f4e6db8f4a39af27d719e'); INSERT INTO `sys_platform` VALUES (3, '抖店', 'DOUDIAN', NULL, NULL); INSERT INTO `sys_platform` VALUES (4, '拼多多', 'PDD', NULL, NULL); diff --git a/jd-api/.gitignore b/jd-api/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/jd-api/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/jd-api/pom.xml b/jd-api/pom.xml new file mode 100644 index 00000000..43db90f3 --- /dev/null +++ b/jd-api/pom.xml @@ -0,0 +1,118 @@ + + 4.0.0 + + com.qihang + qihang-oms + 1.0-SNAPSHOT + + + com.qihang.jd + jd-api + jar + + jd-api + http://maven.apache.org + + 17 + UTF-8 + UTF-8 + 3.0.2 + 2022.0.0.0 + 0.11.5 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.springframework.boot + spring-boot-starter-undertow + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + com.qihang + security + 1.0-SNAPSHOT + + + mysql + mysql-connector-java + 8.0.33 + + + com.baomidou + mybatis-plus-spring-boot3-starter + 3.5.5 + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring-cloud-alibaba.version} + pom + import + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 17 + 17 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + com.example.demo.DemoApplication + true + + + + repackage + + repackage + + + + + + + diff --git a/jd-api/src/main/java/com/qihang/jd/JdApi.java b/jd-api/src/main/java/com/qihang/jd/JdApi.java new file mode 100644 index 00000000..0d0ac126 --- /dev/null +++ b/jd-api/src/main/java/com/qihang/jd/JdApi.java @@ -0,0 +1,23 @@ +package com.qihang.jd; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.context.annotation.ComponentScan; + +/** + * Hello world! + * + */ +@EnableDiscoveryClient +@ComponentScan(basePackages={"com.qihang"}) +//@MapperScan("com.qihang.jd.mapper") +@SpringBootApplication +public class JdApi +{ + public static void main( String[] args ) + { + System.out.println( "Hello jd-api!" ); + SpringApplication.run(JdApi.class, args); + } +} diff --git a/jd-api/src/main/java/com/qihang/jd/config/MybatisPlusConfig.java b/jd-api/src/main/java/com/qihang/jd/config/MybatisPlusConfig.java new file mode 100644 index 00000000..1339cea5 --- /dev/null +++ b/jd-api/src/main/java/com/qihang/jd/config/MybatisPlusConfig.java @@ -0,0 +1,19 @@ +package com.qihang.jd.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@MapperScan("com.qihang.jd.mapper") +public class MybatisPlusConfig { + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); //注意使用哪种数据库 + return interceptor; + } +} diff --git a/jd-api/src/main/java/com/qihang/jd/controller/HomeController.java b/jd-api/src/main/java/com/qihang/jd/controller/HomeController.java new file mode 100644 index 00000000..e7a5f75e --- /dev/null +++ b/jd-api/src/main/java/com/qihang/jd/controller/HomeController.java @@ -0,0 +1,12 @@ +package com.qihang.jd.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HomeController { + @GetMapping("/") + public String home(){ + return "{'code':0,'msg':'请通过api访问'}"; + } +} diff --git a/jd-api/src/main/java/com/qihang/jd/mapper/SysUserMapper.java b/jd-api/src/main/java/com/qihang/jd/mapper/SysUserMapper.java new file mode 100644 index 00000000..cd43d889 --- /dev/null +++ b/jd-api/src/main/java/com/qihang/jd/mapper/SysUserMapper.java @@ -0,0 +1,130 @@ +package com.qihang.jd.mapper; + +import com.qihang.security.entity.SysUser; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户表 数据层 + * + * @author qihang + */ +@Mapper +public interface SysUserMapper +{ + /** + * 根据条件分页查询用户列表 + * + * @param sysUser 用户信息 + * @return 用户信息集合信息 + */ + public List selectUserList(SysUser sysUser); + + /** + * 根据条件分页查询已配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + public List selectAllocatedList(SysUser user); + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + public List selectUnallocatedList(SysUser user); + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + public SysUser selectUserByUserName(String userName); + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * @return 用户对象信息 + */ + public SysUser selectUserById(Long userId); + + /** + * 新增用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + public int insertUser(SysUser user); + + /** + * 修改用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + public int updateUser(SysUser user); + + /** + * 修改用户头像 + * + * @param userName 用户名 + * @param avatar 头像地址 + * @return 结果 + */ + public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar); + + /** + * 重置用户密码 + * + * @param userName 用户名 + * @param password 密码 + * @return 结果 + */ + public int resetUserPwd(@Param("userName") String userName, @Param("password") String password); + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * @return 结果 + */ + public int deleteUserById(Long userId); + + /** + * 批量删除用户信息 + * + * @param userIds 需要删除的用户ID + * @return 结果 + */ + public int deleteUserByIds(Long[] userIds); + + /** + * 校验用户名称是否唯一 + * + * @param userName 用户名称 + * @return 结果 + */ + public SysUser checkUserNameUnique(String userName); + + /** + * 校验手机号码是否唯一 + * + * @param phonenumber 手机号码 + * @return 结果 + */ + public SysUser checkPhoneUnique(String phonenumber); + + /** + * 校验email是否唯一 + * + * @param email 用户邮箱 + * @return 结果 + */ + public SysUser checkEmailUnique(String email); +} diff --git a/jd-api/src/main/java/com/qihang/jd/service/impl/SysUserServiceImpl.java b/jd-api/src/main/java/com/qihang/jd/service/impl/SysUserServiceImpl.java new file mode 100644 index 00000000..aa2b8a5b --- /dev/null +++ b/jd-api/src/main/java/com/qihang/jd/service/impl/SysUserServiceImpl.java @@ -0,0 +1,293 @@ +package com.qihang.jd.service.impl; + +import com.qihang.common.common.ServiceException; +import com.qihang.common.constant.UserConstants; +import com.qihang.common.utils.StringUtils; +import com.qihang.security.entity.SysUser; +import com.qihang.security.service.ISysUserService; +import com.qihang.jd.mapper.SysUserMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 用户 业务层处理 + * + * @author qihang + */ +@Service +public class SysUserServiceImpl implements ISysUserService +{ + private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); + + @Autowired + private SysUserMapper userMapper; + + /** + * 根据条件分页查询用户列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + public List selectUserList(SysUser user) + { + return userMapper.selectUserList(user); + } + + /** + * 根据条件分页查询已分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + public List selectAllocatedList(SysUser user) + { + return userMapper.selectAllocatedList(user); + } + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + public List selectUnallocatedList(SysUser user) + { + return userMapper.selectUnallocatedList(user); + } + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + @Override + public SysUser selectUserByUserName(String userName) + { + return userMapper.selectUserByUserName(userName); + } + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * @return 用户对象信息 + */ + @Override + public SysUser selectUserById(Long userId) + { + return userMapper.selectUserById(userId); + } + + /** + * 校验用户名称是否唯一 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public boolean checkUserNameUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkUserNameUnique(user.getUserName()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验手机号码是否唯一 + * + * @param user 用户信息 + * @return + */ + @Override + public boolean checkPhoneUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验email是否唯一 + * + * @param user 用户信息 + * @return + */ + @Override + public boolean checkEmailUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkEmailUnique(user.getEmail()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验用户是否允许操作 + * + * @param user 用户信息 + */ + @Override + public void checkUserAllowed(SysUser user) + { + if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) + { + throw new ServiceException("不允许操作超级管理员用户"); + } + } + + /** + * 新增保存用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + @Transactional + public int insertUser(SysUser user) + { + // 新增用户信息 + int rows = userMapper.insertUser(user); +// // 新增用户岗位关联 +// insertUserPost(user); +// // 新增用户与角色管理 +// insertUserRole(user); + return rows; + } + + /** + * 注册用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public boolean registerUser(SysUser user) + { + return userMapper.insertUser(user) > 0; + } + + /** + * 修改保存用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + @Transactional + public int updateUser(SysUser user) + { + Long userId = user.getUserId(); +// // 删除用户与角色关联 +// userRoleMapper.deleteUserRoleByUserId(userId); +// // 新增用户与角色管理 +// insertUserRole(user); +// // 删除用户与岗位关联 +// userPostMapper.deleteUserPostByUserId(userId); + // 新增用户与岗位管理 +// insertUserPost(user); + return userMapper.updateUser(user); + } + + + /** + * 修改用户状态 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public int updateUserStatus(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 修改用户基本信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public int updateUserProfile(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 修改用户头像 + * + * @param userName 用户名 + * @param avatar 头像地址 + * @return 结果 + */ + @Override + public boolean updateUserAvatar(String userName, String avatar) + { + return userMapper.updateUserAvatar(userName, avatar) > 0; + } + + /** + * 重置用户密码 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public int resetPwd(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 重置用户密码 + * + * @param userName 用户名 + * @param password 密码 + * @return 结果 + */ + @Override + public int resetUserPwd(String userName, String password) + { + return userMapper.resetUserPwd(userName, password); + } + + + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * @return 结果 + */ + @Override + @Transactional + public int deleteUserById(Long userId) + { +// // 删除用户与角色关联 +// userRoleMapper.deleteUserRoleByUserId(userId); +// // 删除用户与岗位表 +// userPostMapper.deleteUserPostByUserId(userId); + return userMapper.deleteUserById(userId); + } + +} diff --git a/jd-api/src/main/resources/application.yaml b/jd-api/src/main/resources/application.yaml new file mode 100644 index 00000000..4ff1735c --- /dev/null +++ b/jd-api/src/main/resources/application.yaml @@ -0,0 +1,32 @@ +spring: + cloud: + nacos: + serverAddr: 127.0.0.1:8848 + discovery: + server-addr: 127.0.0.1:8848 + config: + import: + - nacos:qihang-oms.yaml?refresh=true + application: + name: jd-api + security: + user: + name: admin + password: password + basic: + enabled: true + +# 授权规则 +security: + rules: + - pattern: /api/** # 定义需要授权的URL模式 + +server: + port: 8083 + + +mybatis-plus: + mapper-locations: classpath*:mapper/**/*Mapper.xml + type-aliases-package: com.qihang.jd.domain;com.qihang.security.entity; + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启sql日志 \ No newline at end of file diff --git a/jd-api/src/main/resources/mapper/user/SysUserMapper.xml b/jd-api/src/main/resources/mapper/user/SysUserMapper.xml new file mode 100644 index 00000000..181c4ce0 --- /dev/null +++ b/jd-api/src/main/resources/mapper/user/SysUserMapper.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark + + from sys_user u + + + + + + + + + + + + + + + + + + + + insert into sys_user( + user_id, + dept_id, + user_name, + nick_name, + email, + avatar, + phonenumber, + sex, + password, + status, + create_by, + remark, + create_time + )values( + #{userId}, + #{deptId}, + #{userName}, + #{nickName}, + #{email}, + #{avatar}, + #{phonenumber}, + #{sex}, + #{password}, + #{status}, + #{createBy}, + #{remark}, + current_timestamp() + ) + + + + update sys_user + + dept_id = #{deptId}, + user_name = #{userName}, + nick_name = #{nickName}, + email = #{email}, + phonenumber = #{phonenumber}, + sex = #{sex}, + avatar = #{avatar}, + password = #{password}, + status = #{status}, + login_ip = #{loginIp}, + login_date = #{loginDate}, + update_by = #{updateBy}, + remark = #{remark}, + update_time = current_timestamp() + + where user_id = #{userId} + + + + update sys_user set status = #{status} where user_id = #{userId} + + + + update sys_user set avatar = #{avatar} where user_name = #{userName} + + + + update sys_user set password = #{password} where user_name = #{userName} + + + + update sys_user set del_flag = '2' where user_id = #{userId} + + + + update sys_user set del_flag = '2' where user_id in + + #{userId} + + + + \ No newline at end of file diff --git a/jd-api/src/test/java/com/qihang/jd/AppTest.java b/jd-api/src/test/java/com/qihang/jd/AppTest.java new file mode 100644 index 00000000..c74a8214 --- /dev/null +++ b/jd-api/src/test/java/com/qihang/jd/AppTest.java @@ -0,0 +1,38 @@ +package com.qihang.jd; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/pom.xml b/pom.xml index 44b110ea..a8e6646f 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,8 @@ api core - + jd-api + diff --git a/tao-api/pom.xml b/tao-api/pom.xml index dca92a7b..cf820cb0 100644 --- a/tao-api/pom.xml +++ b/tao-api/pom.xml @@ -109,8 +109,6 @@ mybatis-plus-spring-boot3-starter 3.5.5 - - org.apache.commons commons-lang3 @@ -121,19 +119,6 @@ security 1.0-SNAPSHOT - - - - - - - - - - - - - org.projectlombok lombok