From b6178a1aae26fb1392c599799bf0b472ace0f57d Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期二, 18 十一月 2025 16:59:02 +0800
Subject: [PATCH] 更新钉钉配置

---
 src/main/java/com/gs/xky/service/Impl/DingtalkInfoServiceImpl.java |   65 +++++++++++++++++++++++++++++++-
 1 files changed, 62 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/gs/xky/service/Impl/DingtalkInfoServiceImpl.java b/src/main/java/com/gs/xky/service/Impl/DingtalkInfoServiceImpl.java
index 1121b42..a04cd14 100644
--- a/src/main/java/com/gs/xky/service/Impl/DingtalkInfoServiceImpl.java
+++ b/src/main/java/com/gs/xky/service/Impl/DingtalkInfoServiceImpl.java
@@ -191,11 +191,11 @@
                 return false;
             }
 
-            List<Long> sidList = fixedList.stream()
-                    .map(DingtalkInfo::getSid)
+            List<String> sidList = fixedList.stream()
+                    .map(DingtalkInfo::getPhone)
                     .collect(Collectors.toList());
 
-            List<String> userIdList = getDingtalkUserIdListBySids(sidList);
+            List<String> userIdList = getDingtalkUserIdListByPhones(sidList);
 
             if (userIdList == null || userIdList.isEmpty()) {
                 log.warn("娌℃湁鏈夋晥鐨勯拤閽夌敤鎴稩D");
@@ -285,6 +285,65 @@
         }
     }
 
+
+    private List<String> getDingtalkUserIdListByPhones(List<String> phoneList) {
+        try {
+            if (phoneList == null || phoneList.isEmpty()) {
+                return new ArrayList<>();
+            }
+
+            // 鍘婚噸
+            phoneList = phoneList.stream().distinct().collect(Collectors.toList());
+
+            // 鏍规嵁sid鏌ヨDingtalkInfo
+            List<DingtalkInfo> list = baseMapper.selectList(
+                    new LambdaQueryWrapper<DingtalkInfo>().in(DingtalkInfo::getPhone, phoneList)
+            );
+
+            if (list == null || list.isEmpty()) {
+                return new ArrayList<>();
+            }
+
+            // 浣跨敤stream娴佽繃婊ゅ嚭list涓璬ingtalkId涓虹┖鐨勬暟鎹�
+            List<DingtalkInfo> emptyDingtalkIdList = list.stream()
+                    .filter(info -> !StringUtils.hasText(info.getDingtalkId()))
+                    .collect(Collectors.toList());
+
+            // 濡傛灉瀛樺湪涓虹┖鐨勬暟鎹氨閫氳繃閽夐拤鐨勬帴鍙h幏鍙栵紝涓篸ingtalkId璧嬪�硷紝骞朵笖鏇存柊鏁版嵁搴�
+            if (!emptyDingtalkIdList.isEmpty()) {
+                String accessToken = simpleExample.getAccessToken();
+
+                for (DingtalkInfo info : emptyDingtalkIdList) {
+                    if (StringUtils.hasText(info.getPhone())) {
+                        try {
+                            // 閫氳繃鎵嬫満鍙疯幏鍙栭拤閽夌敤鎴稩D
+                            com.dingtalk.api.response.OapiV2UserGetbymobileResponse response =
+                                    simpleExample.getOapiV2UserGetbymobileResponse(info.getPhone(), accessToken);
+
+                            if (response != null && response.getResult() != null) {
+                                info.setDingtalkId(response.getResult().getUserid());
+                                // 鏇存柊鏁版嵁搴�
+                                updateById(info);
+                            }
+                        } catch (Exception e) {
+                            log.error("鑾峰彇閽夐拤鐢ㄦ埛ID澶辫触锛屾墜鏈哄彿锛歿}", info.getPhone(), e);
+                        }
+                    }
+                }
+            }
+
+            // 涓嶅瓨鍦ㄤ负绌虹殑鏁版嵁鎴栬�呭鐞嗗畬绌烘暟鎹悗锛岃繑鍥炴墍鏈夋湁鏁堢殑dingtalkId鍒楄〃
+            return list.stream()
+                    .map(DingtalkInfo::getDingtalkId)
+                    .filter(StringUtils::hasText)
+                    .distinct()
+                    .collect(Collectors.toList());
+        } catch (Exception e) {
+            log.error("鑾峰彇閽夐拤鐢ㄦ埛鍒楄〃澶辫触", e);
+            return new ArrayList<>();
+        }
+    }
+
     private OapiMessageCorpconversationAsyncsendV2Response sendMessage(String userIdListStr, String message) throws Exception {
 
         String accessToken = simpleExample.getAccessToken();

--
Gitblit v1.9.3