Przeglądaj źródła

feature: 同步功能完善
1.云平台同步部门、人员、账户、卡片处理

luo.yibo@datuai.com 1 rok temu
rodzic
commit
3b9d7eb3bf
15 zmienionych plików z 88 dodań i 22 usunięć
  1. 3 1
      ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemoteCardService.java
  2. 3 1
      ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteTeamService.java
  3. 2 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java
  4. 1 1
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java
  5. 5 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/dubbo/RemoteCardServiceImpl.java
  6. 2 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/IPtCardService.java
  7. 16 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtCardServiceImpl.java
  8. 5 0
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteTeamServiceImpl.java
  9. 6 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java
  10. 6 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
  11. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
  12. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
  13. 12 4
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
  14. 8 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
  15. 15 15
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/local/SystemEventStrategyImpl.java

+ 3 - 1
ruoyi-api/ruoyi-api-backstage/src/main/java/org/dromara/backstage/api/RemoteCardService.java

@@ -75,10 +75,12 @@ public interface RemoteCardService {
     Boolean updateCardDayData(Long cardNo, Long mealType, BigDecimal consumeValue, Date consumeDate);
 
     /**
-     * 保存增加卡片信息
+     * 保存增加卡片信息
      * @param bo 卡片业务对象
      * @return 卡片视图对象
      */
     RemoteCardVo saveOrUpdate(RemoteCardBo bo);
 
+    RemoteCardVo insertOrUpdateLocalCard(RemoteCardBo bo);
+
 }

+ 3 - 1
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteTeamService.java

@@ -56,5 +56,7 @@ public interface RemoteTeamService {
 
     R<Object> deleteTeamByOtherId(String otherId, Long operatorId);
 
-    Boolean deleteTeamByOtherId(String otherId, Long operatorId, String tenantId);;
+    Boolean deleteTeamByOtherId(String otherId, Long operatorId, String tenantId);
+
+    Boolean insertOrUpateLocalTeam(RemoteTeamBo remoteTeamBo);
 }

+ 2 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java

@@ -119,4 +119,6 @@ public interface RemoteDeptService {
      * @return 更新成功与否
      */
     Boolean updateCheckInStatus(Long deptId, Long userId);
+
+    Boolean insertOrUpdateLocalDept(RemoteDeptBo remoteDeptBo);
 }

+ 1 - 1
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java

@@ -193,5 +193,5 @@ public interface RemoteUserService {
      */
     Boolean delByUserId(Long userId, Long operatorId);
 
-
+    Boolean insertOrUpdateLocalUser(RemoteUserBo remoteUserBo);
 }

+ 5 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/dubbo/RemoteCardServiceImpl.java

@@ -110,5 +110,10 @@ public class RemoteCardServiceImpl implements RemoteCardService {
         PtCardVo vo = cardService.saveOrUpdate(BeanUtil.copyProperties(bo, PtCardBo.class));
         return MapstructUtils.convert(vo, RemoteCardVo.class);
     }
+
+    @Override
+    public RemoteCardVo insertOrUpdateLocalCard(RemoteCardBo bo) {
+        return null;
+    }
 }
 

+ 2 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/IPtCardService.java

@@ -209,4 +209,6 @@ public interface IPtCardService {
      * @return 注销结果
      */
     Boolean cancelCard(Long userId, Long operatorId);
+
+    PtCardVo insertOrUpdateLocalCard(PtCardBo bo);
 }

+ 16 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/cardCenter/service/impl/PtCardServiceImpl.java

@@ -31,6 +31,7 @@ import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
 import org.dromara.common.message.kafka.enums.EventSenderEnum;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.tenant.helper.TenantHelper;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -550,4 +551,19 @@ public class PtCardServiceImpl implements IPtCardService {
                                               .eq(PtCard::getStatus, CardStatusEnum.NORMAL.code().toString());
         return baseMapper.update(null, luw) >= 0;
     }
