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

---
 src/main/java/com/gs/xky/service/WorkWXService.java |   66 +++++++++++++++++++++++++++------
 src/test/java/com/gs/xky/XkyApplicationTests.java   |   33 +++++++++++++++-
 2 files changed, 85 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/gs/xky/service/WorkWXService.java b/src/main/java/com/gs/xky/service/WorkWXService.java
index ac986c5..6aa3594 100644
--- a/src/main/java/com/gs/xky/service/WorkWXService.java
+++ b/src/main/java/com/gs/xky/service/WorkWXService.java
@@ -60,12 +60,12 @@
         }
     }
 
-    public List<DeptUser> getUserList() throws IOException {
+    public String getUserIdByMobile(String mobile) throws IOException {
         String accessToken = getAccessToken();
-        String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/user/list_id?access_token=%s", accessToken);
+        String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/user/getuserid?access_token=%s", accessToken);
 
         Map<String, Object> requestBody = new HashMap<>();
-        requestBody.put("limit", 10000);
+        requestBody.put("mobile", mobile);
 
         MediaType mediaType = MediaType.parse("application/json; charset=UTF-8");
         String jsonBody = objectMapper.writeValueAsString(requestBody);
@@ -79,11 +79,46 @@
 
         try (Response response = client.newCall(request).execute()) {
             if (!response.isSuccessful()) {
+                log.error("閫氳繃鎵嬫満鍙疯幏鍙杣serid澶辫触锛孒TTP鐘舵�佺爜: {}", response.code());
+                throw new IOException("鑾峰彇userid澶辫触: " + response.message());
+            }
+
+            String responseBody = response.body().string();
+            log.info("閫氳繃鎵嬫満鍙疯幏鍙杣serid鍝嶅簲: {}", responseBody);
+
+            WorkWXUserIdResponse userIdResponse = objectMapper.readValue(responseBody, WorkWXUserIdResponse.class);
+
+            if (userIdResponse.getErrcode() != 0) {
+                log.error("閫氳繃鎵嬫満鍙疯幏鍙杣serid澶辫触锛岄敊璇爜: {}, 閿欒淇℃伅: {}",
+                        userIdResponse.getErrcode(), userIdResponse.getErrmsg());
+                throw new IOException("鑾峰彇userid澶辫触: " + userIdResponse.getErrmsg());
+            }
+
+            log.info("鎴愬姛閫氳繃鎵嬫満鍙� {} 鑾峰彇userid: {}", mobile, userIdResponse.getUserid());
+            return userIdResponse.getUserid();
+        }
+    }
+
+    public List<WorkWXUser> getUserList() throws IOException {
+        String accessToken = getAccessToken();
+        String url = String.format(
+                "https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=%s&department_id=1&fetch_child=1",
+                accessToken);
+
+        Request request = new Request.Builder()
+                .url(url)
+                .get()
+                .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();
+            log.info("鑾峰彇鐢ㄦ埛鍒楄〃鍝嶅簲: {}", responseBody);
+
             WorkWXUserListResponse userListResponse = objectMapper.readValue(responseBody, WorkWXUserListResponse.class);
 
             if (userListResponse.getErrcode() != 0) {
@@ -93,8 +128,8 @@
             }
 
             log.info("鎴愬姛鑾峰彇浼佷笟寰俊鐢ㄦ埛鍒楄〃锛岀敤鎴锋暟閲�: {}",
-                    userListResponse.getDeptUser() != null ? userListResponse.getDeptUser().size() : 0);
-            return userListResponse.getDeptUser();
+                    userListResponse.getUserlist() != null ? userListResponse.getUserlist().size() : 0);
+            return userListResponse.getUserlist();
         }
     }
 
@@ -109,18 +144,25 @@
     }
 
     @Data
-    private static class WorkWXUserListResponse {
+    private static class WorkWXUserIdResponse {
         private Integer errcode;
         private String errmsg;
-        @JsonProperty("next_cursor")
-        private String nextCursor;
-        @JsonProperty("dept_user")
-        private List<DeptUser> deptUser;
+        private String userid;
     }
 
     @Data
-    public static class DeptUser {
+    private static class WorkWXUserListResponse {
+        private Integer errcode;
+        private String errmsg;
+        private List<WorkWXUser> userlist;
+    }
+
+    @Data
+    public static class WorkWXUser {
         private String userid;
-        private Integer department;
+        private String name;
+        private List<Integer> department;
+        @JsonProperty("open_userid")
+        private String openUserid;
     }
 }
diff --git a/src/test/java/com/gs/xky/XkyApplicationTests.java b/src/test/java/com/gs/xky/XkyApplicationTests.java
index 1e4295a..8447194 100644
--- a/src/test/java/com/gs/xky/XkyApplicationTests.java
+++ b/src/test/java/com/gs/xky/XkyApplicationTests.java
@@ -73,6 +73,33 @@
     }
 
     /**
+     * 娴嬭瘯閫氳繃鎵嬫満鍙疯幏鍙杣serid
+     * 鍔熻兘锛氳皟鐢ㄤ紒涓氬井淇PI閫氳繃鎵嬫満鍙锋煡璇serid
+     */
+    @Test
+    void testGetUserIdByMobile() {
+        System.out.println("=== 寮�濮嬫祴璇曢�氳繃鎵嬫満鍙疯幏鍙杣serid ===");
+
+        try {
+            String mobile = "13335712023";
+            String userid = workWXService.getUserIdByMobile(mobile);
+
+            if (userid != null && !userid.isEmpty()) {
+                System.out.println("鉁� 鎴愬姛閫氳繃鎵嬫満鍙疯幏鍙杣serid");
+                System.out.println("  - 鎵嬫満鍙�: " + mobile);
+                System.out.println("  - userid: " + userid);
+            } else {
+                System.out.println("鉁� 鑾峰彇鐨剈serid涓虹┖");
+            }
+        } catch (IOException e) {
+            System.out.println("鉁� 鑾峰彇userid澶辫触: " + e.getMessage());
+            e.printStackTrace();
+        }
+
+        System.out.println("=== 娴嬭瘯缁撴潫 ===");
+    }
+
+    /**
      * 娴嬭瘯鑾峰彇浼佷笟寰俊鐢ㄦ埛鍒楄〃
      * 鍔熻兘锛氳皟鐢ㄤ紒涓氬井淇PI鑾峰彇鎵�鏈夌敤鎴风殑userid鍜岄儴闂ㄤ俊鎭�
      */
@@ -81,14 +108,16 @@
         System.out.println("=== 寮�濮嬫祴璇曡幏鍙栦紒涓氬井淇$敤鎴峰垪琛� ===");
 
         try {
-            List<WorkWXService.DeptUser> userList = workWXService.getUserList();
+            List<WorkWXService.WorkWXUser> userList = workWXService.getUserList();
 
             if (userList != null && !userList.isEmpty()) {
                 System.out.println("鉁� 鎴愬姛鑾峰彇浼佷笟寰俊鐢ㄦ埛鍒楄〃");
                 System.out.println("  - 鐢ㄦ埛鎬绘暟: " + userList.size());
                 System.out.println("  - 鍓�5鏉℃暟鎹�:");
                 userList.stream().limit(5).forEach(user -> {
-                    System.out.println("    * userid: " + user.getUserid() + ", department: " + user.getDepartment());
+                    System.out.println("    * userid: " + user.getUserid() +
+                            ", name: " + user.getName() +
+                            ", department: " + user.getDepartment());
                 });
             } else {
                 System.out.println("鉁� 鑾峰彇鐨勭敤鎴峰垪琛ㄤ负绌�");

--
Gitblit v1.9.3