tjx
2025-11-25 2c1a6f5df6ca8938e5e71b4c51e0e8315cf7f45a
新增企业微信的接口
已修改3个文件
98 ■■■■■ 文件已修改
src/main/java/com/gs/xky/service/WorkWXService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/gs/xky/XkyApplicationTests.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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("获取企业微信用户列表失败,HTTP状态码: {}", 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;
    }
}
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
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("=== 测试结束 ===");
    }
    /**
     * 测试获取企业微信用户列表
     * 功能:调用企业微信API获取所有用户的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("=== 测试结束 ===");
    }
}