+
+    @Override
+    public PtCardVo insertOrUpdateLocalCard(PtCardBo bo) {
+        PtCard entity = MapstructUtils.convert(bo, PtCard.class);
+        boolean flag = TenantHelper.ignore(() -> baseMapper.insertOrUpdate(entity));
+        if (flag) {
+            if (entity != null) {
+                PtCardVo vo = baseMapper.selectVoById(entity.getCardId());
+                PtCardtypeVo cardTypeVo = cardTypeService.queryByCode(vo.getCardType());
+                vo.setCardTypeName(cardTypeVo.getTypeName());
+                return vo;
+            }
+        }
+        return null;
+    }
 }

+ 5 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteTeamServiceImpl.java

@@ -129,4 +129,9 @@ public class RemoteTeamServiceImpl implements RemoteTeamService {
         }
         return R.fail();
     }
+
+    @Override
+    public Boolean insertOrUpateLocalTeam(RemoteTeamBo remoteTeamBo) {
+        return null;
+    }
 }

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

@@ -218,4 +218,10 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
     public Boolean updateCheckInStatus(Long deptId, Long userId) {
         return sysDeptService.updateCheckInStatus(deptId, userId);
     }
+
+    @Override
+    public Boolean insertOrUpdateLocalDept(RemoteDeptBo remoteDeptBo) {
+        SysDeptBo deptBo = BeanUtil.copyProperties(remoteDeptBo, SysDeptBo.class);
+        return sysDeptService.insertOrUpdateLocalDept(deptBo);
+    }
 }

+ 6 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java

@@ -428,6 +428,12 @@ public class RemoteUserServiceImpl implements RemoteUserService {
         return userService.deleteUserById(userId)>=0;
     }
 
+    @Override
+    public Boolean insertOrUpdateLocalUser(RemoteUserBo remoteUserBo) {
+        SysUserBo bo = BeanUtil.copyProperties(remoteUserBo, SysUserBo.class);
+        return userService.insertOrUpdateLocalUser(bo);
+    }
+
     private void setUserDept(SysUserBo bo, RemoteUserBo remoteBo){
         List<UserDeptBo> userDeptBoList = new ArrayList<>();
         if(ObjectUtil.isNotEmpty(remoteBo.getUserDeptList())){

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java

@@ -204,4 +204,6 @@ public interface ISysDeptService {
      * @return 更新成功与否
      */
     Boolean updateCheckInStatus(Long deptId, Long userId);
+
+    Boolean insertOrUpdateLocalDept(SysDeptBo bo);
 }

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java

@@ -311,4 +311,6 @@ public interface ISysUserService {
      * @return 操作成功与否
      */
     Boolean delByUserAndDeptId(Long userId, Long deptId, Long operatorId);
+
+    Boolean insertOrUpdateLocalUser(SysUserBo user);
 }

+ 12 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

@@ -22,6 +22,7 @@ import org.dromara.common.message.kafka.enums.EventSenderEnum;
 import org.dromara.common.mybatis.helper.DataBaseHelper;
 import org.dromara.common.redis.utils.CacheUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.system.domain.SysDept;
 import org.dromara.system.domain.SysRole;
 import org.dromara.system.domain.SysUser;
@@ -137,12 +138,13 @@ public class SysDeptServiceImpl implements ISysDeptService {
      */
     @Override
     public SysDeptVo selectDeptById(Long deptId) {
-        SysDeptVo dept = baseMapper.selectVoById(deptId);
+        SysDeptVo dept = TenantHelper.ignore(() -> baseMapper.selectVoById(deptId));
         if (ObjectUtil.isNull(dept)) {
             return null;
         }
-        SysDeptVo parentDept = baseMapper.selectVoOne(new LambdaQueryWrapper<SysDept>()
-                                                          .select(SysDept::getDeptName).eq(SysDept::getDeptId, dept.getParentId()));
+        SysDeptVo parentDept = TenantHelper.ignore(() -> baseMapper.selectVoOne(new LambdaQueryWrapper<SysDept>()
+                                                                                    .select(SysDept::getDeptName)
+                                                                                    .eq(SysDept::getDeptId, dept.getParentId())));
         dept.setParentName(ObjectUtil.isNotNull(parentDept) ? parentDept.getDeptName() : null);
         return dept;
     }
@@ -264,7 +266,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
                 throw new ServiceException("部门停用,不允许新增");
             }
         }
-        //if (bo.getOrderNum() == null || bo.getOrderNum() == 0) {
+        // if (bo.getOrderNum() == null || bo.getOrderNum() == 0) {
         //    int orderNum = this.getMaxLevelOrderNumb(info.getDeptId());
         //    bo.setOrderNum(orderNum + 1);
         //}
@@ -480,4 +482,10 @@ public class SysDeptServiceImpl implements ISysDeptService {
     public Boolean updateCheckInStatus(Long deptId, Long userId) {
         return userDeptService.setCheckInStatus(deptId, userId);
     }
+
+    @Override
+    public Boolean insertOrUpdateLocalDept(SysDeptBo bo) {
+        SysDept entity = MapstructUtils.convert(bo, SysDept.class);
+        return TenantHelper.ignore(() -> baseMapper.insertOrUpdate(entity));
+    }
 }

+ 8 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -804,6 +804,12 @@ public class SysUserServiceImpl implements ISysUserService {
         return count >= 0;
     }
 
+    @Override
+    public Boolean insertOrUpdateLocalUser(SysUserBo bo) {
+        SysUser entity = MapstructUtils.convert(bo, SysUser.class);
+        return TenantHelper.ignore(() -> baseMapper.insertOrUpdate(entity));
+    }
+
     private void insertUserDept(SysUserBo bo, List<UserDeptBo> userDeptBoList) {
         // 将已有的人员部门关系设置成非主部门
         userDeptService.updateMainDeptByUserId(bo.getUserId());
@@ -830,4 +836,6 @@ public class SysUserServiceImpl implements ISysUserService {
             }
         }
     }
