mac 2 лет назад
Родитель
Сommit
442931b378
48 измененных файлов с 1129 добавлено и 13 удалено
  1. 96 0
      .drone.yml
  2. 2 2
      kxs-common/kxs-common-mybatis/src/main/java/com/kxs/common/mybatis/config/MybatisPlusMetaObjectHandler.java
  3. 1 1
      kxs-transfer/src/main/java/com/kxs/transfer/api/config/ConsumerAssignConfig.java
  4. 41 1
      kxs-transfer/src/main/java/com/kxs/transfer/api/controller/DtsController.java
  5. 6 6
      kxs-transfer/src/main/java/com/kxs/transfer/api/listener/MysqlConsumerListener.java
  6. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsBankChangeLogMapper.java
  7. 27 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserAddressMapper.java
  8. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserAdvanceMapper.java
  9. 24 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserAmountLogMapper.java
  10. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserAmountMapper.java
  11. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserBankMapper.java
  12. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserByStageLogMapper.java
  13. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserByStageMapper.java
  14. 18 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserMapper.java
  15. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserPresetLogMapper.java
  16. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserRealMapper.java
  17. 21 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserWithdrawalMapper.java
  18. 12 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/model/KxsDtsLog.java
  19. 15 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsBankChangeLogService.java
  20. 20 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserAddressService.java
  21. 17 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserAdvanceService.java
  22. 15 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserAmountLogService.java
  23. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserAmountService.java
  24. 18 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserBankService.java
  25. 15 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserByStageLogService.java
  26. 15 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserByStageService.java
  27. 15 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserPresetLogService.java
  28. 15 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserRealService.java
  29. 24 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserService.java
  30. 22 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserWithdrawalService.java
  31. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsBankChangeLogServiceImpl.java
  32. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserAddressServiceImpl.java
  33. 22 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserAdvanceServiceImpl.java
  34. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserAmountLogServiceImpl.java
  35. 29 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserAmountServiceImpl.java
  36. 24 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserBankServiceImpl.java
  37. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserByStageLogServiceImpl.java
  38. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserByStageServiceImpl.java
  39. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserPresetLogServiceImpl.java
  40. 19 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserRealServiceImpl.java
  41. 262 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserServiceImpl.java
  42. 36 0
      kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserWithdrawalServiceImpl.java
  43. 1 1
      kxs-transfer/src/main/resources/application.yml
  44. 14 0
      kxs-transfer/src/main/resources/import.txt
  45. 6 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUser.java
  46. 6 2
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUserBank.java
  47. 1 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserBankMapper.xml
  48. 1 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserMapper.xml

+ 96 - 0
.drone.yml

@@ -92,3 +92,99 @@ trigger:
     include:
       - pull_request
       - push
