| @@ -27,7 +27,6 @@ | |||||
| <property name="max" value="120"/> | <property name="max" value="120"/> | ||||
| <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/> | <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/> | ||||
| </module> | </module> | ||||
| <module name="AvoidStarImport"/> | |||||
| <module name="OneTopLevelClass"/> | <module name="OneTopLevelClass"/> | ||||
| <module name="NoLineWrap"/> | <module name="NoLineWrap"/> | ||||
| <module name="EmptyBlock"> | <module name="EmptyBlock"> | ||||
| @@ -36,34 +36,36 @@ import java.util.Map; | |||||
| import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.*; | import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.*; | ||||
| /** | /** | ||||
| * . | |||||
| * | |||||
| * @author chanjarster | * @author chanjarster | ||||
| */ | */ | ||||
| @Slf4j | @Slf4j | ||||
| public abstract class BaseWxCpServiceImpl<H, P> implements WxCpService, RequestHttp<H, P> { | 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 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); | private WxCpExternalContactService externalContactService = new WxCpExternalContactServiceImpl(this); | ||||
| /** | /** | ||||
| * 全局的是否正在刷新access token的锁 | |||||
| * 全局的是否正在刷新access token的锁. | |||||
| */ | */ | ||||
| protected final Object globalAccessTokenRefreshLock = new Object(); | protected final Object globalAccessTokenRefreshLock = new Object(); | ||||
| /** | /** | ||||
| * 全局的是否正在刷新jsapi_ticket的锁 | |||||
| * 全局的是否正在刷新jsapi_ticket的锁. | |||||
| */ | */ | ||||
| protected final Object globalJsapiTicketRefreshLock = new Object(); | protected final Object globalJsapiTicketRefreshLock = new Object(); | ||||
| /** | /** | ||||
| * 全局的是否正在刷新agent的jsapi_ticket的锁 | |||||
| * 全局的是否正在刷新agent的jsapi_ticket的锁. | |||||
| */ | */ | ||||
| protected final Object globalAgentJsapiTicketRefreshLock = new Object(); | 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 WxSessionManager sessionManager = new StandardSessionManager(); | ||||
| /** | /** | ||||
| * 临时文件目录 | |||||
| * 临时文件目录. | |||||
| */ | */ | ||||
| private File tmpDirFile; | private File tmpDirFile; | ||||
| private int retrySleepMillis = 1000; | private int retrySleepMillis = 1000; | ||||
| @@ -183,8 +185,8 @@ public abstract class BaseWxCpServiceImpl<H, P> implements WxCpService, RequestH | |||||
| params.put("js_code", jsCode); | params.put("js_code", jsCode); | ||||
| params.put("grant_type", "authorization_code"); | 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 | @Override | ||||
| @@ -26,6 +26,8 @@ import java.util.HashMap; | |||||
| import java.util.Map; | import java.util.Map; | ||||
| /** | /** | ||||
| * . | |||||
| * | |||||
| * @author zhenjun cai | * @author zhenjun cai | ||||
| */ | */ | ||||
| @Slf4j | @Slf4j | ||||
| @@ -73,7 +75,7 @@ public abstract class BaseWxCpTpServiceImpl<H, P> implements WxCpTpService, Requ | |||||
| @Override | @Override | ||||
| public String getSuiteTicket(boolean forceRefresh) throws WxErrorException { | public String getSuiteTicket(boolean forceRefresh) throws WxErrorException { | ||||
| // suite ticket由微信服务器推送,不能强制刷新 | |||||
| // suite ticket由微信服务器推送,不能强制刷新 | |||||
| // if (forceRefresh) { | // if (forceRefresh) { | ||||
| // this.configStorage.expireSuiteTicket(); | // this.configStorage.expireSuiteTicket(); | ||||
| // } | // } | ||||
| @@ -93,8 +95,8 @@ public abstract class BaseWxCpTpServiceImpl<H, P> implements WxCpTpService, Requ | |||||
| params.put("js_code", jsCode); | params.put("js_code", jsCode); | ||||
| params.put("grant_type", "authorization_code"); | 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参数"); | 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 | @Override | ||||
| @@ -43,13 +43,14 @@ public class WxCpChatServiceImpl implements WxCpChatService { | |||||
| if (StringUtils.isNotBlank(chatId)) { | if (StringUtils.isNotBlank(chatId)) { | ||||
| data.put("chatid", 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(); | return new JsonParser().parse(result).getAsJsonObject().get("chatid").getAsString(); | ||||
| } | } | ||||
| @Override | @Override | ||||
| public String create(String name, String owner, List<String> users, String chatId) throws WxErrorException { | 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 | @Override | ||||
| @@ -72,24 +73,27 @@ public class WxCpChatServiceImpl implements WxCpChatService { | |||||
| data.put("del_user_list", usersToDelete); | 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 | @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); | chatUpdate(chatId, name, owner, usersToAdd, usersToDelete); | ||||
| } | } | ||||
| @Override | @Override | ||||
| public WxCpChat chatGet(String chatId) throws WxErrorException { | 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 | @Override | ||||
| public WxCpChat get(String chatId) throws WxErrorException { | public WxCpChat get(String chatId) throws WxErrorException { | ||||
| return chatGet(chatId); | |||||
| return this.chatGet(chatId); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -20,22 +20,22 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic | |||||
| @Override | @Override | ||||
| public WxCpUserExternalContactInfo getExternalContact(String userId) throws WxErrorException { | 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); | return WxCpUserExternalContactInfo.fromJson(responseContent); | ||||
| } | } | ||||
| @Override | @Override | ||||
| public List<String> listExternalContacts(String userId) throws WxErrorException { | 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 | @Override | ||||
| public List<String> listFollowUser() throws WxErrorException { | 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.fs.FileUtils; | ||||
| import me.chanjar.weixin.common.util.http.BaseMediaDownloadRequestExecutor; | import me.chanjar.weixin.common.util.http.BaseMediaDownloadRequestExecutor; | ||||
| import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; | 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.WxCpMediaService; | ||||
| import me.chanjar.weixin.cp.api.WxCpService; | import me.chanjar.weixin.cp.api.WxCpService; | ||||
| import me.chanjar.weixin.cp.constant.WxCpApiPathConsts; | import me.chanjar.weixin.cp.constant.WxCpApiPathConsts; | ||||
| @@ -59,8 +60,8 @@ public class WxCpMediaServiceImpl implements WxCpMediaService { | |||||
| @Override | @Override | ||||
| public String uploadImg(File file) throws WxErrorException { | 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.*; | import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.Oa.*; | ||||
| /** | /** | ||||
| * . | |||||
| * | |||||
| * @author Element | * @author Element | ||||
| * @date 2019-04-06 11:20 | * @date 2019-04-06 11:20 | ||||
| */ | */ | ||||
| @@ -60,7 +62,8 @@ public class WxCpOaServiceImpl implements WxCpOaService { | |||||
| jsonObject.add("useridlist", jsonArray); | 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); | JsonElement tmpJsonElement = new JsonParser().parse(responseContent); | ||||
| return WxCpGsonBuilder.create() | return WxCpGsonBuilder.create() | ||||
| .fromJson( | .fromJson( | ||||
| @@ -89,7 +92,8 @@ public class WxCpOaServiceImpl implements WxCpOaService { | |||||
| jsonObject.addProperty("datetime", datetime.getTime() / 1000L); | jsonObject.addProperty("datetime", datetime.getTime() / 1000L); | ||||
| jsonObject.add("useridlist", jsonArray); | 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); | JsonElement tmpJsonElement = new JsonParser().parse(responseContent); | ||||
| return WxCpGsonBuilder.create() | return WxCpGsonBuilder.create() | ||||
| @@ -109,12 +113,14 @@ public class WxCpOaServiceImpl implements WxCpOaService { | |||||
| jsonObject.addProperty("next_spnum", nextSpnum); | 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); | return WxCpGsonBuilder.create().fromJson(responseContent, WxCpApprovalDataResult.class); | ||||
| } | } | ||||
| @Override | @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(); | JsonObject jsonObject = new JsonObject(); | ||||
| if (offset == null) { | if (offset == null) { | ||||
| @@ -141,14 +147,13 @@ public class WxCpOaServiceImpl implements WxCpOaService { | |||||
| jsonObject.addProperty("end_time", endtimestamp); | 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); | 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() | |||||
| ); | |||||
| } | } | ||||
| } | } | ||||