From 2f13f59f023fba63aa993172d48c14bcaaafb233 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 16 五月 2024 13:53:34 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java |  105 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 96 insertions(+), 9 deletions(-)

diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java
index 92ea7e4..99fb158 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java
@@ -2,22 +2,25 @@
 
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.dingtalk.api.DefaultDingTalkClient;
 import com.dingtalk.api.DingTalkClient;
-import com.dingtalk.api.request.OapiGettokenRequest;
-import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
-import com.dingtalk.api.request.OapiUserListidRequest;
-import com.dingtalk.api.request.OapiV2UserGetbymobileRequest;
-import com.dingtalk.api.response.OapiGettokenResponse;
-import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
-import com.dingtalk.api.response.OapiUserListidResponse;
-import com.dingtalk.api.response.OapiV2UserGetbymobileResponse;
+import com.dingtalk.api.request.*;
+import com.dingtalk.api.response.*;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.http.HttpUtils;
+import com.ruoyi.project.domain.vo.DingDetpInfoVo;
 import com.ruoyi.project.domain.vo.DingTalkReqVo;
+import com.ruoyi.project.domain.vo.DingUserInfoVo;
 import com.ruoyi.project.service.DingTalkService;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.taobao.api.ApiException;
-import lombok.Data;
 import lombok.extern.log4j.Log4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -47,6 +50,9 @@
 
     @Value("${agentId}")
     private Long agentId;
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
 
     @Override
     public Boolean sendNotification(DingTalkReqVo dingTalkReqVo) {
@@ -160,6 +166,86 @@
         return result;
     }
 
+    /**
+     * 鍏嶇櫥闄嗘帴鍙�
+     *
+     * @param authCode
+     * @return
+     */
+    public Map<String, Object> noLogin(String authCode) {
+        try {
+            String urlString = "https://oapi.dingtalk.com/topapi/v2/user/getuserinfo";
+            String params = "access_token=" + getAccessToken() + "&code=" + authCode;
+            String result = HttpUtils.sendPost(urlString, params);
+            ObjectMapper objectMapper = new ObjectMapper();
+            Map<String, Object> map = objectMapper.readValue(result, Map.class);
+            return map;
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            new BaseException("鐧诲綍鍑哄紓甯镐簡锛岃鑱旂郴绠$悊鍛樺鐞�");
+        }
+        return null;
+    }
+
+    @Override
+    public void deptidList(Long deptID, Integer begin) {
+        try {
+            //鏍规嵁浼犺繃鏉ョ殑閮ㄩ棬ID锛屽幓鑾峰彇璇ラ儴闂ㄤ笅鐨勭敤鎴蜂俊鎭�
+            if (begin != 1) DingUserInfoList(deptID);
+            //鑾峰彇瀛愰儴闂ㄧ殑dept_id
+            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsub");
+            OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest();
+            req.setDeptId(deptID);
+            req.setLanguage("zh_CN");
+            OapiV2DepartmentListsubResponse rsp = client.execute(req, getAccessToken());
+            ObjectMapper objectMapper = new ObjectMapper();
+            Map<String, Object> map = objectMapper.readValue(rsp.getBody(), Map.class);
+            if (ObjectUtils.isNotEmpty(map)) {
+                List<Map<String, Object>> dingDetpInfoList = (List<Map<String, Object>>) map.get("result");
+                if (Integer.valueOf(map.get("errcode").toString()) == 0) {
+                    for (int i = 0; i < dingDetpInfoList.size(); i++) {
+                        Map<String, Object> map1 = dingDetpInfoList.get(i);
+                        deptidList(Long.valueOf(map1.get("dept_id").toString()), 2);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            new BaseException("鐧诲綍鍑哄紓甯镐簡锛岃鑱旂郴绠$悊鍛樺鐞�");
+        }
+    }
+
+    public void DingUserInfoList(Long deptId) {
+        DingTalkClient client = null;
+        try {
+            client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/list?access_token=" + getAccessToken());
+            OapiV2UserListRequest req = new OapiV2UserListRequest();
+            req.setDeptId(deptId);
+            req.setCursor(0L);
+            req.setSize(100L);
+            req.setLanguage("zh_CN");
+            OapiV2UserListResponse rsp = client.execute(req, "");
+            //鑾峰彇resp閲岀殑鐢ㄦ埛淇℃伅闆嗗悎
+            ObjectMapper objectMapper = new ObjectMapper();
+            Map<String, Object> map = objectMapper.readValue(rsp.getBody(), Map.class);
+            Map<String, Object> mapResult = (Map<String, Object>) map.get("result");
+            List<Map<String, Object>> userInfoMapList = (List<Map<String, Object>>) mapResult.get("list");
+            if (!CollectionUtils.isEmpty(userInfoMapList)) {
+                //鏍规嵁鎵嬫満鍙凤紝灏唘serID鍐欒繘瀵瑰簲鐨勫瓧娈典笂
+                for (Map<String, Object> objectMap : userInfoMapList) {
+                    SysUser sysUser = new SysUser();
+                    sysUser.setPhonenumber(objectMap.get("mobile").toString());
+                    sysUser.setDingUserId(objectMap.get("userid").toString());
+                    sysUserMapper.updateUser(sysUser);
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
 
     /**
      * 鑾峰彇 access_token
@@ -176,4 +262,5 @@
         OapiGettokenResponse response = client.execute(request);
         return response.getAccessToken();
     }
+
 }

--
Gitblit v1.9.3