+
+---
+kind: pipeline
+type: docker
+name: kxs-transfer
+
+volumes: # 声明数据卷
+  - name: mvn_repo # 数据卷名称
+    # Host Volume, 挂载到宿主机上的卷轴
+    host:
+      # 宿主机的绝对路径
+      path: /home/ABServer/cache/mvn_repo
+  - name: mvn_config
+    host:
+      path: /home/ABServer/config/mvn/
+  - name: targetDir
+    host:
+      path: /kxs-transfer
+
+clone:
+  disable: false # 启用代码拉取
+
+steps:
+  - name: build-project
+    image: maven:3.9.4-amazoncorretto-17
+    pull: if-not-exists
+    depends_on: [clone] # 依赖的步骤
+    volumes: # 挂载数据卷
+      - name: mvn_repo # 数据卷名称
+        path: /usr/share/maven/repo # 容器内目录 绝对路径
+      - name: targetDir
+        path: /drone/src/dist/
+      - name: mvn_config
+        path: /usr/share/maven/conf/
+    commands: # 执行命令
+      - mvn clean package -Dmaven.test.skip=true -P test
+      - cp /drone/src/kxs-transfer/target/*.jar /drone/src/dist/ && cp -r /drone/src/kxs-transfer/target/lib /drone/src/dist/ && cp -r /drone/src/kxs-transfer/target/config /drone/src/dist/ # 复制文件
+    when:
+      status:
+        - success # 当前步骤成功时执行
+  - name: scp-project
+    image: appleboy/drone-scp
+    pull: if-not-exists
+    depends_on: [build-project] # 依赖的步骤
+    volumes: # 挂载数据卷
+      - name: targetDir # 数据卷名称
+        path: /kxs-transfer # 容器内目录 绝对路径
+    settings:
+      host:
+        from_secret: host
+      username:
+        from_secret: username
+      password:
+        from_secret: userpwd
+      port: 22
+      command_timeout: 2m
+      target: /home/ABServer/deploy-ready/
+      source:
+        - echo ====开始拷贝=======
+        - /kxs-transfer/*.jar
+        - /kxs-transfer/lib
+        - /kxs-transfer/config
+        - echo ====结束拷贝=======
+      when:
+        status:
+          - success # 当前步骤成功时执行
+
+  - name: deploy-project
+    image: appleboy/drone-ssh
+    pull: if-not-exists
+    depends_on: [scp-project] # 依赖的步骤
+    settings:
+      host:
+        from_secret: host
+      username:
+        from_secret: username
+      password:
+        from_secret: userpwd
+      port: 22
+      command_timeout: 2m
+      script:
+        - echo ====开始部署=======
+        - cd /home/ABServer/
+        - cp -r /home/ABServer/deploy-ready/kxs-transfer /home/ABServer/webroot/
+        - docker stop kxs-transfer && docker rm kxs-transfer && docker-compose up -d
+        # - docker restart nodeServer1
+        - echo ====部署成功=======
+
+trigger:
+  branch:
+    include:
+      - master
+  event:
+    include:
+      - pull_request
+      - push

+ 2 - 2
kxs-common/kxs-common-mybatis/src/main/java/com/kxs/common/mybatis/config/MybatisPlusMetaObjectHandler.java

@@ -28,8 +28,8 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
 		log.debug("mybatis plus start insert fill ....");
 		LocalDateTime now = LocalDateTime.now();
 
-		fillValIfNullByName("createTime", now, metaObject, true);
-		fillValIfNullByName("updateTime", now, metaObject, true);
+		fillValIfNullByName("createTime", now, metaObject, false);
+		fillValIfNullByName("updateTime", now, metaObject, false);
 		fillValIfNullByName("createBy", getUserName(), metaObject, true);
 		fillValIfNullByName("updateBy", getUserName(), metaObject, true);
 

+ 1 - 1
kxs-transfer/src/main/java/com/kxs/transfer/api/config/ConsumerAssignConfig.java

@@ -37,7 +37,7 @@ public class ConsumerAssignConfig implements ApplicationListener<ContextRefreshe
     @Override
     @Async
     public void onApplicationEvent(ContextRefreshedEvent event) {
-        System.out.println("异步开启 kafka客户端处理数据...");
+        System.out.println("async kafka is start...");
         //如果是第二次加载则不处理了
         if(event.getApplicationContext().getParent() != null) {
             return;

+ 41 - 1
kxs-transfer/src/main/java/com/kxs/transfer/api/controller/DtsController.java

@@ -2,14 +2,18 @@ package com.kxs.transfer.api.controller;
 
 import com.alibaba.fastjson.JSON;
 import com.aliyun.dts.subscribe.clients.record.DefaultUserRecord;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.kxs.transfer.api.annotation.DtsMsgListener;
 import com.kxs.transfer.api.model.KxsDtsLog;
 import com.kxs.transfer.api.model.table.DMLData;
 import com.kxs.transfer.api.service.KxsDtsLogService;
+import com.kxs.transfer.api.service.user.KxsUserService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * <p>
  *     DTS控制器
@@ -27,15 +31,51 @@ public class DtsController {
 
     private final KxsDtsLogService kxsDtsLogService;
 
+    private final KxsUserService kxsUserService;
+
     @DtsMsgListener
     public void dtsListener(Long dataId, DMLData dmlData, DefaultUserRecord record){
 
+        //过滤无效数据
+        if("Users".equals(dmlData.getTableName())){
+            List<String> changeFieldList = dmlData.getChangeFieldList();
+            //过滤Users老表记录登陆设备的信息日志
+            if (changeFieldList.size() == 2 && changeFieldList.contains("DeviceId") && changeFieldList.contains("DeviceType")){
+                record.commit(String.valueOf(record.getSourceTimestamp()));
+                return;
+            }
+            if (changeFieldList.size() == 1 && changeFieldList.contains("DeviceId")){
+                record.commit(String.valueOf(record.getSourceTimestamp()));
+                return;
+            }
+            //过滤Users本月交易额字段
+            if (changeFieldList.size() == 1 && changeFieldList.contains("ThisMonthTrade")){
+                record.commit(String.valueOf(record.getSourceTimestamp()));
+                return;
+            }
+        }
+
+        //去重数据
+        KxsDtsLog dtsLog = kxsDtsLogService.getOne(Wrappers.<KxsDtsLog>lambdaQuery().eq(KxsDtsLog::getDataId, dataId));
+        if(dtsLog != null){
+            log.info("dts的数据重复:{}", dmlData.getValidFieldDataMap());
+            record.commit(String.valueOf(record.getSourceTimestamp()));
+            return;
+        }
+
         //存储历史数据
         KxsDtsLog kxsDtsLog = new KxsDtsLog();
         kxsDtsLog.setDataId(dataId);
         kxsDtsLog.setContent(JSON.toJSONString(dmlData));
+        kxsDtsLog.setTableName(dmlData.getTableName());
+        kxsDtsLog.setOperation(dmlData.getOperation().toString());
         kxsDtsLogService.save(kxsDtsLog);
-        log.info("消费dts的数据表信息:{}", dmlData);
+        log.info("消费dts的数据表信息:{}", dmlData.getValidFieldDataMap());
+
+        if("Users".equals(dmlData.getTableName())){
+            kxsUserService.changeUser(dmlData);
+        }
+
         record.commit(String.valueOf(record.getSourceTimestamp()));
     }
 

+ 6 - 6
kxs-transfer/src/main/java/com/kxs/transfer/api/listener/MysqlConsumerListener.java

@@ -135,7 +135,7 @@ public class MysqlConsumerListener implements RecordListener {
             Long dataId = avroRecord.getId();
             DMLData dmlData = parseDML(record);
 
-            SpringContextUtil.invokeMethodByAnnotation(DtsMsgListener.class,dataId, dmlData, record);
+            SpringContextUtil.invokeMethodByAnnotation(DtsMsgListener.class, dataId, dmlData, record);
 
         }
 
@@ -179,7 +179,7 @@ public class MysqlConsumerListener implements RecordListener {
      * @param changeFieldList 更改字段列表
      * @return {@link Map}<{@link String}, {@link Object}>
      */
