diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java index 8853082..39ff945 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java @@ -44,8 +44,9 @@ import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import java.util.ArrayList; -import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; @@ -370,7 +371,8 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { } // api 接口执行成功,并且 sys_third_account 表匹配失败,就向 sys_third_account 里插入一条数据 - if (apiSuccess && (sysThirdAccount == null || oConvertUtils.isEmpty(sysThirdAccount.getThirdUserId()))) { + boolean flag = (sysThirdAccount == null || oConvertUtils.isEmpty(sysThirdAccount.getThirdUserId())); + if (apiSuccess && flag) { if (sysThirdAccount == null) { sysThirdAccount = new SysThirdAccount(); sysThirdAccount.setSysUserId(sysUser.getId()); @@ -402,8 +404,14 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { List<Department> allDepartment = JdtDepartmentAPI.listAll(accessToken); // 根据钉钉部门查询所有钉钉用户,用于反向同步到本地 List<User> ddUserList = this.getDtAllUserByDepartment(allDepartment, accessToken); + // 记录已经同步过的用户id,当有多个部门的情况时,只同步一次 + Set<String> syncedUserIdSet = new HashSet<>(); for (User dtUserInfo : ddUserList) { + if (syncedUserIdSet.contains(dtUserInfo.getUserid())) { + continue; + } + syncedUserIdSet.add(dtUserInfo.getUserid()); SysThirdAccount sysThirdAccount = sysThirdAccountService.getOneByThirdUserId(dtUserInfo.getUserid(), THIRD_TYPE); List<SysUser> collect = sysUsersList.stream().filter(user -> (dtUserInfo.getMobile().equals(user.getPhone()) || dtUserInfo.getUserid().equals(user.getUsername())) ).collect(Collectors.toList()); @@ -581,12 +589,6 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { // update-begin--Author:liusq Date:20210713 for:钉钉同步到本地的人员没有状态,导致同步之后无法登录 #I3ZC2L sysUser.setStatus(1); // update-end--Author:liusq Date:20210713 for:钉钉同步到本地的人员没有状态,导致同步之后无法登录 #I3ZC2L - // 设置工号,如果工号为空,则使用username - if (oConvertUtils.isEmpty(dtUser.getJob_number())) { - sysUser.setWorkNo(dtUser.getUserid()); - } else { - sysUser.setWorkNo(dtUser.getJob_number()); - } return this.dtUserToSysUser(dtUser, sysUser); } @@ -611,7 +613,12 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { } else { sysUser.setPhone(null); } - sysUser.setWorkNo(null); + // 设置工号,如果工号为空,则使用username + if (oConvertUtils.isEmpty(dtUser.getJob_number())) { + sysUser.setWorkNo(dtUser.getUserid()); + } else { + sysUser.setWorkNo(dtUser.getJob_number()); + } // --- 钉钉没有逻辑删除功能 // sysUser.getDelFlag() // --- 钉钉没有冻结、启用禁用功能 @@ -763,8 +770,8 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { return JdtMessageAPI.sendTextMessage(textMessage, accessToken); } - public boolean recallMessage(String msg_task_id) { - Response<JSONObject> response = this.recallMessageResponse(msg_task_id); + public boolean recallMessage(String msgTaskId) { + Response<JSONObject> response = this.recallMessageResponse(msgTaskId); if (response == null) { return false; } @@ -774,16 +781,16 @@ public class ThirdAppDingtalkServiceImpl implements IThirdAppService { /** * 撤回消息 * - * @param msg_task_id + * @param msgTaskId * @return */ - public Response<JSONObject> recallMessageResponse(String msg_task_id) { + public Response<JSONObject> recallMessageResponse(String msgTaskId) { String accessToken = this.getAccessToken(); if (accessToken == null) { return null; } int agentId = thirdAppConfig.getDingtalk().getAgentIdInt(); - return JdtMessageAPI.recallMessage(agentId, msg_task_id, getAccessToken()); + return JdtMessageAPI.recallMessage(agentId, msgTaskId, getAccessToken()); } /**