Explorar o código

:art: 优化重构代码

Binary Wang %!s(int64=4) %!d(string=hai) anos
pai
achega
fa179f6cba
Modificáronse 40 ficheiros con 854 adicións e 593 borrados
  1. 137 152
      weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java
  2. 1 16
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaAnalysisService.java
  3. 200 50
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCloudService.java
  4. 0 17
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCodeService.java
  5. 34 98
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaExpressService.java
  6. 14 7
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaJsapiService.java
  7. 0 8
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveGoodsService.java
  8. 6 12
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java
  9. 0 2
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaMediaService.java
  10. 0 6
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaMsgService.java
  11. 1 6
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaPluginService.java
  12. 0 3
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaQrcodeService.java
  13. 2 3
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaRunService.java
  14. 0 2
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSchemeService.java
  15. 17 13
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java
  16. 49 31
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java
  17. 0 12
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSettingService.java
  18. 0 34
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSubscribeService.java
  19. 0 1
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java
  20. 8 9
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java
  21. 9 7
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaAnalysisServiceImpl.java
  22. 7 2
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCloudServiceImpl.java
  23. 14 18
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java
  24. 2 0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImpl.java
  25. 3 30
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaImgProcServiceImpl.java
  26. 2 1
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaJsapiServiceImpl.java
  27. 2 1
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java
  28. 2 1
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java
  29. 3 1
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaMediaServiceImpl.java
  30. 6 2
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImpl.java
  31. 3 13
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaOcrServiceImpl.java
  32. 2 0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaPluginServiceImpl.java
  33. 37 32
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaQrcodeServiceImpl.java
  34. 2 3
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaRunServiceImpl.java
  35. 2 0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSchemeServiceImpl.java
  36. 2 0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java
  37. 2 0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSettingServiceImpl.java
  38. 2 0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSubscribeServiceImpl.java
  39. 2 0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java
  40. 281 0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java

+ 137 - 152
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java

