From 2c1a6f5df6ca8938e5e71b4c51e0e8315cf7f45a Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期二, 25 十一月 2025 11:13:43 +0800
Subject: [PATCH] 新增企业微信的接口

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

diff --git a/src/main/java/com/gs/xky/service/WorkWXService.java b/src/main/java/com/gs/xky/service/WorkWXService.java
index 430d00f..ac986c5 100644
--- a/src/main/java/com/gs/xky/service/WorkWXService.java
+++ b/src/main/java/com/gs/xky/service/WorkWXService.java
@@ -5,14 +5,15 @@
 import com.gs.xky.config.DataAcquisitionConfiguration;
 import lombok.Data;
 import lombok.RequiredArgsConstructor;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
+import okhttp3.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 @Service
@@ -54,7 +55,46 @@
             }
 
             log.info("鎴愬姛鑾峰彇浼佷笟寰俊access_token锛屾湁鏁堟湡: {}绉�", tokenResponse.getExpiresIn());
+            log.info("access_token : {}", tokenResponse.getAccessToken());
             return tokenResponse.getAccessToken();
+        }
+    }
+
+    public List<DeptUser> getUserList() throws IOException {
+        String accessToken = getAccessToken();
+        String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/user/list_id?access_token=%s", accessToken);
+
+        Map<String, Object> requestBody = new HashMap<>();
+        requestBody.put("limit", 10000);
+
+        MediaType mediaType = MediaType.parse("application/json; charset=UTF-8");
+        String jsonBody = objectMapper.writeValueAsString(requestBody);
+        RequestBody body = RequestBody.create(mediaType, jsonBody);
+
+        Request request = new Request.Builder()
+                .url(url)
+                .post(body)
+                .addHeader("Content-Type", "application/json; charset=UTF-8")
+                .build();
+
+        try (Response response = client.newCall(request).execute()) {
+            if (!response.isSuccessful()) {
+                log.error("鑾峰彇浼佷笟寰俊鐢ㄦ埛鍒楄〃澶辫触锛孒TTP鐘舵�佺爜: {}", response.code());
+                throw new IOException("鑾峰彇鐢ㄦ埛鍒楄〃澶辫触: " + response.message());
+            }
+
+            String responseBody = response.body().string();
+            WorkWXUserListResponse userListResponse = objectMapper.readValue(responseBody, WorkWXUserListResponse.class);
+
+            if (userListResponse.getErrcode() != 0) {
+                log.error("鑾峰彇浼佷笟寰俊鐢ㄦ埛鍒楄〃澶辫触锛岄敊璇爜: {}, 閿欒淇℃伅: {}",
+                        userListResponse.getErrcode(), userListResponse.getErrmsg());
+                throw new IOException("鑾峰彇鐢ㄦ埛鍒楄〃澶辫触: " + userListResponse.getErrmsg());
+            }
+
+            log.info("鎴愬姛鑾峰彇浼佷笟寰俊鐢ㄦ埛鍒楄〃锛岀敤鎴锋暟閲�: {}",
+                    userListResponse.getDeptUser() != null ? userListResponse.getDeptUser().size() : 0);
+            return userListResponse.getDeptUser();
         }
     }
 
@@ -67,4 +107,20 @@
         @JsonProperty("expires_in")
         private Integer expiresIn;
     }
+
+    @Data
+    private static class WorkWXUserListResponse {
+        private Integer errcode;
+        private String errmsg;
+        @JsonProperty("next_cursor")
+        private String nextCursor;
+        @JsonProperty("dept_user")
+        private List<DeptUser> deptUser;
+    }
+
+    @Data
+    public static class DeptUser {
+        private String userid;
+        private Integer department;
+    }
 }

--
Gitblit v1.9.3