Pārlūkot izejas kodu

feature: 同步功能完善
1.教职工同步完善

luo.yibo@datuai.com 1 gadu atpakaļ
vecāks
revīzija
905cd0d541

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

@@ -177,4 +177,15 @@ public interface RemoteUserService {
      * @return 操作成功与否
      */
     Boolean delByUserAndDeptId(Long userId, Long deptId, Long operatorId);
+
+    /**
+     * 根据第三方Id删除人员信息
+     *
+     * @param userId     第三方人员Id
+     * @param operatorId 操作员Id
+     * @return 操作成功与否
+     */
+    Boolean delByUserId(Long userId, Long operatorId);
+
+
 }

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

@@ -405,6 +405,17 @@ public class RemoteUserServiceImpl implements RemoteUserService {
     public Boolean delByUserAndDeptId(Long userId, Long deptId, Long operatorId) {
         return userService.delByUserAndDeptId(userId, deptId, operatorId);
     }
+    /**
+     * 根据第三方Id删除人员信息
+     *
+     * @param userId     第三方人员Id
+     * @param operatorId 操作员Id
+     * @return 操作成功与否
+     */
+    @Override
+    public Boolean delByUserId(Long userId, Long operatorId) {
+        return userService.deleteUserById(userId)>=0;
+    }
 
     private void setUserDept(SysUserBo bo, RemoteUserBo remoteBo){
         List<UserDeptBo> userDeptBoList = new ArrayList<>();

+ 14 - 8
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/user/SyncRemoteUserService.java

@@ -109,14 +109,20 @@ public class SyncRemoteUserService {
                 log.warn("[不存在对应的人员Id]-[{}]", otherId);
                 return R.ok();
             }
-            RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptByOtherId(otherDeptId,person.getTenantId());
-            if (ObjectUtil.isEmpty(remoteUserVo)) {
-                log.warn("[不存在对应的部门Id]-[{}]", otherDeptId);
-                return R.ok();
-            }
-            // 删除人员
-            if(remoteUserService.delByUserAndDeptId(remoteUserVo.getUserId(), remoteDeptVo.getDeptId(), operatorId)){
-                return R.ok();
+            if (ObjectUtil.isNotEmpty(otherDeptId)) {
+                RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptByOtherId(otherDeptId, person.getTenantId());
+                if (ObjectUtil.isEmpty(remoteUserVo)) {
+                    log.warn("[不存在对应的部门Id]-[{}]", otherDeptId);
+                    return R.ok();
+                }
+                // 删除人员
+                if (remoteUserService.delByUserAndDeptId(remoteUserVo.getUserId(), remoteDeptVo.getDeptId(), operatorId)) {
+                    return R.ok();
+                }
+            } else {
+                if (remoteUserService.delByUserId(remoteUserVo.getUserId(),operatorId)) {
+                    return R.ok();
+                }
             }
             return R.fail();
         } catch (Exception e) {

+ 13 - 1
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/service/user/strategy/impl/SyncTeacherStrategyImpl.java

@@ -3,6 +3,7 @@ package org.dromara.server.base.service.user.strategy.impl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.domain.R;
+import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.common.json.utils.JsonUtils;
 import org.dromara.server.base.service.user.SyncRemoteUserService;
 import org.dromara.server.base.service.user.strategy.ISyncUserStrategy;
@@ -49,6 +50,17 @@ public class SyncTeacherStrategyImpl implements ISyncUserStrategy {
 
     @Override
     public boolean syncDelUser(List<ResourcePerson> persons) {
-        return false;
+        List<String> syncDelMessage = new ArrayList<>();
+        persons.forEach(person -> {
+            R<ErrorInfo> result = syncUserService.syncDelPeron(person);
+            if (R.isSuccess(result)) {
+                syncDelMessage.add(MessageFormat.format("[同步删除教职工成功]-[{0}]", JsonUtils.toJsonString(person)));
+            } else {
+                syncDelMessage.add(MessageFormat.format("[同步删除教职工失败]-[{0}]-[{1}]", JsonUtils.toJsonString(person), result.getMsg()));
+            }
+
+        });
+        syncDelMessage.forEach(System.out::println);
+        return true;
     }
 }

+ 42 - 4
ruoyi-server/ruoyi-server-base/src/main/java/org/dromara/server/base/util/TeacherUtils.java

@@ -47,9 +47,9 @@ public class TeacherUtils {
         } else {
             person.setTenantId(defaultConfig.getTenantId());
         }
-        if(ObjectUtil.isNotEmpty(data.getStr("idCard"))) {
-            person.setIdNumber(data.getStr("idCard"));
-        }
+        // if(ObjectUtil.isNotEmpty(data.getStr("idCard"))) {
+        //     person.setIdNumber(data.getStr("idCard"));
+        // }
         person.setCategory(DefaultConstants.CATEGORY_TEACHER);
         person.setPostCode(DefaultConstants.TEACHER_CODE);
         person.setOperatorId(DefaultConstants.KAFKA_SYNC_ADMIN);
@@ -65,7 +65,7 @@ public class TeacherUtils {
     }
 
     /**
-     * 处理部门数据
+     * 处理部门数据(增加和修改)
      *
      * @param data 部门
      * @return 处理结果
@@ -89,4 +89,42 @@ public class TeacherUtils {
 
         return resourceDeptlist;
     }
+    /**
+     * 处理部门数据(删除)
+     *
+     * @param data 部门
+     * @return 处理结果
+     */
+    public static List<ResourceDept> getSycDeleteDept(JSONObject data) {
+        List<ResourceDept> resourceDeptlist = new ArrayList<>();
+        ResourceDept dept = new ResourceDept();
+        dept.setDept_id(data.get("id").toString());
+        dept.setOperatorId(DefaultConstants.KAFKA_SYNC_ADMIN);
+        if (ObjectUtil.isNotEmpty(data.get("tenantId"))) {
+            dept.setTenantId(data.get("tenantId").toString());
+        } else {
+            dept.setTenantId(defaultConfig.getTenantId());
+        }
+        resourceDeptlist.add(dept);
+
+        return resourceDeptlist;
+    }
+    /**
+     * 处理教职工数据(删除)
+     */
+    public static List<ResourcePerson> getSyncDeleteTeahcer(JSONObject data) {
+        List<ResourcePerson> resourcePersonList = new ArrayList<>();
+        ResourcePerson person = new ResourcePerson();
+        person.setUserId(data.getStr("employee_id"));
+        person.setOperatorId(DefaultConstants.KAFKA_SYNC_ADMIN);
+        if (ObjectUtil.isNotEmpty(data.get("tenantId"))) {
+            person.setTenantId(data.get("tenantId").toString());
+        } else {
+            person.setTenantId(defaultConfig.getTenantId());
+        }
+
+        resourcePersonList.add(person);
+
+        return resourcePersonList;
+    }
 }

+ 7 - 1
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/consumer/KafkaCloudConsumer.java

@@ -7,6 +7,7 @@ import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.dromara.common.core.config.DefaultConfig;
 import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
 import org.dromara.common.message.kafka.domain.KafkaMessage;
@@ -30,6 +31,8 @@ import org.springframework.stereotype.Component;
 @Component
 @ConditionalOnExpression("'cloud'.equals('${locationFlag}')")
 public class KafkaCloudConsumer {
+    private final DefaultConfig defaultConfig;
+
     /**
      * eventBus主题监听 第三方对接相关
      *
@@ -71,6 +74,9 @@ public class KafkaCloudConsumer {
                 if (ObjectUtil.isNotEmpty(eventMsg.get("tenantId"))) {
                     tenantId = eventMsg.get("tenantId").toString();
                     receiveMsg.getHeader().setTenantId(tenantId);
+                } else {
+                    receiveMsg.getHeader().setTenantId(defaultConfig.getTenantId());
+                    eventMsg.set("tenantId", defaultConfig.getTenantId());
                 }
             } else {
                 if (ObjectUtil.isEmpty(eventMsg.get("tenantId"))) {
@@ -80,7 +86,7 @@ public class KafkaCloudConsumer {
             IYktEventStrategy eventStrategy = SpringUtils.getBean(sender, IYktEventStrategy.class);
             eventStrategy.doMsgHandle(eventType, eventMsg);
         } catch (Exception e) {
-            log.error("[kafka消息处理失败]-[消息:{}-[错误:{}]", receiveMsg, e);
+            log.error("[kafka消息处理失败]-[消息:{}-[错误:]", receiveMsg, e);
         }
     }
 }