@@ -11,201 +11,186 @@ import lombok.experimental.UtilityClass;
  *
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
-@UtilityClass
-public final class WxCpApiPathConsts {
-  public static final String DEFAULT_CP_BASE_URL = "https://qyapi.weixin.qq.com";
-
-  public static final String GET_JSAPI_TICKET = "/cgi-bin/get_jsapi_ticket";
-  public static final String GET_AGENT_CONFIG_TICKET = "/cgi-bin/ticket/get?&type=agent_config";
-  public static final String GET_CALLBACK_IP = "/cgi-bin/getcallbackip";
-  public static final String BATCH_REPLACE_PARTY = "/cgi-bin/batch/replaceparty";
-  public static final String BATCH_REPLACE_USER = "/cgi-bin/batch/replaceuser";
-  public static final String BATCH_GET_RESULT = "/cgi-bin/batch/getresult?jobid=";
-  public static final String JSCODE_TO_SESSION = "/cgi-bin/miniprogram/jscode2session";
-  public static final String GET_TOKEN = "/cgi-bin/gettoken?corpid=%s&corpsecret=%s";
-  public static final String WEBHOOK_SEND = "/cgi-bin/webhook/send?key=";
+public interface WxCpApiPathConsts {
+  String DEFAULT_CP_BASE_URL = "https://qyapi.weixin.qq.com";
+
+  String GET_JSAPI_TICKET = "/cgi-bin/get_jsapi_ticket";
+  String GET_AGENT_CONFIG_TICKET = "/cgi-bin/ticket/get?&type=agent_config";
+  String GET_CALLBACK_IP = "/cgi-bin/getcallbackip";
+  String BATCH_REPLACE_PARTY = "/cgi-bin/batch/replaceparty";
+  String BATCH_REPLACE_USER = "/cgi-bin/batch/replaceuser";
+  String BATCH_GET_RESULT = "/cgi-bin/batch/getresult?jobid=";
+  String JSCODE_TO_SESSION = "/cgi-bin/miniprogram/jscode2session";
+  String GET_TOKEN = "/cgi-bin/gettoken?corpid=%s&corpsecret=%s";
+  String WEBHOOK_SEND = "/cgi-bin/webhook/send?key=";
 
   /**
    * 消息推送相关接口
    * https://work.weixin.qq.com/api/doc/90000/90135/90235
    */
-  @UtilityClass
-  public static class Message {
+  interface Message {
     /**
      * 发送应用消息
      */
-    public static final String MESSAGE_SEND = "/cgi-bin/message/send";
+    String MESSAGE_SEND = "/cgi-bin/message/send";
 
     /**
      * 查询应用消息发送统计
      */
-    public static final String GET_STATISTICS = "/cgi-bin/message/get_statistics";
+    String GET_STATISTICS = "/cgi-bin/message/get_statistics";
 
     /**
      * 互联企业发送应用消息
      */
-    public static final String LINKEDCORP_MESSAGE_SEND = "/cgi-bin/linkedcorp/message/send";
+    String LINKEDCORP_MESSAGE_SEND = "/cgi-bin/linkedcorp/message/send";
   }
 
-  @UtilityClass
-  public static class Agent {
-    public static final String AGENT_GET = "/cgi-bin/agent/get?agentid=%d";
-    public static final String AGENT_SET = "/cgi-bin/agent/set";
-    public static final String AGENT_LIST = "/cgi-bin/agent/list";
+  interface Agent {
+    String AGENT_GET = "/cgi-bin/agent/get?agentid=%d";
+    String AGENT_SET = "/cgi-bin/agent/set";
+    String AGENT_LIST = "/cgi-bin/agent/list";
   }
 
-  @UtilityClass
-  public static class WorkBench {
-    public static final String WORKBENCH_TEMPLATE_SET = "/cgi-bin/agent/set_workbench_template";
-    public static final String WORKBENCH_TEMPLATE_GET = "/cgi-bin/agent/get_workbench_template";
-    public static final String WORKBENCH_DATA_SET = "/cgi-bin/agent/set_workbench_data";
+  interface WorkBench {
+    String WORKBENCH_TEMPLATE_SET = "/cgi-bin/agent/set_workbench_template";
+    String WORKBENCH_TEMPLATE_GET = "/cgi-bin/agent/get_workbench_template";
+    String WORKBENCH_DATA_SET = "/cgi-bin/agent/set_workbench_data";
   }
 
-  @UtilityClass
-  public static class OAuth2 {
-    public static final String GET_USER_INFO = "/cgi-bin/user/getuserinfo?code=%s&agentid=%d";
-    public static final String GET_USER_DETAIL = "/cgi-bin/user/getuserdetail";
-    public static final String URL_OAUTH2_AUTHORIZE = "https://open.weixin.qq.com/connect/oauth2/authorize";
+  interface OAuth2 {
+    String GET_USER_INFO = "/cgi-bin/user/getuserinfo?code=%s&agentid=%d";
+    String GET_USER_DETAIL = "/cgi-bin/user/getuserdetail";
+    String URL_OAUTH2_AUTHORIZE = "https://open.weixin.qq.com/connect/oauth2/authorize";
   }
 
-  @UtilityClass
-  public static class Chat {
-    public static final String APPCHAT_CREATE = "/cgi-bin/appchat/create";
-    public static final String APPCHAT_UPDATE = "/cgi-bin/appchat/update";
-    public static final String APPCHAT_GET_CHATID = "/cgi-bin/appchat/get?chatid=";
-    public static final String APPCHAT_SEND = "/cgi-bin/appchat/send";
+  interface Chat {
+    String APPCHAT_CREATE = "/cgi-bin/appchat/create";
+    String APPCHAT_UPDATE = "/cgi-bin/appchat/update";
+    String APPCHAT_GET_CHATID = "/cgi-bin/appchat/get?chatid=";
+    String APPCHAT_SEND = "/cgi-bin/appchat/send";
   }
 
-  @UtilityClass
-  public static class Department {
-    public static final String DEPARTMENT_CREATE = "/cgi-bin/department/create";
-    public static final String DEPARTMENT_UPDATE = "/cgi-bin/department/update";
-    public static final String DEPARTMENT_DELETE = "/cgi-bin/department/delete?id=%d";
-    public static final String DEPARTMENT_LIST = "/cgi-bin/department/list";
+  interface Department {
+    String DEPARTMENT_CREATE = "/cgi-bin/department/create";
+    String DEPARTMENT_UPDATE = "/cgi-bin/department/update";
+    String DEPARTMENT_DELETE = "/cgi-bin/department/delete?id=%d";
+    String DEPARTMENT_LIST = "/cgi-bin/department/list";
   }
 
-  @UtilityClass
-  public static class Media {
-    public static final String MEDIA_GET = "/cgi-bin/media/get";
-    public static final String MEDIA_UPLOAD = "/cgi-bin/media/upload?type=";
-    public static final String IMG_UPLOAD = "/cgi-bin/media/uploadimg";
-    public static final String JSSDK_MEDIA_GET = "/cgi-bin/media/get/jssdk";
+  interface Media {
+    String MEDIA_GET = "/cgi-bin/media/get";
+    String MEDIA_UPLOAD = "/cgi-bin/media/upload?type=";
+    String IMG_UPLOAD = "/cgi-bin/media/uploadimg";
+    String JSSDK_MEDIA_GET = "/cgi-bin/media/get/jssdk";
   }
 
-  @UtilityClass
-  public static class Menu {
-    public static final String MENU_CREATE = "/cgi-bin/menu/create?agentid=%d";
-    public static final String MENU_DELETE = "/cgi-bin/menu/delete?agentid=%d";
-    public static final String MENU_GET = "/cgi-bin/menu/get?agentid=%d";
+  interface Menu {
+    String MENU_CREATE = "/cgi-bin/menu/create?agentid=%d";
+    String MENU_DELETE = "/cgi-bin/menu/delete?agentid=%d";
+    String MENU_GET = "/cgi-bin/menu/get?agentid=%d";
   }
 
-  @UtilityClass
-  public static class Oa {
-    public static final String GET_CHECKIN_DATA = "/cgi-bin/checkin/getcheckindata";
-    public static final String GET_CHECKIN_OPTION = "/cgi-bin/checkin/getcheckinoption";
-    public static final String GET_APPROVAL_INFO = "/cgi-bin/oa/getapprovalinfo";
-    public static final String GET_APPROVAL_DETAIL = "/cgi-bin/oa/getapprovaldetail";
-    public static final String GET_DIAL_RECORD = "/cgi-bin/dial/get_dial_record";
-    public static final String GET_TEMPLATE_DETAIL = "/cgi-bin/oa/gettemplatedetail";
-    public static final String APPLY_EVENT = "/cgi-bin/oa/applyevent";
-
-    public static final String CALENDAR_ADD = "/cgi-bin/oa/calendar/add";
-    public static final String CALENDAR_UPDATE = "/cgi-bin/oa/calendar/update";
-    public static final String CALENDAR_GET = "/cgi-bin/oa/calendar/get";
-    public static final String CALENDAR_DEL = "/cgi-bin/oa/calendar/del";
-
-    public static final String SCHEDULE_ADD = "/cgi-bin/oa/schedule/add";
-    public static final String SCHEDULE_UPDATE = "/cgi-bin/oa/schedule/update";
-    public static final String SCHEDULE_GET = "/cgi-bin/oa/schedule/get";
-    public static final String SCHEDULE_DEL = "/cgi-bin/oa/schedule/del";
-    public static final String SCHEDULE_LIST = "/cgi-bin/oa/schedule/get_by_calendar";
-
-    public static final String COPY_TEMPLATE = "/cgi-bin/oa/approval/copytemplate";
+  interface Oa {
+    String GET_CHECKIN_DATA = "/cgi-bin/checkin/getcheckindata";
+    String GET_CHECKIN_OPTION = "/cgi-bin/checkin/getcheckinoption";
+    String GET_APPROVAL_INFO = "/cgi-bin/oa/getapprovalinfo";
+    String GET_APPROVAL_DETAIL = "/cgi-bin/oa/getapprovaldetail";
+    String GET_DIAL_RECORD = "/cgi-bin/dial/get_dial_record";
+    String GET_TEMPLATE_DETAIL = "/cgi-bin/oa/gettemplatedetail";
+    String APPLY_EVENT = "/cgi-bin/oa/applyevent";
+
+    String CALENDAR_ADD = "/cgi-bin/oa/calendar/add";
+    String CALENDAR_UPDATE = "/cgi-bin/oa/calendar/update";
+    String CALENDAR_GET = "/cgi-bin/oa/calendar/get";
+    String CALENDAR_DEL = "/cgi-bin/oa/calendar/del";
+
+    String SCHEDULE_ADD = "/cgi-bin/oa/schedule/add";
+    String SCHEDULE_UPDATE = "/cgi-bin/oa/schedule/update";
+    String SCHEDULE_GET = "/cgi-bin/oa/schedule/get";
+    String SCHEDULE_DEL = "/cgi-bin/oa/schedule/del";
+    String SCHEDULE_LIST = "/cgi-bin/oa/schedule/get_by_calendar";
+
+    String COPY_TEMPLATE = "/cgi-bin/oa/approval/copytemplate";
   }
 
-  @UtilityClass
-  public static class Tag {
-    public static final String TAG_CREATE = "/cgi-bin/tag/create";
-    public static final String TAG_UPDATE = "/cgi-bin/tag/update";
-    public static final String TAG_DELETE = "/cgi-bin/tag/delete?tagid=%s";
-    public static final String TAG_LIST = "/cgi-bin/tag/list";
-    public static final String TAG_GET = "/cgi-bin/tag/get?tagid=%s";
-    public static final String TAG_ADD_TAG_USERS = "/cgi-bin/tag/addtagusers";
-    public static final String TAG_DEL_TAG_USERS = "/cgi-bin/tag/deltagusers";
+  interface Tag {
+    String TAG_CREATE = "/cgi-bin/tag/create";
+    String TAG_UPDATE = "/cgi-bin/tag/update";
+    String TAG_DELETE = "/cgi-bin/tag/delete?tagid=%s";
+    String TAG_LIST = "/cgi-bin/tag/list";
+    String TAG_GET = "/cgi-bin/tag/get?tagid=%s";
+    String TAG_ADD_TAG_USERS = "/cgi-bin/tag/addtagusers";
+    String TAG_DEL_TAG_USERS = "/cgi-bin/tag/deltagusers";
   }
 
-  @UtilityClass
-  public static class TaskCard {
-    public static final String UPDATE_TASK_CARD = "/cgi-bin/message/update_taskcard";
+  interface TaskCard {
+    String UPDATE_TASK_CARD = "/cgi-bin/message/update_taskcard";
   }
 
-  @UtilityClass
-  public static class Tp {
-    public static final String JSCODE_TO_SESSION = "/cgi-bin/service/miniprogram/jscode2session";
-    public static final String GET_CORP_TOKEN = "/cgi-bin/service/get_corp_token";
-    public static final String GET_PERMANENT_CODE = "/cgi-bin/service/get_permanent_code";
-    public static final String GET_SUITE_TOKEN = "/cgi-bin/service/get_suite_token";
-    public static final String GET_PROVIDER_TOKEN = "/cgi-bin/service/get_provider_token";
-    public static final String GET_PREAUTH_CODE = "/cgi-bin/service/get_pre_auth_code";
-    public static final String GET_AUTH_INFO = "/cgi-bin/service/get_auth_info";
-    public static final String GET_AUTH_CORP_JSAPI_TICKET = "/cgi-bin/get_jsapi_ticket";
-    public static final String GET_SUITE_JSAPI_TICKET = "/cgi-bin/ticket/get";
-    public static final String GET_USERINFO3RD = "/cgi-bin/service/getuserinfo3rd";
-    public static final String GET_USERDETAIL3RD = "/cgi-bin/service/getuserdetail3rd";
-    public static final String GET_LOGIN_INFO = "/cgi-bin/service/get_login_info";
-
-
-    public static final String CONTACT_SEARCH = "/cgi-bin/service/contact/search";
-    public static final String GET_ADMIN_LIST = "/cgi-bin/service/get_admin_list";
+  interface Tp {
+    String JSCODE_TO_SESSION = "/cgi-bin/service/miniprogram/jscode2session";
+    String GET_CORP_TOKEN = "/cgi-bin/service/get_corp_token";
+    String GET_PERMANENT_CODE = "/cgi-bin/service/get_permanent_code";
+    String GET_SUITE_TOKEN = "/cgi-bin/service/get_suite_token";
+    String GET_PROVIDER_TOKEN = "/cgi-bin/service/get_provider_token";
+    String GET_PREAUTH_CODE = "/cgi-bin/service/get_pre_auth_code";
+    String GET_AUTH_INFO = "/cgi-bin/service/get_auth_info";
+    String GET_AUTH_CORP_JSAPI_TICKET = "/cgi-bin/get_jsapi_ticket";
+    String GET_SUITE_JSAPI_TICKET = "/cgi-bin/ticket/get";
+    String GET_USERINFO3RD = "/cgi-bin/service/getuserinfo3rd";
+    String GET_USERDETAIL3RD = "/cgi-bin/service/getuserdetail3rd";
+    String GET_LOGIN_INFO = "/cgi-bin/service/get_login_info";
+
+
+    String CONTACT_SEARCH = "/cgi-bin/service/contact/search";
+    String GET_ADMIN_LIST = "/cgi-bin/service/get_admin_list";
 
   }
 
-  @UtilityClass
-  public static class User {
-    public static final String USER_AUTHENTICATE = "/cgi-bin/user/authsucc?userid=";
-    public static final String USER_CREATE = "/cgi-bin/user/create";
-    public static final String USER_UPDATE = "/cgi-bin/user/update";
-    public static final String USER_DELETE = "/cgi-bin/user/delete?userid=";
-    public static final String USER_BATCH_DELETE = "/cgi-bin/user/batchdelete";
-    public static final String USER_GET = "/cgi-bin/user/get?userid=";
-    public static final String USER_LIST = "/cgi-bin/user/list?department_id=";
-    public static final String USER_SIMPLE_LIST = "/cgi-bin/user/simplelist?department_id=";
-    public static final String BATCH_INVITE = "/cgi-bin/batch/invite";
-    public static final String USER_CONVERT_TO_OPENID = "/cgi-bin/user/convert_to_openid";
-    public static final String USER_CONVERT_TO_USERID = "/cgi-bin/user/convert_to_userid";
-    public static final String GET_USER_ID = "/cgi-bin/user/getuserid";
-    public static final String GET_EXTERNAL_CONTACT = "/cgi-bin/crm/get_external_contact?external_userid=";
-    public static final String GET_JOIN_QR_CODE = "/cgi-bin/corp/get_join_qrcode?size_type=";
+  interface User {
+    String USER_AUTHENTICATE = "/cgi-bin/user/authsucc?userid=";
+    String USER_CREATE = "/cgi-bin/user/create";
+    String USER_UPDATE = "/cgi-bin/user/update";
+    String USER_DELETE = "/cgi-bin/user/delete?userid=";
+    String USER_BATCH_DELETE = "/cgi-bin/user/batchdelete";
+    String USER_GET = "/cgi-bin/user/get?userid=";
+    String USER_LIST = "/cgi-bin/user/list?department_id=";
+    String USER_SIMPLE_LIST = "/cgi-bin/user/simplelist?department_id=";
+    String BATCH_INVITE = "/cgi-bin/batch/invite";
+    String USER_CONVERT_TO_OPENID = "/cgi-bin/user/convert_to_openid";
+    String USER_CONVERT_TO_USERID = "/cgi-bin/user/convert_to_userid";
+    String GET_USER_ID = "/cgi-bin/user/getuserid";
+    String GET_EXTERNAL_CONTACT = "/cgi-bin/crm/get_external_contact?external_userid=";
+    String GET_JOIN_QR_CODE = "/cgi-bin/corp/get_join_qrcode?size_type=";
   }
 
-  @UtilityClass
-  public static class ExternalContact {
+  interface ExternalContact {
     @Deprecated
-    public static final String GET_EXTERNAL_CONTACT = "/cgi-bin/crm/get_external_contact?external_userid=";
-
-    public static final String ADD_CONTACT_WAY = "/cgi-bin/externalcontact/add_contact_way";
-    public static final String GET_CONTACT_WAY = "/cgi-bin/externalcontact/get_contact_way";
-    public static final String UPDATE_CONTACT_WAY = "/cgi-bin/externalcontact/update_contact_way";
-    public static final String DEL_CONTACT_WAY = "/cgi-bin/externalcontact/del_contact_way";
-    public static final String CLOSE_TEMP_CHAT = "/cgi-bin/externalcontact/close_temp_chat";
-    public static final String GET_FOLLOW_USER_LIST = "/cgi-bin/externalcontact/get_follow_user_list";
-    public static final String GET_CONTACT_DETAIL = "/cgi-bin/externalcontact/get?external_userid=";
-    public static final String GET_CONTACT_DETAIL_BATCH = "/cgi-bin/externalcontact/batch/get_by_user?";
-    public static final String UPDATE_REMARK = "/cgi-bin/externalcontact/remark";
-    public static final String LIST_EXTERNAL_CONTACT = "/cgi-bin/externalcontact/list?userid=";
-    public static final String LIST_UNASSIGNED_CONTACT = "/cgi-bin/externalcontact/get_unassigned_list";
-    public static final String TRANSFER_UNASSIGNED_CONTACT = "/cgi-bin/externalcontact/transfer";
-    public static final String GROUP_CHAT_LIST = "/cgi-bin/externalcontact/groupchat/list";
-    public static final String GROUP_CHAT_INFO = "/cgi-bin/externalcontact/groupchat/get";
-    public static final String LIST_USER_BEHAVIOR_DATA = "/cgi-bin/externalcontact/get_user_behavior_data";
-    public static final String LIST_GROUP_CHAT_DATA = "/cgi-bin/externalcontact/groupchat/statistic";
-    public static final String ADD_MSG_TEMPLATE = "/cgi-bin/externalcontact/add_msg_template";
-    public static final String SEND_WELCOME_MSG = "/cgi-bin/externalcontact/send_welcome_msg";
-
-    public static final String GET_CORP_TAG_LIST = "/cgi-bin/externalcontact/get_corp_tag_list";
-    public static final String ADD_CORP_TAG = "/cgi-bin/externalcontact/add_corp_tag";
-    public static final String EDIT_CORP_TAG = "/cgi-bin/externalcontact/edit_corp_tag";
-    public static final String DEL_CORP_TAG = "/cgi-bin/externalcontact/del_corp_tag";
-    public static final String MARK_TAG = "/cgi-bin/externalcontact/mark_tag";
+    String GET_EXTERNAL_CONTACT = "/cgi-bin/crm/get_external_contact?external_userid=";
+
+    String ADD_CONTACT_WAY = "/cgi-bin/externalcontact/add_contact_way";
+    String GET_CONTACT_WAY = "/cgi-bin/externalcontact/get_contact_way";
+    String UPDATE_CONTACT_WAY = "/cgi-bin/externalcontact/update_contact_way";
+    String DEL_CONTACT_WAY = "/cgi-bin/externalcontact/del_contact_way";
+    String CLOSE_TEMP_CHAT = "/cgi-bin/externalcontact/close_temp_chat";
+    String GET_FOLLOW_USER_LIST = "/cgi-bin/externalcontact/get_follow_user_list";
+    String GET_CONTACT_DETAIL = "/cgi-bin/externalcontact/get?external_userid=";
+    String GET_CONTACT_DETAIL_BATCH = "/cgi-bin/externalcontact/batch/get_by_user?";
+    String UPDATE_REMARK = "/cgi-bin/externalcontact/remark";
+    String LIST_EXTERNAL_CONTACT = "/cgi-bin/externalcontact/list?userid=";
+    String LIST_UNASSIGNED_CONTACT = "/cgi-bin/externalcontact/get_unassigned_list";
+    String TRANSFER_UNASSIGNED_CONTACT = "/cgi-bin/externalcontact/transfer";
+    String GROUP_CHAT_LIST = "/cgi-bin/externalcontact/groupchat/list";
+    String GROUP_CHAT_INFO = "/cgi-bin/externalcontact/groupchat/get";
+    String LIST_USER_BEHAVIOR_DATA = "/cgi-bin/externalcontact/get_user_behavior_data";
+    String LIST_GROUP_CHAT_DATA = "/cgi-bin/externalcontact/groupchat/statistic";
+    String ADD_MSG_TEMPLATE = "/cgi-bin/externalcontact/add_msg_template";
+    String SEND_WELCOME_MSG = "/cgi-bin/externalcontact/send_welcome_msg";
+
+    String GET_CORP_TAG_LIST = "/cgi-bin/externalcontact/get_corp_tag_list";
+    String ADD_CORP_TAG = "/cgi-bin/externalcontact/add_corp_tag";
+    String EDIT_CORP_TAG = "/cgi-bin/externalcontact/edit_corp_tag";
+    String DEL_CORP_TAG = "/cgi-bin/externalcontact/del_corp_tag";
+    String MARK_TAG = "/cgi-bin/externalcontact/mark_tag";
   }
 }

+ 1 - 16
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaAnalysisService.java

@@ -1,11 +1,6 @@
 package cn.binarywang.wx.miniapp.api;
 
-import cn.binarywang.wx.miniapp.bean.analysis.WxMaRetainInfo;
-import cn.binarywang.wx.miniapp.bean.analysis.WxMaSummaryTrend;
-import cn.binarywang.wx.miniapp.bean.analysis.WxMaUserPortrait;
-import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitDistribution;
-import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitPage;
-import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitTrend;
+import cn.binarywang.wx.miniapp.bean.analysis.*;
 import me.chanjar.weixin.common.error.WxErrorException;
 
 import java.util.Date;
@@ -19,16 +14,6 @@ import java.util.List;
  * @since 2018-04-28
  */
 public interface WxMaAnalysisService {
-  String GET_DAILY_SUMMARY_TREND_URL = "https://api.weixin.qq.com/datacube/getweanalysisappiddailysummarytrend";
-  String GET_DAILY_VISIT_TREND_URL = "https://api.weixin.qq.com/datacube/getweanalysisappiddailyvisittrend";
-  String GET_WEEKLY_VISIT_TREND_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidweeklyvisittrend";
-  String GET_MONTHLY_VISIT_TREND_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidmonthlyvisittrend";
-  String GET_VISIT_DISTRIBUTION_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidvisitdistribution";
-  String GET_DAILY_RETAIN_INFO_URL = "https://api.weixin.qq.com/datacube/getweanalysisappiddailyretaininfo";
-  String GET_WEEKLY_RETAIN_INFO_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidweeklyretaininfo";
-  String GET_MONTHLY_RETAIN_INFO_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidmonthlyretaininfo";
-  String GET_VISIT_PAGE_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidvisitpage";
-  String GET_USER_PORTRAIT_URL = "https://api.weixin.qq.com/datacube/getweanalysisappiduserportrait";
 
   /**
    * 查询概况趋势

+ 200 - 50
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCloudService.java

@@ -11,28 +11,17 @@ import java.util.Map;
  * 云开发相关接口.
  *
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
- * @date 2020-01-22
+ * @date 2020 -01-22
  */
 public interface WxMaCloudService {
-  String INVOKE_CLOUD_FUNCTION_URL = "https://api.weixin.qq.com/tcb/invokecloudfunction?env=%s&name=%s";
-  String DATABASE_COLLECTION_GET_URL = "https://api.weixin.qq.com/tcb/databasecollectionget";
-  String DATABASE_COLLECTION_DELETE_URL = "https://api.weixin.qq.com/tcb/databasecollectiondelete";
-  String DATABASE_COLLECTION_ADD_URL = "https://api.weixin.qq.com/tcb/databasecollectionadd";
-  String GET_QCLOUD_TOKEN_URL = "https://api.weixin.qq.com/tcb/getqcloudtoken";
-  String BATCH_DELETE_FILE_URL = "https://api.weixin.qq.com/tcb/batchdeletefile";
-  String BATCH_DOWNLOAD_FILE_URL = "https://api.weixin.qq.com/tcb/batchdownloadfile";
-  String UPLOAD_FILE_URL = "https://api.weixin.qq.com/tcb/uploadfile";
-  String DATABASE_MIGRATE_QUERY_INFO_URL = "https://api.weixin.qq.com/tcb/databasemigratequeryinfo";
-  String DATABASE_MIGRATE_EXPORT_URL = "https://api.weixin.qq.com/tcb/databasemigrateexport";
-  String DATABASE_MIGRATE_IMPORT_URL = "https://api.weixin.qq.com/tcb/databasemigrateimport";
-  String UPDATE_INDEX_URL = "https://api.weixin.qq.com/tcb/updateindex";
-  String DATABASE_COUNT_URL = "https://api.weixin.qq.com/tcb/databasecount";
-  String DATABASE_AGGREGATE_URL = "https://api.weixin.qq.com/tcb/databaseaggregate";
-  String DATABASE_QUERY_URL = "https://api.weixin.qq.com/tcb/databasequery";
-  String DATABASE_UPDATE_URL = "https://api.weixin.qq.com/tcb/databaseupdate";
-  String DATABASE_DELETE_URL = "https://api.weixin.qq.com/tcb/databasedelete";
-  String DATABASE_ADD_URL = "https://api.weixin.qq.com/tcb/databaseadd";
-
+  /**
+   * Invoke cloud function string.
+   *
+   * @param name the name
+   * @param body the body
+   * @return the string
+   * @throws WxErrorException the wx error exception
+   */
   String invokeCloudFunction(String name, String body) throws WxErrorException;
 
   /**
@@ -48,15 +37,38 @@ public interface WxMaCloudService {
    * @param env  string		是	云开发环境ID
    * @param name string		是	云函数名称
    * @param body string		是	云函数的传入参数,具体结构由开发者定义。
-   * @return resp_data  string	云函数返回的buffer
+   * @return resp_data string	云函数返回的buffer
    * @throws WxErrorException .
    */
   String invokeCloudFunction(String env, String name, String body) throws WxErrorException;
 
+  /**
+   * Add list.
+   *
+   * @param collection the collection
+   * @param list       the list
+   * @return the list
+   * @throws WxErrorException the wx error exception
+   */
   List<String> add(String collection, List list) throws WxErrorException;
 
+  /**
+   * Add string.
+   *
+   * @param collection the collection
+   * @param obj        the obj
+   * @return the string
+   * @throws WxErrorException the wx error exception
+   */
   String add(String collection, Object obj) throws WxErrorException;
 
+  /**
+   * Database add json array.
+   *
+   * @param query the query
+   * @return the json array
+   * @throws WxErrorException the wx error exception
+   */
   JsonArray databaseAdd(String query) throws WxErrorException;
 
   /**
@@ -69,13 +81,28 @@ public interface WxMaCloudService {
    *
    * @param env   云环境ID
    * @param query 数据库操作语句
-   * @return 插入成功的数据集合主键_id
+   * @return 插入成功的数据集合主键_id json array
    * @throws WxErrorException .
    */
   JsonArray databaseAdd(String env, String query) throws WxErrorException;
 
+  /**
+   * Delete integer.
+   *
+   * @param collection the collection
+   * @param whereJson  the where json
+   * @return the integer
+   * @throws WxErrorException the wx error exception
+   */
   Integer delete(String collection, String whereJson) throws WxErrorException;
 
+  /**
+   * Database delete int.
+   *
+   * @param query the query
+   * @return the int
+   * @throws WxErrorException the wx error exception
+   */
   int databaseDelete(String query) throws WxErrorException;
 
   /**
@@ -88,13 +115,29 @@ public interface WxMaCloudService {
    *
    * @param env   云环境ID
    * @param query 数据库操作语句
-   * @return 删除记录数量
+   * @return 删除记录数量 int
    * @throws WxErrorException .
    */
   int databaseDelete(String env, String query) throws WxErrorException;
 
+  /**
+   * Update wx cloud database update result.
+   *
+   * @param collection the collection
+   * @param whereJson  the where json
+   * @param updateJson the update json
+   * @return the wx cloud database update result
+   * @throws WxErrorException the wx error exception
+   */
   WxCloudDatabaseUpdateResult update(String collection, String whereJson, String updateJson) throws WxErrorException;
 
+  /**
+   * Database update wx cloud database update result.
+   *
+   * @param query the query
+   * @return the wx cloud database update result
+   * @throws WxErrorException the wx error exception
+   */
   WxCloudDatabaseUpdateResult databaseUpdate(String query) throws WxErrorException;
 
   /**
@@ -107,32 +150,40 @@ public interface WxMaCloudService {
    *
    * @param env   云环境ID
    * @param query 数据库操作语句
-   * @return .
+   * @return . wx cloud database update result
    * @throws WxErrorException .
    */
   WxCloudDatabaseUpdateResult databaseUpdate(String env, String query) throws WxErrorException;
 
   /**
    * db.collection('geo')
-   *   .where({
-   *     price: _.gt(10)
-   *   })
-   *   .orderBy('_id', 'asc')
-   *   .orderBy('price', 'desc')
-   *   .skip(1)
-   *   .limit(10)
-   *   .get()
-   * @param collection
-   * @param whereJson
-   * @param orderBy
-   * @param skip
-   * @param limit
-   * @return
-   * @throws WxErrorException
+   * .where({
+   * price: _.gt(10)
+   * })
+   * .orderBy('_id', 'asc')
+   * .orderBy('price', 'desc')
+   * .skip(1)
+   * .limit(10)
+   * .get()
+   *
+   * @param collection the collection
+   * @param whereJson  the where json
+   * @param orderBy    the order by
+   * @param skip       the skip
+   * @param limit      the limit
+   * @return wx cloud database query result
+   * @throws WxErrorException the wx error exception
    */
   WxCloudDatabaseQueryResult query(String collection, String whereJson, Map<String, String> orderBy,
                                    Integer skip, Integer limit) throws WxErrorException;
 
+  /**
+   * Database query wx cloud database query result.
+   *
+   * @param query the query
+   * @return the wx cloud database query result
+   * @throws WxErrorException the wx error exception
+   */
   WxCloudDatabaseQueryResult databaseQuery(String query) throws WxErrorException;
 
   /**
@@ -145,11 +196,18 @@ public interface WxMaCloudService {
    *
    * @param env   云环境ID
    * @param query 数据库操作语句
-   * @return .
+   * @return . wx cloud database query result
    * @throws WxErrorException .
    */
   WxCloudDatabaseQueryResult databaseQuery(String env, String query) throws WxErrorException;
 
+  /**
+   * Database aggregate json array.
+   *
+   * @param query the query
+   * @return the json array
+   * @throws WxErrorException the wx error exception
+   */
   JsonArray databaseAggregate(String query) throws WxErrorException;
 
   /**
@@ -162,13 +220,28 @@ public interface WxMaCloudService {
    *
    * @param env   云环境ID
    * @param query 数据库操作语句
-   * @return .
+   * @return . json array
    * @throws WxErrorException .
    */
   JsonArray databaseAggregate(String env, String query) throws WxErrorException;
 
+  /**
+   * Count long.
+   *
+   * @param collection the collection
+   * @param whereJson  the where json
+   * @return the long
+   * @throws WxErrorException the wx error exception
+   */
   Long count(String collection, String whereJson) throws WxErrorException;
 
+  /**
+   * Database count long.
+   *
+   * @param query the query
+   * @return the long
+   * @throws WxErrorException the wx error exception
+   */
   Long databaseCount(String query) throws WxErrorException;
 
   /**
@@ -181,11 +254,19 @@ public interface WxMaCloudService {
    *
    * @param env   云环境ID
    * @param query 数据库操作语句
-   * @return 记录数量
+   * @return 记录数量 long
    * @throws WxErrorException .
    */
   Long databaseCount(String env, String query) throws WxErrorException;
 
+  /**
+   * Update index.
+   *
+   * @param collectionName the collection name
+   * @param createIndexes  the create indexes
+   * @param dropIndexNames the drop index names
+   * @throws WxErrorException the wx error exception
+   */
   void updateIndex(String collectionName, List<WxCloudDatabaseCreateIndexRequest> createIndexes,
                    List<String> dropIndexNames) throws WxErrorException;
 
@@ -206,6 +287,17 @@ public interface WxMaCloudService {
   void updateIndex(String env, String collectionName, List<WxCloudDatabaseCreateIndexRequest> createIndexes,
                    List<String> dropIndexNames) throws WxErrorException;
 
+  /**
+   * Database migrate import long.
+   *
+   * @param collectionName the collection name
+   * @param filePath       the file path
+   * @param fileType       the file type
+   * @param stopOnError    the stop on error
+   * @param conflictMode   the conflict mode
+   * @return the long
+   * @throws WxErrorException the wx error exception
+   */
   Long databaseMigrateImport(String collectionName, String filePath, int fileType,
                              boolean stopOnError, int conflictMode) throws WxErrorException;
 
@@ -224,12 +316,21 @@ public interface WxMaCloudService {
    * @param fileType       导入文件类型, 1	JSON, 2	CSV
    * @param stopOnError    是否在遇到错误时停止导入
    * @param conflictMode   冲突处理模式 : 1	INSERT	,    2	UPSERT
-   * @return jobId
+   * @return jobId long
    * @throws WxErrorException .
    */
   Long databaseMigrateImport(String env, String collectionName, String filePath, int fileType, boolean stopOnError,
                              int conflictMode) throws WxErrorException;
 
+  /**
+   * Database migrate export long.
+   *
+   * @param filePath the file path
+   * @param fileType the file type
+   * @param query    the query
+   * @return the long
+   * @throws WxErrorException the wx error exception
+   */
   Long databaseMigrateExport(String filePath, int fileType, String query) throws WxErrorException;
 
   /**
@@ -245,11 +346,18 @@ public interface WxMaCloudService {
    * @param filePath 导出文件路径(文件会导出到同环境的云存储中,可使用获取下载链接 API 获取下载链接)
    * @param fileType 导出文件类型, 1	JSON, 2	CSV
    * @param query    导出条件
-   * @return jobId
+   * @return jobId long
    * @throws WxErrorException .
    */
   Long databaseMigrateExport(String env, String filePath, int fileType, String query) throws WxErrorException;
 
+  /**
+   * Database migrate query info wx cloud cloud database migrate query info result.
+   *
+   * @param jobId the job id
+   * @return the wx cloud cloud database migrate query info result
+   * @throws WxErrorException the wx error exception
+   */
   WxCloudCloudDatabaseMigrateQueryInfoResult databaseMigrateQueryInfo(Long jobId) throws WxErrorException;
 
   /**
@@ -263,11 +371,18 @@ public interface WxMaCloudService {
    *
    * @param env   云环境ID
    * @param jobId 迁移任务ID
-   * @return .
+   * @return . wx cloud cloud database migrate query info result
    * @throws WxErrorException .
    */
   WxCloudCloudDatabaseMigrateQueryInfoResult databaseMigrateQueryInfo(String env, Long jobId) throws WxErrorException;
 
+  /**
+   * Upload file wx cloud upload file result.
+   *
+   * @param path the path
+   * @return the wx cloud upload file result
+   * @throws WxErrorException the wx error exception
+   */
   WxCloudUploadFileResult uploadFile(String path) throws WxErrorException;
 
   /**
@@ -281,11 +396,19 @@ public interface WxMaCloudService {
    *
    * @param env  云环境ID
    * @param path 上传路径
-   * @return 上传结果
+   * @return 上传结果 wx cloud upload file result
    * @throws WxErrorException .
    */
   WxCloudUploadFileResult uploadFile(String env, String path) throws WxErrorException;
 
+  /**
+   * Batch download file wx cloud batch download file result.
+   *
+   * @param fileIds the file ids
+   * @param maxAges the max ages
+   * @return the wx cloud batch download file result
+   * @throws WxErrorException the wx error exception
+   */
   WxCloudBatchDownloadFileResult batchDownloadFile(String[] fileIds, long[] maxAges) throws WxErrorException;
 
   /**
@@ -300,11 +423,18 @@ public interface WxMaCloudService {
    * @param env     云环境ID
    * @param fileIds 文件ID列表
    * @param maxAges 下载链接有效期列表,对应文件id列表
-   * @return 下载链接信息
+   * @return 下载链接信息 wx cloud batch download file result
    * @throws WxErrorException .
    */
   WxCloudBatchDownloadFileResult batchDownloadFile(String env, String[] fileIds, long[] maxAges) throws WxErrorException;
 
+  /**
+   * Batch delete file wx cloud batch delete file result.
+   *
+   * @param fileIds the file ids
+   * @return the wx cloud batch delete file result
+   * @throws WxErrorException the wx error exception
+   */
   WxCloudBatchDeleteFileResult batchDeleteFile(String[] fileIds) throws WxErrorException;
 
   /**
@@ -318,7 +448,7 @@ public interface WxMaCloudService {
    *
    * @param env     云环境ID
    * @param fileIds 文件ID列表
-   * @return 下载链接信息
+   * @return 下载链接信息 wx cloud batch delete file result
    * @throws WxErrorException .
    */
   WxCloudBatchDeleteFileResult batchDeleteFile(String env, String[] fileIds) throws WxErrorException;
@@ -332,11 +462,17 @@ public interface WxMaCloudService {
    * </pre>
    *
    * @param lifeSpan 有效期(单位为秒,最大7200)
-   * @return .
+   * @return . qcloud token
    * @throws WxErrorException .
    */
   WxCloudGetQcloudTokenResult getQcloudToken(long lifeSpan) throws WxErrorException;
 
+  /**
+   * Database collection add.
+   *
+   * @param collectionName the collection name
+   * @throws WxErrorException the wx error exception
+   */
   void databaseCollectionAdd(String collectionName) throws WxErrorException;
 
   /**
@@ -354,6 +490,12 @@ public interface WxMaCloudService {
    */
   void databaseCollectionAdd(String env, String collectionName) throws WxErrorException;
 
+  /**
+   * Database collection delete.
+   *
+   * @param collectionName the collection name
+   * @throws WxErrorException the wx error exception
+   */
   void databaseCollectionDelete(String collectionName) throws WxErrorException;
 
   /**
@@ -371,6 +513,14 @@ public interface WxMaCloudService {
    */
   void databaseCollectionDelete(String env, String collectionName) throws WxErrorException;
 
+  /**
+   * Database collection get wx cloud database collection get result.
+   *
+   * @param limit  the limit
+   * @param offset the offset
+   * @return the wx cloud database collection get result
+   * @throws WxErrorException the wx error exception
+   */
   WxCloudDatabaseCollectionGetResult databaseCollectionGet(Long limit, Long offset) throws WxErrorException;
 
   /**
@@ -385,7 +535,7 @@ public interface WxMaCloudService {
    * @param env    云环境ID
    * @param limit  获取数量限制,默认值:10
    * @param offset 偏移量,默认值:0
-   * @return .
+   * @return . wx cloud database collection get result
    * @throws WxErrorException .
    */
   WxCloudDatabaseCollectionGetResult databaseCollectionGet(String env, Long limit, Long offset) throws WxErrorException;

+ 0 - 17
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCodeService.java

@@ -14,23 +14,6 @@ import java.util.List;
  */
 public interface WxMaCodeService {
   /**
-   * 为授权的小程序帐号上传小程序代码.
-   */
-  String COMMIT_URL = "https://api.weixin.qq.com/wxa/commit";
-  String GET_QRCODE_URL = "https://api.weixin.qq.com/wxa/get_qrcode";
-  String GET_CATEGORY_URL = "https://api.weixin.qq.com/wxa/get_category";
-  String GET_PAGE_URL = "https://api.weixin.qq.com/wxa/get_page";
-  String SUBMIT_AUDIT_URL = "https://api.weixin.qq.com/wxa/submit_audit";
-  String GET_AUDIT_STATUS_URL = "https://api.weixin.qq.com/wxa/get_auditstatus";
-  String GET_LATEST_AUDIT_STATUS_URL = "https://api.weixin.qq.com/wxa/get_latest_auditstatus";
-  String RELEASE_URL = "https://api.weixin.qq.com/wxa/release";
-  String CHANGE_VISIT_STATUS_URL = "https://api.weixin.qq.com/wxa/change_visitstatus";
-  String REVERT_CODE_RELEASE_URL = "https://api.weixin.qq.com/wxa/revertcoderelease";
-  String GET_SUPPORT_VERSION_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/getweappsupportversion";
-  String SET_SUPPORT_VERSION_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/setweappsupportversion";
-  String UNDO_CODE_AUDIT_URL = "https://api.weixin.qq.com/wxa/undocodeaudit";
-
-  /**
    * 为授权的小程序帐号上传小程序代码(仅仅支持第三方开放平台).
    *
    * @param commitRequest 参数

+ 34 - 98
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaExpressService.java

@@ -12,192 +12,128 @@ import java.util.List;
 
 /**
  * 小程序物流助手
+ *
  * @author <a href="https://github.com/mr-xiaoyu">xiaoyu</a>
  * @since 2019-11-26
  */
 public interface WxMaExpressService {
-  /**
-   * 获取支持的快递公司列表
-   */
-  String ALL_DELIVERY_URL = "https://api.weixin.qq.com/cgi-bin/express/business/delivery/getall";
-
-  /**
-   * 获取所有绑定的物流账号
-   */
-  String ALL_ACCOUNT_URL = "https://api.weixin.qq.com/cgi-bin/express/business/account/getall";
-
-  /**
-   * 绑定、解绑物流账号
-   */
-  String BIND_ACCOUNT_URL = "https://api.weixin.qq.com/cgi-bin/express/business/account/bind";
-
-  /**
-   * 获取电子面单余额
-   */
-  String GET_QUOTA_URL = "https://api.weixin.qq.com/cgi-bin/express/business/quota/get";
-
-  /**
-   * 配置面单打印员
-   */
-  String UPDATE_PRINTER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/printer/update";
-
-  /**
-   * 获取打印员
-   */
-  String GET_PRINTER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/printer/getall";
-
-  /**
-   * 生成运单
-   */
-  String ADD_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/add";
-
-  /**
-   * 批量获取运单数据
-   */
-  String BATCH_GET_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/batchget";
-
-  /**
-   * 取消运单
-   */
-  String CANCEL_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/cancel";
-
-  /**
-   * 获取运单数据
-   */
-  String GET_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/get";
-
-  /**
-   * 查询运单轨迹
-   */
-  String GET_PATH_URL = "https://api.weixin.qq.com/cgi-bin/express/business/path/get";
-
-  /**
-   * 模拟快递公司更新订单状态
-   */
-  String TEST_UPDATE_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/test_update_order";
 
   /**
    * 获取支持的快递公司列表
-   * @return  快递公司列表
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getAllDelivery.html">查看文档</a>
+   *
+   * @return 快递公司列表
    * @throws WxErrorException 获取失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getAllDelivery.html">查看文档</a>
-   * </pre>
    */
   List<WxMaExpressDelivery> getAllDelivery() throws WxErrorException;
 
   /**
    * 获取所有绑定的物流账号
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getAllAccount.html">查看文档</a>
+   *
    * @return 物流账号list
    * @throws WxErrorException 获取失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getAllAccount.html">查看文档</a>
-   * </pre>
    */
   List<WxMaExpressAccount> getAllAccount() throws WxErrorException;
 
   /**
    * 绑定、解绑物流账号
+   *
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.bindAccount.html">查看文档</a>
+   *
    * @param wxMaExpressBindAccountRequest 物流账号对象
    * @throws WxErrorException 请求失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.bindAccount.html">查看文档</a>
-   * </pre>
    */
   void bindAccount(WxMaExpressBindAccountRequest wxMaExpressBindAccountRequest) throws WxErrorException;
 
   /**
    * 获取电子面单余额。仅在使用加盟类快递公司时,才可以调用。
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getQuota.html">查看文档</a>
+   *
    * @param wxMaExpressBindAccountRequest 物流账号对象
    * @return 电子面单余额
    * @throws WxErrorException 获取失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getQuota.html">查看文档</a>
-   * </pre>
    */
   Integer getQuota(WxMaExpressBindAccountRequest wxMaExpressBindAccountRequest) throws WxErrorException;
 
   /**
    * 配置面单打印员,可以设置多个,若需要使用微信打单 PC 软件,才需要调用。
-   * @param wxMaExpressPrinterUpdateRequest  面单打印员对象
+   *
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.updatePrinter.html">查看文档</a>
+   *
+   * @param wxMaExpressPrinterUpdateRequest 面单打印员对象
    * @throws WxErrorException 请求失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.updatePrinter.html">查看文档</a>
-   * </pre>
    */
   void updatePrinter(WxMaExpressPrinterUpdateRequest wxMaExpressPrinterUpdateRequest) throws WxErrorException;
 
   /**
    * 获取打印员。若需要使用微信打单 PC 软件,才需要调用
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getPrinter.html">查看文档</a>
+   *
    * @return 打印员
    * @throws WxErrorException 获取失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getPrinter.html">查看文档</a>
-   * </pre>
    */
   WxMaExpressPrinter getPrinter() throws WxErrorException;
 
   /**
    * 生成运单
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.addOrder.html">查看文档</a>
+   *
    * @param wxMaExpressAddOrderRequest 生成运单请求对象
    * @return 生成运单结果
    * @throws WxErrorException 请求失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.addOrder.html">查看文档</a>
-   * </pre>
    */
   WxMaExpressOrderInfoResult addOrder(WxMaExpressAddOrderRequest wxMaExpressAddOrderRequest) throws WxErrorException;
 
   /**
    * 批量获取运单数据
+   *
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.batchGetOrder.html">查看文档</a>
+   *
    * @param requests 获取运单请求对象集合,最多不能超过1000个
    * @return 运单信息集合
    * @throws WxErrorException 获取失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.batchGetOrder.html">查看文档</a>
-   * </pre>
    */
   List<WxMaExpressOrderInfoResult> batchGetOrder(List<WxMaExpressGetOrderRequest> requests) throws WxErrorException;
 
   /**
    * 取消运单
+   *
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.cancelOrder.html">查看文档</a>
+   *
    * @param wxMaExpressGetOrderRequest 运单信息请求对象
    * @throws WxErrorException 取消失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.cancelOrder.html">查看文档</a>
-   * </pre>
    */
   void cancelOrder(WxMaExpressGetOrderRequest wxMaExpressGetOrderRequest) throws WxErrorException;
 
   /**
    * 获取运单数据
+   *
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getOrder.html">查看文档</a>
+   *
    * @param wxMaExpressGetOrderRequest 运单信息请求对象
    * @return 运单信息
    * @throws WxErrorException 获取失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getOrder.html">查看文档</a>
-   * </pre>
    */
   WxMaExpressOrderInfoResult getOrder(WxMaExpressGetOrderRequest wxMaExpressGetOrderRequest) throws WxErrorException;
 
   /**
    * 查询运单轨迹
+   *
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getPath.html">查看文档</a>
+   *
    * @param wxMaExpressGetOrderRequest 运单信息请求对象
    * @return 运单轨迹对象
    * @throws WxErrorException 查询失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.getPath.html">查看文档</a>
-   * </pre>
    */
   WxMaExpressPath getPath(WxMaExpressGetOrderRequest wxMaExpressGetOrderRequest) throws WxErrorException;
 
   /**
    * 模拟快递公司更新订单状态, 该接口只能用户测试
-   * @param wxMaExpressTestUpdateOrderRequest  模拟快递公司更新订单状态请求对象
+   * <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.testUpdateOrder.html">查看文档</a>
+   *
+   * @param wxMaExpressTestUpdateOrderRequest 模拟快递公司更新订单状态请求对象
    * @throws WxErrorException 模拟更新订单状态失败时返回
-   * <pre>
-   *   <a href="https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/express/by-business/logistics.testUpdateOrder.html">查看文档</a>
-   * </pre>
    */
   void testUpdateOrder(WxMaExpressTestUpdateOrderRequest wxMaExpressTestUpdateOrderRequest) throws WxErrorException;
 }

+ 14 - 7
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaJsapiService.java

@@ -13,14 +13,11 @@ import me.chanjar.weixin.common.error.WxErrorException;
  */
 public interface WxMaJsapiService {
   /**
-   * 获得jsapi_ticket的url
-   */
-  String GET_JSAPI_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket";
-
-  /**
    * 获得卡券api_ticket,不强制刷新api_ticket
    *
-   * @see #getJsapiTicket(boolean)
+   * @return the card api ticket
+   * @throws WxErrorException the wx error exception
+   * @see #getJsapiTicket(boolean) #getJsapiTicket(boolean)
    */
   String getCardApiTicket() throws WxErrorException;
 
@@ -33,13 +30,17 @@ public interface WxMaJsapiService {
    * </pre>
    *
    * @param forceRefresh 强制刷新
+   * @return the card api ticket
+   * @throws WxErrorException the wx error exception
    */
   String getCardApiTicket(boolean forceRefresh) throws WxErrorException;
 
   /**
    * 获得jsapi_ticket,不强制刷新jsapi_ticket
    *
-   * @see #getJsapiTicket(boolean)
+   * @return the jsapi ticket
+   * @throws WxErrorException the wx error exception
+   * @see #getJsapiTicket(boolean) #getJsapiTicket(boolean)
    */
   String getJsapiTicket() throws WxErrorException;
 
@@ -52,6 +53,8 @@ public interface WxMaJsapiService {
    * </pre>
    *
    * @param forceRefresh 强制刷新
+   * @return the jsapi ticket
+   * @throws WxErrorException the wx error exception
    */
   String getJsapiTicket(boolean forceRefresh) throws WxErrorException;
 
@@ -61,6 +64,10 @@ public interface WxMaJsapiService {
    *
    * 详情请见:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN
    * </pre>
+   *
+   * @param url the url
+   * @return the wx jsapi signature
+   * @throws WxErrorException the wx error exception
    */
   WxJsapiSignature createJsapiSignature(String url) throws WxErrorException;
 

+ 0 - 8
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveGoodsService.java

@@ -16,14 +16,6 @@ import java.util.List;
  * @author <a href="https://github.com/lipengjun92">lipengjun (939961241@qq.com)</a>
  */
 public interface WxMaLiveGoodsService {
-  String ADD_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/add";
-  String RESET_AUDIT_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/resetaudit";
-  String AUDIT_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/audit";
-  String DELETE_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/delete";
-  String UPDATE_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/update";
-  String GET_GOODS_WARE_HOUSE = "https://api.weixin.qq.com/wxa/business/getgoodswarehouse";
-  String GET_APPROVED_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/getapproved";
-
   /**
    * 商品添加并提审
    * <pre>

+ 6 - 12
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java

@@ -14,17 +14,6 @@ import java.util.List;
  * @author <a href="https://github.com/yjwang3300300">yjwang</a>
  */
 public interface WxMaLiveService {
-  String GET_LIVE_INFO = "https://api.weixin.qq.com/wxa/business/getliveinfo";
-  String CREATE_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/create";
-  String ADD_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/room/addgoods";
-  String DELETE_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/deleteroom";
-  String EDIT_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/editroom";
-  String GET_PUSH_URL = "https://api.weixin.qq.com/wxaapi/broadcast/room/getpushurl";
-  String GET_SHARED_CODE = "https://api.weixin.qq.com/wxaapi/broadcast/room/getsharedcode";
-  String ADD_ASSISTANT = "https://api.weixin.qq.com/wxaapi/broadcast/room/addassistant";
-  String MODIFY_ASSISTANT = "https://api.weixin.qq.com/wxaapi/broadcast/room/modifyassistant";
-  String REMOVE_ASSISTANT = "https://api.weixin.qq.com/wxaapi/broadcast/room/removeassistant";
-  String GET_ASSISTANT_LIST = "https://api.weixin.qq.com/wxaapi/broadcast/room/getassistantlist";
 
   /**
    * 创建直播间
@@ -95,6 +84,7 @@ public interface WxMaLiveService {
    * @throws WxErrorException .
    */
   String getSharedCode(Integer roomId, String params) throws WxErrorException;
+
   /**
    * 获取直播房间列表.(分页)
    *
@@ -153,6 +143,7 @@ public interface WxMaLiveService {
    * @throws WxErrorException .
    */
   boolean addGoodsToRoom(Integer roomId, List<Integer> goodsIds) throws WxErrorException;
+
   /**
    * 添加管理直播间小助手
    * <p>
@@ -168,6 +159,7 @@ public interface WxMaLiveService {
    * @throws WxErrorException .
    */
   boolean addAssistant(Integer roomId, List<WxMaLiveAssistantInfo> users) throws WxErrorException;
+
   /**
    * 修改直播间小助手昵称
    * <p>
@@ -183,7 +175,8 @@ public interface WxMaLiveService {
    * @return 修改小助手昵称是否成功
    * @throws WxErrorException .
    */
-  boolean modifyAssistant(Integer roomId, String username,String nickname) throws WxErrorException;
+  boolean modifyAssistant(Integer roomId, String username, String nickname) throws WxErrorException;
+
   /**
    * 删除直播间小助手
    * <p>
@@ -199,6 +192,7 @@ public interface WxMaLiveService {
    * @throws WxErrorException .
    */
   boolean removeAssistant(Integer roomId, String username) throws WxErrorException;
+
   /**
    * 查询直播间小助手
    * <p>

+ 0 - 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaMediaService.java

@@ -15,8 +15,6 @@ import java.io.InputStream;
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 public interface WxMaMediaService {
-  String MEDIA_UPLOAD_URL = "https://api.weixin.qq.com/cgi-bin/media/upload?type=%s";
-  String MEDIA_GET_URL = "https://api.weixin.qq.com/cgi-bin/media/get";
 
   /**
    * <pre>

+ 0 - 6
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaMsgService.java

@@ -13,12 +13,6 @@ import me.chanjar.weixin.common.error.WxErrorException;
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 public interface WxMaMsgService {
-  String KEFU_MESSAGE_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/custom/send";
-  String TEMPLATE_MSG_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send";
-  String SUBSCRIBE_MSG_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send";
-  String UNIFORM_MSG_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send";
-  String ACTIVITY_ID_CREATE_URL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/activityid/create";
-  String UPDATABLE_MSG_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/updatablemsg/send";
 
   /**
    * <pre>

+ 1 - 6
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaPluginService.java

@@ -5,7 +5,7 @@ import me.chanjar.weixin.common.error.WxErrorException;
 
 /**
  * 小程序插件管理 API
- *
+ * <p>
  * 详情请见:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/plugin-management/pluginManager.applyPlugin.html
  * 或者:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Mini_Programs/Plug-ins_Management.html
  *
@@ -14,11 +14,6 @@ import me.chanjar.weixin.common.error.WxErrorException;
 public interface WxMaPluginService {
 
   /**
-   * The constant PLUGIN_URL.
-   */
-  String PLUGIN_URL = "https://api.weixin.qq.com/wxa/plugin";
-
-  /**
    * 向插件开发者发起使用插件的申请
    *
    * @param pluginAppId 插件 appId

+ 0 - 3
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaQrcodeService.java

@@ -17,9 +17,6 @@ import java.io.File;
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 public interface WxMaQrcodeService {
-  String CREATE_QRCODE_URL = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode";
-  String GET_WXACODE_URL = "https://api.weixin.qq.com/wxa/getwxacode";
-  String GET_WXACODE_UNLIMIT_URL = "https://api.weixin.qq.com/wxa/getwxacodeunlimit";
 
   /**
    * 接口C: 获取小程序页面二维码.

+ 2 - 3
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaRunService.java

@@ -1,16 +1,15 @@
 package cn.binarywang.wx.miniapp.api;
 
-import java.util.List;
-
 import cn.binarywang.wx.miniapp.bean.WxMaRunStepInfo;
 
+import java.util.List;
+
 /**
  * 微信运动相关操作接口.
  *
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 public interface WxMaRunService {
-
   /**
    * 解密分享敏感数据.
    * 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html

+ 0 - 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSchemeService.java

@@ -14,8 +14,6 @@ import me.chanjar.weixin.common.error.WxErrorException;
  * @date : 2021-01-26
  */
 public interface WxMaSchemeService {
-  String GENERATE_SCHEME_URL = "https://api.weixin.qq.com/wxa/generatescheme";
-
   /**
    * 获取小程序scheme码
    *

+ 17 - 13
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java

@@ -1,10 +1,10 @@
 package cn.binarywang.wx.miniapp.api;
 
 import cn.binarywang.wx.miniapp.bean.WxMaMediaAsyncCheckResult;
-import java.io.File;
-
 import me.chanjar.weixin.common.error.WxErrorException;
 
+import java.io.File;
+
 /**
  * <pre>
  * 内容安全相关接口.
@@ -14,13 +14,6 @@ import me.chanjar.weixin.common.error.WxErrorException;
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 public interface WxMaSecCheckService {
-
-  String IMG_SEC_CHECK_URL = "https://api.weixin.qq.com/wxa/img_sec_check";
-
-  String MSG_SEC_CHECK_URL = "https://api.weixin.qq.com/wxa/msg_sec_check";
-
-  String MEDIA_CHECK_ASYNC_URL = "https://api.weixin.qq.com/wxa/media_check_async";
-
   /**
    * <pre>
    * 校验一张图片是否含有违法违规内容.
@@ -29,13 +22,18 @@ public interface WxMaSecCheckService {
    * 2)敏感人脸识别:用户头像;媒体类用户文章里的图片检测;社交类用户上传的图片检测等。频率限制:单个 appId 调用上限为 1000 次/分钟,100,000 次/天
    * 详情请见: https://developers.weixin.qq.com/miniprogram/dev/api/open-api/sec-check/imgSecCheck.html
    * </pre>
+   *
+   * @param file the file
+   * @return the boolean
+   * @throws WxErrorException the wx error exception
    */
   boolean checkImage(File file) throws WxErrorException;
 
   /**
    * 校验一张图片是否含有违法违规内容
+   *
    * @param fileUrl 文件网络地址
-   * @return 是否违规
+   * @return 是否违规 boolean
    * @throws WxErrorException .
    */
   boolean checkImage(String fileUrl) throws WxErrorException;
@@ -49,6 +47,10 @@ public interface WxMaSecCheckService {
    * 游戏类用户编辑上传的素材(如答题类小游戏用户上传的问题及答案)检测等。 频率限制:单个 appId 调用上限为 4000 次/分钟,2,000,000 次/天*
    * 详情请见: https://developers.weixin.qq.com/miniprogram/dev/api/open-api/sec-check/msgSecCheck.html
    * </pre>
+   *
+   * @param msgString the msg string
+   * @return the boolean
+   * @throws WxErrorException the wx error exception
    */
   boolean checkMessage(String msgString) throws WxErrorException;
 
@@ -65,10 +67,12 @@ public interface WxMaSecCheckService {
    * 详情请见:
    * https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.mediaCheckAsync.html
    * </pre>
-   * @param mediaUrl 要检测的多媒体url
+   *
+   * @param mediaUrl  要检测的多媒体url
    * @param mediaType 媒体类型,{@link cn.binarywang.wx.miniapp.constant.WxMaConstants.SecCheckMediaType}
-   * @return
+   * @return wx ma media async check result
+   * @throws WxErrorException the wx error exception
    */
-  WxMaMediaAsyncCheckResult mediaCheckAsync(String mediaUrl,int mediaType) throws WxErrorException;
+  WxMaMediaAsyncCheckResult mediaCheckAsync(String mediaUrl, int mediaType) throws WxErrorException;
 
 }

+ 49 - 31
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java

@@ -2,9 +2,9 @@ package cn.binarywang.wx.miniapp.api;
 
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.binarywang.wx.miniapp.config.WxMaConfig;
+import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.service.WxImgProcService;
 import me.chanjar.weixin.common.service.WxOcrService;
-import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.service.WxService;
 import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
 import me.chanjar.weixin.common.util.http.RequestExecutor;
@@ -13,6 +13,8 @@ import me.chanjar.weixin.common.util.http.RequestHttp;
 import java.util.Map;
 
 /**
+ * The interface Wx ma service.
+ *
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 public interface WxMaService extends WxService {
@@ -21,6 +23,9 @@ public interface WxMaService extends WxService {
    */
   String GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
 
+  /**
+   * The constant JSCODE_TO_SESSION_URL.
+   */
   String JSCODE_TO_SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session";
   /**
    * getPaidUnionId
@@ -36,6 +41,8 @@ public interface WxMaService extends WxService {
    * 获取登录后的session信息.
    *
    * @param jsCode 登录时获取的 code
+   * @return the wx ma jscode 2 session result
+   * @throws WxErrorException the wx error exception
    */
   WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException;
 
@@ -47,10 +54,10 @@ public interface WxMaService extends WxService {
    * http请求方式:POST http(s)://api.weixin.qq.com/wxa/setdynamicdata?access_token=ACCESS_TOKEN
    * </pre>
    *
-   * @param data     推送到微信后台的数据列表,该数据被微信用于流量分配,注意该字段为string类型而不是object
    * @param lifespan 数据有效时间,秒为单位,一般为86400,一天一次导入的频率
-   * @param scene    1代表用于搜索的数据
    * @param type     用于标识数据所属的服务类目
+   * @param scene    1代表用于搜索的数据
+   * @param data     推送到微信后台的数据列表,该数据被微信用于流量分配,注意该字段为string类型而不是object
    * @throws WxErrorException .
    */
   void setDynamicData(int lifespan, String type, int scene, String data) throws WxErrorException;
@@ -60,13 +67,20 @@ public interface WxMaService extends WxService {
    * 验证消息的确来自微信服务器.
    * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319&token=&lang=zh_CN
    * </pre>
+   *
+   * @param timestamp the timestamp
+   * @param nonce     the nonce
+   * @param signature the signature
+   * @return the boolean
    */
   boolean checkSignature(String timestamp, String nonce, String signature);
 
   /**
    * 获取access_token, 不强制刷新access_token.
    *
-   * @see #getAccessToken(boolean)
+   * @return the access token
+   * @throws WxErrorException the wx error exception
+   * @see #getAccessToken(boolean) #getAccessToken(boolean)
    */
   String getAccessToken() throws WxErrorException;
 
@@ -83,6 +97,8 @@ public interface WxMaService extends WxService {
    * </pre>
    *
    * @param forceRefresh 强制刷新
+   * @return the access token
+   * @throws WxErrorException the wx error exception
    */
   String getAccessToken(boolean forceRefresh) throws WxErrorException;
 
@@ -99,7 +115,7 @@ public interface WxMaService extends WxService {
    * @param transactionId 非必填 微信支付订单号
    * @param mchId         非必填 微信支付分配的商户号,和商户订单号配合使用
    * @param outTradeNo    非必填  微信支付商户订单号,和商户号配合使用
-   * @return UnionId.
+   * @return UnionId. paid union id
    * @throws WxErrorException .
    */
   String getPaidUnionId(String openid, String transactionId, String mchId, String outTradeNo) throws WxErrorException;
@@ -111,12 +127,13 @@ public interface WxMaService extends WxService {
    * 可以参考,{@link MediaUploadRequestExecutor}的实现方法
    * </pre>
    *
-   * @param <E>      .
    * @param <T>      .
-   * @param data     参数或请求数据
+   * @param <E>      .
    * @param executor 执行器
    * @param uri      接口请求地址
-   * @return .
+   * @param data     参数或请求数据
+   * @return . t
+   * @throws WxErrorException the wx error exception
    */
   <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) throws WxErrorException;
 
@@ -143,7 +160,7 @@ public interface WxMaService extends WxService {
   /**
    * 获取WxMaConfig 对象.
    *
-   * @return WxMaConfig
+   * @return WxMaConfig wx ma config
    */
   WxMaConfig getWxMaConfig();
 
@@ -189,7 +206,7 @@ public interface WxMaService extends WxService {
    * 进行相应的公众号切换.
    *
    * @param mpId 公众号标识
-   * @return 切换是否成功
+   * @return 切换是否成功 boolean
    */
   boolean switchover(String mpId);
 
@@ -197,104 +214,105 @@ public interface WxMaService extends WxService {
    * 进行相应的公众号切换.
    *
    * @param miniappId 小程序标识
-   * @return 切换成功,则返回当前对象,方便链式调用,否则抛出异常
+   * @return 切换成功 ,则返回当前对象,方便链式调用,否则抛出异常
    */
   WxMaService switchoverTo(String miniappId);
 
   /**
    * 返回消息(客服消息和模版消息)发送接口方法实现类,以方便调用其各个接口.
    *
-   * @return WxMaMsgService
+   * @return WxMaMsgService msg service
    */
   WxMaMsgService getMsgService();
 
   /**
    * 返回素材相关接口方法的实现类对象,以方便调用其各个接口.
    *
-   * @return WxMaMediaService
+   * @return WxMaMediaService media service
    */
   WxMaMediaService getMediaService();
 
   /**
    * 返回用户相关接口方法的实现类对象,以方便调用其各个接口.
    *
-   * @return WxMaUserService
+   * @return WxMaUserService user service
    */
   WxMaUserService getUserService();
 
   /**
    * 返回二维码相关接口方法的实现类对象,以方便调用其各个接口.
    *
-   * @return WxMaQrcodeService
+   * @return WxMaQrcodeService qrcode service
    */
   WxMaQrcodeService getQrcodeService();
 
   /**
    * 返回获取小程序scheme码实现对象,以方便调用其各个接口.
-   * @return WxMaSchemeService
+   *
+   * @return WxMaSchemeService wx ma scheme service
    */
   WxMaSchemeService getWxMaSchemeService();
 
   /**
    * 返回订阅消息配置相关接口方法的实现类对象, 以方便调用其各个接口.
    *
-   * @return WxMaSubscribeService
+   * @return WxMaSubscribeService subscribe service
    */
   WxMaSubscribeService getSubscribeService();
 
   /**
    * 数据分析相关查询服务.
    *
-   * @return WxMaAnalysisService
+   * @return WxMaAnalysisService analysis service
    */
   WxMaAnalysisService getAnalysisService();
 
   /**
    * 返回代码操作相关的 API.
    *
-   * @return WxMaCodeService
+   * @return WxMaCodeService code service
    */
   WxMaCodeService getCodeService();
 
   /**
    * 返回jsapi操作相关的 API服务类对象.
    *
-   * @return WxMaJsapiService
+   * @return WxMaJsapiService jsapi service
    */
   WxMaJsapiService getJsapiService();
 
   /**
    * 小程序修改服务器地址、成员管理 API.
    *
-   * @return WxMaSettingService
+   * @return WxMaSettingService setting service
    */
   WxMaSettingService getSettingService();
 
   /**
    * 返回分享相关查询服务.
    *
-   * @return WxMaShareService
+   * @return WxMaShareService share service
    */
   WxMaShareService getShareService();
 
   /**
    * 返回微信运动相关接口服务对象.
    *
-   * @return WxMaShareService
+   * @return WxMaShareService run service
    */
   WxMaRunService getRunService();
 
   /**
    * 返回内容安全相关接口服务对象.
    *
-   * @return WxMaShareService
+   * @return WxMaShareService sec check service
    */
   WxMaSecCheckService getSecCheckService();
 
   /**
    * 返回插件相关接口服务对象.
    *
-   * @return WxMaPluginService
+   * @return WxMaPluginService plugin service
    */
   WxMaPluginService getPluginService();
 
@@ -306,35 +324,35 @@ public interface WxMaService extends WxService {
   /**
    * 请求http请求相关信息.
    *
-   * @return .
+   * @return . request http
    */
   RequestHttp getRequestHttp();
 
   /**
    * 获取物流助手接口服务对象
    *
-   * @return .
+   * @return . express service
    */
   WxMaExpressService getExpressService();
 
   /**
    * 获取云开发接口服务对象
    *
-   * @return .
+   * @return . cloud service
    */
   WxMaCloudService getCloudService();
 
   /**
    * 获取直播接口服务对象
    *
-   * @return .
+   * @return . live service
    */
   WxMaLiveService getLiveService();
 
   /**
    * 获取直播间商品服务对象
    *
-   * @return .
+   * @return . live goods service
    */
   WxMaLiveGoodsService getLiveGoodsService();
 
@@ -348,7 +366,7 @@ public interface WxMaService extends WxService {
   /**
    * 返回图像处理接口的实现类对象,以方便调用其各个接口.
    *
-   * @return WxImgProcService
+   * @return WxImgProcService img proc service
    */
   WxImgProcService getImgProcService();
 

+ 0 - 12
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSettingService.java

@@ -10,18 +10,6 @@ import me.chanjar.weixin.common.error.WxErrorException;
  * @since 2018-04-27 15:46
  */
 public interface WxMaSettingService {
-  /**
-   * 修改服务器地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489138143_WPbOO&token=&lang=zh_CN
-   * access_token 为 authorizer_access_token
-   */
-  String MODIFY_DOMAIN_URL = "https://api.weixin.qq.com/wxa/modify_domain";
-  String SET_WEB_VIEW_DOMAIN_URL = "https://api.weixin.qq.com/wxa/setwebviewdomain";
-  /**
-   * 小程序成员管理:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489140588_nVUgx&token=&lang=zh_CN
-   * access_token 为 authorizer_access_token
-   */
-  String BIND_TESTER_URL = "https://api.weixin.qq.com/wxa/bind_tester";
-  String UNBIND_TESTER_URL = "https://api.weixin.qq.com/wxa/unbind_tester";
 
   /**
    * 操作服务器域名

+ 0 - 34
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSubscribeService.java

@@ -16,40 +16,6 @@ import java.util.List;
  * @date 2019-12-15
  */
 public interface WxMaSubscribeService {
-  /**
-   * 获取模板标题下的关键词列表.
-   */
-  String GET_PUB_TEMPLATE_TITLE_LIST_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatetitles";
-
-  /**
-   * 获取模板标题下的关键词列表.
-   */
-  String GET_PUB_TEMPLATE_KEY_WORDS_BY_ID_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatekeywords";
-
-  /**
-   * 组合模板并添加至帐号下的个人模板库.
-   */
-  String TEMPLATE_ADD_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate";
-
-  /**
-   * 获取当前帐号下的个人模板列表.
-   */
-  String TEMPLATE_LIST_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate";
-
-  /**
-   * 删除帐号下的某个模板.
-   */
-  String TEMPLATE_DEL_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/deltemplate";
-
-  /**
-   * 获取小程序账号的类目
-   */
-  String GET_CATEGORY_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getcategory";
-
-  /**
-   * 发送订阅消息
-   */
-  String SUBSCRIBE_MSG_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send";
 
   /**
    * <pre>

+ 0 - 1
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java

@@ -13,7 +13,6 @@ import java.util.Map;
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 public interface WxMaUserService {
-  String SET_USER_STORAGE = "https://api.weixin.qq.com/wxa/set_user_storage?appid=%s&signature=%s&openid=%s&sig_method=%s";
 
   /**
    * 获取登录后的session信息.

+ 8 - 9
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java

@@ -11,14 +11,14 @@ import com.google.gson.Gson;
 import com.google.gson.JsonObject;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.api.WxConsts;
-import me.chanjar.weixin.common.service.WxImgProcService;
-import me.chanjar.weixin.common.service.WxOcrService;
 import me.chanjar.weixin.common.bean.ToJson;
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.enums.WxType;
 import me.chanjar.weixin.common.error.WxError;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.error.WxRuntimeException;
+import me.chanjar.weixin.common.service.WxImgProcService;
+import me.chanjar.weixin.common.service.WxOcrService;
 import me.chanjar.weixin.common.util.DataUtils;
 import me.chanjar.weixin.common.util.crypto.SHA1;
 import me.chanjar.weixin.common.util.http.RequestExecutor;
@@ -41,8 +41,7 @@ import java.util.concurrent.locks.Lock;
  */
 @Slf4j
 public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestHttp<H, P> {
-  private Map<String, WxMaConfig> configMap;
-
+  protected static final Gson GSON = new Gson();
   private final WxMaMsgService kefuService = new WxMaMsgServiceImpl(this);
   private final WxMaMediaService materialService = new WxMaMediaServiceImpl(this);
   private final WxMaUserService userService = new WxMaUserServiceImpl(this);
@@ -63,12 +62,10 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
   private final WxMaLiveGoodsService liveGoodsService = new WxMaLiveGoodsServiceImpl(this);
   private final WxOcrService ocrService = new WxMaOcrServiceImpl(this);
   private final WxImgProcService imgProcService = new WxMaImgProcServiceImpl(this);
-
+  private Map<String, WxMaConfig> configMap;
   private int retrySleepMillis = 1000;
   private int maxRetryTimes = 5;
 
-  protected static final Gson GSON = new Gson();
-
   @Override
   public RequestHttp getRequestHttp() {
     return this;
@@ -188,6 +185,7 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
   public String post(String url, Object obj) throws WxErrorException {
     return this.execute(SimplePostRequestExecutor.create(this), url, WxGsonBuilder.create().toJson(obj));
   }
+
   @Override
   public String post(String url, ToJson obj) throws WxErrorException {
     return this.post(url, obj.toJson());
@@ -197,6 +195,7 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
   public String post(String url, JsonObject jsonObject) throws WxErrorException {
     return this.post(url, jsonObject.toString());
   }
+
   /**
    * 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求
    */
@@ -244,8 +243,8 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
     }
     String accessToken = getAccessToken(false);
 
-    if(StringUtils.isNotEmpty(this.getWxMaConfig().getApiHostUrl())){
-      uri = uri.replace("https://api.weixin.qq.com",this.getWxMaConfig().getApiHostUrl()  );
+    if (StringUtils.isNotEmpty(this.getWxMaConfig().getApiHostUrl())) {
+      uri = uri.replace("https://api.weixin.qq.com", this.getWxMaConfig().getApiHostUrl());
     }
 
     String uriWithAccessToken = uri + (uri.contains("?") ? "&" : "?") + "access_token=" + accessToken;

+ 9 - 7
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaAnalysisServiceImpl.java

@@ -15,6 +15,8 @@ import java.lang.reflect.Type;
 import java.util.Date;
 import java.util.List;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Analysis.*;
+
 /**
  * @author <a href="https://github.com/charmingoh">Charming</a>
  * @since 2018-04-28
@@ -23,6 +25,13 @@ import java.util.List;
 public class WxMaAnalysisServiceImpl implements WxMaAnalysisService {
   private final WxMaService service;
 
+  private static String toJson(Date beginDate, Date endDate) {
+    JsonObject param = new JsonObject();
+    param.addProperty("begin_date", DateFormatUtils.format(beginDate, "yyyyMMdd"));
+    param.addProperty("end_date", DateFormatUtils.format(endDate, "yyyyMMdd"));
+    return param.toString();
+  }
+
   @Override
   public List<WxMaSummaryTrend> getDailySummaryTrend(Date beginDate, Date endDate) throws WxErrorException {
     return getAnalysisResultAsList(GET_DAILY_SUMMARY_TREND_URL, beginDate, endDate,
@@ -108,11 +117,4 @@ public class WxMaAnalysisServiceImpl implements WxMaAnalysisService {
       return null;
     }
   }
-
-  private static String toJson(Date beginDate, Date endDate) {
-    JsonObject param = new JsonObject();
-    param.addProperty("begin_date", DateFormatUtils.format(beginDate, "yyyyMMdd"));
-    param.addProperty("end_date", DateFormatUtils.format(endDate, "yyyyMMdd"));
-    return param.toString();
-  }
 }

+ 7 - 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCloudServiceImpl.java

@@ -4,8 +4,8 @@ import cn.binarywang.wx.miniapp.api.WxMaCloudService;
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.cloud.*;
 import cn.binarywang.wx.miniapp.constant.WxMaConstants;
-import cn.binarywang.wx.miniapp.util.JoinerUtils;
 import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
+import cn.binarywang.wx.miniapp.util.JoinerUtils;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import com.google.gson.JsonArray;
@@ -20,7 +20,12 @@ import me.chanjar.weixin.common.util.json.WxGsonBuilder;
 import org.apache.commons.lang3.StringUtils;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Cloud.*;
 
 /**
  * 云开发相关接口实现类.

+ 14 - 18
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java

@@ -1,33 +1,29 @@
 package cn.binarywang.wx.miniapp.api.impl;
 
-import java.io.File;
-import java.io.IOException;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.List;
-
-import lombok.AllArgsConstructor;
-import lombok.RequiredArgsConstructor;
-import me.chanjar.weixin.common.util.json.GsonParser;
-import org.apache.commons.lang3.StringUtils;
-
 import cn.binarywang.wx.miniapp.api.WxMaCodeService;
 import cn.binarywang.wx.miniapp.api.WxMaService;
-import cn.binarywang.wx.miniapp.bean.code.WxMaCategory;
-import cn.binarywang.wx.miniapp.bean.code.WxMaCodeAuditStatus;
-import cn.binarywang.wx.miniapp.bean.code.WxMaCodeCommitRequest;
-import cn.binarywang.wx.miniapp.bean.code.WxMaCodeSubmitAuditRequest;
-import cn.binarywang.wx.miniapp.bean.code.WxMaCodeVersionDistribution;
+import cn.binarywang.wx.miniapp.bean.code.*;
 import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
 import com.google.gson.JsonObject;
 import com.google.gson.reflect.TypeToken;
+import lombok.RequiredArgsConstructor;
 import me.chanjar.weixin.common.error.WxError;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.http.BaseMediaDownloadRequestExecutor;
 import me.chanjar.weixin.common.util.http.RequestExecutor;
 import me.chanjar.weixin.common.util.json.GsonHelper;
+import me.chanjar.weixin.common.util.json.GsonParser;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Code.*;
 
 /**
  * @author <a href="https://github.com/charmingoh">Charming</a>

+ 2 - 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImpl.java

@@ -16,6 +16,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Express.*;
+
 /**
  * @author <a href="https://github.com/mr-xiaoyu">xiaoyu</a>
  * @since 2019-11-26

+ 3 - 30
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaImgProcServiceImpl.java

@@ -2,12 +2,12 @@ package cn.binarywang.wx.miniapp.api.impl;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import lombok.RequiredArgsConstructor;
-import me.chanjar.weixin.common.service.WxImgProcService;
 import me.chanjar.weixin.common.bean.imgproc.WxImgProcAiCropResult;
 import me.chanjar.weixin.common.bean.imgproc.WxImgProcQrCodeResult;
 import me.chanjar.weixin.common.bean.imgproc.WxImgProcSuperResolutionResult;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.requestexecuter.ocr.OcrDiscernRequestExecutor;
+import me.chanjar.weixin.common.service.WxImgProcService;
 import org.apache.commons.lang3.StringUtils;
 
 import java.io.File;
@@ -15,6 +15,8 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.ImgProc.*;
+
 
 /**
  * 图像处理接口实现.
@@ -23,35 +25,6 @@ import java.nio.charset.StandardCharsets;
  */
 @RequiredArgsConstructor
 public class WxMaImgProcServiceImpl implements WxImgProcService {
-  /**
-   * 二维码/条码识别
-   */
-  private static final String QRCODE = "/cv/img/qrcode?img_url=%s";
-
-  /**
-   * 二维码/条码识别(文件)
-   */
-  private static final String FILE_QRCODE = "/cv/img/qrcode";
-
-  /**
-   * 图片高清化
-   */
-  private static final String SUPER_RESOLUTION = "/cv/img/superresolution?img_url=%s";
-
-  /**
-   * 图片高清化(文件)
-   */
-  private static final String FILE_SUPER_RESOLUTION = "/cv/img/superresolution";
-
-  /**
-   * 图片智能裁剪
-   */
-  private static final String AI_CROP = "/cv/img/aicrop?img_url=%s&ratios=%s";
-
-  /**
-   * 图片智能裁剪(文件)
-   */
-  private static final String FILE_AI_CROP = "/cv/img/aicrop?ratios=%s";
   private final WxMaService service;
 
   @Override

+ 2 - 1
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaJsapiServiceImpl.java

@@ -12,6 +12,8 @@ import me.chanjar.weixin.common.util.json.GsonParser;
 
 import java.util.concurrent.locks.Lock;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Jsapi.GET_JSAPI_TICKET_URL;
+
 /**
  * <pre>
  *  Created by BinaryWang on 2018/8/5.
@@ -30,7 +32,6 @@ public class WxMaJsapiServiceImpl implements WxMaJsapiService {
 
   @Override
   public String getCardApiTicket(boolean forceRefresh) throws WxErrorException {
-
     if (forceRefresh) {
       this.service.getWxMaConfig().expireCardApiTicket();
     }

+ 2 - 1
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java

@@ -9,7 +9,6 @@ import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableMap;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
-import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.json.GsonParser;
@@ -19,6 +18,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.LiveGoods.*;
+
 /**
  * <pre>
  *  Created by lipengjun on 2020/6/29.

+ 2 - 1
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java

@@ -6,7 +6,6 @@ import cn.binarywang.wx.miniapp.bean.live.*;
 import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
 import com.google.common.base.Joiner;
 import com.google.gson.JsonObject;
-import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.enums.WxType;
@@ -19,6 +18,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Live.*;
+
 /**
  * <pre>
  *  Created by yjwang on 2020/4/5.

+ 3 - 1
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaMediaServiceImpl.java

@@ -2,7 +2,6 @@ package cn.binarywang.wx.miniapp.api.impl;
 
 import cn.binarywang.wx.miniapp.api.WxMaMediaService;
 import cn.binarywang.wx.miniapp.api.WxMaService;
-import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
 import me.chanjar.weixin.common.error.WxError;
@@ -18,6 +17,9 @@ import java.io.InputStream;
 import java.nio.file.Files;
 import java.util.UUID;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Media.MEDIA_GET_URL;
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Media.MEDIA_UPLOAD_URL;
+
 /**
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */

+ 6 - 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImpl.java

@@ -2,17 +2,21 @@ package cn.binarywang.wx.miniapp.api.impl;
 
 import cn.binarywang.wx.miniapp.api.WxMaMsgService;
 import cn.binarywang.wx.miniapp.api.WxMaService;
-import cn.binarywang.wx.miniapp.bean.*;
+import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;
+import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage;
+import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage;
+import cn.binarywang.wx.miniapp.bean.WxMaUpdatableMsg;
 import cn.binarywang.wx.miniapp.constant.WxMaConstants;
 import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
 import com.google.gson.JsonObject;
-import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import me.chanjar.weixin.common.enums.WxType;
 import me.chanjar.weixin.common.error.WxError;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.json.GsonParser;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Msg.*;
+
 /**
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */

+ 3 - 13
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaOcrServiceImpl.java

@@ -2,16 +2,18 @@ package cn.binarywang.wx.miniapp.api.impl;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import lombok.RequiredArgsConstructor;
-import me.chanjar.weixin.common.service.WxOcrService;
 import me.chanjar.weixin.common.bean.ocr.*;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.requestexecuter.ocr.OcrDiscernRequestExecutor;
+import me.chanjar.weixin.common.service.WxOcrService;
 
 import java.io.File;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Ocr.*;
+
 /**
  * ocr 接口实现.
  *
@@ -20,18 +22,6 @@ import java.nio.charset.StandardCharsets;
  */
 @RequiredArgsConstructor
 public class WxMaOcrServiceImpl implements WxOcrService {
-  private static final String IDCARD = "https://api.weixin.qq.com/cv/ocr/idcard?img_url=%s";
-  private static final String FILEIDCARD = "https://api.weixin.qq.com/cv/ocr/idcard";
-  private static final String BANK_CARD = "https://api.weixin.qq.com/cv/ocr/bankcard?img_url=%s";
-  private static final String FILE_BANK_CARD = "https://api.weixin.qq.com/cv/ocr/bankcard";
-  private static final String DRIVING = "https://api.weixin.qq.com/cv/ocr/driving?img_url=%s";
-  private static final String FILE_DRIVING = "https://api.weixin.qq.com/cv/ocr/driving";
-  private static final String DRIVING_LICENSE = "https://api.weixin.qq.com/cv/ocr/drivinglicense?img_url=%s";
-  private static final String FILE_DRIVING_LICENSE = "https://api.weixin.qq.com/cv/ocr/drivinglicense";
-  private static final String BIZ_LICENSE = "https://api.weixin.qq.com/cv/ocr/bizlicense?img_url=%s";
-  private static final String FILE_BIZ_LICENSE = "https://api.weixin.qq.com/cv/ocr/bizlicense";
-  private static final String COMM = "https://api.weixin.qq.com/cv/ocr/comm?img_url=%s";
-  private static final String FILE_COMM = "https://api.weixin.qq.com/cv/ocr/comm";
 
   private final WxMaService service;
 

+ 2 - 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaPluginServiceImpl.java

@@ -10,6 +10,8 @@ import me.chanjar.weixin.common.error.WxErrorException;
 
 import java.util.Map;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Plugin.PLUGIN_URL;
+
 @AllArgsConstructor
 public class WxMaPluginServiceImpl implements WxMaPluginService {
   private final WxMaService service;

+ 37 - 32
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaQrcodeServiceImpl.java

@@ -8,12 +8,13 @@ import cn.binarywang.wx.miniapp.bean.WxaCode;
 import cn.binarywang.wx.miniapp.bean.WxaCodeUnlimit;
 import cn.binarywang.wx.miniapp.executor.QrcodeBytesRequestExecutor;
 import cn.binarywang.wx.miniapp.executor.QrcodeRequestExecutor;
-import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import me.chanjar.weixin.common.error.WxErrorException;
 
 import java.io.File;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Qrcode.*;
+
 /**
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
@@ -23,12 +24,14 @@ public class WxMaQrcodeServiceImpl implements WxMaQrcodeService {
 
   @Override
   public byte[] createQrcodeBytes(String path, int width) throws WxErrorException {
-    return this.service.execute(QrcodeBytesRequestExecutor.create(this.service.getRequestHttp()), CREATE_QRCODE_URL, new WxMaQrcode(path, width));
+    return this.service.execute(QrcodeBytesRequestExecutor.create(this.service.getRequestHttp()), CREATE_QRCODE_URL,
+      new WxMaQrcode(path, width));
   }
 
   @Override
   public File createQrcode(String path, int width) throws WxErrorException {
-    return this.service.execute(QrcodeRequestExecutor.create(this.service.getRequestHttp()), CREATE_QRCODE_URL, new WxMaQrcode(path, width));
+    return this.service.execute(QrcodeRequestExecutor.create(this.service.getRequestHttp()), CREATE_QRCODE_URL,
+      new WxMaQrcode(path, width));
   }
 
   @Override
@@ -39,25 +42,27 @@ public class WxMaQrcodeServiceImpl implements WxMaQrcodeService {
   @Override
   public byte[] createWxaCodeBytes(String path, int width, boolean autoColor, WxMaCodeLineColor lineColor, boolean isHyaline)
     throws WxErrorException {
-    return this.service.execute(QrcodeBytesRequestExecutor.create(this.service.getRequestHttp()), GET_WXACODE_URL, WxaCode.builder()
-      .path(path)
-      .width(width)
-      .autoColor(autoColor)
-      .lineColor(lineColor)
-      .isHyaline(isHyaline)
-      .build());
+    return this.service.execute(QrcodeBytesRequestExecutor.create(this.service.getRequestHttp()), GET_WXACODE_URL,
+      WxaCode.builder()
+        .path(path)
+        .width(width)
+        .autoColor(autoColor)
+        .lineColor(lineColor)
+        .isHyaline(isHyaline)
+        .build());
   }
 
   @Override
   public File createWxaCode(String path, int width, boolean autoColor, WxMaCodeLineColor lineColor, boolean isHyaline)
     throws WxErrorException {
-    return this.service.execute(QrcodeRequestExecutor.create(this.service.getRequestHttp()), GET_WXACODE_URL, WxaCode.builder()
-      .path(path)
-      .width(width)
-      .autoColor(autoColor)
-      .lineColor(lineColor)
-      .isHyaline(isHyaline)
-      .build());
+    return this.service.execute(QrcodeRequestExecutor.create(this.service.getRequestHttp()), GET_WXACODE_URL,
+      WxaCode.builder()
+        .path(path)
+        .width(width)
+        .autoColor(autoColor)
+        .lineColor(lineColor)
+        .isHyaline(isHyaline)
+        .build());
   }
 
   @Override
@@ -74,16 +79,14 @@ public class WxMaQrcodeServiceImpl implements WxMaQrcodeService {
   public byte[] createWxaCodeUnlimitBytes(String scene, String page, int width, boolean autoColor,
                                           WxMaCodeLineColor lineColor, boolean isHyaline) throws WxErrorException {
     return this.service.execute(QrcodeBytesRequestExecutor.create(this.service.getRequestHttp()),
-      GET_WXACODE_UNLIMIT_URL,
-      this.buildWxaCodeUnlimit(scene, page, width, autoColor, lineColor, isHyaline));
+      GET_WXACODE_UNLIMIT_URL, this.buildWxaCodeUnlimit(scene, page, width, autoColor, lineColor, isHyaline));
   }
 
   @Override
   public File createWxaCodeUnlimit(String scene, String page, int width, boolean autoColor,
                                    WxMaCodeLineColor lineColor, boolean isHyaline) throws WxErrorException {
     return this.service.execute(QrcodeRequestExecutor.create(this.service.getRequestHttp()),
-      GET_WXACODE_UNLIMIT_URL,
-      this.buildWxaCodeUnlimit(scene, page, width, autoColor, lineColor, isHyaline));
+      GET_WXACODE_UNLIMIT_URL, this.buildWxaCodeUnlimit(scene, page, width, autoColor, lineColor, isHyaline));
   }
 
   private WxaCodeUnlimit buildWxaCodeUnlimit(String scene, String page, int width, boolean autoColor,
@@ -106,7 +109,8 @@ public class WxMaQrcodeServiceImpl implements WxMaQrcodeService {
 
   @Override
   public File createQrcode(String path, int width, String filePath) throws WxErrorException {
-    return this.service.execute(QrcodeRequestExecutor.create(this.service.getRequestHttp(), filePath), CREATE_QRCODE_URL, new WxMaQrcode(path, width));
+    return this.service.execute(QrcodeRequestExecutor.create(this.service.getRequestHttp(), filePath),
+      CREATE_QRCODE_URL, new WxMaQrcode(path, width));
   }
 
   @Override
@@ -115,15 +119,17 @@ public class WxMaQrcodeServiceImpl implements WxMaQrcodeService {
   }
 
   @Override
-  public File createWxaCode(String path, int width, String filePath, boolean autoColor, WxMaCodeLineColor lineColor, boolean isHyaline)
+  public File createWxaCode(String path, int width, String filePath, boolean autoColor, WxMaCodeLineColor lineColor,
+                            boolean isHyaline)
     throws WxErrorException {
-    return this.service.execute(QrcodeRequestExecutor.create(this.service.getRequestHttp(), filePath), GET_WXACODE_URL, WxaCode.builder()
-      .path(path)
-      .width(width)
-      .autoColor(autoColor)
-      .lineColor(lineColor)
-      .isHyaline(isHyaline)
-      .build());
+    return this.service.execute(QrcodeRequestExecutor.create(this.service.getRequestHttp(), filePath), GET_WXACODE_URL,
+      WxaCode.builder()
+        .path(path)
+        .width(width)
+        .autoColor(autoColor)
+        .lineColor(lineColor)
+        .isHyaline(isHyaline)
+        .build());
   }
 
   @Override
@@ -140,8 +146,7 @@ public class WxMaQrcodeServiceImpl implements WxMaQrcodeService {
   public File createWxaCodeUnlimit(String scene, String page, String filePath, int width, boolean autoColor,
                                    WxMaCodeLineColor lineColor, boolean isHyaline) throws WxErrorException {
     return this.service.execute(QrcodeRequestExecutor.create(this.service.getRequestHttp(), filePath),
-      GET_WXACODE_UNLIMIT_URL,
-      this.buildWxaCodeUnlimit(scene, page, width, autoColor, lineColor, isHyaline));
+      GET_WXACODE_UNLIMIT_URL, this.buildWxaCodeUnlimit(scene, page, width, autoColor, lineColor, isHyaline));
   }
 
   @Override

+ 2 - 3
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaRunServiceImpl.java

@@ -1,14 +1,13 @@
 package cn.binarywang.wx.miniapp.api.impl;
 
-import java.util.List;
-
 import cn.binarywang.wx.miniapp.api.WxMaRunService;
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaRunStepInfo;
 import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils;
-import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
 
+import java.util.List;
+
 /**
  * <pre>
  * Created by Binary Wang on 2018/11/4.

+ 2 - 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSchemeServiceImpl.java

@@ -10,6 +10,8 @@ import me.chanjar.weixin.common.error.WxError;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.json.GsonParser;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Scheme.GENERATE_SCHEME_URL;
+
 /**
  * @author : cofedream
  * @date : 2021-01-28

+ 2 - 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java

@@ -15,6 +15,8 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URL;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.SecCheck.*;
+
 /**
  * <pre>
  *

+ 2 - 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSettingServiceImpl.java

@@ -10,6 +10,8 @@ import me.chanjar.weixin.common.error.WxErrorException;
 import java.util.HashMap;
 import java.util.Map;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Setting.*;
+
 /**
  * @author <a href="https://github.com/charmingoh">Charming</a>
  * @since 2018-04-27 15:46

+ 2 - 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSubscribeServiceImpl.java

@@ -23,6 +23,8 @@ import org.apache.commons.lang3.StringUtils;
 import java.io.Serializable;
 import java.util.List;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Subscribe.*;
+
 /**
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  * @date 2019-12-15

+ 2 - 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java

@@ -16,6 +16,8 @@ import org.apache.commons.codec.digest.DigestUtils;
 
 import java.util.Map;
 
+import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.User.SET_USER_STORAGE;
+
 /**
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */

+ 281 - 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java

@@ -0,0 +1,281 @@
+package cn.binarywang.wx.miniapp.constant;
+
+import lombok.experimental.UtilityClass;
+
+/**
+ * 小程序接口地址常量.
+ *
+ * @author <a href="https://github.com/binarywang">Binary Wang</a>
+ * @date 2021-01-28
+ */
+@UtilityClass
+public class WxMaApiUrlConstants {
+  public interface Analysis {
+    String GET_DAILY_SUMMARY_TREND_URL = "https://api.weixin.qq.com/datacube/getweanalysisappiddailysummarytrend";
+    String GET_DAILY_VISIT_TREND_URL = "https://api.weixin.qq.com/datacube/getweanalysisappiddailyvisittrend";
+    String GET_WEEKLY_VISIT_TREND_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidweeklyvisittrend";
+    String GET_MONTHLY_VISIT_TREND_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidmonthlyvisittrend";
+    String GET_VISIT_DISTRIBUTION_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidvisitdistribution";
+    String GET_DAILY_RETAIN_INFO_URL = "https://api.weixin.qq.com/datacube/getweanalysisappiddailyretaininfo";
+    String GET_WEEKLY_RETAIN_INFO_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidweeklyretaininfo";
+    String GET_MONTHLY_RETAIN_INFO_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidmonthlyretaininfo";
+    String GET_VISIT_PAGE_URL = "https://api.weixin.qq.com/datacube/getweanalysisappidvisitpage";
+    String GET_USER_PORTRAIT_URL = "https://api.weixin.qq.com/datacube/getweanalysisappiduserportrait";
+  }
+
+  public interface Cloud {
+    String INVOKE_CLOUD_FUNCTION_URL = "https://api.weixin.qq.com/tcb/invokecloudfunction?env=%s&name=%s";
+    String DATABASE_COLLECTION_GET_URL = "https://api.weixin.qq.com/tcb/databasecollectionget";
+    String DATABASE_COLLECTION_DELETE_URL = "https://api.weixin.qq.com/tcb/databasecollectiondelete";
+    String DATABASE_COLLECTION_ADD_URL = "https://api.weixin.qq.com/tcb/databasecollectionadd";
+    String GET_QCLOUD_TOKEN_URL = "https://api.weixin.qq.com/tcb/getqcloudtoken";
+    String BATCH_DELETE_FILE_URL = "https://api.weixin.qq.com/tcb/batchdeletefile";
+    String BATCH_DOWNLOAD_FILE_URL = "https://api.weixin.qq.com/tcb/batchdownloadfile";
+    String UPLOAD_FILE_URL = "https://api.weixin.qq.com/tcb/uploadfile";
+    String DATABASE_MIGRATE_QUERY_INFO_URL = "https://api.weixin.qq.com/tcb/databasemigratequeryinfo";
+    String DATABASE_MIGRATE_EXPORT_URL = "https://api.weixin.qq.com/tcb/databasemigrateexport";
+    String DATABASE_MIGRATE_IMPORT_URL = "https://api.weixin.qq.com/tcb/databasemigrateimport";
+    String UPDATE_INDEX_URL = "https://api.weixin.qq.com/tcb/updateindex";
+    String DATABASE_COUNT_URL = "https://api.weixin.qq.com/tcb/databasecount";
+    String DATABASE_AGGREGATE_URL = "https://api.weixin.qq.com/tcb/databaseaggregate";
+    String DATABASE_QUERY_URL = "https://api.weixin.qq.com/tcb/databasequery";
+    String DATABASE_UPDATE_URL = "https://api.weixin.qq.com/tcb/databaseupdate";
+    String DATABASE_DELETE_URL = "https://api.weixin.qq.com/tcb/databasedelete";
+    String DATABASE_ADD_URL = "https://api.weixin.qq.com/tcb/databaseadd";
+  }
+
+  public interface Msg {
+    String KEFU_MESSAGE_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/custom/send";
+    String TEMPLATE_MSG_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send";
+    String SUBSCRIBE_MSG_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send";
+    String UNIFORM_MSG_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send";
+    String ACTIVITY_ID_CREATE_URL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/activityid/create";
+    String UPDATABLE_MSG_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/updatablemsg/send";
+  }
+
+  public interface Code {
+    /**
+     * 为授权的小程序帐号上传小程序代码.
+     */
+    String COMMIT_URL = "https://api.weixin.qq.com/wxa/commit";
+    String GET_QRCODE_URL = "https://api.weixin.qq.com/wxa/get_qrcode";
+    String GET_CATEGORY_URL = "https://api.weixin.qq.com/wxa/get_category";
+    String GET_PAGE_URL = "https://api.weixin.qq.com/wxa/get_page";
+    String SUBMIT_AUDIT_URL = "https://api.weixin.qq.com/wxa/submit_audit";
+    String GET_AUDIT_STATUS_URL = "https://api.weixin.qq.com/wxa/get_auditstatus";
+    String GET_LATEST_AUDIT_STATUS_URL = "https://api.weixin.qq.com/wxa/get_latest_auditstatus";
+    String RELEASE_URL = "https://api.weixin.qq.com/wxa/release";
+    String CHANGE_VISIT_STATUS_URL = "https://api.weixin.qq.com/wxa/change_visitstatus";
+    String REVERT_CODE_RELEASE_URL = "https://api.weixin.qq.com/wxa/revertcoderelease";
+    String GET_SUPPORT_VERSION_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/getweappsupportversion";
+    String SET_SUPPORT_VERSION_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/setweappsupportversion";
+    String UNDO_CODE_AUDIT_URL = "https://api.weixin.qq.com/wxa/undocodeaudit";
+  }
+
+  public interface Express {
+    /**
+     * 获取支持的快递公司列表
+     */
+    String ALL_DELIVERY_URL = "https://api.weixin.qq.com/cgi-bin/express/business/delivery/getall";
+    /**
+     * 获取所有绑定的物流账号
+     */
+    String ALL_ACCOUNT_URL = "https://api.weixin.qq.com/cgi-bin/express/business/account/getall";
+    /**
+     * 绑定、解绑物流账号
+     */
+    String BIND_ACCOUNT_URL = "https://api.weixin.qq.com/cgi-bin/express/business/account/bind";
+    /**
+     * 获取电子面单余额
+     */
+    String GET_QUOTA_URL = "https://api.weixin.qq.com/cgi-bin/express/business/quota/get";
+    /**
+     * 配置面单打印员
+     */
+    String UPDATE_PRINTER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/printer/update";
+    /**
+     * 获取打印员
+     */
+    String GET_PRINTER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/printer/getall";
+    /**
+     * 生成运单
+     */
+    String ADD_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/add";
+    /**
+     * 批量获取运单数据
+     */
+    String BATCH_GET_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/batchget";
+    /**
+     * 取消运单
+     */
+    String CANCEL_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/cancel";
+    /**
+     * 获取运单数据
+     */
+    String GET_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/order/get";
+    /**
+     * 查询运单轨迹
+     */
+    String GET_PATH_URL = "https://api.weixin.qq.com/cgi-bin/express/business/path/get";
+    /**
+     * 模拟快递公司更新订单状态
+     */
+    String TEST_UPDATE_ORDER_URL = "https://api.weixin.qq.com/cgi-bin/express/business/test_update_order";
+  }
+
+  public interface ImgProc {
+    /**
+     * 二维码/条码识别
+     */
+    String QRCODE = "https://api.weixin.qq.com/cv/img/qrcode?img_url=%s";
+    /**
+     * 二维码/条码识别(文件)
+     */
+    String FILE_QRCODE = "https://api.weixin.qq.com/cv/img/qrcode";
+    /**
+     * 图片高清化
+     */
+    String SUPER_RESOLUTION = "https://api.weixin.qq.com/cv/img/superresolution?img_url=%s";
+    /**
+     * 图片高清化(文件)
+     */
+    String FILE_SUPER_RESOLUTION = "https://api.weixin.qq.com/cv/img/superresolution";
+    /**
+     * 图片智能裁剪
+     */
+    String AI_CROP = "https://api.weixin.qq.com/cv/img/aicrop?img_url=%s&ratios=%s";
+    /**
+     * 图片智能裁剪(文件)
+     */
+    String FILE_AI_CROP = "https://api.weixin.qq.com/cv/img/aicrop?ratios=%s";
+  }
+
+  public interface Jsapi {
+    /**
+     * 获得jsapi_ticket的url
+     */
+    String GET_JSAPI_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket";
+  }
+
+  public interface LiveGoods {
+    String ADD_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/add";
+    String RESET_AUDIT_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/resetaudit";
+    String AUDIT_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/audit";
+    String DELETE_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/delete";
+    String UPDATE_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/update";
+    String GET_GOODS_WARE_HOUSE = "https://api.weixin.qq.com/wxa/business/getgoodswarehouse";
+    String GET_APPROVED_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/goods/getapproved";
+  }
+
+  public interface Live {
+    String GET_LIVE_INFO = "https://api.weixin.qq.com/wxa/business/getliveinfo";
+    String CREATE_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/create";
+    String ADD_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/room/addgoods";
+    String DELETE_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/deleteroom";
+    String EDIT_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/editroom";
+    String GET_PUSH_URL = "https://api.weixin.qq.com/wxaapi/broadcast/room/getpushurl";
+    String GET_SHARED_CODE = "https://api.weixin.qq.com/wxaapi/broadcast/room/getsharedcode";
+    String ADD_ASSISTANT = "https://api.weixin.qq.com/wxaapi/broadcast/room/addassistant";
+    String MODIFY_ASSISTANT = "https://api.weixin.qq.com/wxaapi/broadcast/room/modifyassistant";
+    String REMOVE_ASSISTANT = "https://api.weixin.qq.com/wxaapi/broadcast/room/removeassistant";
+    String GET_ASSISTANT_LIST = "https://api.weixin.qq.com/wxaapi/broadcast/room/getassistantlist";
+  }
+
+  public interface Media {
+    String MEDIA_UPLOAD_URL = "https://api.weixin.qq.com/cgi-bin/media/upload?type=%s";
+    String MEDIA_GET_URL = "https://api.weixin.qq.com/cgi-bin/media/get";
+  }
+
+  public interface Plugin {
+    String PLUGIN_URL = "https://api.weixin.qq.com/wxa/plugin";
+  }
+
+  public interface Qrcode {
+    String CREATE_QRCODE_URL = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode";
+    String GET_WXACODE_URL = "https://api.weixin.qq.com/wxa/getwxacode";
+    String GET_WXACODE_UNLIMIT_URL = "https://api.weixin.qq.com/wxa/getwxacodeunlimit";
+  }
+
+  public interface Run {
+
+  }
+
+  public interface Scheme {
+    String GENERATE_SCHEME_URL = "https://api.weixin.qq.com/wxa/generatescheme";
+  }
+
+  public interface SecCheck {
+    String IMG_SEC_CHECK_URL = "https://api.weixin.qq.com/wxa/img_sec_check";
+    String MSG_SEC_CHECK_URL = "https://api.weixin.qq.com/wxa/msg_sec_check";
+    String MEDIA_CHECK_ASYNC_URL = "https://api.weixin.qq.com/wxa/media_check_async";
+  }
+
+  public interface Setting {
+    /**
+     * 修改服务器地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489138143_WPbOO&token=&lang=zh_CN
+     * access_token 为 authorizer_access_token
+     */
+    String MODIFY_DOMAIN_URL = "https://api.weixin.qq.com/wxa/modify_domain";
+    String SET_WEB_VIEW_DOMAIN_URL = "https://api.weixin.qq.com/wxa/setwebviewdomain";
+    /**
+     * 小程序成员管理:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489140588_nVUgx&token=&lang=zh_CN
+     * access_token 为 authorizer_access_token
+     */
+    String BIND_TESTER_URL = "https://api.weixin.qq.com/wxa/bind_tester";
+    String UNBIND_TESTER_URL = "https://api.weixin.qq.com/wxa/unbind_tester";
+  }
+
+  public interface Share {
+
+  }
+
+  public interface Subscribe {
+    /**
+     * 获取模板标题下的关键词列表.
+     */
+    String GET_PUB_TEMPLATE_TITLE_LIST_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatetitles";
+    /**
+     * 获取模板标题下的关键词列表.
+     */
+    String GET_PUB_TEMPLATE_KEY_WORDS_BY_ID_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatekeywords";
+    /**
+     * 组合模板并添加至帐号下的个人模板库.
+     */
+    String TEMPLATE_ADD_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate";
+    /**
+     * 获取当前帐号下的个人模板列表.
+     */
+    String TEMPLATE_LIST_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate";
+    /**
+     * 删除帐号下的某个模板.
+     */
+    String TEMPLATE_DEL_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/deltemplate";
+    /**
+     * 获取小程序账号的类目
+     */
+    String GET_CATEGORY_URL = "https://api.weixin.qq.com/wxaapi/newtmpl/getcategory";
+    /**
+     * 发送订阅消息
+     */
+    String SUBSCRIBE_MSG_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send";
+  }
+
+  public interface User {
+    String SET_USER_STORAGE = "https://api.weixin.qq.com/wxa/set_user_storage?appid=%s&signature=%s&openid=%s&sig_method=%s";
+  }
+
+  public interface Ocr {
+    String IDCARD = "https://api.weixin.qq.com/cv/ocr/idcard?img_url=%s";
+    String FILEIDCARD = "https://api.weixin.qq.com/cv/ocr/idcard";
+    String BANK_CARD = "https://api.weixin.qq.com/cv/ocr/bankcard?img_url=%s";
+    String FILE_BANK_CARD = "https://api.weixin.qq.com/cv/ocr/bankcard";
+    String DRIVING = "https://api.weixin.qq.com/cv/ocr/driving?img_url=%s";
+    String FILE_DRIVING = "https://api.weixin.qq.com/cv/ocr/driving";
+    String DRIVING_LICENSE = "https://api.weixin.qq.com/cv/ocr/drivinglicense?img_url=%s";
+    String FILE_DRIVING_LICENSE = "https://api.weixin.qq.com/cv/ocr/drivinglicense";
+    String BIZ_LICENSE = "https://api.weixin.qq.com/cv/ocr/bizlicense?img_url=%s";
+    String FILE_BIZ_LICENSE = "https://api.weixin.qq.com/cv/ocr/bizlicense";
+    String COMM = "https://api.weixin.qq.com/cv/ocr/comm?img_url=%s";
+    String FILE_COMM = "https://api.weixin.qq.com/cv/ocr/comm";
+  }
+}