Преглед изворни кода

Merge remote-tracking branch 'origin/master'

xiari пре 1 година
родитељ
комит
78eac2fab5
19 измењених фајлова са 154 додато и 24 уклоњено
  1. 2 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java
  2. 3 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java
  3. 4 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteUserBo.java
  4. 0 2
      ruoyi-common/ruoyi-common-message/src/main/java/org/dromara/common/message/kafka/constant/EventTypeConstants.java
  5. 2 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtUserAccountServiceImpl.java
  6. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java
  7. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
  8. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
  9. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
  10. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
  11. 10 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
  12. 12 8
      ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/event/kafka/impl/local/SystemEventStrategyImpl.java
  13. 4 0
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/domain/vo/SysDeptVo.java
  14. 30 8
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/domain/vo/SysUserVo.java
  15. 4 0
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/domain/vo/UserAccountVo.java
  16. 9 0
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/IUserAccountService.java
  17. 8 2
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/DeptServiceImpl.java
  18. 37 3
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/UserAccountServiceImpl.java
  19. 10 0
      ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/UserServiceImpl.java

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

@@ -121,4 +121,6 @@ public interface RemoteDeptService {
     Boolean updateCheckInStatus(Long deptId, Long userId);
 
     Boolean insertOrUpdateLocalDept(RemoteDeptBo remoteDeptBo);
+
+    Boolean deleteLocalDept(Long deptId);
 }

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

@@ -194,4 +194,7 @@ public interface RemoteUserService {
     Boolean delByUserId(Long userId, Long operatorId);
 
     Boolean insertOrUpdateLocalUser(RemoteUserBo remoteUserBo);
+
+    Boolean delLocalUserId(Long userId, Long operatorId);
+
 }

+ 4 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteUserBo.java

