From 0cd9d911b8e8634ec04cb82ea07696bb09260b03 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期二, 26 十二月 2023 13:48:06 +0800
Subject: [PATCH] Merge branch 'master' of http://42.193.1.25:9521/r/sccg_server

---
 ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java |  139 ++++++++++++++++++----------------------------
 1 files changed, 55 insertions(+), 84 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 e36d906..612541f 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,38 +64,37 @@
     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("鐧诲綍寮傚父");
-            }
-            //鑾峰彇鐢ㄦ埛淇℃伅
-            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);
-                }
-                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));
+            getToken = dingObj.getString("token");
 
-                return dingUserInfo;
+        } 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);
             }
+            DingUserInfo dingUserInfo = BeanUtil.toBean(resObj, DingUserInfo.class);
+            String accId = DingEncodeUtil.getMD5(resObj.getString("employeeCode").getBytes());
+            dingUserInfo.setUserId(Long.parseLong(accId));
+            return dingUserInfo;
         }
         return null;
     }
@@ -101,7 +103,7 @@
      * 鏍规嵁鍛樺伐Code鏌ヨ璇︽儏
      *
      * @param employeeCode 鍛樺伐code鍒楄〃
-     * @param tenantId    绉熸埛id
+     * @param tenantId     绉熸埛id
      * @return
      */
     public JSONObject getEmpByCode(String employeeCode, String tenantId) {
@@ -133,34 +135,36 @@
         postClient.addParameter("tenantId", dingConfig.getTenantId());
         postClient.addParameter("msg", getJsonStringText(content));
         String apiResult = postClient.post();
-        log.info("apiResult------>{}",apiResult);
+        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瀛椾互鍐�
+     * @param text        娑堟伅锛屾渶濂�500瀛椾互鍐�
      * @return
      */
-    public JSONObject sendDingMsgMarkDown(String receiverIds, String title,String text) {
+    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));
+        postClient.addParameter("msg", getJsonMarkDown(title, text));
         String apiResult = postClient.post();
-        log.info("apiResult------>{}",apiResult);
+        log.info("apiResult------>{}", apiResult);
         JSONObject resObj = parsingJson(apiResult);
         if (null != resObj) {
             resObj = resObj.getJSONObject("data");
         }
         return resObj;
     }
+
     /**
      * 鍙戦�侀摼鎺ユ秷鎭�
      *
@@ -217,7 +221,7 @@
      */
     public List<UmsDepart> getOrgInfo(JSONArray deptTopArr) {
         List<UmsDepart> orgList = new ArrayList<>();
-        if(CollectionUtils.isEmpty(deptTopArr)){
+        if (CollectionUtils.isEmpty(deptTopArr)) {
             return null;
         }
         //鑾峰彇鍏ㄩ儴閮ㄩ棬code
@@ -318,64 +322,30 @@
                 } while (isHasPage);
             }
         }
-
         //琛ュ厖accountId