+
+
 }

+ 15 - 15
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/local/SystemEventStrategyImpl.java

@@ -17,8 +17,6 @@ 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;
 
 /**
@@ -46,12 +44,13 @@ public class SystemEventStrategyImpl implements IYktEventStrategy {
             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);
-                }
+                remoteDeptService.insertOrUpdateLocalDept(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();
@@ -66,7 +65,7 @@ public class SystemEventStrategyImpl implements IYktEventStrategy {
                     remoteTeamBo.setOperatorId(
                         ObjectUtil.isEmpty(remoteDeptBo.getCreateBy()) ? remoteDeptBo.getUpdateBy() : remoteDeptBo.getCreateBy());
                     log.info("[处理云端->本地部门至团客]-[团客信息:{}]", JSONUtil.toJsonStr(remoteTeamBo));
-                    R<RemoteTeamVo> remoteTeamVo = remoteTeamService.selectTeamByBo(remoteTeamBo);
+                    R<RemoteTeamVo> remoteTeamVo = remoteTeamService.selectTeamByOtherId(remoteDeptBo.getOtherId(), remoteDeptBo.getTenantId());
                     if (R.isSuccess(remoteTeamVo)) {
                         remoteTeamService.updateTeamByBo(remoteTeamBo);
                     } else {
@@ -77,12 +76,13 @@ public class SystemEventStrategyImpl implements IYktEventStrategy {
             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 {
-                    remoteUserService.updateUser(remoteBo);
-                }
+                remoteUserService.insertOrUpdateLocalUser(remoteBo);
+                // RemoteUserVo remoteVo = remoteUserService.selectUserById(remoteBo.getUserId());
+                // if (ObjectUtil.isEmpty(remoteVo)) {
+                //     remoteUserService.insertUser(remoteBo);
+                // } else {
+                //     remoteUserService.updateUser(remoteBo);
+                // }
             }
         }
     }