From 1cad14bca191807e18705c3a5526eda8151be439 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期一, 14 四月 2025 23:10:22 +0800 Subject: [PATCH] 批量审核和图片保存bug --- ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java | 157 +++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 124 insertions(+), 33 deletions(-) diff --git a/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java b/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java index 0c61fef..499f3fe 100644 --- a/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java +++ b/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java @@ -23,6 +23,7 @@ import com.ycl.exception.ApiException; import com.ycl.service.depart.UmsDepartService; import com.ycl.service.user.UmsRoleService; +import com.ycl.util.DingUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; @@ -51,6 +52,8 @@ @Autowired private UmsDepartService umsDepartService; + @Autowired + private DingUtil dingUtil; /** * 鑾峰彇鐢ㄦ埛淇℃伅 @@ -61,32 +64,43 @@ public DingUserInfo getDingUserInfo(String code) { // 鍒ゆ柇ding 淇℃伅鏄惁瀛樺湪 boolean hasDing = redisTemplate.hasKey("ding"); + String getToken = ""; if (hasDing) { + log.info("redis姝e父鏈夋秷鎭�"); String dingStr = redisTemplate.opsForValue().get("ding"); JSONObject dingObj = JSONObject.parseObject(dingStr); - String getToken = dingObj.getString("token"); - if (ObjectUtil.isEmpty(code) || ObjectUtil.isEmpty(getToken)) { - throw new ApiException("鐧诲綍寮傚父"); + getToken = dingObj.getString("token"); + + } else { + getToken = dingUtil.getToken(); + } + if (ObjectUtil.isEmpty(code) || ObjectUtil.isEmpty(getToken)) { + throw new ApiException("鐧诲綍寮傚父"); + } + //鑾峰彇鐢ㄦ埛淇℃伅 + PostClient postClient = executableClient.newPostClient(GET_USER_INFO); + postClient.addParameter("access_token", getToken); //token + postClient.addParameter("auth_code", code);//涓存椂鎺堟潈鐮� + String apiResult = postClient.post(); + JSONObject resObj = parsingJson(apiResult); + log.info("resObj--------------->{}", resObj); + if (null != resObj) { + resObj = resObj.getJSONObject("data"); + redisTemplate.opsForValue().set("realmId", resObj.getString("realmId")); + JSONObject empCodeObj = getEmpByCode(resObj.getString("employeeCode"), resObj.getString("realmId")); + if (ObjectUtil.isNotEmpty(empCodeObj)) { + resObj.putAll(empCodeObj); } - //鑾峰彇鐢ㄦ埛淇℃伅 - PostClient postClient = executableClient.newPostClient(GET_USER_INFO); - postClient.addParameter("access_token", getToken); //token - postClient.addParameter("auth_code", code);//涓存椂鎺堟潈鐮� - String apiResult = postClient.post(); - JSONObject resObj = parsingJson(apiResult); - if (null != resObj) { - resObj = resObj.getJSONObject("data"); - redisTemplate.opsForValue().set("realmId", resObj.getString("realmId")); - JSONObject empCodeObj = getEmpByCode(resObj.getString("employeeCode"), resObj.getString("realmId")); - if (ObjectUtil.isNotEmpty(empCodeObj)) { - resObj.putAll(empCodeObj); - } - DingUserInfo dingUserInfo = BeanUtil.toBean(resObj, DingUserInfo.class); - String accId = DingEncodeUtil.getMD5(resObj.getString("employeeCode").getBytes()); - dingUserInfo.setUserId(Long.parseLong(accId)); - dingUserInfo.setAccountId(resObj.getLong("accountId")); - return dingUserInfo; - } + DingUserInfo dingUserInfo = BeanUtil.toBean(resObj, DingUserInfo.class); + String accId = DingEncodeUtil.getMD5(resObj.getString("employeeCode").getBytes()); + dingUserInfo.setUserId(Long.parseLong(accId)); + + String employeeCode = resObj.getString("employeeCode"); + JSONArray users = getAccountId(Arrays.asList(employeeCode)); + JSONObject jsonObject = users.getJSONObject(0); + String accountId = jsonObject.getString("accountId"); + dingUserInfo.setAccountId(Long.parseLong(accountId)); + return dingUserInfo; } return null; } @@ -95,7 +109,7 @@ * 鏍规嵁鍛樺伐Code鏌ヨ璇︽儏 * * @param employeeCode 鍛樺伐code鍒楄〃 - * @param TENANT_ID 绉熸埛id + * @param tenantId 绉熸埛id * @return */ public JSONObject getEmpByCode(String employeeCode, String tenantId) { @@ -127,6 +141,29 @@ postClient.addParameter("tenantId", dingConfig.getTenantId()); postClient.addParameter("msg", getJsonStringText(content)); String apiResult = postClient.post(); + log.info("apiResult------>{}", apiResult); + JSONObject resObj = parsingJson(apiResult); + if (null != resObj) { + resObj = resObj.getJSONObject("data"); + } + return resObj; + } + + /** + * 鍙戦�乵arkdown娑堟伅 + * + * @param receiverIds 鎺ユ敹浜虹敤鎴稩D(accountId)锛� 澶氫釜浜烘椂浣跨敤鍗婅閫楀彿鍒嗛殧锛� + * @param text 娑堟伅锛屾渶濂�500瀛椾互鍐� + * @return + */ + public JSONObject sendDingMsgMarkDown(String receiverIds, String title, String text) { + //鑾峰彇鐢ㄦ埛淇℃伅 + PostClient postClient = executableClient.newPostClient(POST_SEND_NOTIFY); + postClient.addParameter("receiverIds", receiverIds); + postClient.addParameter("tenantId", dingConfig.getTenantId()); + postClient.addParameter("msg", getJsonMarkDown(title, text)); + String apiResult = postClient.post(); + log.info("apiResult------>{}", apiResult); JSONObject resObj = parsingJson(apiResult); if (null != resObj) { resObj = resObj.getJSONObject("data"); @@ -190,7 +227,7 @@ */ public List<UmsDepart> getOrgInfo(JSONArray deptTopArr) { List<UmsDepart> orgList = new ArrayList<>(); - if(CollectionUtils.isEmpty(deptTopArr)){ + if (CollectionUtils.isEmpty(deptTopArr)) { return null; } //鑾峰彇鍏ㄩ儴閮ㄩ棬code @@ -240,6 +277,7 @@ orgLambdaQueryWrapper.likeRight(UmsDepart::getCode, "GO_"); List<UmsDepart> orgList = umsDepartService.list(orgLambdaQueryWrapper); Set<DingUserInfo> dingUserInfoList = new HashSet<>(); + List<String> employeeCodes = new ArrayList(); for (UmsDepart org : orgList) { if (ObjectUtil.isNotEmpty(org.getCode())) { IntelligentGetClient intelligentGetClient = executableClient.newIntelligentGetClient(POST_PERSON_INFO_BY_ORG_CODE); @@ -276,6 +314,7 @@ JSONObject data = dataArr.getJSONObject(i); // String empName = data.getString("employeeName"); String employeeCode = data.getString("employeeCode"); + employeeCodes.add(employeeCode); //鏍规嵁鍛樺伐code 鑾峰彇鍛樺伐璇︽儏 DingUserInfo dingUserInfo = getEmpInfoByCode(employeeCode); if (ObjectUtil.isNotEmpty(dingUserInfo)) { @@ -289,9 +328,49 @@ } while (isHasPage); } } + //琛ュ厖accountId + if (CollectionUtils.isNotEmpty(employeeCodes)) { + log.info("寮�濮嬭ˉ鍏卆ccountId"); + JSONArray users = getAccountId(employeeCodes); + if (CollectionUtils.isNotEmpty(users)) { + for (int i = 0; i < users.size(); i++) { + JSONObject jsonObject = users.getJSONObject(i); + String employeeCode = jsonObject.getString("employeeCode"); + String accountId = jsonObject.getString("accountId"); + Optional<DingUserInfo> first = dingUserInfoList.stream().filter(dingUserInfo -> dingUserInfo.getEmployeeCode().equals(employeeCode)) + .findFirst(); + if (first.isPresent()) { + DingUserInfo dingUserInfo = first.get(); + dingUserInfo.setAccountId(Long.parseLong(accountId)); + } + } + } + } + JSONArray arr = new JSONArray(Collections.singletonList(dingUserInfoList)); redisTemplate.opsForValue().set("userJsonList", arr.toJSONString()); return dingUserInfoList; + } + + /** + * 鏍规嵁鍛樺伐code 鑾峰彇鍛樺伐accountId + * + * @param employeeCodes 鍛樺伐code + * @return 閽夐拤鐢ㄦ埛浣撶郴瀹炰綋瀵硅薄 + */ + private JSONArray getAccountId(List<String> employeeCodes) { + log.info("Code鍙傛暟闆嗗悎------>{}", employeeCodes); + PostClient postClient = executableClient.newPostClient(POST_ACCOUNTID_BY_EMPLOYEECODE); + for (String code : employeeCodes) { + postClient.addParameter("employeeCodes", code); + } + postClient.addParameter("tenantId", dingConfig.getTenantId()); + String apiResult = postClient.post(); + JSONObject resObj = parsingJson(apiResult); + if (null != resObj) { + return resObj.getJSONArray("data"); + } + return null; } @Resource @@ -312,7 +391,6 @@ //鏌ヨ浠昏亴 JSONArray jobArr = getStaffAppointment(employeeCode); assert jobArr != null; - log.info("浠昏亴----------------->{}",jobArr); //涓存椂淇濆瓨浠昏亴鐨刬ds锛堢郴缁熺殑鐢ㄦ埛浣撶郴锛� List<Long> posIds = new ArrayList<>(); //鐢ㄦ埛瑙掕壊code @@ -324,15 +402,13 @@ if (isMain) { JSONObject holdapost = jobArr.getJSONObject(0); String orgCode = holdapost.getString("organizationCode"); - log.info("orgCode---------------->{}",orgCode); if (StrUtil.isNotBlank(orgCode)) { // JSONObject orgDetail = getOrgDetailByCode(orgCode); // if (null != orgDetail) { // String orgId = orgDetail.getString("organizationCode"); // String orgName = orgDetail.getString("organizationName"); - Long orgId = Long.parseLong(DingEncodeUtil.getMD5(orgCode.getBytes())); - log.info("瑙e瘑鍚庣殑orgId-------------->{}",orgId); - empCodeObj.put("orgId", orgId); + Long orgId = Long.parseLong(DingEncodeUtil.getMD5(orgCode.getBytes())); + empCodeObj.put("orgId", orgId); // empCodeObj.put("orgName", orgName); // } } @@ -348,7 +424,7 @@ String code = DingEncodeUtil.getMD5(posName.getBytes()); //鏌ヨ鏄惁鏈夐噸澶嶇殑 LambdaQueryWrapper<UmsRole> posLambdaQueryWrapper = new LambdaQueryWrapper<>(); - // posLambdaQueryWrapper.eq(UmsRole::getCode, code); + // posLambdaQueryWrapper.eq(UmsRole::getCode, code); posLambdaQueryWrapper.eq(UmsRole::getName, posName); posLambdaQueryWrapper.last("LIMIT 1"); UmsRole posOne = userRoleService.getOne(posLambdaQueryWrapper); @@ -360,7 +436,7 @@ posOne.setCode(code); posOne.setStatus(1); userRoleService.save(posOne); - }else { + } else { posOne.setCode(code); userRoleService.updateById(posOne); } @@ -369,7 +445,6 @@ //杞崲涓哄疄浣撶被 DingUserInfo dingUserInfo = BeanUtil.toBean(empCodeObj, DingUserInfo.class); Long orgId = dingUserInfo.getOrgId(); - log.info("鏈�鍚庣粨鏋滅殑orgId----------->{}",orgId); if (ObjectUtil.isNotEmpty(orgId)) { dingUserInfo.setPosIdList(posIds); dingUserInfo.setRoleCodeList(roleCodeList); @@ -390,7 +465,6 @@ postClient.addParameter("employeeCode", empCode); String apiResult = postClient.post(); JSONObject dataObj = parsingJson(apiResult); - log.info("浠昏亴------------->{}",dataObj); if (null != dataObj) { return dataObj.getJSONArray("data"); } @@ -554,6 +628,23 @@ } /** + * 鎷兼帴瑕佸彂閫佺殑娑堟伅 markdown娑堟伅 + * json瀵硅薄 蹇呴』 {"msgtype":"markdown","markdown":{"title":"棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹�","text":"娑堟伅鍐呭"}} + * + * @param title 棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹� + */ + private String getJsonMarkDown(String title, String text) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("msgtype", "markdown");//娑堟伅绫诲瀷锛屾鏃跺浐瀹氫负锛歮arkdown + JSONObject markdown = new JSONObject(); + markdown.put("title", title);//棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹� + markdown.put("text", text);//娑堟伅鍐呭锛屽缓璁�500瀛楃浠ュ唴 + jsonObject.put("markdown", markdown); + String jsonStr = JSONObject.toJSONString(jsonObject); + return jsonStr; + } + + /** * 鎷兼帴瑕佸彂閫佺殑娑堟伅 閾炬帴娑堟伅 * * @param messageUrl 娑堟伅鐐瑰嚮閾炬帴鍦板潃锛屽綋鍙戦�佹秷鎭负灏忕▼搴忔椂鏀寔灏忕▼搴忚烦杞摼鎺� -- Gitblit v1.8.0