tjx
2025-11-25 5cd878a9053e1e682689e78e37594534e957f46d
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("通过手机号获取userid失败,HTTP状态码: {}", response.code());
                throw new IOException("获取userid失败: " + response.message());
            }
            String responseBody = response.body().string();
            log.info("通过手机号获取userid响应: {}", responseBody);
            WorkWXUserIdResponse userIdResponse = objectMapper.readValue(responseBody, WorkWXUserIdResponse.class);
            if (userIdResponse.getErrcode() != 0) {
                log.error("通过手机号获取userid失败,错误码: {}, 错误信息: {}",
                        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("获取企业微信用户列表失败,HTTP状态码: {}", 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;
    }
}