-        dingAccoutId(employeeCodes,dingUserInfoList);
-
-        JSONArray arr = new JSONArray(Collections.singletonList(dingUserInfoList));
-        redisTemplate.opsForValue().set("userJsonList", arr.toJSONString());
-        return dingUserInfoList;
-    }
-    //琛ュ厖DingUserInfo涓殑accountId
-    private void insertAccoutId(Set<DingUserInfo> dingUserInfoList, List<String> employeeCodes) {
-        if(CollectionUtils.isNotEmpty(employeeCodes)) {
+        if (CollectionUtils.isNotEmpty(employeeCodes)) {
             log.info("寮�濮嬭ˉ鍏卆ccountId");
             JSONArray users = getAccountId(employeeCodes);
-            if(CollectionUtils.isNotEmpty(users)) {
+            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()){
+                    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;
     }
 
-    //鍒嗘壒鎵ц
-    private void dingAccoutId(List<String> employeeCodes,Set<DingUserInfo> dingUserInfoList) {
-        // 姣忔鎻掑叆鐨勬暟閲�
-        int batchSize = 99;
-        // 璁$畻闇�瑕佸垎澶氬皯鎵�
-        int batch = employeeCodes.size() / batchSize;
-        // 璁$畻鏈�鍚庝竴鎵圭殑澶у皬
-        int lastSize = employeeCodes.size() % batchSize;
-
-        log.info("鎻掑叆鏁伴噺{},鍒嗗灏戞壒{},鏈�鍚庝竴鎵圭殑澶у皬{}", batchSize, batch, lastSize);
-        // 灏嗙瓫閫夊嚭鐨勭粨鏋滃垎鎵规娣诲姞
-        int num = 1;
-        for (int i = batchSize; i <= batch * batchSize; i = i + batchSize) {
-            log.info("寮�濮�");
-            // 鎴彇鏈瑕佹坊鍔犵殑鏁版嵁
-            List<String> insertList = employeeCodes.subList(i - batchSize, i);
-            // 娣诲姞鏈壒娆℃暟鎹�
-            log.info("鎵归噺瀵煎叆鏁版嵁绗瑊}娆�", num);
-            insertAccoutId(dingUserInfoList, insertList);
-            num++;
-        }
-        // 鏈�鍚庝竴鎵瑰厓绱犵殑澶у皬鏄惁涓�0
-        if (lastSize != 0) {
-            // 濡傛灉鍏冪礌鏈夊墿浣欏垯灏嗘墍鏈夊厓绱犱竴娆℃�ф彃鍏�
-            List<String> lastList = employeeCodes.subList(batchSize * batch, employeeCodes.size());
-            log.info("鏈�鍚庝竴娆″鍏ユ暟鎹�");
-            insertAccoutId(dingUserInfoList, lastList);
-        }
-    }
     /**
      * 鏍规嵁鍛樺伐code 鑾峰彇鍛樺伐accountId
      *
@@ -383,14 +353,13 @@
      * @return 閽夐拤鐢ㄦ埛浣撶郴瀹炰綋瀵硅薄
      */
     private JSONArray getAccountId(List<String> employeeCodes) {
-        log.info("Code鍙傛暟闆嗗悎------>{}",employeeCodes);
+        log.info("Code鍙傛暟闆嗗悎------>{}", employeeCodes);
         PostClient postClient = executableClient.newPostClient(POST_ACCOUNTID_BY_EMPLOYEECODE);
         for (String code : employeeCodes) {
-            postClient.addParameter("employeeCodes",code);
+            postClient.addParameter("employeeCodes", code);
         }
         postClient.addParameter("tenantId", dingConfig.getTenantId());
         String apiResult = postClient.post();
-        log.info("鑾峰彇鍛樺伐accountId鎺ュ彛杩斿洖------>{}",apiResult);
         JSONObject resObj = parsingJson(apiResult);
         if (null != resObj) {
             return resObj.getJSONArray("data");
@@ -432,8 +401,8 @@
 //                            if (null != orgDetail) {
 //                                String orgId = orgDetail.getString("organizationCode");
 //                                String orgName = orgDetail.getString("organizationName");
-                                Long orgId = Long.parseLong(DingEncodeUtil.getMD5(orgCode.getBytes()));
-                                empCodeObj.put("orgId", orgId);
+                            Long orgId = Long.parseLong(DingEncodeUtil.getMD5(orgCode.getBytes()));
+                            empCodeObj.put("orgId", orgId);
 //                                empCodeObj.put("orgName", orgName);
 //                            }
                         }
@@ -449,7 +418,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);
@@ -461,7 +430,7 @@
                         posOne.setCode(code);
                         posOne.setStatus(1);
                         userRoleService.save(posOne);
-                    }else {
+                    } else {
                         posOne.setCode(code);
                         userRoleService.updateById(posOne);
                     }
@@ -651,22 +620,24 @@
         String jsonStr = JSONObject.toJSONString(jsonObject);
         return jsonStr;
     }
+
     /**
      * 鎷兼帴瑕佸彂閫佺殑娑堟伅  markdown娑堟伅
      * json瀵硅薄 蹇呴』 {"msgtype":"markdown","markdown":{"title":"棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹�","text":"娑堟伅鍐呭"}}
      *
      * @param title 棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹�
      */
-    private String getJsonMarkDown(String title,String text) {
+    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瀛楃浠ュ唴
+        markdown.put("text", text);//娑堟伅鍐呭锛屽缓璁�500瀛楃浠ュ唴
         jsonObject.put("markdown", markdown);
         String jsonStr = JSONObject.toJSONString(jsonObject);
         return jsonStr;
     }
+
     /**
      * 鎷兼帴瑕佸彂閫佺殑娑堟伅   閾炬帴娑堟伅
      *

--
Gitblit v1.8.0