@@ -194,6 +194,10 @@ public class RemoteUserBo implements Serializable {
      */
     private Long userNo;
 
+    /**
+     * 删除标志
+     */
+    private String delFlag;
     public boolean isSuperAdmin() {
         return UserConstants.SUPER_ADMIN_ID.equals(this.userId);
     }

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

@@ -1,7 +1,5 @@
 package org.dromara.common.message.kafka.constant;
 
-import org.dromara.common.message.kafka.enums.EventSenderEnum;
-
 /**
  * @ClassName EventTypeConstants
  * @Description 消费推送事件类型常量,EventTypeEnum对应

+ 2 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtUserAccountServiceImpl.java

@@ -42,6 +42,7 @@ 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.redis.utils.RedisUtils;
+import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.system.api.RemoteDeptService;
 import org.dromara.system.api.domain.vo.RemoteDeptVo;
 import org.springframework.stereotype.Service;
@@ -554,7 +555,7 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
 
     @Override
     public YcTraineeVo selectTraineeByBo(PtUserAccountBo bo, Date doingDate) {
-        return baseMapper.selectTraineeByBo(bo, doingDate);
+        return TenantHelper.ignore(() -> baseMapper.selectTraineeByBo(bo, doingDate));
     }
     /**
      * 删除指定部门下的一卡通账户信息

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

@@ -224,4 +224,9 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
         SysDeptBo deptBo = BeanUtil.copyProperties(remoteDeptBo, SysDeptBo.class);
         return sysDeptService.insertOrUpdateLocalDept(deptBo);
     }
+
+    @Override
+    public Boolean deleteLocalDept(Long deptId) {
+        return sysDeptService.deleteLocalDept(deptId);
+    }
 }

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

@@ -434,6 +434,11 @@ public class RemoteUserServiceImpl implements RemoteUserService {
         return userService.insertOrUpdateLocalUser(bo);
     }
 
+    @Override
+    public Boolean delLocalUserId(Long userId, Long operatorId) {
+        return userService.delLocalUserId(userId, operatorId);
+    }
+
     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

@@ -206,4 +206,6 @@ public interface ISysDeptService {
     Boolean updateCheckInStatus(Long deptId, Long userId);
 
     Boolean insertOrUpdateLocalDept(SysDeptBo bo);
+
+    Boolean deleteLocalDept(Long deptId);
 }

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

@@ -313,4 +313,6 @@ public interface ISysUserService {
     Boolean delByUserAndDeptId(Long userId, Long deptId, Long operatorId);
 
     Boolean insertOrUpdateLocalUser(SysUserBo user);
+
+    Boolean delLocalUserId(Long userId, Long operatorId);
 }

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

@@ -488,4 +488,9 @@ public class SysDeptServiceImpl implements ISysDeptService {
         SysDept entity = MapstructUtils.convert(bo, SysDept.class);
         return TenantHelper.ignore(() -> baseMapper.insertOrUpdate(entity));
     }
+
+    @Override
+    public Boolean deleteLocalDept(Long deptId) {
+        return TenantHelper.ignore(() -> baseMapper.deleteById(deptId)>0);
+    }
 }

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

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -810,6 +811,15 @@ public class SysUserServiceImpl implements ISysUserService {
         return TenantHelper.ignore(() -> baseMapper.insertOrUpdate(entity));
     }
 
+    @Override
+    public Boolean delLocalUserId(Long userId, Long operatorId) {
+        return TenantHelper.ignore(() -> baseMapper.update(null, new LambdaUpdateWrapper<SysUser>()
+            .set(SysUser::getDelFlag, DefaultConstants.DELETED)
+            .set(SysUser::getUpdateBy, operatorId)
+            .set(SysUser::getUpdateTime, DateUtil.date())
+            .eq(SysUser::getUserId, userId)) > 0);
+    }
+
     private void insertUserDept(SysUserBo bo, List<UserDeptBo> userDeptBoList) {
         // 将已有的人员部门关系设置成非主部门
         userDeptService.updateMainDeptByUserId(bo.getUserId());

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

@@ -40,11 +40,17 @@ public class SystemEventStrategyImpl implements IYktEventStrategy {
 
     @Override
     public void doMsgHandle(String eventType, Object msg) throws Exception {
+        log.info(eventType);
         switch (eventType) {
             case EventTypeConstants.DEPT -> {
                 RemoteDeptBo remoteDeptBo = JSONUtil.toBean(JSONUtil.parseObj(msg), RemoteDeptBo.class);
                 log.info("[处理云端->本地部门同步请求]-[部门信息:{}]", JSONUtil.toJsonStr(remoteDeptBo));
-                remoteDeptService.insertOrUpdateLocalDept(remoteDeptBo);
+                if(remoteDeptBo.getDelFlag().equals(DefaultConstants.DELETED)){
+                    remoteDeptService.deleteLocalDept(remoteDeptBo.getDeptId());
+                }
+                else {
+                    remoteDeptService.insertOrUpdateLocalDept(remoteDeptBo);
+                }
                 // RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(remoteDeptBo.getDeptId());
                 // if (ObjectUtil.isEmpty(remoteDeptVo)) {
                 //     remoteDeptService.insertDept(remoteDeptBo);
@@ -76,13 +82,11 @@ public class SystemEventStrategyImpl implements IYktEventStrategy {
             case EventTypeConstants.USER -> {
                 RemoteUserBo remoteBo = JSONUtil.toBean(JSONUtil.parseObj(msg), RemoteUserBo.class);
                 log.info("[处理云端->本地用户同步请求]-[用户信息:{}]", JSONUtil.toJsonStr(remoteBo));
-                remoteUserService.insertOrUpdateLocalUser(remoteBo);
-                // RemoteUserVo remoteVo = remoteUserService.selectUserById(remoteBo.getUserId());
-                // if (ObjectUtil.isEmpty(remoteVo)) {
-                //     remoteUserService.insertUser(remoteBo);
-                // } else {
-                //     remoteUserService.updateUser(remoteBo);
-                // }
+                if (remoteBo.getDelFlag().equals(DefaultConstants.DELETED)) {
+                    remoteUserService.delLocalUserId(remoteBo.getUserId(), remoteBo.getUpdateBy());
+                } else {
+                    remoteUserService.insertOrUpdateLocalUser(remoteBo);
+                }
             }
         }
     }

+ 4 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/domain/vo/SysDeptVo.java

@@ -141,4 +141,8 @@ public class SysDeptVo implements Serializable {
      * 缴费结束日期
      */
     private Date payEnd;
+    /**
+     * 删除标志
+     */
+    private String delFlag;
 }

