Bladeren bron

feature: 同步服务完善
1.重新梳理了除界面操作外的其它kafka消息推送与消费

luoyb 1 jaar geleden
bovenliggende
commit
3af2cf4710

+ 2 - 2
ruoyi-common/ruoyi-common-message/src/main/java/org/dromara/common/message/kafka/constant/EventTypeConstants.java

@@ -32,13 +32,13 @@ public interface EventTypeConstants {
     /**
      * 卡片数据
      */
-    String CARD = "12000002";
+    String CARD = "11000002";
     //endregion
 
     /**
      * 消费请求
      */
-    String CONSUME = "13000001";
+    String CONSUME = "12000001";
     //region 一卡通
     /**
      * 消费记录

+ 44 - 60
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/PushDeptEventStrategyImpl.java

@@ -5,7 +5,6 @@ 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.config.DefaultConfig;
 import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.message.kafka.constant.EventSenderConstants;
@@ -15,8 +14,11 @@ import org.dromara.hotel.api.domain.vo.RemoteTeamVo;
 import org.dromara.hotel.api.service.RemoteTeamService;
 import org.dromara.server.mq.event.kafka.IYktEventStrategy;
 import org.dromara.system.api.RemoteDeptService;
+import org.dromara.system.api.RemoteUserService;
 import org.dromara.system.api.domain.bo.RemoteDeptBo;
+import org.dromara.system.api.domain.bo.RemoteUserBo;
 import org.dromara.system.api.domain.vo.RemoteDeptVo;
+import org.dromara.system.api.domain.vo.RemoteUserVo;
 import org.springframework.stereotype.Service;
 
 /**
@@ -35,70 +37,52 @@ public class PushDeptEventStrategyImpl implements IYktEventStrategy {
     private final RemoteDeptService remoteDeptService;
     @DubboReference
     private final RemoteTeamService remoteTeamService;
-
-    //@Override
-    //public void doMsgHandle(JSONObject data) {
-    //    RemoteDeptBo remoteDeptBo = JSONUtil.toBean(data, RemoteDeptBo.class);
-    //    log.info("[处理云端->本地部门同步请求]-[部门信息:{}]", JSONUtil.toJsonStr(remoteDeptBo));
-    //    RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(remoteDeptBo.getDeptId());
-    //    if (ObjectUtil.isEmpty(remoteDeptVo)) {
-    //        remoteDeptService.insertDept(remoteDeptBo);
-    //    } else {
-    //        remoteDeptService.updateDept(remoteDeptBo);
-    //    }
-    //    if (remoteDeptBo.getDeptType().equals(DefaultConstants.CLASS_DEPT_TYPE)) {
-    //        // 如果部门类型为培训班,则同步到客房的团客
-    //        RemoteTeamBo remoteTeamBo = new RemoteTeamBo();
-    //        remoteTeamBo.setId(remoteDeptBo.getDeptId());
-    //        remoteTeamBo.setName(remoteDeptBo.getDeptName());
-    //        remoteTeamBo.setStartTime(remoteDeptBo.getBeginDate());
-    //        remoteTeamBo.setEndTime(remoteDeptBo.getEndDate());
-    //        remoteTeamBo.setPlanQuantity(100L);
-    //        remoteTeamBo.setRemark(remoteDeptBo.getDeptName());
-    //        remoteTeamBo.setOtherId(remoteDeptBo.getOtherId());
-    //        remoteTeamBo.setTenantId(remoteDeptBo.getTenantId());
-    //        remoteTeamBo.setOperatorId(ObjectUtil.isEmpty(remoteDeptBo.getCreateBy()) ? remoteDeptBo.getUpdateBy() : remoteDeptBo.getCreateBy());
-    //        log.info("[处理云端->本地部门至团客]-[团客信息:{}]", JSONUtil.toJsonStr(remoteTeamBo));
-    //        R<RemoteTeamVo> remoteTeamVo = remoteTeamService.selectTeamByBo(remoteTeamBo);
-    //        if(R.isSuccess(remoteTeamVo)){
-    //            remoteTeamService.updateTeamByBo(remoteTeamBo);
-    //        } else {
-    //            remoteTeamService.insertTeamByBo(remoteTeamBo);
-    //        }
-    //    }
-    //}
+    @DubboReference
+    private final RemoteUserService remoteUserService;
 
     @Override
     public void doMsgHandle(String eventType, Object msg) throws Exception {
-        if (eventType.equals(EventTypeConstants.DEPT)) {
-            RemoteDeptBo remoteDeptBo = JSONUtil.toBean(JSONUtil.parseObj(msg), RemoteDeptBo.class);
-            log.info("[处理云端->本地部门同步请求]-[部门信息:{}]", JSONUtil.toJsonStr(remoteDeptBo));
-            RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(remoteDeptBo.getDeptId());
-            if (ObjectUtil.isEmpty(remoteDeptVo)) {
-                remoteDeptService.insertDept(remoteDeptBo);
-            } else {
-                remoteDeptService.updateDept(remoteDeptBo);
-            }
-            if (remoteDeptBo.getDeptType().equals(DefaultConstants.CLASS_DEPT_TYPE)) {
-                // 如果部门类型为培训班,则同步到客房的团客
-                RemoteTeamBo remoteTeamBo = new RemoteTeamBo();
-                remoteTeamBo.setId(remoteDeptBo.getDeptId());
-                remoteTeamBo.setName(remoteDeptBo.getDeptName());
-                remoteTeamBo.setStartTime(remoteDeptBo.getBeginDate());
-                remoteTeamBo.setEndTime(remoteDeptBo.getEndDate());
-                remoteTeamBo.setPlanQuantity(100L);
-                remoteTeamBo.setRemark(remoteDeptBo.getDeptName());
-                remoteTeamBo.setOtherId(remoteDeptBo.getOtherId());
-                remoteTeamBo.setTenantId(remoteDeptBo.getTenantId());
-                remoteTeamBo.setOperatorId(ObjectUtil.isEmpty(remoteDeptBo.getCreateBy()) ? remoteDeptBo.getUpdateBy() : remoteDeptBo.getCreateBy());
-                log.info("[处理云端->本地部门至团客]-[团客信息:{}]", JSONUtil.toJsonStr(remoteTeamBo));
-                R<RemoteTeamVo> remoteTeamVo = remoteTeamService.selectTeamByBo(remoteTeamBo);
-                if (R.isSuccess(remoteTeamVo)) {
-                    remoteTeamService.updateTeamByBo(remoteTeamBo);
+        switch (eventType) {
+            case EventTypeConstants.DEPT:
+                RemoteDeptBo remoteDeptBo = JSONUtil.toBean(JSONUtil.parseObj(msg), RemoteDeptBo.class);
+                log.info("[处理云端->本地部门同步请求]-[部门信息:{}]", JSONUtil.toJsonStr(remoteDeptBo));
+                RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(remoteDeptBo.getDeptId());
+                if (ObjectUtil.isEmpty(remoteDeptVo)) {
+                    remoteDeptService.insertDept(remoteDeptBo);
+                } else {
+                    remoteDeptService.updateDept(remoteDeptBo);
+                }
+                if (remoteDeptBo.getDeptType().equals(DefaultConstants.CLASS_DEPT_TYPE)) {
+                    // 如果部门类型为培训班,则同步到客房的团客
+                    RemoteTeamBo remoteTeamBo = new RemoteTeamBo();
+                    remoteTeamBo.setId(remoteDeptBo.getDeptId());
+                    remoteTeamBo.setName(remoteDeptBo.getDeptName());
+                    remoteTeamBo.setStartTime(remoteDeptBo.getBeginDate());
+                    remoteTeamBo.setEndTime(remoteDeptBo.getEndDate());
+                    remoteTeamBo.setPlanQuantity(100L);
+                    remoteTeamBo.setRemark(remoteDeptBo.getDeptName());
+                    remoteTeamBo.setOtherId(remoteDeptBo.getOtherId());
+                    remoteTeamBo.setTenantId(remoteDeptBo.getTenantId());
+                    remoteTeamBo.setOperatorId(ObjectUtil.isEmpty(remoteDeptBo.getCreateBy()) ? remoteDeptBo.getUpdateBy() : remoteDeptBo.getCreateBy());
+                    log.info("[处理云端->本地部门至团客]-[团客信息:{}]", JSONUtil.toJsonStr(remoteTeamBo));
+                    R<RemoteTeamVo> remoteTeamVo = remoteTeamService.selectTeamByBo(remoteTeamBo);
+                    if (R.isSuccess(remoteTeamVo)) {
+                        remoteTeamService.updateTeamByBo(remoteTeamBo);
+                    } else {
+                        remoteTeamService.insertTeamByBo(remoteTeamBo);
+                    }
+                }
+                break;
+            case EventTypeConstants.USER:
+                RemoteUserBo remoteBo = JSONUtil.toBean(JSONUtil.parseObj(msg), RemoteUserBo.class);
+                log.info("[处理云端->本地用户同步请求]-[用户信息:{}]", JSONUtil.toJsonStr(remoteBo));
+                RemoteUserVo remoteVo = remoteUserService.selectUserById(remoteBo.getUserId());
+                if (ObjectUtil.isEmpty(remoteVo)) {
+                    remoteUserService.insertUser(remoteBo);
                 } else {
-                    remoteTeamService.insertTeamByBo(remoteTeamBo);
+                    remoteUserService.updateUser(remoteBo);
                 }
-            }
+                break;
         }
     }
 }

+ 25 - 10
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/cloud/PushUserAccountEventStrategyImpl.java

@@ -6,12 +6,16 @@ import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.backstage.api.RemoteCardService;
 import org.dromara.backstage.api.RemoteUserAccountService;
+import org.dromara.backstage.api.domain.bo.RemoteCardBo;
 import org.dromara.backstage.api.domain.bo.RemoteUserAccountBo;
 import org.dromara.backstage.api.domain.vo.RemoteUserAccountVo;
 import org.dromara.common.core.constant.CloudMqEventConstants;
+import org.dromara.common.message.kafka.constant.EventSenderConstants;
 import org.dromara.common.message.kafka.constant.EventTypeConstants;
 import org.dromara.server.mq.event.kafka.IEventStrategy;
+import org.dromara.server.mq.event.kafka.IYktEventStrategy;
 import org.dromara.system.api.RemoteUserService;
 import org.dromara.system.api.domain.bo.RemoteUserBo;
 import org.dromara.system.api.domain.vo.RemoteUserVo;
@@ -27,20 +31,31 @@ import org.springframework.stereotype.Service;
  */
 @Slf4j
 @RequiredArgsConstructor
-@Service(EventTypeConstants.ACCOUNT)
-public class PushUserAccountEventStrategyImpl implements IEventStrategy {
+@Service(EventSenderConstants.BACKSTAGE)
+public class PushUserAccountEventStrategyImpl implements IYktEventStrategy {
     @DubboReference
     private final RemoteUserAccountService remoteAccountService;
+    @DubboReference
+    private final RemoteCardService remoteCardService;
 
     @Override
-    public void doMsgHandle(JSONObject data) {
-        RemoteUserAccountBo remoteBo = JSONUtil.toBean(data, RemoteUserAccountBo.class);
-        log.info("[处理云端->本地一卡通账户同步请求]-[账户信息:{}]", JSONUtil.toJsonStr(remoteBo));
-        RemoteUserAccountVo remoteVo = remoteAccountService.getUserAccountVoById(remoteBo.getUserId());
-        if(ObjectUtil.isEmpty(remoteVo)){
-            remoteAccountService.insertByBo(remoteBo);
-        } else {
-            remoteAccountService.updateByBo(remoteBo);
+    public void doMsgHandle(String eventType, Object msg) throws Exception {
+        switch (eventType){
+            case EventTypeConstants.ACCOUNT -> {
+                RemoteUserAccountBo remoteBo = JSONUtil.toBean(JSONUtil.parseObj(msg), RemoteUserAccountBo.class);
+                log.info("[处理云端->本地一卡通账户同步请求]-[账户信息:{}]", JSONUtil.toJsonStr(remoteBo));
+                RemoteUserAccountVo remoteVo = remoteAccountService.getUserAccountVoById(remoteBo.getUserId());
+                if(ObjectUtil.isEmpty(remoteVo)){
+                    remoteAccountService.insertByBo(remoteBo);
+                } else {
+                    remoteAccountService.updateByBo(remoteBo);
+                }
+            }
+            case EventTypeConstants.CARD -> {
+                RemoteCardBo remoteBo = JSONUtil.toBean(JSONUtil.parseObj(msg), RemoteCardBo.class);
+                log.info("[处理云端->本地卡片同步请求]-[卡片信息:{}]", JSONUtil.toJsonStr(remoteBo));
+                remoteCardService.saveOrUpdate(remoteBo);
+            }
         }
     }
 }