| | |
| | | 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 |
| | |
| | | } |
| | | |
| | | 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(); |
| | | } |
| | | } |
| | | |
| | |
| | | @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; |
| | | } |
| | | } |