+ 30 - 8
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/domain/vo/SysUserVo.java

@@ -2,21 +2,13 @@ package org.dromara.server.sync.domain.vo;
 
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
-import org.dromara.common.encrypt.annotation.EncryptField;
-import org.dromara.common.encrypt.enumd.AlgorithmType;
-import org.dromara.common.translation.annotation.Translation;
-import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.server.sync.domain.SysUser;
 
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 
 /**
@@ -194,4 +186,34 @@ public class SysUserVo implements Serializable {
      * 第三方人员状态
      */
     private String userState;
+
+    /**
+     * 删除标志
+     */
+    private String delFlag;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 租户编号
+     */
+    private String tenantId;
 }

+ 4 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/domain/vo/UserAccountVo.java

@@ -210,6 +210,10 @@ public class UserAccountVo implements Serializable {
      */
     private String tenantId;
 
+    /**
+     * 删除标志
+     */
+    private String delFlag;
     /**
      * 微信二维码使用
      */

+ 9 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/IUserAccountService.java

@@ -26,4 +26,13 @@ public interface IUserAccountService {
      */
     Boolean doUserAccount(UserAccountBo bo);
 
+    /**
+     * 根据userId删除账户
+     * @param userId 用户Id
+     * @return 删除结果
+     */
+    Boolean deleteById(String userId);
+
+    Boolean deleteById(Long userId,Long operationId);
+
 }

+ 8 - 2
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/DeptServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -116,11 +117,16 @@ public class DeptServiceImpl implements IDeptService {
     @Override
     public Boolean deleteByOtherId(String otherId, String tenantId) {
         // TODO 2025-01-24 10:41:56 luoyibo 删除前的校验
+        SysDeptVo vo = TenantHelper.ignore(
+            () -> deptMapper.selectVoOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getOtherId, otherId).eq(SysDept::getTenantId, tenantId)));
         int iCount = TenantHelper.ignore(
             () -> deptMapper.delete(new LambdaQueryWrapper<SysDept>().eq(SysDept::getOtherId, otherId).eq(SysDept::getTenantId, tenantId)));
         if (iCount > 0) {
-            SysDeptVo vo = TenantHelper.ignore(
-                () -> deptMapper.selectVoOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getOtherId, otherId).eq(SysDept::getTenantId, tenantId)));
+            vo.setDelFlag(DefaultConstants.DELETED);
+            //vo.setUpdateBy();
+            //SysDeptVo vo = TenantHelper.ignore(
+            //    () -> deptMapper.selectVoOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getOtherId, otherId).eq(SysDept::getTenantId, tenantId)));
+
             kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.DEPT, EventSenderEnum.SYSTEM.code(), vo);
         }
         return iCount > 0;

+ 37 - 3
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/UserAccountServiceImpl.java

@@ -1,14 +1,18 @@
 package org.dromara.server.sync.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.message.kafka.constant.EventTypeConstants;
 import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
 import org.dromara.common.message.kafka.enums.EventSenderEnum;
+import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.server.sync.business.card.CardBusiness;
 import org.dromara.server.sync.domain.UserAccount;
 import org.dromara.server.sync.domain.bo.UserAccountBo;
@@ -53,7 +57,7 @@ public class UserAccountServiceImpl implements IUserAccountService {
     @Override
     public Boolean doUserAccount(UserAccountBo bo) {
         UserAccount entity = MapstructUtils.convert(bo, UserAccount.class);
-        UserAccountVo vo = baseMapper.selectVoById(bo.getUserId());
+        UserAccountVo vo = TenantHelper.ignore(() -> baseMapper.selectVoById(bo.getUserId()));
         int rows;
         if(ObjectUtil.isEmpty(vo)){
             // 当前没有一卡通账户,先增加账户信息
@@ -78,7 +82,7 @@ public class UserAccountServiceImpl implements IUserAccountService {
             }
         } else{
             // 已有账户,更新
-            rows = baseMapper.updateById(entity);
+            rows = TenantHelper.ignore(() -> baseMapper.updateById(entity));
             if(rows != 1){
                 return false;
             }
@@ -86,8 +90,38 @@ public class UserAccountServiceImpl implements IUserAccountService {
                 // 如果卡类或有效期变了,需要同步更新主卡的卡类与有效期
             }
         }
-        vo = baseMapper.selectVoById(bo.getUserId());
+        vo = TenantHelper.ignore(() -> baseMapper.selectVoById(bo.getUserId()));
         kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.ACCOUNT, EventSenderEnum.BACKSTAGE.code(), vo);
         return true;
     }
