فهرست منبع

feature: 同步服务完善
1.全量部门双向同步

luoyb 1 سال پیش
والد
کامیت
b6940f3da7
13فایلهای تغییر یافته به همراه39 افزوده شده و 132 حذف شده
  1. 12 3
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteDeptBo.java
  2. 2 1
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/CloudMqEventEnum.java
  3. 0 20
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PtUserAccountBo.java
  4. 2 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java
  5. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
  6. 3 3
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/GraduateClassStrategyImpl.java
  7. 2 2
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/HrDeptStrategyImpl.java
  8. 3 3
      ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/TrainClassStrategyImpl.java
  9. 1 3
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/consumer/KafkaConsumer.java
  10. 0 41
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/AccountPushEventStrategyImpl.java
  11. 12 10
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/PushDeptEventStrategyImpl.java
  12. 0 41
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/UserPushEventStrategyImpl.java
  13. 2 2
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncHrService.java

+ 12 - 3
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteDeptBo.java

@@ -22,7 +22,6 @@ public class RemoteDeptBo implements Serializable {
     @Serial
     private static final long serialVersionUID = 8436140477797284244L;
 
-
     /**
      * 部门id
      */
@@ -118,12 +117,22 @@ public class RemoteDeptBo implements Serializable {
      */
     private String delFlag;
 
+    /**
+     * 创建时间
+     */
+    private Date createTime;
     /**
      * 创建者
      */
-    private Long createdBy;
+    private Long createBy;
+
     /**
      * 更新者
      */
-    private Long updatedBy;
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
 }

+ 2 - 1
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/CloudMqEventEnum.java

@@ -11,7 +11,8 @@ package org.dromara.common.core.enums;
 public enum CloudMqEventEnum {
     CONSUME("00000001","消费信息"),
     DEPT("00000002","部门信息"),
-    USER("00000003","用户信息");
+    USER("00000003","用户信息"),
+    ACCOUNT("00000004","账户信息");
 
     private final String code;
     private final String name;

+ 0 - 20
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/domain/bo/PtUserAccountBo.java

@@ -224,26 +224,6 @@ public class PtUserAccountBo extends TenantEntity {
 
     private Long cardNo;
 
-    /**
-     * 创建时间
-     */
-    private Date createTime;
-
-    /**
-     * 创建者
-     */
-    private Long createBy;
-
-    /**
-     * 更新者
-     */
-    private Long updateBy;
-
-    /**
-     * 更新时间
-     */
-    private Date updateTime;
-
     // 构建器类
     public static class Builder {
         private Long userId;

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java

@@ -115,7 +115,7 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
     public R<Object> insertDept(RemoteDeptBo remoteDeptBo) {
         String message = MessageFormat.format("[增加部门失败]-[{0}]", JSONUtil.toJsonStr(remoteDeptBo));
         SysDeptBo deptBo = BeanUtil.copyProperties(remoteDeptBo, SysDeptBo.class);
-        deptBo.setCreateBy(remoteDeptBo.getCreatedBy());
+        deptBo.setCreateBy(remoteDeptBo.getCreateBy());
         SysDeptVo vo = sysDeptService.insertDeptBo(deptBo);
         if (vo != null) {
             RemoteDeptVo remoteDeptVo = BeanUtil.copyProperties(vo, RemoteDeptVo.class);
@@ -135,7 +135,7 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
     public R<Object> updateDept(RemoteDeptBo remoteDeptBo) {
         String message = MessageFormat.format("[修改部门失败]-[{0}]", JSONUtil.toJsonStr(remoteDeptBo));
         SysDeptBo deptBo = BeanUtil.copyProperties(remoteDeptBo, SysDeptBo.class);
-        deptBo.setUpdateBy(remoteDeptBo.getUpdatedBy());
+        deptBo.setUpdateBy(remoteDeptBo.getUpdateBy());
         return sysDeptService.updateDept(deptBo) > 0 ? R.ok() : R.fail(message);
     }
 

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

@@ -139,7 +139,6 @@ public class SysDeptServiceImpl implements ISysDeptService {
      * @param deptId 部门ID
      * @return 部门信息
      */
-    @Cacheable(cacheNames = CacheNames.SYS_DEPT, key = "#deptId")
     @Override
     public SysDeptVo selectDeptById(Long deptId) {
         SysDeptVo dept = baseMapper.selectVoById(deptId);

+ 3 - 3
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/GraduateClassStrategyImpl.java

@@ -117,10 +117,10 @@ public class GraduateClassStrategyImpl implements ISyncDeptStrategy {
         RemoteDeptBo remoteDeptBo;
         if (ObjUtil.isEmpty(remoteDeptVo)) {
             remoteDeptBo = new RemoteDeptBo();
-            remoteDeptBo.setCreatedBy(resourceDept.getOperatorId());
+            remoteDeptBo.setCreateBy(resourceDept.getOperatorId());
         } else {
             remoteDeptBo = BeanUtil.copyProperties(remoteDeptVo, RemoteDeptBo.class);
-            remoteDeptBo.setUpdatedBy(resourceDept.getOperatorId());
+            remoteDeptBo.setUpdateBy(resourceDept.getOperatorId());
         }
         // 研究生班级对应部门类型类型为06,以和培训班的转换部门区分
         remoteDeptBo.setDeptType(DefaultConstants.GRADUATE_DEPT_TYPE);
@@ -155,7 +155,7 @@ public class GraduateClassStrategyImpl implements ISyncDeptStrategy {
         RemoteDeptBo remoteDeptBo = new RemoteDeptBo();
         remoteDeptBo.setDeptName(resourceDept.getYear().toString());
         remoteDeptBo.setDeptType(DefaultConstants.YEAR_DEPT_TYPE);
-        remoteDeptBo.setCreatedBy(resourceDept.getOperatorId());
+        remoteDeptBo.setCreateBy(resourceDept.getOperatorId());
         remoteDeptBo.setParentId(rootId);
         if (StringUtils.isNotEmpty(resourceDept.getTenantId())) {
             remoteDeptBo.setTenantId(remoteDeptBo.getTenantId());

+ 2 - 2
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/HrDeptStrategyImpl.java

@@ -115,10 +115,10 @@ public class HrDeptStrategyImpl implements ISyncDeptStrategy {
             remoteDeptBo = new RemoteDeptBo();
             // 业中同步的部门默认类型为03-部门
             remoteDeptBo.setDeptType(DefaultConstants.DEPT_DEPT_TYPE);
-            remoteDeptBo.setCreatedBy(resourceDept.getOperatorId());
+            remoteDeptBo.setCreateBy(resourceDept.getOperatorId());
         } else {
             remoteDeptBo = BeanUtil.copyProperties(remoteDeptVo, RemoteDeptBo.class);
-            remoteDeptBo.setUpdatedBy(resourceDept.getOperatorId());
+            remoteDeptBo.setUpdateBy(resourceDept.getOperatorId());
         }
         remoteDeptBo.setDeptName(resourceDept.getDept_name());
         remoteDeptBo.setOtherId(resourceDept.getDept_id());

+ 3 - 3
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/dept/strategy/impl/TrainClassStrategyImpl.java

@@ -149,10 +149,10 @@ public class TrainClassStrategyImpl implements ISyncDeptStrategy {
             remoteDeptBo = new RemoteDeptBo();
             // 班级对应的部门默认类型为 05-班级
             remoteDeptBo.setDeptType(DefaultConstants.CLASS_DEPT_TYPE);
-            remoteDeptBo.setCreatedBy(resourceDept.getOperatorId());
+            remoteDeptBo.setCreateBy(resourceDept.getOperatorId());
         } else {
             remoteDeptBo = BeanUtil.copyProperties(remoteDeptVo, RemoteDeptBo.class);
-            remoteDeptBo.setUpdatedBy(resourceDept.getOperatorId());
+            remoteDeptBo.setUpdateBy(resourceDept.getOperatorId());
         }
         remoteDeptBo.setDeptName(resourceDept.getDept_name());
         remoteDeptBo.setOtherId(resourceDept.getDept_id());
@@ -199,7 +199,7 @@ public class TrainClassStrategyImpl implements ISyncDeptStrategy {
         if (StringUtils.isNotEmpty(resourceDept.getTenantId())) {
             remoteDeptBo.setTenantId(resourceDept.getTenantId());
         }
-        remoteDeptBo.setCreatedBy(resourceDept.getOperatorId());
+        remoteDeptBo.setCreateBy(resourceDept.getOperatorId());
         R<Object> result = syncRemoteDeptService.insertDept(remoteDeptBo);
         if (result.getCode() == R.SUCCESS) {
             return (RemoteDeptVo) result.getData();

+ 1 - 3
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/consumer/KafkaConsumer.java

@@ -30,10 +30,8 @@ import org.springframework.stereotype.Component;
 @ConditionalOnExpression("'cloud'.equals('${locationFlag}')")
 public class KafkaConsumer {
     private final EventStrategyContext eventStrategyContext;
-    @DubboReference
-    private final RemotePtParameterService remotePtParameterService;
 
-    @KafkaListener(topics = "TO_CLOUD_EVENT", groupId = "test1-group-id")
+    @KafkaListener(topics = "TO_CLOUD_EVENT", groupId = "test2-group-id")
     public void kafkaReceiveHandler(ConsumerRecord<String, String> record) {
         KafkaMessage<?> receiveMsg = JSONUtil.toBean(record.value(), KafkaMessage.class);
         String eventType = receiveMsg.getHeader().getEventType();

+ 0 - 41
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/AccountPushEventStrategyImpl.java

@@ -1,41 +0,0 @@
-package org.dromara.server.mq.event.kafka.impl.cloud;
-
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.dubbo.config.annotation.DubboReference;
-import org.dromara.common.core.constant.CloudMqEventConstants;
-import org.dromara.server.mq.event.kafka.IEventStrategy;
-import org.dromara.system.api.RemoteUserService;
-import org.dromara.system.api.domain.bo.RemoteUserBo;
-import org.springframework.stereotype.Service;
-
-/**
- * @ClassName AccountPushEventStrategyImpl
- * @Description 一卡通账户消息队列数据处理
- * @Author luoyibo
- * @Date 2024-11-12 11:52
- * @Version 1.0
- * @since jdk17
- */
-@Slf4j
-@RequiredArgsConstructor
-@Service(CloudMqEventConstants.USER)
-public class AccountPushEventStrategyImpl implements IEventStrategy {
-    @DubboReference
-    private final RemoteUserService remoteUserService;
-
-    @Override
-    public void doMsgHandle(JSONObject data) {
-        RemoteUserBo remoteUserBo = JSONUtil.toBean(data, RemoteUserBo.class);
-
-        log.info("[处理用户消息队列]-[用户信息:{}]", JSONUtil.toJsonStr(remoteUserBo));
-        if (ObjectUtil.isNotEmpty(remoteUserBo.getUserId())) {
-            remoteUserService.updateUser(remoteUserBo);
-        } else {
-            remoteUserService.insertUser(remoteUserBo);
-        }
-    }
-}

+ 12 - 10
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/DeptPushEventStrategyImpl.java → ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/PushDeptEventStrategyImpl.java

@@ -7,14 +7,15 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.common.core.constant.CloudMqEventConstants;
-import org.dromara.server.base.service.dept.SyncRemoteDeptService;
 import org.dromara.server.mq.event.kafka.IEventStrategy;
+import org.dromara.system.api.RemoteDeptService;
 import org.dromara.system.api.domain.bo.RemoteDeptBo;
+import org.dromara.system.api.domain.vo.RemoteDeptVo;
 import org.springframework.stereotype.Service;
 
 /**
- * @ClassName DeptPushEventStrategyImpl
- * @Description 部门消息队列数据处理
+ * @ClassName PushDeptEventStrategyImpl
+ * @Description 处理部门消息队列
  * @Author luoyibo
  * @Date 2024-11-12 11:52
  * @Version 1.0
@@ -23,19 +24,20 @@ import org.springframework.stereotype.Service;
 @Slf4j
 @RequiredArgsConstructor
 @Service(CloudMqEventConstants.DEPT)
-public class DeptPushEventStrategyImpl implements IEventStrategy {
+public class PushDeptEventStrategyImpl implements IEventStrategy {
     @DubboReference
-    private final SyncRemoteDeptService remoteDeptService;
+    private final RemoteDeptService remoteDeptService;
 
     @Override
     public void doMsgHandle(JSONObject data) {
         RemoteDeptBo remoteDeptBo = JSONUtil.toBean(data, RemoteDeptBo.class);
-
-        log.info("[处理部门消息队列]-[部门信息:{}]", JSONUtil.toJsonStr(remoteDeptBo));
-        if (ObjectUtil.isNotEmpty(remoteDeptBo.getDeptId())) {
-            remoteDeptService.updateDept(remoteDeptBo);
-        } else {
+        log.info("[处理云端部门同步请求]-[部门信息:{}]", JSONUtil.toJsonStr(remoteDeptBo));
+        RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(remoteDeptBo.getDeptId());
+        if(ObjectUtil.isEmpty(remoteDeptVo)){
             remoteDeptService.insertDept(remoteDeptBo);
+        } else {
+            remoteDeptService.updateDept(remoteDeptBo);
         }
+
     }
 }

+ 0 - 41
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/UserPushEventStrategyImpl.java

@@ -1,41 +0,0 @@
-package org.dromara.server.mq.event.kafka.impl.cloud;
-
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.dubbo.config.annotation.DubboReference;
-import org.dromara.common.core.constant.CloudMqEventConstants;
-import org.dromara.server.mq.event.kafka.IEventStrategy;
-import org.dromara.system.api.RemoteUserService;
-import org.dromara.system.api.domain.bo.RemoteUserBo;
-import org.springframework.stereotype.Service;
-
-/**
- * @ClassName UserPushEventStrategyImpl
- * @Description 用户消息队列数据处理
- * @Author luoyibo
- * @Date 2024-11-12 11:52
- * @Version 1.0
- * @since jdk17
- */
-@Slf4j
-@RequiredArgsConstructor
-@Service(CloudMqEventConstants.USER)
-public class UserPushEventStrategyImpl implements IEventStrategy {
-    @DubboReference
-    private final RemoteUserService remoteUserService;
-
-    @Override
-    public void doMsgHandle(JSONObject data) {
-        RemoteUserBo remoteUserBo = JSONUtil.toBean(data, RemoteUserBo.class);
-
-        log.info("[处理用户消息队列]-[用户信息:{}]", JSONUtil.toJsonStr(remoteUserBo));
-        if (ObjectUtil.isNotEmpty(remoteUserBo.getUserId())) {
-            remoteUserService.updateUser(remoteUserBo);
-        } else {
-            remoteUserService.insertUser(remoteUserBo);
-        }
-    }
-}

+ 2 - 2
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/SyncHrService.java

@@ -60,8 +60,8 @@ public class SyncHrService {
         List<ResourceDept> resourceDeptlist = new ArrayList<>();
         ResourceDept dept = new ResourceDept();
         dept.setParent_id("001000000000");
-        dept.setDept_id("001003000000");
-        dept.setDept_name("服务企业");
+        dept.setDept_id("1850785191038996481");
+        dept.setDept_name("双向同步测试");
         dept.setOperatorId(DefaultConstants.FULL_SYNC_ADMIN);
         dept.setTenantId(defaultConfig.getTenantId());
         resourceDeptlist.add(dept);