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 +++++++++++++++++++++++++++++-
src/main/resources/application.yml | 6 +-
src/test/java/com/gs/xky/XkyApplicationTests.java | 30 +++++++++++++++
3 files changed, 92 insertions(+), 6 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;
+ }
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 447ee31..27aadef 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -5,9 +5,9 @@
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: oracle.jdbc.OracleDriver
- url: jdbc:oracle:thin:@192.168.1.22:1521/ORCL
- username: hm_prd
- password: hmprd
+ url: jdbc:oracle:thin:@122.226.249.238:5936/ORCL
+ username: xb_prd
+ password: xbprd
druid:
initialSize: 5
minIdle: 5
diff --git a/src/test/java/com/gs/xky/XkyApplicationTests.java b/src/test/java/com/gs/xky/XkyApplicationTests.java
index 994b4bd..1e4295a 100644
--- a/src/test/java/com/gs/xky/XkyApplicationTests.java
+++ b/src/test/java/com/gs/xky/XkyApplicationTests.java
@@ -7,6 +7,7 @@
import org.springframework.boot.test.context.SpringBootTest;
import java.io.IOException;
+import java.util.List;
@SpringBootTest
class XkyApplicationTests {
@@ -70,4 +71,33 @@
System.out.println("=== 娴嬭瘯缁撴潫 ===");
}
+
+ /**
+ * 娴嬭瘯鑾峰彇浼佷笟寰俊鐢ㄦ埛鍒楄〃
+ * 鍔熻兘锛氳皟鐢ㄤ紒涓氬井淇PI鑾峰彇鎵�鏈夌敤鎴风殑userid鍜岄儴闂ㄤ俊鎭�
+ */
+ @Test
+ void testGetWorkWXUserList() {
+ System.out.println("=== 寮�濮嬫祴璇曡幏鍙栦紒涓氬井淇$敤鎴峰垪琛� ===");
+
+ try {
+ List<WorkWXService.DeptUser> 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());
+ });
+ } else {
+ System.out.println("鉁� 鑾峰彇鐨勭敤鎴峰垪琛ㄤ负绌�");
+ }
+ } catch (IOException e) {
+ System.out.println("鉁� 鑾峰彇鐢ㄦ埛鍒楄〃澶辫触: " + e.getMessage());
+ e.printStackTrace();
+ }
+
+ System.out.println("=== 娴嬭瘯缁撴潫 ===");
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3