+    /**
+     * 根据userId删除账户
+     * @param userId 用户Id
+     * @return 删除结果
+     */
+    @Override
+    public Boolean deleteById(String userId) {
+        UserAccountVo vo = baseMapper.selectVoById(userId);
+        vo.setDelFlag(DefaultConstants.DELETED);
+        kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.ACCOUNT, EventSenderEnum.BACKSTAGE.code(), vo);
+        return TenantHelper.ignore(() -> baseMapper.update(null, new LambdaUpdateWrapper<UserAccount>()
+            .set(UserAccount::getDelFlag, DefaultConstants.DELETED)
+            .set(UserAccount::getUpdateBy, userId)
+            .set(UserAccount::getUpdateTime, DateUtil.date())
+            .eq(UserAccount::getUserId, userId)) > 0);
+    }
+
+    @Override
+    public Boolean deleteById(Long userId, Long operationId) {
+        UserAccountVo vo = baseMapper.selectVoById(userId);
+        vo.setDelFlag(DefaultConstants.DELETED);
+        vo.setUpdateBy(operationId);
+        vo.setUpdateTime(DateUtil.date());
+        kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.ACCOUNT, EventSenderEnum.BACKSTAGE.code(), vo);
+        return TenantHelper.ignore(() -> baseMapper.update(null, new LambdaUpdateWrapper<UserAccount>()
+            .set(UserAccount::getDelFlag, DefaultConstants.DELETED)
+            .set(UserAccount::getUpdateBy, operationId)
+            .set(UserAccount::getUpdateTime, DateUtil.date())
+            .eq(UserAccount::getUserId, userId)) > 0);
+    }
 }

+ 10 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/service/impl/UserServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.enums.UserAccountStatusEnum;
 import org.dromara.common.core.utils.MapstructUtils;
@@ -37,6 +38,7 @@ import java.util.List;
  * @Version 1.0
  * @since jdk17
  */
+@Slf4j
 @Service
 @RequiredArgsConstructor
 public class UserServiceImpl implements IUserService {
@@ -94,12 +96,20 @@ public class UserServiceImpl implements IUserService {
         baseMapper.delUserRoleByUserId(userId);
         // 删除人员部门对应关系
         baseMapper.delUserDeptByUserId(DefaultConstants.DELETED, operatorId.toString(), DateUtil.formatDate(new Date()), userId);
+
+        SysUserVo vo = TenantHelper.ignore(()->baseMapper.selectVoById(userId));
+        vo.setDelFlag(DefaultConstants.DELETED);
+        vo.setUpdateBy(operatorId);
+
+        kafkaNormalProducer.sendKafkaMessage(KafkaTopicConstants.SYNC_DATA_TOPIC, EventTypeConstants.USER, EventSenderEnum.SYSTEM.code(), vo);
+        userAccountService.deleteById(Long.valueOf(userId), operatorId);
         // 删除人员
         return TenantHelper.ignore(() -> baseMapper.update(null, new LambdaUpdateWrapper<SysUser>()
                                                                      .set(SysUser::getDelFlag, DefaultConstants.DELETED)
                                                                      .set(SysUser::getUpdateBy, operatorId)
                                                                      .set(SysUser::getUpdateTime, DateUtil.date())
                                                                      .eq(SysUser::getUserId, userId)) > 0);
+
     }
 
     private void insertUserDept(SysUserBo bo, List<UserDeptBo> userDeptBoList) {