diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaSettingConstant.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaSettingConstant.java new file mode 100644 index 0000000000..488474387f --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaSettingConstant.java @@ -0,0 +1,63 @@ +package com.epmet.wxapi.constant; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/8/18 13:59 + */ +public interface WxMaSettingConstant { + /** + * 设置服务器域名 + */ + String MODIFY_DOMAIN_URL = "https://api.weixin.qq.com/wxa/modify_domain"; + + /** + * 设置业务域名 + */ + String SET_WEBVIEW_DOMAIN_URL = "https://api.weixin.qq.com/wxa/setwebviewdomain"; + + /** + * 设置名称 + */ + String SET_NICK_NAME_URL = "https://api.weixin.qq.com/wxa/setnickname"; + + /** + * 获取可以设置的所有类目 + */ + String GET_ALL_CATEGORIES_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/getallcategories"; + + /** + * 获取已设置的所有类目 + */ + String GET_CATEGORY_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/getcategory"; + + /** + * 添加类目 + */ + String ADD_CATEGORY_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/addcategory"; + + /** + * 删除类目 + */ + String DELETE_CATEGORY_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/deletecategory"; + + /** + * 修改类目资质信息 + */ + String MODIFY_CATEGORY_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/modifycategory"; + + /** + * 绑定微信用户为体验者 + */ + String BIND_TESTER_URL = "https://api.weixin.qq.com/wxa/bind_tester"; + + /** + * 解除绑定体验者 + */ + String UNBIND_TESTER_URL = "https://api.weixin.qq.com/wxa/unbind_tester"; + + /** + * 获取体验者列表 + */ + String MEMBER_AUTH_URL = "https://api.weixin.qq.com/wxa/memberauth"; +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxAddCategoryReq.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxAddCategoryReq.java new file mode 100644 index 0000000000..b0c124ead7 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxAddCategoryReq.java @@ -0,0 +1,42 @@ +package com.epmet.wxapi.param; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/8/18 15:14 + */ +@NoArgsConstructor +@Data +public class WxAddCategoryReq implements Serializable { + + private static final long serialVersionUID = -3659216114599054052L; + + private List categories; + + @NoArgsConstructor + @Data + public static class CategoriesBean { + /** + * + */ + private int first; + private int second; + private List certicates; + + @NoArgsConstructor + @Data + public static class CerticatesBean { + /** + * + */ + private String key; + private String value; + } + } +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxBindTesterReq.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxBindTesterReq.java new file mode 100644 index 0000000000..19fffa0854 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxBindTesterReq.java @@ -0,0 +1,18 @@ +package com.epmet.wxapi.param; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/8/18 15:43 + */ +@Data +public class WxBindTesterReq implements Serializable { + private static final long serialVersionUID = -6509988898376682232L; + @SerializedName("wechatid") + private String weChatId; +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxDelCategoryReq.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxDelCategoryReq.java new file mode 100644 index 0000000000..ed640b9405 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxDelCategoryReq.java @@ -0,0 +1,19 @@ +package com.epmet.wxapi.param; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/8/18 15:22 + */ +@NoArgsConstructor +@Data +public class WxDelCategoryReq implements Serializable { + private static final long serialVersionUID = 7179297618235954140L; + private Integer first; + private Integer second; +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxModifyCategoryReq.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxModifyCategoryReq.java new file mode 100644 index 0000000000..02e395164b --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxModifyCategoryReq.java @@ -0,0 +1,41 @@ +package com.epmet.wxapi.param; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/8/18 15:26 + */ +@NoArgsConstructor +@Data +public class WxModifyCategoryReq implements Serializable { + + private static final long serialVersionUID = -428387175986769380L; + /** + * 一级类目 ID + */ + private int first; + /** + * 二级类目 ID + */ + private int second; + /** + * [资质信息]列表 + */ + private List certicates; + + @NoArgsConstructor + @Data + public static class CerticatesBean { + /** + * 资质图片 + */ + private String key; + private String value; + } +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetAllCategoriesResult.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetAllCategoriesResult.java new file mode 100644 index 0000000000..455ea42f91 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/result/WxGetAllCategoriesResult.java @@ -0,0 +1,61 @@ +package com.epmet.wxapi.result; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/8/18 14:53 + */ +@NoArgsConstructor +@Data +public class WxGetAllCategoriesResult implements Serializable { + + private static final long serialVersionUID = 4419968653961864521L; + /** + * errcode : 0 + */ + @SerializedName("errcode") + private Integer errCode; + @SerializedName("errmsg") + private String errMsg; + @SerializedName("categories_list") + private CategoriesListBean categoriesList; + @NoArgsConstructor + @Data + public static class CategoriesListBean { + private List categories; + + @NoArgsConstructor + @Data + public static class CategoriesBean { + /** + * id : 0 + */ + private int id; + private QualifyBean qualify; + private String name; + private int level; + private int father; + @SerializedName("sensitive_type") + private int sensitiveType; + private List children; + + @NoArgsConstructor + @Data + public static class QualifyBean { + /** + * exter_list : [] + */ + private String remark; + @SerializedName("exter_list") + private List exterList; + } + } + } +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaSettingService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaSettingService.java new file mode 100644 index 0000000000..57c9fd65de --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaSettingService.java @@ -0,0 +1,112 @@ +package com.epmet.wxapi.service; + +import com.epmet.wxapi.param.WxAddCategoryReq; +import com.epmet.wxapi.param.WxBindTesterReq; +import com.epmet.wxapi.param.WxDelCategoryReq; +import com.epmet.wxapi.param.WxModifyCategoryReq; +import com.epmet.wxapi.result.*; + +/** + * 小程序修改服务器地址、类目管理、成员管理 API(大部分只能是第三方平台调用) + * + * @author zhaoqifeng + * @date 2020/8/18 13:50 + */ +public interface WxMaSettingService { + /** + * 设置服务器域名 + * + * @param accessToken + * @param action + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/7/16 17:21 + */ + WxResult modifyDomain(String accessToken, String action); + + /** + * 设置业务域名 + * + * @param accessToken + * @param action + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/7/16 17:22 + */ + WxResult setWebviewDomain(String accessToken, String action); + + /** + * 获取可以设置的所有类目 + * + * @param accessToken + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/8/18 15:06 + */ + WxResult getAllCategories(String accessToken); + + /** + * 获取已设置的所有类目 + * + * @param accessToken + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/8/6 10:47 + */ + WxResult getCategory(String accessToken); + + /** + * 添加类目 + * + * @param accessToken + * @param request + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/8/18 15:20 + */ + WxResult addCategory(String accessToken, WxAddCategoryReq request); + + /** + * 删除类目 + * + * @param accessToken + * @param request + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/8/18 15:20 + */ + WxResult delCategory(String accessToken, WxDelCategoryReq request); + + /** + * 修改类目资质信息 + * + * @param accessToken + * @param request + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/8/18 15:20 + */ + WxResult modifyCategory(String accessToken, WxModifyCategoryReq request); + + /** + * 绑定微信用户为体验者 + * + * @param accessToken + * @param request + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/8/18 15:45 + */ + WxResult bindTester(String accessToken, WxBindTesterReq request); + + /** + * 解除绑定体验者 + * + * @param accessToken + * @param request + * @return com.epmet.wxapi.result.WxResult + * @author zhaoqifeng + * @date 2020/8/18 15:45 + */ + WxResult unBindTester(String accessToken, WxBindTesterReq request); +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaSettingServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaSettingServiceImpl.java new file mode 100644 index 0000000000..5490c6207e --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaSettingServiceImpl.java @@ -0,0 +1,207 @@ +package com.epmet.wxapi.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.utils.HttpClientManager; +import com.epmet.commons.tools.utils.Result; +import com.epmet.wxapi.constant.WxMaSettingConstant; +import com.epmet.wxapi.enums.WxMaErrorMsgEnum; +import com.epmet.wxapi.param.*; +import com.epmet.wxapi.result.*; +import com.epmet.wxapi.service.WxMaSettingService; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author zhaoqifeng + * @dscription + * @date 2020/8/18 13:57 + */ +@Service +public class WxMaSettingServiceImpl implements WxMaSettingService { + private static final String ERR_CODE = "errcode"; + private static final String ERR_MSG = "errmsg"; + + @Autowired + private WxMaDomainDTO wxMaDomainDTO; + + @Override + public WxResult modifyDomain(String accessToken, String action) { + WxResult result = new WxResult<>(); + String url = WxMaSettingConstant.MODIFY_DOMAIN_URL + "?" + "access_token=" + accessToken; + WxMaModifyDomainReq request = new WxMaModifyDomainReq(); + request.setAction(action); + request.setRequestDomain(wxMaDomainDTO.getRequestDomain()); + request.setUploadDomain(wxMaDomainDTO.getUploadDomain()); + request.setWsRequestDomain(wxMaDomainDTO.getWsRequestDomain()); + request.setDownloadDomain(wxMaDomainDTO.getDownloadDomain()); + Result modifyResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request)); + if (!modifyResult.success()) { + result.setErrorCode(modifyResult.getCode()); + result.setErrorMsg(modifyResult.getMsg()); + return result; + } + Gson gson = new Gson(); + WxMaModifyDomainResult domainResult = gson.fromJson(modifyResult.getData(), WxMaModifyDomainResult.class); + result.setErrorCode(domainResult.getErrcode()); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(domainResult.getErrcode())); + result.setData(domainResult); + return result; + } + + @Override + public WxResult setWebviewDomain(String accessToken, String action) { + WxResult result = new WxResult<>(); + String url = WxMaSettingConstant.SET_WEBVIEW_DOMAIN_URL + "?" + "access_token=" + accessToken; + WxMaSetWebviewDomainReq request = new WxMaSetWebviewDomainReq(); + request.setAction(action); + request.setWebViewDomain(wxMaDomainDTO.getWebviewDomain()); + Result modifyResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request)); + if (!modifyResult.success()) { + result.setErrorCode(modifyResult.getCode()); + result.setErrorMsg(modifyResult.getMsg()); + return result; + } + Gson gson = new Gson(); + WxMaSetWebviewDomainResult domainResult = gson.fromJson(modifyResult.getData(), WxMaSetWebviewDomainResult.class); + result.setErrorCode(domainResult.getErrcode()); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(domainResult.getErrcode())); + result.setData(domainResult); + return result; + } + + @Override + public WxResult getAllCategories(String accessToken) { + WxResult result = new WxResult<>(); + String url = WxMaSettingConstant.GET_ALL_CATEGORIES_URL + "?" + "access_token=" + accessToken; + Result modifyResult = HttpClientManager.getInstance().sendGet(url, null); + if (!modifyResult.success()) { + result.setErrorCode(modifyResult.getCode()); + result.setErrorMsg(modifyResult.getMsg()); + return result; + } + Gson gson = new Gson(); + WxGetAllCategoriesResult categoryResult = gson.fromJson(modifyResult.getData(), WxGetAllCategoriesResult.class); + if (categoryResult.getErrCode() != NumConstant.ZERO) { + result.setErrorCode(categoryResult.getErrCode()); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(categoryResult.getErrCode())); + return result; + } + result.setErrorCode(categoryResult.getErrCode()); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(categoryResult.getErrCode())); + result.setData(categoryResult); + return result; + } + + @Override + public WxResult getCategory(String accessToken) { + WxResult result = new WxResult<>(); + String url = WxMaSettingConstant.GET_CATEGORY_URL + "?" + "access_token=" + accessToken; + Result statusResult = HttpClientManager.getInstance().sendGet(url, null); + if (!statusResult.success()) { + result.setErrorCode(statusResult.getCode()); + result.setErrorMsg(statusResult.getMsg()); + return result; + } + Gson gson = new Gson(); + WxOpenGetCategoryResult categoryResult = gson.fromJson(statusResult.getData(), WxOpenGetCategoryResult.class); + if (categoryResult.getErrcode() != NumConstant.ZERO) { + result.setErrorCode(categoryResult.getErrcode()); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(categoryResult.getErrcode())); + return result; + } + result.ok(categoryResult); + return result; + } + + @Override + public WxResult addCategory(String accessToken, WxAddCategoryReq request) { + WxResult result = new WxResult(); + String url = WxMaSettingConstant.ADD_CATEGORY_URL + "?" + "access_token=" + accessToken; + Result categoryResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request)); + if (!categoryResult.success()) { + result.setErrorCode(categoryResult.getCode()); + result.setErrorMsg(categoryResult.getMsg()); + return result; + } + JSONObject jsonObject = JSONObject.parseObject(categoryResult.getData()); + result.setErrorCode(jsonObject.getInteger(ERR_CODE)); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(jsonObject.getInteger(ERR_CODE))); + return result; + } + + @Override + public WxResult delCategory(String accessToken, WxDelCategoryReq request) { + WxResult result = new WxResult(); + String url = WxMaSettingConstant.DELETE_CATEGORY_URL + "?" + "access_token=" + accessToken; + Result categoryResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request)); + if (!categoryResult.success()) { + result.setErrorCode(categoryResult.getCode()); + result.setErrorMsg(categoryResult.getMsg()); + return result; + } + JSONObject jsonObject = JSONObject.parseObject(categoryResult.getData()); + result.setErrorCode(jsonObject.getInteger(ERR_CODE)); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(jsonObject.getInteger(ERR_CODE))); + return result; + } + + @Override + public WxResult modifyCategory(String accessToken, WxModifyCategoryReq request) { + WxResult result = new WxResult(); + String url = WxMaSettingConstant.MODIFY_CATEGORY_URL + "?" + "access_token=" + accessToken; + Result categoryResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request)); + if (!categoryResult.success()) { + result.setErrorCode(categoryResult.getCode()); + result.setErrorMsg(categoryResult.getMsg()); + return result; + } + JSONObject jsonObject = JSONObject.parseObject(categoryResult.getData()); + result.setErrorCode(jsonObject.getInteger(ERR_CODE)); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(jsonObject.getInteger(ERR_CODE))); + return result; + } + + @Override + public WxResult bindTester(String accessToken, WxBindTesterReq request) { + WxResult result = new WxResult<>(); + String url = WxMaSettingConstant.BIND_TESTER_URL + "?" + "access_token=" + accessToken; + Result testerResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request)); + if (!testerResult.success()) { + result.setErrorCode(testerResult.getCode()); + result.setErrorMsg(testerResult.getMsg()); + return result; + } + JSONObject jsonObject = JSONObject.parseObject(testerResult.getData()); + result.setErrorCode(jsonObject.getInteger(ERR_CODE)); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(jsonObject.getInteger(ERR_CODE))); + result.setData(jsonObject.getString("userstr")); + return result; + } + + @Override + public WxResult unBindTester(String accessToken, WxBindTesterReq request) { + WxResult result = new WxResult(); + String url = WxMaSettingConstant.UNBIND_TESTER_URL + "?" + "access_token=" + accessToken; + Result testerResult = HttpClientManager.getInstance().sendPostByJSON(url, toJson(request)); + if (!testerResult.success()) { + result.setErrorCode(testerResult.getCode()); + result.setErrorMsg(testerResult.getMsg()); + return result; + } + JSONObject jsonObject = JSONObject.parseObject(testerResult.getData()); + result.setErrorCode(jsonObject.getInteger(ERR_CODE)); + result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(jsonObject.getInteger(ERR_CODE))); + return result; + } + + private String toJson(Object object) { + GsonBuilder gsonBuilder = new GsonBuilder(); + gsonBuilder.setPrettyPrinting(); + Gson gson = gsonBuilder.create(); + return gson.toJson(object); + } + +}