-    public static Map<String, Object> parseValidUpdateField(Map<String, FieldData> fieldDataMap, List<String> changeFieldList) {
+    private Map<String, Object> parseValidUpdateField(Map<String, FieldData> fieldDataMap, List<String> changeFieldList) {
         Map<String, Object> res = new HashMap<>(16);
         for (String f : changeFieldList) {
             FieldData fieldData = fieldDataMap.get(f);
@@ -199,7 +199,7 @@ public class MysqlConsumerListener implements RecordListener {
      * @param fieldName    数据字段名称
      * @return {@link String}
      */
-    private static String getFieldValue(Map<String, FieldData> fieldDataMap, String fieldName) {
+    private String getFieldValue(Map<String, FieldData> fieldDataMap, String fieldName) {
         FieldData fieldData = fieldDataMap.get(fieldName);
         if (fieldData != null) {
             Object value = fieldData.getValue();
@@ -223,7 +223,7 @@ public class MysqlConsumerListener implements RecordListener {
      * @param changeFieldList 更改字段列表
      * @return {@link Map}<{@link String}, {@link FieldData}>
      */
-    public static Map<String, FieldData> parseUpdateField(Record record, List<String> changeFieldList) {
+    private Map<String, FieldData> parseUpdateField(Record record, List<String> changeFieldList) {
         List<Field> fields = (List<Field>) record.getFields();
         FieldEntryHolder[] fieldArray = getFieldEntryHolder(record);
         FieldEntryHolder before = fieldArray[0];
@@ -270,7 +270,7 @@ public class MysqlConsumerListener implements RecordListener {
         }
         return fieldDataMap;
     }
-    private static Object getTypeValue(Field field, Object toPrintBefore) {
+    private Object getTypeValue(Field field, Object toPrintBefore) {
 
         Object text = MysqlFieldConverter.convert(field, toPrintBefore).toString();
 
@@ -282,7 +282,7 @@ public class MysqlConsumerListener implements RecordListener {
         return text;
     }
 
-    private static FieldEntryHolder[] getFieldEntryHolder(Record record) {
+    private FieldEntryHolder[] getFieldEntryHolder(Record record) {
         // this is a simple impl, may exist unhandled situation
         FieldEntryHolder[] fieldArray = new FieldEntryHolder[2];
 

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsBankChangeLogMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsBankChangeLog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户结算卡变更记录(KxsBankChangeLog)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Mapper
+public interface KxsBankChangeLogMapper extends BaseMapper<KxsBankChangeLog> {
+
+}
+

+ 27 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserAddressMapper.java

@@ -0,0 +1,27 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsUserAddress;
+import com.kxs.user.api.vo.kxsapp.userAddress.UserAddressListVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 用户收货地址表(KxsUserAddress)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:55
+ */
+@Mapper
+public interface KxsUserAddressMapper extends BaseMapper<KxsUserAddress> {
+
+    /**
+     * 用户地址列表
+     *
+     * @param userId 用户 ID
+     * @return {@link List}<{@link UserAddressListVO}>
+     */
+    List<UserAddressListVO> userAddressList(Long userId);
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserAdvanceMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsUserAdvance;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 客小爽用户预扣款表(KxsUserAdvance)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Mapper
+public interface KxsUserAdvanceMapper extends BaseMapper<KxsUserAdvance> {
+
+}
+

+ 24 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserAmountLogMapper.java

@@ -0,0 +1,24 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.user.api.dto.kxsapp.userAccount.UserAmountVariationListDTO;
+import com.kxs.user.api.model.KxsUserAmountLog;
+import com.kxs.user.api.vo.kxsapp.userAccount.UserAmountVariationListVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 用户余额记录日志表(KxsUserAmountLog)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Mapper
+public interface KxsUserAmountLogMapper extends BaseMapper<KxsUserAmountLog> {
+
+    IPage<UserAmountVariationListVO> getByPage(Page<UserAmountVariationListVO> page, @Param("query") UserAmountVariationListDTO param);
+
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserAmountMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsUserAmount;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户账户表(KxsUserAmount)表数据库访问层
+ *
+ * @author 系统
+ * @since 2023-12-11 23:33:29
+ */
+@Mapper
+public interface KxsUserAmountMapper extends BaseMapper<KxsUserAmount> {
+
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserBankMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsUserBank;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户银行卡表(KxsUserBank)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:55
+ */
+@Mapper
+public interface KxsUserBankMapper extends BaseMapper<KxsUserBank> {
+
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserByStageLogMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsUserByStageLog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户分期记录表(KxsUserByStageLog)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Mapper
+public interface KxsUserByStageLogMapper extends BaseMapper<KxsUserByStageLog> {
+
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserByStageMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsUserByStage;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户分期表(KxsUserByStage)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Mapper
+public interface KxsUserByStageMapper extends BaseMapper<KxsUserByStage> {
+
+}
+

+ 18 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserMapper.java

@@ -0,0 +1,18 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户表(KxsSecurityUser)表数据库访问层
+ *
+ * @author 快秃顶的码农
+ * @since 2023-12-05 13:50:09
+ */
+@Mapper
+public interface KxsUserMapper extends BaseMapper<KxsUser> {
+
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserPresetLogMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsUserPresetLog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户预设职级日志表(KxsUserPresetLog)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Mapper
+public interface KxsUserPresetLogMapper extends BaseMapper<KxsUserPresetLog> {
+
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserRealMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsUserReal;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户实名信息表(KxsUserReal)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:55
+ */
+@Mapper
+public interface KxsUserRealMapper extends BaseMapper<KxsUserReal> {
+
+}
+

+ 21 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserWithdrawalMapper.java

@@ -0,0 +1,21 @@
+package com.kxs.transfer.api.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.user.api.model.KxsUserWithdrawal;
+import com.kxs.user.api.vo.kxsapp.userAccount.WithdrawListVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户提现申请表(KxsUserWithdrawal)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Mapper
+public interface KxsUserWithdrawalMapper extends BaseMapper<KxsUserWithdrawal> {
+
+    IPage<WithdrawListVO> getByPage(Page<WithdrawListVO> page);
+}
+

+ 12 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/model/KxsDtsLog.java

@@ -50,6 +50,18 @@ public class KxsDtsLog extends Model<KxsDtsLog> implements Serializable {
     @Schema(description = "原始数据")
     private String content;
 
+    /**
+     * 操作类型
+     */
+    @Schema(description = "操作类型")
+    private String operation;
+
+    /**
+     * 表名
+     */
+    @Schema(description = "表名")
+    private String tableName;
+
 
     /**
      * 新增时间

+ 15 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsBankChangeLogService.java

@@ -0,0 +1,15 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.user.api.model.KxsBankChangeLog;
+
+/**
+ * 用户结算卡变更记录(KxsBankChangeLog)表服务接口
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+public interface KxsBankChangeLogService extends IService<KxsBankChangeLog> {
+
+}
+

+ 20 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserAddressService.java

@@ -0,0 +1,20 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.user.api.dto.kxsapp.userAddress.UserAddressDTO;
+import com.kxs.user.api.model.KxsUserAddress;
+import com.kxs.user.api.vo.kxsapp.userAddress.UserAddressListVO;
+
+import java.util.List;
+
+/**
+ * 用户收货地址表(KxsUserAddress)表服务接口
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+public interface KxsUserAddressService extends IService<KxsUserAddress> {
+
+}
+

+ 17 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserAdvanceService.java

@@ -0,0 +1,17 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.user.api.model.KxsUserAdvance;
+
+/**
+ * 客小爽用户预扣款表(KxsUserAdvance)表服务接口
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+public interface KxsUserAdvanceService extends IService<KxsUserAdvance> {
+
+
+}
+

+ 15 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserAmountLogService.java

@@ -0,0 +1,15 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.user.api.model.KxsUserAmountLog;
+
+/**
+ * 用户余额记录日志表(KxsUserAmountLog)表服务接口
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+public interface KxsUserAmountLogService extends IService<KxsUserAmountLog> {
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserAmountService.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.user.api.model.KxsUserAmount;
+import com.kxs.user.api.model.KxsUserAmountLog;
+import com.kxs.user.api.vo.kxsapp.userAccount.MyAccountVO;
+
+/**
+ * 用户账户表(KxsUserAmount)表服务接口
+ *
+ * @author 系统
+ * @since 2023-12-11 23:33:30
+ */
+public interface KxsUserAmountService extends IService<KxsUserAmount> {
+
+
+}
+

+ 18 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserBankService.java

@@ -0,0 +1,18 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.user.api.dto.kxsapp.user.UserUpdateBankInfoDTO;
+import com.kxs.user.api.model.KxsUserBank;
+import com.kxs.user.api.vo.kxsapp.userAccount.BindBankInfoVO;
+
+/**
+ * 用户银行卡表(KxsUserBank)表服务接口
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:55
+ */
+public interface KxsUserBankService extends IService<KxsUserBank> {
+
+}
+

+ 15 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserByStageLogService.java

@@ -0,0 +1,15 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.user.api.model.KxsUserByStageLog;
+
+/**
+ * 用户分期记录表(KxsUserByStageLog)表服务接口
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+public interface KxsUserByStageLogService extends IService<KxsUserByStageLog> {
+
+}
+

+ 15 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserByStageService.java

@@ -0,0 +1,15 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.user.api.model.KxsUserByStage;
+
+/**
+ * 用户分期表(KxsUserByStage)表服务接口
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+public interface KxsUserByStageService extends IService<KxsUserByStage> {
+
+}
+

+ 15 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserPresetLogService.java

@@ -0,0 +1,15 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.user.api.model.KxsUserPresetLog;
+
+/**
+ * 用户预设职级日志表(KxsUserPresetLog)表服务接口
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+public interface KxsUserPresetLogService extends IService<KxsUserPresetLog> {
+
+}
+

+ 15 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserRealService.java

@@ -0,0 +1,15 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.user.api.model.KxsUserReal;
+
+/**
+ * 用户实名信息表(KxsUserReal)表服务接口
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:55
+ */
+public interface KxsUserRealService extends IService<KxsUserReal> {
+
+}
+

+ 24 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserService.java

@@ -0,0 +1,24 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.user.api.dto.kxsapp.app.ForgetPwdDTO;
+import com.kxs.user.api.dto.kxsapp.app.RegisterDTO;
+import com.kxs.user.api.dto.kxsapp.user.*;
+import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
+import com.kxs.user.api.vo.kxsapp.user.UserCodeInfoVO;
+import com.kxs.user.api.vo.kxsapp.user.UserInfoVO;
+
+/**
+ * 用户表(KxsSecurityUser)表服务接口
+ *
+ * @author 快秃顶的码农
+ * @since 2023-12-05 13:50:16
+ */
+public interface KxsUserService extends IService<KxsUser> {
+
+    void changeUser(DMLData dmlData);
+}
+

+ 22 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserWithdrawalService.java

@@ -0,0 +1,22 @@
+package com.kxs.transfer.api.service.user;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.util.R;
+import com.kxs.user.api.dto.kxsapp.userAccount.WithdrawDepositDTO;
+import com.kxs.user.api.model.KxsUserWithdrawal;
+import com.kxs.user.api.vo.kxsapp.userAccount.WithdrawDetailVO;
+import com.kxs.user.api.vo.kxsapp.userAccount.WithdrawListVO;
+
+/**
+ * 用户提现申请表(KxsUserWithdrawal)表服务接口
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+public interface KxsUserWithdrawalService extends IService<KxsUserWithdrawal> {
+
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsBankChangeLogServiceImpl.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsBankChangeLogMapper;
+import com.kxs.transfer.api.service.user.KxsBankChangeLogService;
+import com.kxs.user.api.model.KxsBankChangeLog;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户结算卡变更记录(KxsBankChangeLog)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Service("kxsBankChangeLogService")
+public class KxsBankChangeLogServiceImpl extends ServiceImpl<KxsBankChangeLogMapper, KxsBankChangeLog> implements KxsBankChangeLogService {
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserAddressServiceImpl.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsUserAddressMapper;
+import com.kxs.transfer.api.service.user.KxsUserAddressService;
+import com.kxs.user.api.model.KxsUserAddress;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户收货地址表(KxsUserAddress)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Service("kxsUserAddressService")
+public class KxsUserAddressServiceImpl extends ServiceImpl<KxsUserAddressMapper, KxsUserAddress> implements KxsUserAddressService {
+
+}
+

+ 22 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserAdvanceServiceImpl.java

@@ -0,0 +1,22 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsUserAdvanceMapper;
+import com.kxs.transfer.api.service.user.KxsUserAdvanceService;
+import com.kxs.user.api.model.KxsUserAdvance;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 客小爽用户预扣款表(KxsUserAdvance)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Service("kxsUserAdvanceService")
+@RequiredArgsConstructor
+public class KxsUserAdvanceServiceImpl extends ServiceImpl<KxsUserAdvanceMapper, KxsUserAdvance> implements KxsUserAdvanceService {
+
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserAmountLogServiceImpl.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsUserAmountLogMapper;
+import com.kxs.transfer.api.service.user.KxsUserAmountLogService;
+import com.kxs.user.api.model.KxsUserAmountLog;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户余额记录日志表(KxsUserAmountLog)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Service("kxsUserAmountLogService")
+public class KxsUserAmountLogServiceImpl extends ServiceImpl<KxsUserAmountLogMapper, KxsUserAmountLog> implements KxsUserAmountLogService {
+
+}
+

+ 29 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserAmountServiceImpl.java

@@ -0,0 +1,29 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsUserAmountMapper;
+import com.kxs.transfer.api.service.user.KxsUserAmountService;
+import com.kxs.user.api.model.KxsUserAmount;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户账户表(KxsUserAmount)表服务实现类
+ *
+ * @author 系统
+ * @since 2023-12-11 23:33:30
+ */
+@Service("kxsUserAmountService")
+@RequiredArgsConstructor
+public class KxsUserAmountServiceImpl extends ServiceImpl<KxsUserAmountMapper, KxsUserAmount> implements KxsUserAmountService {
+
+
+
+
+
+
+
+
+
+}
+

+ 24 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserBankServiceImpl.java

@@ -0,0 +1,24 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsUserBankMapper;
+import com.kxs.transfer.api.service.user.KxsUserBankService;
+import com.kxs.user.api.model.KxsUserBank;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户银行卡表(KxsUserBank)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:55
+ */
+@Service("kxsUserBankService")
+public class KxsUserBankServiceImpl extends ServiceImpl<KxsUserBankMapper, KxsUserBank> implements KxsUserBankService {
+
+
+
+
+
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserByStageLogServiceImpl.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsUserByStageLogMapper;
+import com.kxs.transfer.api.service.user.KxsUserByStageLogService;
+import com.kxs.user.api.model.KxsUserByStageLog;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户分期记录表(KxsUserByStageLog)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Service("kxsUserByStageLogService")
+public class KxsUserByStageLogServiceImpl extends ServiceImpl<KxsUserByStageLogMapper, KxsUserByStageLog> implements KxsUserByStageLogService {
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserByStageServiceImpl.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsUserByStageMapper;
+import com.kxs.transfer.api.service.user.KxsUserByStageService;
+import com.kxs.user.api.model.KxsUserByStage;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户分期表(KxsUserByStage)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Service("kxsUserByStageService")
+public class KxsUserByStageServiceImpl extends ServiceImpl<KxsUserByStageMapper, KxsUserByStage> implements KxsUserByStageService {
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserPresetLogServiceImpl.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsUserPresetLogMapper;
+import com.kxs.transfer.api.service.user.KxsUserPresetLogService;
+import com.kxs.user.api.model.KxsUserPresetLog;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户预设职级日志表(KxsUserPresetLog)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Service("kxsUserPresetLogService")
+public class KxsUserPresetLogServiceImpl extends ServiceImpl<KxsUserPresetLogMapper, KxsUserPresetLog> implements KxsUserPresetLogService {
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserRealServiceImpl.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsUserRealMapper;
+import com.kxs.transfer.api.service.user.KxsUserRealService;
+import com.kxs.user.api.model.KxsUserReal;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户实名信息表(KxsUserReal)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:55
+ */
+@Service("kxsUserRealService")
+public class KxsUserRealServiceImpl extends ServiceImpl<KxsUserRealMapper, KxsUserReal> implements KxsUserRealService {
+
+}
+

+ 262 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserServiceImpl.java

@@ -0,0 +1,262 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.StrUtil;
+import com.aliyun.dts.subscribe.clients.record.OperationType;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.constant.enums.ErrorTypeEnum;
+import com.kxs.common.core.exception.GlobalCustomerException;
+import com.kxs.common.core.util.R;
+import com.kxs.store.api.feign.RemoteKxsStoreService;
+import com.kxs.store.api.model.KxsWarehouseLimit;
+import com.kxs.system.api.feign.RemoteUserMsgService;
+import com.kxs.system.api.model.KxsUserMsg;
+import com.kxs.system.api.util.MsgTemplateUtil;
+import com.kxs.transfer.api.mapper.user.KxsUserAmountMapper;
+import com.kxs.transfer.api.mapper.user.KxsUserBankMapper;
+import com.kxs.transfer.api.mapper.user.KxsUserMapper;
+import com.kxs.transfer.api.mapper.user.KxsUserRealMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.service.user.KxsUserService;
+import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.model.KxsUserAmount;
+import com.kxs.user.api.model.KxsUserBank;
+import com.kxs.user.api.model.KxsUserReal;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * 用户表(KxsSecurityUser)表服务实现类
+ *
+ * @author 快秃顶的码农
+ * @since 2023-12-05 13:50:24
+ */
+@Service
+@RequiredArgsConstructor
+public class KxsUserServiceImpl extends ServiceImpl<KxsUserMapper, KxsUser> implements KxsUserService {
+
+    private final KxsUserRealMapper kxsUserRealMapper;
+
+    private final KxsUserBankMapper kxsUserBankMapper;
+
+    private final KxsUserAmountMapper userAmountMapper;
+
+    private final RemoteKxsStoreService remoteKxsStoreService;
+
+    private final RemoteUserMsgService remoteUserMsgService;
+
+    private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void changeUser(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> fieldDataMap = dmlData.getValidFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        String userId = dmlData.getId();
+
+        KxsUser kxsUser = baseMapper.selectById(userId);
+        if(kxsUser == null){
+            return;
+        }
+
+        KxsUser user = new KxsUser();
+        KxsUserReal userReal = new KxsUserReal();
+        KxsUserBank userBank = new KxsUserBank();
+        //操作类型
+        OperationType operation = dmlData.getOperation();
+
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "RealName":
+                    user.setUsername(fieldDataMap.get(field).toString());
+                    userReal.setRealName(fieldDataMap.get(field).toString());
+                    break;
+                case "CertId":
+                    userReal.setIdCard(fieldDataMap.get(field).toString());
+                    break;
+                case "HandCertImage":
+                    userReal.setIdCardHand(fieldDataMap.get(field).toString());
+                    break;
+                case "CertReverseImage":
+                    userReal.setIdCardRear(fieldDataMap.get(field).toString());
+                    break;
+                case "CertFrontImage":
+                    userReal.setIdCardFront(fieldDataMap.get(field).toString());
+                    break;
+                case "SettleBankName":
+                    userBank.setBankName(fieldDataMap.get(field).toString());
+                    break;
+                case "Mobile":
+                    user.setPhone(fieldDataMap.get(field).toString());
+                    break;
+                case "SettleBankCardNo":
+                    userBank.setBankCode(fieldDataMap.get(field).toString());
+                    break;
+                case "BankCardPositiveImage":
+                    userBank.setBankPic(fieldDataMap.get(field).toString());
+                    break;
+                case "SeoTitle":
+                    userBank.setBankOpen(fieldDataMap.get(field).toString());
+                    break;
+                case "SettleBankCardName":
+                    userBank.setBankCardName(fieldDataMap.get(field).toString());
+                    break;
+                case "LoginPwdDisplay":
+                    user.setPassword(fieldDataMap.get(field).toString());
+                    break;
+                case "ReferralUserId":
+                    user.setHiddenLevel(Integer.valueOf(fieldDataMap.get(field).toString()));
+                    break;
+                case "Areas":
+                    user.setAddress(fieldDataMap.get(field).toString());
+                    break;
+                case "ParentUserId":
+                    user.setPid(Integer.valueOf(fieldDataMap.get(field).toString()));
+                    break;
+                case "ParentNav":
+                    String pidPath = fieldDataMap.get(field).toString().replaceAll(",,", ",");
+                    user.setPidPath("0" + pidPath);
+                    break;
+                case "MakerCode":
+                    user.setUserCode(fieldDataMap.get(field).toString());
+                    break;
+                case "HeadPhoto":
+                    user.setAvatar(fieldDataMap.get(field).toString());
+                    break;
+                case "UserLevel":
+                    user.setUserLevel(Integer.valueOf(fieldDataMap.get(field).toString()));
+                    break;
+                case "PayPwdDisplay":
+                    user.setPayPwd(fieldDataMap.get(field).toString());
+                    break;
+                case "AuthFlag":
+                    user.setRealStatus(Integer.valueOf(fieldDataMap.get(field).toString()));
+                    break;
+                case "AuthDate":
+                    userReal.setCreateTime(LocalDateTimeUtil.parse(fieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    userBank.setCreateTime(LocalDateTimeUtil.parse(fieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "Status":
+                    if(Integer.parseInt(fieldDataMap.get(field).toString()) == 0){
+                        user.setStatus(1);
+                    }else{
+                        user.setStatus(0);
+                    }
+                    break;
+                case "MerchantType":
+                    user.setIsMerchantMaker(Integer.valueOf(fieldDataMap.get(field).toString()));
+                    break;
+                case "LockStatus":
+                    if(Integer.parseInt(fieldDataMap.get(field).toString()) == 1){
+                        user.setStatus(2);
+                    }else{
+                        user.setStatus(1);
+                    }
+                    break;
+                case "Remark":
+                    user.setRemark(fieldDataMap.get(field).toString());
+                    break;
+                case "LogOutDate":
+                    user.setUpdateTime(LocalDateTimeUtil.parse(fieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+
+        if(operation.equals(OperationType.UPDATE)){
+//            user.setId(Integer.valueOf(userId));
+//            userReal.setUserId(Integer.valueOf(userId));
+//            userBank.setUserId(Integer.valueOf(userId));
+
+            if(BeanUtil.isNotEmpty(user, "entityClass")){
+                user.setId(Integer.valueOf(userId));
+                //密码明文
+                if(StrUtil.isNotBlank(user.getPassword())){
+                    user.setPassword(ENCODER.encode(user.getPassword() + kxsUser.getSalt()));
+                }
+                //支付密码明文
+                if(StrUtil.isNotBlank(user.getPayPwd())){
+                    user.setPayPwd(ENCODER.encode(user.getPayPwd() + kxsUser.getSalt()));
+                }
+                baseMapper.updateById(user);
+            }
+            if(BeanUtil.isNotEmpty(userReal, "entityClass")){
+                KxsUserReal kxsUserReal = kxsUserRealMapper.selectOne(Wrappers.<KxsUserReal>lambdaQuery().eq(KxsUserReal::getUserId, userId));
+                if(kxsUserReal != null){
+                    userReal.setId(kxsUserReal.getId());
+                    kxsUserRealMapper.updateById(userReal);
+                }else{
+                    userReal.setUserId(Integer.valueOf(userId));
+                    kxsUserRealMapper.insert(userReal);
+                }
+            }
+            if(BeanUtil.isNotEmpty(userBank, "entityClass")){
+                KxsUserBank kxsUserBank = kxsUserBankMapper.selectOne(Wrappers.<KxsUserBank>lambdaQuery().eq(KxsUserBank::getUserId, userId));
+                if(kxsUserBank != null){
+                    userBank.setId(kxsUserBank.getId());
+                    kxsUserBankMapper.updateById(userBank);
+                }else{
+                    userBank.setUserId(Integer.valueOf(userId));
+                    kxsUserBankMapper.insert(userBank);
+                }
+            }
+        }
+        //新增数据必然没有实名信息,所以不做操作
+        if(operation.equals(OperationType.INSERT)){
+            //加盐
+            String salt = UUID.randomUUID().toString();
+            kxsUser.setSalt(salt);
+            //登陆密码
+            kxsUser.setPassword(ENCODER.encode(user.getPassword() + salt));
+            baseMapper.insert(user);
+
+            //添加用户账户表
+//            KxsUserAmount kxsUserAmount = new KxsUserAmount();
+//            kxsUserAmount.setUserId(kxsUser.getId());
+//            userAmountMapper.insert(kxsUserAmount);
+//
+//            //初始化用户预发额度表
+//            KxsWarehouseLimit kxsWarehouseLimit = new KxsWarehouseLimit();
+//            kxsWarehouseLimit.setUserId(kxsUser.getId());
+//            R<Boolean> booleanR = remoteKxsStoreService.addUserAdvanceLimit(kxsWarehouseLimit, SecurityConstants.FROM_IN);
+//            if(!booleanR.getData()){
+//                throw new RuntimeException(ErrorTypeEnum.REMOTE_DATA_ERROR.getDescription());
+//            }
+//
+//            //发送个人消息
+//            KxsUserMsg kxsUserMsg = MsgTemplateUtil.newUserPush(user.getPid());
+//            remoteUserMsgService.pushUserMsg(kxsUserMsg, SecurityConstants.FROM_IN);
+        }
+
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+

+ 36 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserWithdrawalServiceImpl.java

@@ -0,0 +1,36 @@
+package com.kxs.transfer.api.service.user.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.transfer.api.mapper.user.KxsUserWithdrawalMapper;
+import com.kxs.transfer.api.service.user.KxsUserWithdrawalService;
+import com.kxs.user.api.model.KxsUserWithdrawal;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户提现申请表(KxsUserWithdrawal)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-01-03 09:39:56
+ */
+@Service("kxsUserWithdrawalService")
+@RequiredArgsConstructor
+public class KxsUserWithdrawalServiceImpl extends ServiceImpl<KxsUserWithdrawalMapper, KxsUserWithdrawal> implements KxsUserWithdrawalService {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+

+ 1 - 1
kxs-transfer/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 
 server:
-  port: 6666
+  port: 7189
 
 spring:
   application:

+ 14 - 0
kxs-transfer/src/main/resources/import.txt

@@ -0,0 +1,14 @@
+//用户基础信息表
+select Id as id, RealName as username, Mobile as phone, ReferralUserId as hidden_level, Areas as address,
+ParentUserId as pid, CONCAT('0',REPLACE(ParentNav,',,',','))  as pid_path, MakerCode as user_code, HeadPhoto as avatar,
+UserLevel as user_level, AuthFlag as real_status, MerchantType as is_merchant_maker, Remark as remark, CreateDate as create_time, UpdateDate as update_time
+FROM Users
+
+//用户实名信息表
+select Id as user_id, RealName as real_name, CertId as id_card, HandCertImage as id_card_hand, CertReverseImage as id_card_rear,
+ CertFrontImage as id_card_front, AuthDate as create_time
+FROM Users where CertId is not null and CertId<>'' and RealName<>''
+//用户银行卡表
+select Id as user_id, SettleBankName as bank_name, Mobile as bank_phone, SettleBankCardNo as bank_code, BankCardPositiveImage as bank_pic,
+ SeoTitle as bank_open, SettleBankCardName as bank_card_name, AuthDate as create_time
+FROM Users where SettleBankCardNo is not null and SettleBankName<>''

+ 6 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUser.java

@@ -166,6 +166,12 @@ public class KxsUser extends Model<KxsUser> {
      */     
     @Schema(description = "用户名")
     private String username;
+
+    /**
+     * 备注
+     */
+    @Schema(description = "备注")
+    private String remark;
     
     
     /**

+ 6 - 2
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUserBank.java

@@ -79,6 +79,12 @@ public class KxsUserBank extends Model<KxsUserBank> implements Serializable {
     @Schema(description = "银行名称")
     private String bankName;
 
+    /**
+     * 户名
+     */
+    @Schema(description = "户名")
+    private String bankCardName;
+
 
     /**
      * 开户行
@@ -108,7 +114,5 @@ public class KxsUserBank extends Model<KxsUserBank> implements Serializable {
     private String bankPic;
 
 
-
-
 }
 

+ 1 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserBankMapper.xml

@@ -10,6 +10,7 @@
         <result column="version" property="version" />
         <result column="user_id" property="userId" />
         <result column="bank_name" property="bankName" />
+        <result column="bank_card_name" property="bankCardName" />
         <result column="bank_open" property="bankOpen" />
         <result column="bank_phone" property="bankPhone" />
         <result column="bank_code" property="bankCode" />

+ 1 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserMapper.xml

@@ -23,6 +23,7 @@
         <result column="phone" property="phone" />
         <result column="password" property="password" />
         <result column="username" property="username" />
+        <result column="remark" property="remark" />
         <result column="hidden_level" property="hiddenLevel" />
         <result column="del_flag" property="delFlag" />
         <result column="update_time" property="updateTime" />