| @@ -27,7 +27,6 @@ | |||
| <property name="max" value="120"/> | |||
| <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/> | |||
| </module> | |||
| <module name="AvoidStarImport"/> | |||
| <module name="OneTopLevelClass"/> | |||
| <module name="NoLineWrap"/> | |||
| <module name="EmptyBlock"> | |||
| @@ -36,34 +36,36 @@ import java.util.Map; | |||
| import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.*; | |||
| /** | |||
| * . | |||
| * | |||
| * @author chanjarster | |||
| */ | |||
| @Slf4j | |||
| public abstract class BaseWxCpServiceImpl<H, P> implements WxCpService, RequestHttp<H, P> { | |||
| private WxCpUserService userService = new WxCpUserServiceImpl(this); | |||
| private WxCpChatService chatService = new WxCpChatServiceImpl(this); | |||
| private WxCpUserService userService = new WxCpUserServiceImpl(this); | |||
| private WxCpChatService chatService = new WxCpChatServiceImpl(this); | |||
| private WxCpDepartmentService departmentService = new WxCpDepartmentServiceImpl(this); | |||
| private WxCpMediaService mediaService = new WxCpMediaServiceImpl(this); | |||
| private WxCpMenuService menuService = new WxCpMenuServiceImpl(this); | |||
| private WxCpOAuth2Service oauth2Service = new WxCpOAuth2ServiceImpl(this); | |||
| private WxCpTagService tagService = new WxCpTagServiceImpl(this); | |||
| private WxCpAgentService agentService = new WxCpAgentServiceImpl(this); | |||
| private WxCpOaService oaService = new WxCpOaServiceImpl(this); | |||
| private WxCpTaskCardService taskCardService = new WxCpTaskCardServiceImpl(this); | |||
| private WxCpMediaService mediaService = new WxCpMediaServiceImpl(this); | |||
| private WxCpMenuService menuService = new WxCpMenuServiceImpl(this); | |||
| private WxCpOAuth2Service oauth2Service = new WxCpOAuth2ServiceImpl(this); | |||
| private WxCpTagService tagService = new WxCpTagServiceImpl(this); | |||
| private WxCpAgentService agentService = new WxCpAgentServiceImpl(this); | |||
| private WxCpOaService oaService = new WxCpOaServiceImpl(this); | |||
| private WxCpTaskCardService taskCardService = new WxCpTaskCardServiceImpl(this); | |||
| private WxCpExternalContactService externalContactService = new WxCpExternalContactServiceImpl(this); | |||
| /** | |||
| * 全局的是否正在刷新access token的锁 | |||
| * 全局的是否正在刷新access token的锁. | |||
| */ | |||
| protected final Object globalAccessTokenRefreshLock = new Object(); | |||
| /** | |||
| * 全局的是否正在刷新jsapi_ticket的锁 | |||
| * 全局的是否正在刷新jsapi_ticket的锁. | |||
| */ | |||
| protected final Object globalJsapiTicketRefreshLock = new Object(); | |||
| /** | |||
| * 全局的是否正在刷新agent的jsapi_ticket的锁 | |||
| * 全局的是否正在刷新agent的jsapi_ticket的锁. | |||
| */ | |||
| protected final Object globalAgentJsapiTicketRefreshLock = new Object(); | |||
| @@ -72,7 +74,7 @@ public abstract class BaseWxCpServiceImpl<H, P> implements WxCpService, RequestH | |||
| private WxSessionManager sessionManager = new StandardSessionManager(); | |||
| /** | |||
| * 临时文件目录 | |||
| * 临时文件目录. | |||
| */ | |||
| private File tmpDirFile; | |||
| private int retrySleepMillis = 1000; | |||
| @@ -183,8 +185,8 @@ public abstract class BaseWxCpServiceImpl<H, P> implements WxCpService, RequestH | |||
| params.put("js_code", jsCode); | |||
| params.put("grant_type", "authorization_code"); | |||
| String result = this.get(this.configStorage.getApiUrl(JSCODE_TO_SESSION), Joiner.on("&").withKeyValueSeparator("=").join(params)); | |||
| return WxCpMaJsCode2SessionResult.fromJson(result); | |||
| final String url = this.configStorage.getApiUrl(JSCODE_TO_SESSION); | |||
| return WxCpMaJsCode2SessionResult.fromJson(this.get(url, Joiner.on("&").withKeyValueSeparator("=").join(params))); | |||
| } | |||
| @Override | |||
| @@ -26,6 +26,8 @@ import java.util.HashMap; | |||
| import java.util.Map; | |||
| /** | |||
| * . | |||
| * | |||
| * @author zhenjun cai | |||
| */ | |||
| @Slf4j | |||
| @@ -73,7 +75,7 @@ public abstract class BaseWxCpTpServiceImpl<H, P> implements WxCpTpService, Requ | |||
| @Override | |||
| public String getSuiteTicket(boolean forceRefresh) throws WxErrorException { | |||
| // suite ticket由微信服务器推送,不能强制刷新 | |||
| // suite ticket由微信服务器推送,不能强制刷新 | |||
| // if (forceRefresh) { | |||
| // this.configStorage.expireSuiteTicket(); | |||
| // } | |||
| @@ -93,8 +95,8 @@ public abstract class BaseWxCpTpServiceImpl<H, P> implements WxCpTpService, Requ | |||
| params.put("js_code", jsCode); | |||
| params.put("grant_type", "authorization_code"); | |||
| String result = this.get(configStorage.getApiUrl(WxCpApiPathConsts.Tp.JSCODE_TO_SESSION), Joiner.on("&").withKeyValueSeparator("=").join(params)); | |||
| return WxCpMaJsCode2SessionResult.fromJson(result); | |||
| final String url = configStorage.getApiUrl(WxCpApiPathConsts.Tp.JSCODE_TO_SESSION); | |||
| return WxCpMaJsCode2SessionResult.fromJson(this.get(url, Joiner.on("&").withKeyValueSeparator("=").join(params))); | |||
| } | |||
| @@ -36,8 +36,8 @@ public class WxCpAgentServiceImpl implements WxCpAgentService { | |||
| throw new IllegalArgumentException("缺少agentid参数"); | |||
| } | |||
| String responseContent = this.mainService.get(String.format(this.mainService.getWxCpConfigStorage().getApiUrl(AGENT_GET), agentId), null); | |||
| return WxCpAgent.fromJson(responseContent); | |||
| final String url = String.format(this.mainService.getWxCpConfigStorage().getApiUrl(AGENT_GET), agentId); | |||
| return WxCpAgent.fromJson(this.mainService.get(url, null)); | |||
| } | |||
| @Override | |||
| @@ -43,13 +43,14 @@ public class WxCpChatServiceImpl implements WxCpChatService { | |||
| if (StringUtils.isNotBlank(chatId)) { | |||
| data.put("chatid", chatId); | |||
| } | |||
| String result = this.cpService.post(this.cpService.getWxCpConfigStorage().getApiUrl(APPCHAT_CREATE), WxGsonBuilder.create().toJson(data)); | |||
| final String url = this.cpService.getWxCpConfigStorage().getApiUrl(APPCHAT_CREATE); | |||
| String result = this.cpService.post(url, WxGsonBuilder.create().toJson(data)); | |||
| return new JsonParser().parse(result).getAsJsonObject().get("chatid").getAsString(); | |||
| } | |||
| @Override | |||
| public String create(String name, String owner, List<String> users, String chatId) throws WxErrorException { | |||
| return chatCreate(name, owner, users, chatId); | |||
| return this.chatCreate(name, owner, users, chatId); | |||
| } | |||
| @Override | |||
| @@ -72,24 +73,27 @@ public class WxCpChatServiceImpl implements WxCpChatService { | |||
| data.put("del_user_list", usersToDelete); | |||
| } | |||
| this.cpService.post(this.cpService.getWxCpConfigStorage().getApiUrl(APPCHAT_UPDATE), WxGsonBuilder.create().toJson(data)); | |||
| final String url = this.cpService.getWxCpConfigStorage().getApiUrl(APPCHAT_UPDATE); | |||
| this.cpService.post(url, WxGsonBuilder.create().toJson(data)); | |||
| } | |||
| @Override | |||
| public void update(String chatId, String name, String owner, List<String> usersToAdd, List<String> usersToDelete) throws WxErrorException { | |||
| public void update(String chatId, String name, String owner, List<String> usersToAdd, List<String> usersToDelete) | |||
| throws WxErrorException { | |||
| chatUpdate(chatId, name, owner, usersToAdd, usersToDelete); | |||
| } | |||
| @Override | |||
| public WxCpChat chatGet(String chatId) throws WxErrorException { | |||
| String result = this.cpService.get(this.cpService.getWxCpConfigStorage().getApiUrl(APPCHAT_GET_CHATID + chatId), null); | |||
| return WxCpGsonBuilder.create() | |||
| .fromJson(JSON_PARSER.parse(result).getAsJsonObject().getAsJsonObject("chat_info").toString(), WxCpChat.class); | |||
| final String url = this.cpService.getWxCpConfigStorage().getApiUrl(APPCHAT_GET_CHATID + chatId); | |||
| String result = this.cpService.get(url, null); | |||
| final String chatInfo = JSON_PARSER.parse(result).getAsJsonObject().getAsJsonObject("chat_info").toString(); | |||
| return WxCpGsonBuilder.create().fromJson(chatInfo, WxCpChat.class); | |||
| } | |||
| @Override | |||
| public WxCpChat get(String chatId) throws WxErrorException { | |||
| return chatGet(chatId); | |||
| return this.chatGet(chatId); | |||
| } | |||
| @Override | |||
| @@ -20,22 +20,22 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic | |||
| @Override | |||
| public WxCpUserExternalContactInfo getExternalContact(String userId) throws WxErrorException { | |||
| String responseContent = this.mainService.get(this.mainService.getWxCpConfigStorage().getApiUrl(GET_EXTERNAL_CONTACT + userId), null); | |||
| final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_EXTERNAL_CONTACT + userId); | |||
| String responseContent = this.mainService.get(url, null); | |||
| return WxCpUserExternalContactInfo.fromJson(responseContent); | |||
| } | |||
| @Override | |||
| public List<String> listExternalContacts(String userId) throws WxErrorException { | |||
| String responseContent = this.mainService.get(this.mainService.getWxCpConfigStorage().getApiUrl(LIST_EXTERNAL_CONTACT + userId), null); | |||
| WxCpUserExternalContactList list = WxCpUserExternalContactList.fromJson(responseContent); | |||
| return list.getExternalUserId(); | |||
| final String url = this.mainService.getWxCpConfigStorage().getApiUrl(LIST_EXTERNAL_CONTACT + userId); | |||
| String responseContent = this.mainService.get(url, null); | |||
| return WxCpUserExternalContactList.fromJson(responseContent).getExternalUserId(); | |||
| } | |||
| @Override | |||
| public List<String> listFollowUser() throws WxErrorException { | |||
| String responseContent = this.mainService.get(this.mainService.getWxCpConfigStorage().getApiUrl(GET_FOLLOW_USER_LIST), null); | |||
| WxCpUserWithExternalPermission list = WxCpUserWithExternalPermission.fromJson(responseContent); | |||
| return list.getFollowUser(); | |||
| final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_FOLLOW_USER_LIST); | |||
| String responseContent = this.mainService.get(url, null); | |||
| return WxCpUserWithExternalPermission.fromJson(responseContent).getFollowUser(); | |||
| } | |||
| } | |||
| @@ -6,6 +6,7 @@ import me.chanjar.weixin.common.error.WxErrorException; | |||
| import me.chanjar.weixin.common.util.fs.FileUtils; | |||
| import me.chanjar.weixin.common.util.http.BaseMediaDownloadRequestExecutor; | |||
| import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; | |||
| import me.chanjar.weixin.common.util.http.RequestExecutor; | |||
| import me.chanjar.weixin.cp.api.WxCpMediaService; | |||
| import me.chanjar.weixin.cp.api.WxCpService; | |||
| import me.chanjar.weixin.cp.constant.WxCpApiPathConsts; | |||
| @@ -59,8 +60,8 @@ public class WxCpMediaServiceImpl implements WxCpMediaService { | |||
| @Override | |||
| public String uploadImg(File file) throws WxErrorException { | |||
| final WxMediaUploadResult result = this.mainService | |||
| .execute(MediaUploadRequestExecutor.create(this.mainService.getRequestHttp()), this.mainService.getWxCpConfigStorage().getApiUrl(IMG_UPLOAD), file); | |||
| return result.getUrl(); | |||
| final String url = this.mainService.getWxCpConfigStorage().getApiUrl(IMG_UPLOAD); | |||
| return this.mainService.execute(MediaUploadRequestExecutor.create(this.mainService.getRequestHttp()), url, file) | |||
| .getUrl(); | |||
| } | |||
| } | |||
| @@ -22,6 +22,8 @@ import java.util.List; | |||
| import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.Oa.*; | |||
| /** | |||
| * . | |||
| * | |||
| * @author Element | |||
| * @date 2019-04-06 11:20 | |||
| */ | |||
| @@ -60,7 +62,8 @@ public class WxCpOaServiceImpl implements WxCpOaService { | |||
| jsonObject.add("useridlist", jsonArray); | |||
| String responseContent = this.mainService.post(this.mainService.getWxCpConfigStorage().getApiUrl(GET_CHECKIN_DATA), jsonObject.toString()); | |||
| final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_CHECKIN_DATA); | |||
| String responseContent = this.mainService.post(url, jsonObject.toString()); | |||
| JsonElement tmpJsonElement = new JsonParser().parse(responseContent); | |||
| return WxCpGsonBuilder.create() | |||
| .fromJson( | |||
| @@ -89,7 +92,8 @@ public class WxCpOaServiceImpl implements WxCpOaService { | |||
| jsonObject.addProperty("datetime", datetime.getTime() / 1000L); | |||
| jsonObject.add("useridlist", jsonArray); | |||
| String responseContent = this.mainService.post(this.mainService.getWxCpConfigStorage().getApiUrl(GET_CHECKIN_OPTION), jsonObject.toString()); | |||
| final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_CHECKIN_OPTION); | |||
| String responseContent = this.mainService.post(url, jsonObject.toString()); | |||
| JsonElement tmpJsonElement = new JsonParser().parse(responseContent); | |||
| return WxCpGsonBuilder.create() | |||
| @@ -109,12 +113,14 @@ public class WxCpOaServiceImpl implements WxCpOaService { | |||
| jsonObject.addProperty("next_spnum", nextSpnum); | |||
| } | |||
| String responseContent = this.mainService.post(this.mainService.getWxCpConfigStorage().getApiUrl(GET_APPROVAL_DATA), jsonObject.toString()); | |||
| final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_APPROVAL_DATA); | |||
| String responseContent = this.mainService.post(url, jsonObject.toString()); | |||
| return WxCpGsonBuilder.create().fromJson(responseContent, WxCpApprovalDataResult.class); | |||
| } | |||
| @Override | |||
| public List<WxCpDialRecord> getDialRecord(Date startTime, Date endTime, Integer offset, Integer limit) throws WxErrorException { | |||
| public List<WxCpDialRecord> getDialRecord(Date startTime, Date endTime, Integer offset, Integer limit) | |||
| throws WxErrorException { | |||
| JsonObject jsonObject = new JsonObject(); | |||
| if (offset == null) { | |||
| @@ -141,14 +147,13 @@ public class WxCpOaServiceImpl implements WxCpOaService { | |||
| jsonObject.addProperty("end_time", endtimestamp); | |||
| } | |||
| String responseContent = this.mainService.post(this.mainService.getWxCpConfigStorage().getApiUrl(GET_DIAL_RECORD), jsonObject.toString()); | |||
| final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_DIAL_RECORD); | |||
| String responseContent = this.mainService.post(url, jsonObject.toString()); | |||
| JsonElement tmpJsonElement = new JsonParser().parse(responseContent); | |||
| return WxCpGsonBuilder.create() | |||
| .fromJson( | |||
| tmpJsonElement.getAsJsonObject().get("record"), | |||
| new TypeToken<List<WxCpDialRecord>>() { | |||
| }.getType() | |||
| ); | |||
| return WxCpGsonBuilder.create().fromJson(tmpJsonElement.getAsJsonObject().get("record"), | |||
| new TypeToken<List<WxCpDialRecord>>() { | |||
| }.getType() | |||
| ); | |||
| } | |||
| } | |||