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