|
- package com.iformall.controller;
-
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- import com.google.gson.reflect.TypeToken;
- import com.iformall.common.ErrorCode;
- import com.iformall.common.Result;
- import com.iformall.common.ResultData;
- import com.iformall.controller.base.BaseController;
- import com.iformall.domain.dto.WxWeappCodeAuditDto;
- import com.iformall.domain.po.*;
- import com.iformall.domain.vo.WxWeappCodeStatusVo;
- import com.iformall.enums.*;
- import com.iformall.service.*;
- import com.iformall.service.wechat.FmOpenService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiImplicitParam;
- import io.swagger.annotations.ApiImplicitParams;
- import io.swagger.annotations.ApiOperation;
- import me.chanjar.weixin.common.error.WxErrorException;
- import me.chanjar.weixin.open.api.WxOpenMaService;
- import me.chanjar.weixin.open.bean.ma.WxMaOpenCommitExtInfo;
- import me.chanjar.weixin.open.bean.message.WxOpenMaSubmitAuditMessage;
- import me.chanjar.weixin.open.bean.result.*;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
-
- import javax.servlet.ServletOutputStream;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URLEncoder;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
-
- /**
- * Stormeye Wu
- */
- @RestController
- @RequestMapping("/weappCode")
- @Api(description = "微信第三方开发平台-小程序-代码管理")
- public class WechatWeappCodeController extends BaseController {
- private final Logger logger = LoggerFactory.getLogger(getClass());
- @Autowired
- private FmOpenService openService;
-
- @Autowired
- private WxWeappCodeStatusService weappCodeStatusService;
-
- @Autowired
- private WxWeappAuditStatusService weappAuditStatusService;
-
- @Autowired
- private WxWeappReleaseStatusService weappReleaseStatusService;
-
- @Autowired
- private WxAppinfoService appinfoService;
-
- @Autowired
- private WxAuthorizerInfoService authorizerInfoService;
-
- @Autowired
- private WxWeappExtSetService weappExtSetService;
-
-
- @ApiOperation(value = "为授权的小程序帐号上传小程序代码", notes = "extInfo参考https://mp.weixin.qq.com/debug/wxadoc/dev/framework/config.html")
- @PostMapping("/codeCommit")
- public ResultData codeCommit(Long templateId, String userVersion, String userDesc, String extInfoStr) {
- Gson gson = new GsonBuilder().create();
- WxMaOpenCommitExtInfo extInfo = gson.fromJson(extInfoStr, new TypeToken<WxMaOpenCommitExtInfo>() {}.getType());
- String appId = extInfo.getExtAppid();
-
- // 检查appId是否已授权
- WxAuthorizerInfo authorizerInfo = authorizerInfoService.getByAppId(appId);
- if(authorizerInfo == null) {
- return new ResultData(ErrorCode.WEAPP_APPID_NOT_AUTH);
- }
- if(!authorizerInfo.getAuthorizationStatus().equals(EnumWxAuthorizationStatus.AUTHORIZED.getCode())) {
- return new ResultData(ErrorCode.WEAPP_APPID_NOT_AUTH);
- }
-
- WxWeappCodeStatus codeStatus = weappCodeStatusService.getByAppId(appId);
-
- WxAppinfo appinfo = appinfoService.getByAppId(appId);
-
- int iAppType = 0;
- String appTypeStr = userVersion.substring(0, 1);
- if(appTypeStr.equalsIgnoreCase("C"))
- iAppType = EnumAppType.C.getCode();
- else if(appTypeStr.equalsIgnoreCase("B"))
- iAppType = EnumAppType.B.getCode();
-
- try {
- // code提交
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- logger.info(extInfo.toString());
- WxOpenResult openRet = openMaService.codeCommit(templateId, userVersion, userDesc, extInfo);
- logger.info(openRet.toString());
- boolean codeCommitStatus = false;
- if (openRet.isSuccess()) {
- codeCommitStatus = true;
- }
- if (codeStatus == null) {
- codeStatus = new WxWeappCodeStatus();
- codeStatus.setAppId(appId);
- if (appinfo != null) {
- codeStatus.setTenantId(appinfo.getTenantId());
- codeStatus.setType(appinfo.getType());
- }
- codeStatus.setUserVersion(userVersion);
- codeStatus.setVersionDesc(userDesc);
- if(codeCommitStatus) {
- codeStatus.setCodeStatus(EnumWeappCodeCommitStatus.SUCCESS.getCode());
- } else {
- codeStatus.setCodeStatus(EnumWeappCodeCommitStatus.FAIL.getCode());
- codeStatus.setCodeErrCode(gson.toJson(openRet));
- }
- codeStatus.setCodeTime(new Date());
- weappCodeStatusService.saveStatus(codeStatus);
- } else {
- codeStatus.setUserVersion(userVersion);
- codeStatus.setVersionDesc(userDesc);
- if(codeCommitStatus) {
- codeStatus.setCodeStatus(EnumWeappCodeCommitStatus.SUCCESS.getCode());
- } else {
- codeStatus.setCodeStatus(EnumWeappCodeCommitStatus.FAIL.getCode());
- codeStatus.setCodeErrCode(gson.toJson(openRet));
- }
- codeStatus.setCodeTime(new Date());
- weappCodeStatusService.updateStatus(codeStatus);
- }
- return new ResultData(openRet);
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- if (codeStatus == null) {
- codeStatus = new WxWeappCodeStatus();
- codeStatus.setAppId(appId);
- if (appinfo != null) {
- codeStatus.setTenantId(appinfo.getTenantId());
- codeStatus.setType(appinfo.getType());
- }
- codeStatus.setUserVersion(userVersion);
- codeStatus.setVersionDesc(userDesc);
- codeStatus.setCodeStatus(EnumWeappCodeCommitStatus.FAIL.getCode());
- codeStatus.setCodeErrCode(e.getMessage());
- codeStatus.setCodeTime(new Date());
- weappCodeStatusService.saveStatus(codeStatus);
- } else {
- codeStatus.setUserVersion(userVersion);
- codeStatus.setVersionDesc(userDesc);
- codeStatus.setCodeStatus(EnumWeappCodeCommitStatus.FAIL.getCode());
- codeStatus.setCodeErrCode(e.getMessage());
- codeStatus.setCodeTime(new Date());
- weappCodeStatusService.updateStatus(codeStatus);
- }
- return new ResultData(Result.ERROR, e.getMessage());
- }
- }
-
- @ApiOperation("获取体验小程序的体验二维码")
- @GetMapping("/getQrcode")
- public void getQrcode(@RequestParam(value = "appId") String appId, @RequestParam(value = "pagePath") String pagePath,
- @RequestParam(value = "params", required = false) Map<String, String> params,
- HttpServletResponse response, HttpServletRequest req) {
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- File file = openMaService.getTestQrcode(pagePath, params);
- ServletOutputStream out = response.getOutputStream();
-
- response.reset();
- response.setContentType("image/jpeg");
- String agent = req.getHeader("user-agent");
- String filename = "QRCode.jpg";
- if (agent.contains("Firefox")) {
- response.setHeader("Content-disposition",
- "attachment; filename=" + new String(filename.getBytes("GB2312"),"ISO-8859-1"));
- } else {
- response.setHeader("Content-disposition",
- "attachment; filename=" + URLEncoder.encode(filename,"UTF-8"));
- }
- // 循环取出流中的数据
- byte[] b = new byte[1024];
- int len;
- InputStream inStream = new FileInputStream(file);
- while ((len = inStream.read(b)) > 0)
- response.getOutputStream().write(b, 0, len);
- inStream.close();
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- } catch (IOException e) {
- logger.error(e.getMessage());
- }
- }
-
- @ApiOperation("获取授权小程序帐号已设置的类目")
- @GetMapping("/getCategory")
- public ResultData getCategory(String appId) {
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- WxOpenMaCategoryListResult openRet = openMaService.getCategoryList();
- logger.info(openRet.toString());
- return new ResultData(openRet);
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- return new ResultData(Result.ERROR, e.getMessage());
- }
- }
-
- @ApiOperation("获取小程序的第三方提交代码的页面配置")
- @GetMapping("/getPage")
- public ResultData getPage(String appId) {
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- WxOpenMaPageListResult openRet = openMaService.getPageList();
- logger.info(openRet.toString());
- return new ResultData(openRet);
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- return new ResultData(Result.ERROR, e.getMessage());
- }
- }
-
- @ApiOperation("将第三方提交的代码包提交审核 -- 即将废弃")
- @GetMapping("/submitAudit")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true),
- @ApiImplicitParam(name = "version", value = "version", dataType = "String", paramType = "query")})
- public ResultData submitAudit(String appId, String version) {
- Gson gson = new GsonBuilder().create();
- WxWeappExtSet extSetQ = new WxWeappExtSet();
- extSetQ.setAppId(appId);
- WxWeappExtSet extSet = weappExtSetService.getByObj(extSetQ);
- if(StringUtils.isBlank(extSet.getReleaseJson())) {
- logger.error("Release JSON is null");
- return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
- }
-
- WxWeappCodeStatusVo codeQ = new WxWeappCodeStatusVo();
- codeQ.setAppId(appId);
- if(StringUtils.isNotBlank(version)) {
- codeQ.setUserVersion(version);
- }
- List<WxWeappCodeStatusVo> codeStatusList = weappCodeStatusService.getList(codeQ);
- if(codeStatusList.size() == 1) {
- WxWeappCodeStatusVo codeStatus = codeStatusList.get(0);
- WxOpenMaSubmitAuditMessage subMessage = gson.fromJson(extSet.getReleaseJson(), new TypeToken<WxOpenMaSubmitAuditMessage>() {}.getType());
- if(codeStatus != null && codeStatus.getCodeStatus().equals(EnumWeappCodeCommitStatus.SUCCESS.getCode())) {
- WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(appId);
- boolean submitStatus = false;
- String codeErrCode = "";
- Long auditId = null;
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- WxOpenMaSubmitAuditResult openRet = openMaService.submitAudit(subMessage);
- logger.info(openRet.toString());
- if(openRet.isSuccess()) {
- submitStatus = true;
- codeErrCode = gson.toJson(openRet);
- auditId = openRet.getAuditId();
- } else {
- submitStatus = false;
- codeErrCode = gson.toJson(openRet);
- }
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- submitStatus = false;
- codeErrCode = e.getMessage();
- }
-
- if (auditStatus == null) {
- auditStatus = new WxWeappAuditStatus();
- auditStatus.setId(codeStatus.getId());
- auditStatus.setTenantId(codeStatus.getTenantId());
- auditStatus.setAppId(codeStatus.getAppId());
- auditStatus.setType(codeStatus.getType());
- auditStatus.setUserVersion(codeStatus.getUserVersion());
- auditStatus.setVersionDesc(codeStatus.getVersionDesc());
- if(submitStatus) {
- auditStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode());
- } else {
- auditStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode());
- }
- auditStatus.setAuditErrCode(codeErrCode);
- auditStatus.setAuditTime(new Date());
- weappAuditStatusService.saveStatus(auditStatus);
- } else {
- if(!submitStatus) {
- if(!auditStatus.getUserVersion().equals(codeStatus.getUserVersion())
- && auditStatus.getAuditStatus().equals(EnumWeappAuditStatus.AUDITING.getCode())) {
- // 提交审核失败不替换当前审核中的数据
- return new ResultData(ErrorCode.WEAPP_HAD_AUDITING);
- }
- codeStatus.setCodeStatus(EnumWeappAuditStatus.FAIL.getCode());
- codeStatus.setCodeErrCode(codeErrCode);
- } else {
- codeStatus.setCodeStatus(EnumWeappAuditStatus.AUDITING.getCode());
- }
- auditStatus.setUserVersion(codeStatus.getUserVersion());
- auditStatus.setVersionDesc(codeStatus.getVersionDesc());
- auditStatus.setAuditTime(new Date());
- weappAuditStatusService.updateStatus(auditStatus);
- }
- if(submitStatus) {
- return new ResultData(codeErrCode);
- } else {
- return new ResultData(ErrorCode.WEAPP_AUDIT_ERR);
- }
- } else {
- logger.error(ErrorCode.WEAPP_CODE_COMMIT_ERR.getMessage());
- return new ResultData(ErrorCode.WEAPP_CODE_COMMIT_ERR);
- }
- }
- return new ResultData(ErrorCode.WEAPP_CODE_COMMIT_ERR);
- }
-
- @ApiOperation("查询服务商的当月提审限额(quota)和加急次数")
- @GetMapping("/queryQuota")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true)})
- public ResultData queryQuota(String appId) {
- logger.debug("[" + getIpAddr() + "] WechatWeappCodeController::queryQuota");
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- WxOpenMaQueryQuotaResult openRet = openMaService.queryQuota();
- logger.info(openRet.toString());
- return new ResultData(openRet.toString());
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- return new ResultData(e.getMessage());
- }
- }
-
- @ApiOperation("将第三方提交的代码包提交审核")
- @PostMapping("/submitAuditWithFeedBack")
- public ResultData submitAudit(@RequestBody WxWeappCodeAuditDto codeAuditDto) {
- Gson gson = new GsonBuilder().create();
- WxWeappExtSet extSetQ = new WxWeappExtSet();
- extSetQ.setAppId(codeAuditDto.getAppId());
- WxWeappExtSet extSet = weappExtSetService.getByObj(extSetQ);
- if(StringUtils.isBlank(extSet.getReleaseJson())) {
- logger.error("Release JSON is null");
- return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
- }
-
- WxWeappCodeStatusVo codeQ = new WxWeappCodeStatusVo();
- codeQ.setAppId(codeAuditDto.getAppId());
- if(StringUtils.isNotBlank(codeAuditDto.getVersion())) {
- codeQ.setUserVersion(codeAuditDto.getVersion());
- }
- List<WxWeappCodeStatusVo> codeStatusList = weappCodeStatusService.getList(codeQ);
- if(codeStatusList.size() == 1) {
- WxWeappCodeStatusVo codeStatus = codeStatusList.get(0);
- WxOpenMaSubmitAuditMessage subMessage = gson.fromJson(extSet.getReleaseJson(), new TypeToken<WxOpenMaSubmitAuditMessage>() {}.getType());
- if(StringUtils.isNotBlank(codeAuditDto.getFeedbackInfo())) {
- subMessage.setFeedbackInfo(codeAuditDto.getFeedbackInfo());
- }
- if(StringUtils.isNotBlank(codeAuditDto.getFeedbackStuff())) {
- subMessage.setFeedbackStuff(codeAuditDto.getFeedbackStuff());
- }
- if(codeStatus != null && codeStatus.getCodeStatus().equals(EnumWeappCodeCommitStatus.SUCCESS.getCode())) {
- WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(codeAuditDto.getAppId());
- boolean submitStatus = false;
- String codeErrCode = "";
- Long auditId = null;
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(codeAuditDto.getAppId());
- WxOpenMaSubmitAuditResult openRet = openMaService.submitAudit(subMessage);
- logger.info(openRet.toString());
- if(openRet.isSuccess()) {
- submitStatus = true;
- codeErrCode = gson.toJson(openRet);
- auditId = openRet.getAuditId();
- } else {
- submitStatus = false;
- codeErrCode = gson.toJson(openRet);
- }
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- submitStatus = false;
- codeErrCode = e.getMessage();
- }
-
- if (auditStatus == null) {
- auditStatus = new WxWeappAuditStatus();
- auditStatus.setId(codeStatus.getId());
- auditStatus.setTenantId(codeStatus.getTenantId());
- auditStatus.setAppId(codeStatus.getAppId());
- auditStatus.setType(codeStatus.getType());
- auditStatus.setUserVersion(codeStatus.getUserVersion());
- auditStatus.setVersionDesc(codeStatus.getVersionDesc());
- auditStatus.setAuditid(auditId);
- if(submitStatus) {
- auditStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode());
- } else {
- auditStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode());
- }
- auditStatus.setAuditErrCode(codeErrCode);
- auditStatus.setAuditTime(new Date());
- weappAuditStatusService.saveStatus(auditStatus);
- } else {
- if(!submitStatus) {
- if(!auditStatus.getUserVersion().equals(codeStatus.getUserVersion())
- && auditStatus.getAuditStatus().equals(EnumWeappAuditStatus.AUDITING.getCode())) {
- // 提交审核失败不替换当前审核中的数据
- return new ResultData(ErrorCode.WEAPP_HAD_AUDITING);
- }
- codeStatus.setCodeStatus(EnumWeappAuditStatus.FAIL.getCode());
- codeStatus.setCodeErrCode(codeErrCode);
- } else {
- codeStatus.setCodeStatus(EnumWeappAuditStatus.AUDITING.getCode());
- }
- auditStatus.setUserVersion(codeStatus.getUserVersion());
- auditStatus.setVersionDesc(codeStatus.getVersionDesc());
- auditStatus.setAuditid(auditId);
- auditStatus.setAuditTime(new Date());
- weappAuditStatusService.updateStatus(auditStatus);
- }
- if(submitStatus) {
- return new ResultData(codeErrCode);
- } else {
- return new ResultData(ErrorCode.WEAPP_AUDIT_ERR);
- }
- } else {
- logger.error(ErrorCode.WEAPP_CODE_COMMIT_ERR.getMessage());
- return new ResultData(ErrorCode.WEAPP_CODE_COMMIT_ERR);
- }
- }
- return new ResultData(ErrorCode.WEAPP_CODE_COMMIT_ERR);
- }
-
- @ApiOperation("加速某个指定版本的审核状态")
- @GetMapping("/speedAudit")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true),
- @ApiImplicitParam(name = "auditid", value = "auditid", dataType = "Long", paramType = "query", required = true)})
- public ResultData speedAudit(String appId, Long auditid) {
- logger.debug("[" + getIpAddr() + "] WechatWeappCodeController::speedAudit");
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- Boolean ret = openMaService.speedAudit(Long.valueOf(auditid));
- return new ResultData(ret.toString());
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- return new ResultData(e.getMessage());
- }
- }
-
- @ApiOperation("查询某个指定版本的审核状态")
- @PostMapping("/getAuditstatus")
- public ResultData getAuditstatus(String appId, String auditidStr) {
- Gson gson = new GsonBuilder().create();
- Long auditId = Long.valueOf(auditidStr);
- WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(appId);
- if(auditStatus != null && auditStatus.getAuditid().equals(auditId)) {
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- WxOpenMaQueryAuditResult openRet = openMaService.getAuditStatus(auditId);
- logger.info(openRet.toString());
- if (openRet.isSuccess()) {
- auditStatus.setAuditid(openRet.getAuditId());
- // 审核状态,其中0为审核成功,1为审核失败,2为审核中,3已撤回
- switch (openRet.getStatus().intValue()) {
- case 0:
- auditStatus.setAuditStatus(EnumWeappAuditStatus.SUCCESS.getCode());
- break;
- case 1:
- auditStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode());
- break;
- case 2:
- auditStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode());
- break;
- case 3:
- auditStatus.setAuditStatus(EnumWeappAuditStatus.UNDO.getCode());
- break;
- default:
- auditStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode());
- break;
- }
- auditStatus.setAuditErrCode(gson.toJson(openRet));
- auditStatus.setAuditTime(new Date());
- weappAuditStatusService.updateStatus(auditStatus);
- }
- return new ResultData(openRet);
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- return new ResultData(Result.ERROR, e.getMessage());
- }
- }
- return new ResultData(Result.ERROR, "auditid不对应");
- }
-
- @ApiOperation("查询最新一次提交的审核状态")
- @GetMapping("/getLatestAuditstatus")
- public ResultData get_latest_auditstatus(String appId) {
- Gson gson = new GsonBuilder().create();
- WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(appId);
- if(auditStatus != null
- && auditStatus.getAuditStatus().equals(EnumWeappAuditStatus.AUDITING.getCode())) {
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- WxOpenMaQueryAuditResult openRet = openMaService.getLatestAuditStatus();
- logger.info(openRet.toString());
- if (openRet.isSuccess()) {
- auditStatus.setAuditid(openRet.getAuditId());
- // 审核状态,其中0为审核成功,1为审核失败,2为审核中,3已撤回
- switch (openRet.getStatus().intValue()) {
- case 0:
- auditStatus.setAuditStatus(EnumWeappAuditStatus.SUCCESS.getCode());
- break;
- case 1:
- auditStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode());
- break;
- case 2:
- auditStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode());
- break;
- case 3:
- auditStatus.setAuditStatus(EnumWeappAuditStatus.UNDO.getCode());
- break;
- default:
- auditStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode());
- break;
- }
- auditStatus.setAuditErrCode(gson.toJson(openRet));
- auditStatus.setAuditTime(new Date());
- weappAuditStatusService.updateStatus(auditStatus);
- }
- return new ResultData(openRet);
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- return new ResultData(Result.ERROR, e.getMessage());
- }
- } else {
- return new ResultData(Result.ERROR, "审核状态不是审核中");
- }
- }
-
- @ApiOperation("发布已通过审核的小程序")
- @GetMapping("/releaseAudited")
- public ResultData releaesAudited(String appId) {
- if(StringUtils.isBlank(appId)) {
- return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
- }
- Gson gson = new GsonBuilder().create();
- WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(appId);
- if(auditStatus.getAuditStatus().equals(EnumWeappAuditStatus.SUCCESS.getCode())) {
- boolean isUpdate = false;
- WxWeappReleaseStatus releaseStatus = weappReleaseStatusService.getByAppId(appId);
- if(releaseStatus != null) {
- // 版本已发布成功,跳过
- if(releaseStatus.getUserVersion().equals(auditStatus.getUserVersion())
- && releaseStatus.getReleaseStatus().equals(EnumWeappReleaseStatus.SUCCESS.getCode())) {
- return new ResultData(ErrorCode.WEAPP_APP_RELEASEED);
- }
- releaseStatus.setUserVersion(auditStatus.getUserVersion());
- releaseStatus.setVersionDesc(auditStatus.getVersionDesc());
- isUpdate = true;
- } else {
- releaseStatus = new WxWeappReleaseStatus();
- releaseStatus.setId(auditStatus.getId());
- releaseStatus.setTenantId(auditStatus.getTenantId());
- releaseStatus.setAppId(auditStatus.getAppId());
- releaseStatus.setType(auditStatus.getType());
- releaseStatus.setUserVersion(auditStatus.getUserVersion());
- releaseStatus.setVersionDesc(auditStatus.getVersionDesc());
- }
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- WxOpenResult openRet = openMaService.releaesAudited();
- logger.info(openRet.toString());
- boolean releaseSuccess = false;
- if(openRet.isSuccess()) {
- releaseSuccess = true;
- }
- if(releaseSuccess) {
- releaseStatus.setReleaseStatus(EnumWeappReleaseStatus.SUCCESS.getCode());
- } else {
- if(openRet.getErrcode().equals("85052")) { // app is already released
- releaseStatus.setReleaseStatus(EnumWeappReleaseStatus.SUCCESS.getCode());
- } else {
- releaseStatus.setReleaseStatus(EnumWeappReleaseStatus.FAIL.getCode());
- }
- }
- releaseStatus.setReleaseErrCode(gson.toJson(openRet));
- releaseStatus.setReleaseTime(new Date());
- if(isUpdate) {
- weappReleaseStatusService.updateStatus(releaseStatus);
- } else {
- weappReleaseStatusService.saveStatus(releaseStatus);
- }
- return new ResultData(openRet);
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- if(e.getError().getErrorCode() == 85052) {
- releaseStatus.setReleaseStatus(EnumWeappReleaseStatus.SUCCESS.getCode());
- } else {
- releaseStatus.setReleaseStatus(EnumWeappReleaseStatus.FAIL.getCode());
- }
- releaseStatus.setReleaseErrCode(e.getMessage());
- releaseStatus.setReleaseTime(new Date());
- if(isUpdate) {
- weappReleaseStatusService.updateStatus(releaseStatus);
- } else {
- weappReleaseStatusService.saveStatus(releaseStatus);
- }
- return new ResultData(Result.ERROR, e.getMessage());
- }
- } else {
- return new ResultData(ErrorCode.WEAPP_NOT_AUDITED);
- }
- }
-
- @ApiOperation("小程序版本回退")
- @GetMapping("/revertCodeRelease")
- public ResultData revertCodeRelease(String appId) {
- Gson gson = new GsonBuilder().create();
- WxWeappReleaseStatus releaseStatus = weappReleaseStatusService.getByAppId(appId);
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- WxOpenResult openRet = openMaService.revertCodeReleaes();
- logger.info(openRet.toString());
- if(openRet.isSuccess()) {
- if(releaseStatus != null) {
- releaseStatus.setReleaseStatus(EnumWeappReleaseStatus.BACK.getCode());
- releaseStatus.setReleaseErrCode(gson.toJson(openRet));
- releaseStatus.setReleaseTime(new Date());
- weappReleaseStatusService.updateStatus(releaseStatus);
- }
- return new ResultData();
- }
- return new ResultData(openRet);
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- return new ResultData(Result.ERROR, e.getMessage());
- }
- }
-
- @ApiOperation("查询当前设置的最低基础库版本及各版本用户占比")
- @GetMapping("/getSupportVersion")
- public ResultData getSupportVersion(String appId) {
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- String openRet = openMaService.getSupportVersion();
- logger.info(openRet.toString());
- return new ResultData(openRet);
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- return new ResultData(Result.ERROR, e.getMessage());
- }
- }
-
- @ApiOperation("设置最低基础库版本")
- @GetMapping("/setSupportVersion")
- public ResultData setSupportVersion(String appId, String version) {
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- String openRet = openMaService.setSupportVersion(version);
- logger.info(openRet);
- return new ResultData(openRet);
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- return new ResultData(Result.ERROR, e.getMessage());
- }
- }
-
- @ApiOperation(value = "小程序审核撤回", notes = "单个帐号每天审核撤回次数最多不超过1次,一个月不超过10次。")
- @GetMapping("/undoCodeAudit")
- public ResultData undoCodeAudit(String appId) {
- Gson gson = new GsonBuilder().create();
- WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(appId);
- if(auditStatus != null) {
- try {
- WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
- WxOpenResult openResult = openMaService.undoCodeAudit();
- Date curDate = new Date();
- if(openResult.isSuccess()) {
- // 审核状态
- auditStatus.setAuditStatus(EnumWeappAuditStatus.UNDO.getCode());
- auditStatus.setAuditErrCode(gson.toJson(openResult));
- auditStatus.setAuditTime(curDate);
- weappAuditStatusService.updateStatus(auditStatus);
- // 审核次数记入wx_authorizer_info
- WxAuthorizerInfo authorizerInfo = new WxAuthorizerInfo();
- authorizerInfo.setAuthorizerAppid(appId);
- authorizerInfo.setAuditBackTime(curDate);
- authorizerInfoService.updateAuthBackInfo(authorizerInfo);
- return new ResultData("审核撤回成功");
- }
- return new ResultData(Result.ERROR, "审核撤回失败");
- } catch (WxErrorException e) {
- logger.error(e.getMessage());
- return new ResultData(Result.ERROR, e.getMessage());
- }
- }
- return new ResultData(Result.ERROR, "没有审核记录,不能撤回");
- }
- }
|