| @@ -8,10 +8,13 @@ import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.vo.WxWeappCodeStatusVo; | |||
| import com.iformall.enums.*; | |||
| import com.iformall.service.*; | |||
| import com.iformall.service.wechat.WxOpenService; | |||
| 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; | |||
| @@ -33,6 +36,7 @@ import java.io.IOException; | |||
| import java.io.InputStream; | |||
| import java.net.URLEncoder; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| /** | |||
| @@ -61,6 +65,10 @@ public class WechatWeappCodeController { | |||
| @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) { | |||
| @@ -217,73 +225,93 @@ public class WechatWeappCodeController { | |||
| } | |||
| @ApiOperation("将第三方提交的代码包提交审核") | |||
| @PostMapping("/submitAudit") | |||
| public ResultData submitAudit(String appId, String subMesgStr) { | |||
| @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(); | |||
| WxWeappCodeStatus codeStatus = weappCodeStatusService.getByAppId(appId); | |||
| if(codeStatus != null && codeStatus.getCodeStatus().equals(EnumWeappCodeCommitStatus.SUCCESS.getCode())) { | |||
| WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(appId); | |||
| boolean submitStatus = false; | |||
| String codeErrCode = ""; | |||
| try { | |||
| WxOpenMaSubmitAuditMessage subMessage = JSON.parseObject(subMesgStr, WxOpenMaSubmitAuditMessage.class); | |||
| WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); | |||
| WxOpenMaSubmitAuditResult openRet = openMaService.submitAudit(subMessage); | |||
| logger.info(openRet.toString()); | |||
| if(openRet.isSuccess()) { | |||
| submitStatus = true; | |||
| codeErrCode = gson.toJson(openRet); | |||
| } else { | |||
| 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 = ""; | |||
| 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); | |||
| } else { | |||
| submitStatus = false; | |||
| codeErrCode = gson.toJson(openRet); | |||
| } | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| submitStatus = false; | |||
| codeErrCode = gson.toJson(openRet); | |||
| codeErrCode = e.getMessage(); | |||
| } | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| submitStatus = false; | |||
| codeErrCode = e.getMessage(); | |||
| } | |||
| if (auditStatus == null) { | |||
| auditStatus = new WxWeappAuditStatus(); | |||
| auditStatus.setId(codeStatus.getId()); | |||
| auditStatus.setAppId(codeStatus.getAppId()); | |||
| auditStatus.setType(codeStatus.getType()); | |||
| auditStatus.setUserVersion(codeStatus.getUserVersion()); | |||
| auditStatus.setVersionDesc(codeStatus.getVersionDesc()); | |||
| if(submitStatus) { | |||
| auditStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode()); | |||
| if (auditStatus == null) { | |||
| auditStatus = new WxWeappAuditStatus(); | |||
| auditStatus.setId(codeStatus.getId()); | |||
| 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 { | |||
| 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); | |||
| 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()); | |||
| } | |||
| codeStatus.setCodeStatus(EnumWeappAuditStatus.FAIL.getCode()); | |||
| codeStatus.setCodeErrCode(codeErrCode); | |||
| auditStatus.setUserVersion(codeStatus.getUserVersion()); | |||
| auditStatus.setVersionDesc(codeStatus.getVersionDesc()); | |||
| auditStatus.setAuditTime(new Date()); | |||
| weappAuditStatusService.updateStatus(auditStatus); | |||
| } | |||
| if(submitStatus) { | |||
| return new ResultData(codeErrCode); | |||
| } else { | |||
| codeStatus.setCodeStatus(EnumWeappAuditStatus.AUDITING.getCode()); | |||
| return new ResultData(ErrorCode.WEAPP_AUDIT_ERR); | |||
| } | |||
| 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); | |||
| logger.error(ErrorCode.WEAPP_CODE_COMMIT_ERR.getMessage()); | |||
| return new ResultData(ErrorCode.WEAPP_CODE_COMMIT_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("查询某个指定版本的审核状态") | |||