From 53d356a7ec3eb11d12ebad3446e7c8f9b1ff281d Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Mon, 25 Feb 2019 16:14:24 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E7=AC=AC=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0][=E4=BF=AE=E6=94=B9]:code=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=92=8C=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=A0=B8=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxWeappInfoController.java | 287 +++++++++++++----- 1 file changed, 203 insertions(+), 84 deletions(-) diff --git a/mallinkWechatOpen/src/main/java/com/iformall/controller/WxWeappInfoController.java b/mallinkWechatOpen/src/main/java/com/iformall/controller/WxWeappInfoController.java index 2f291a41c..469dc6921 100644 --- a/mallinkWechatOpen/src/main/java/com/iformall/controller/WxWeappInfoController.java +++ b/mallinkWechatOpen/src/main/java/com/iformall/controller/WxWeappInfoController.java @@ -307,7 +307,7 @@ public class WxWeappInfoController extends BaseController { @ApiOperation(value = "批量,授权的小程序上传code并提交审核", notes = "{\"apps\":\"appid,appid\",\"templateId\":\"String\",\"userVersion\":\"String\",\"userDesc\":\"String\"}") @PostMapping("batchCodeCommitAndAudit") - public ResultData batchExtSet(@RequestBody Map params) { + public ResultData batchCodeCommitAndAudit(@RequestBody Map params) { logger.debug("[" + getIpAddr() + "] WxWeappInfoController::batchExtSet"); String appsStr = params.get("apps"); String templateIdStr = params.get("templateId"); @@ -352,8 +352,6 @@ public class WxWeappInfoController extends BaseController { } private void codeOperation(String appId, String userVersion, String userDesc, Long templateId) { - Gson gson = new GsonBuilder().create(); - WxAppinfo appinfo = appinfoService.getByAppId(appId); // get ext json @@ -367,95 +365,216 @@ public class WxWeappInfoController extends BaseController { codeCommitStatus = true; } if(!codeCommitStatus) { - // code提交 - try { - WxMaOpenCommitExtInfo extInfo = gson.fromJson(extSet.getExtJson(), new TypeToken() {}.getType()); - logger.info(extInfo.toString()); - WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(extInfo.getExtAppid()); - WxOpenResult openRet = openMaService.codeCommit(templateId, userVersion, userDesc, extInfo); - logger.info(openRet.toString()); - if (openRet.isSuccess()) { - codeCommitStatus = true; - } - if (codeStatus == null) { - codeStatus = new WxWeappCodeStatus(); - codeStatus.setAppId(appId); - if (appinfo != null) { - 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.saveOrUpdate(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.updateCodeCommitStatus(codeStatus); - } - } catch (WxErrorException e) { - logger.error(e.getMessage()); - if (codeStatus == null) { - codeStatus = new WxWeappCodeStatus(); - codeStatus.setAppId(appId); - if (appinfo != null) { - codeStatus.setType(appinfo.getType()); - } - codeStatus.setUserVersion(userVersion); - codeStatus.setVersionDesc(userDesc); - codeStatus.setCodeStatus(EnumWeappCodeCommitStatus.FAIL.getCode()); - codeStatus.setCodeErrCode(e.getMessage()); - codeStatus.setCodeTime(new Date()); - weappCodeStatusService.saveOrUpdate(codeStatus); - } else { - codeStatus.setUserVersion(userVersion); - codeStatus.setVersionDesc(userDesc); - codeStatus.setCodeStatus(EnumWeappCodeCommitStatus.FAIL.getCode()); - codeStatus.setCodeErrCode(e.getMessage()); - codeStatus.setCodeTime(new Date()); - weappCodeStatusService.updateCodeCommitStatus(codeStatus); - } - } + codeCommitStatus = doCodeCommit(userVersion, userDesc, templateId, appinfo, extSet, codeStatus); } // 提交审核 if(codeCommitStatus) { - try { - WxOpenMaSubmitAuditMessage subMessage = gson.fromJson(extSet.getReleaseJson(), new TypeToken() {}.getType()); - logger.info(subMessage.toString()); - WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); - WxOpenMaSubmitAuditResult openRet = openMaService.submitAudit(subMessage); - logger.info(openRet.toString()); - if(openRet.isSuccess()) { - codeStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode()); - weappCodeStatusService.updateAuditStatus(codeStatus); - } else { - codeStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode()); - codeStatus.setAuditErrCode(gson.toJson(openRet)); - weappCodeStatusService.updateAuditStatus(codeStatus); - } - } catch (WxErrorException e) { - logger.error(e.getMessage()); - codeStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode()); - codeStatus.setAuditErrCode(gson.toJson(e.getMessage())); - weappCodeStatusService.updateAuditStatus(codeStatus); - } + doCodeAudit(appId, extSet, codeStatus); + } + + } + } + + @ApiOperation(value = "批量授权的小程序上传code", notes = "{\"apps\":\"appid,appid\",\"templateId\":\"String\",\"userVersion\":\"String\",\"userDesc\":\"String\"}") + @PostMapping("batchCodeCommit") + public ResultData batchCodeCommit(@RequestBody Map params) { + logger.debug("[" + getIpAddr() + "] WxWeappInfoController::batchExtSet"); + String appsStr = params.get("apps"); + String templateIdStr = params.get("templateId"); + String userVersion = params.get("userVersion"); + String userDesc = params.get("userDesc"); + + Long templateId = null; + try { + templateId = Long.parseLong(templateIdStr); + } catch (Exception e) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + } + String [] apps = appsStr.split(","); + // 逐一检查app的设置 + for(String appId: apps) { + WxWeappExtSet extSetQ = new WxWeappExtSet(); + extSetQ.setAppId(appId); + WxWeappExtSet extSet = weappExtSetService.getByObj(extSetQ); + if(extSet == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + if(StringUtils.isBlank(extSet.getExtJson())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + if(StringUtils.isBlank(extSet.getReleaseJson())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + } + // 逐一设置app配置 + for(String appId: apps) { + // 检查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); + } + codeCommit(appId, userVersion, userDesc, templateId); + } + return new ResultData(); + } + + private void codeCommit(String appId, String userVersion, String userDesc, Long templateId) { + WxAppinfo appinfo = appinfoService.getByAppId(appId); + + // get ext json + WxWeappExtSet extSetQ = new WxWeappExtSet(); + extSetQ.setAppId(appId); + WxWeappExtSet extSet = weappExtSetService.getByObj(extSetQ); + WxWeappCodeStatus codeStatus = weappCodeStatusService.getByAppId(appId); + if(extSet != null) { + boolean codeCommitStatus = false; + if(codeStatus != null && codeStatus.getCodeStatus().equals(0) && codeStatus.getUserVersion().equals(userVersion)) { + codeCommitStatus = true; + } + if(!codeCommitStatus) { + codeCommitStatus = doCodeCommit(userVersion, userDesc, templateId, appinfo, extSet, codeStatus); + } + } + } + + @ApiOperation(value = "小程序批量提交审核", notes = "{\"apps\":\"appid,appid\",\"userVersion\":\"String\"}") + @PostMapping("batchCodeAudit") + public ResultData batchCodeAudit(@RequestBody Map params) { + logger.debug("[" + getIpAddr() + "] WxWeappInfoController::batchExtSet"); + String appsStr = params.get("apps"); + String userVersion = params.get("userVersion"); + String [] apps = appsStr.split(","); + // 逐一检查app的设置 + for(String appId: apps) { + WxWeappExtSet extSetQ = new WxWeappExtSet(); + extSetQ.setAppId(appId); + WxWeappExtSet extSet = weappExtSetService.getByObj(extSetQ); + if(extSet == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + if(StringUtils.isBlank(extSet.getExtJson())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + if(StringUtils.isBlank(extSet.getReleaseJson())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + } + // 逐一设置app配置 + for(String appId: apps) { + // 检查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); + } + codeAudit(appId, userVersion); + } + return new ResultData(); + } + + private void codeAudit(String appId, String userVersion) { + // get ext json + WxWeappExtSet extSetQ = new WxWeappExtSet(); + extSetQ.setAppId(appId); + WxWeappExtSet extSet = weappExtSetService.getByObj(extSetQ); + WxWeappCodeStatus codeStatus = weappCodeStatusService.getByAppId(appId); + if(extSet != null) { + boolean codeCommitStatus = false; + if(codeStatus != null + && codeStatus.getCodeStatus().equals(EnumWeappCodeCommitStatus.SUCCESS.getCode()) + && codeStatus.getUserVersion().equals(userVersion)) { + codeCommitStatus = true; } + if(codeCommitStatus) { + doCodeAudit(appId, extSet, codeStatus); + } else { + logger.error("CODE提交失败"); + } + } + } + private boolean doCodeCommit(String userVersion, String userDesc, Long templateId, WxAppinfo appinfo, WxWeappExtSet extSet, WxWeappCodeStatus codeStatus) { + Gson gson = new GsonBuilder().create(); + // code提交 + boolean codeCommitStatus = false; + String codeErrCode = ""; + try { + WxMaOpenCommitExtInfo extInfo = gson.fromJson(extSet.getExtJson(), new TypeToken() {}.getType()); + logger.info(extInfo.toString()); + WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appinfo.getAppId()); + WxOpenResult openRet = openMaService.codeCommit(templateId, userVersion, userDesc, extInfo); + logger.info(openRet.toString()); + if (openRet.isSuccess()) { + codeCommitStatus = true; + } + codeErrCode = gson.toJson(openRet); + } catch (WxErrorException e) { + codeCommitStatus = false; + codeErrCode = e.getMessage(); + logger.error(codeErrCode); } + + if (codeStatus == null) { + codeStatus = new WxWeappCodeStatus(); + codeStatus.setAppId(appinfo.getAppId()); + if (appinfo != null) { + 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(codeErrCode); + codeStatus.setCodeTime(new Date()); + weappCodeStatusService.saveOrUpdate(codeStatus); + } else { + codeStatus.setUserVersion(userVersion); + codeStatus.setVersionDesc(userDesc); + if(codeCommitStatus) { + codeStatus.setCodeStatus(EnumWeappCodeCommitStatus.SUCCESS.getCode()); + } else { + codeStatus.setCodeStatus(EnumWeappCodeCommitStatus.FAIL.getCode()); + codeStatus.setCodeErrCode(codeErrCode); + } + codeStatus.setCodeTime(new Date()); + weappCodeStatusService.updateCodeCommitStatus(codeStatus); + } + return codeCommitStatus; } + private void doCodeAudit(String appId, WxWeappExtSet extSet, WxWeappCodeStatus codeStatus) { + Gson gson = new GsonBuilder().create(); + try { + WxOpenMaSubmitAuditMessage subMessage = gson.fromJson(extSet.getReleaseJson(), new TypeToken() {}.getType()); + logger.info(subMessage.toString()); + WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); + WxOpenMaSubmitAuditResult openRet = openMaService.submitAudit(subMessage); + logger.info(openRet.toString()); + if(openRet.isSuccess()) { + codeStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode()); + weappCodeStatusService.updateAuditStatus(codeStatus); + } else { + codeStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode()); + codeStatus.setAuditErrCode(gson.toJson(openRet)); + weappCodeStatusService.updateAuditStatus(codeStatus); + } + } catch (WxErrorException e) { + logger.error(e.getMessage()); + codeStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode()); + codeStatus.setAuditErrCode(gson.toJson(e.getMessage())); + weappCodeStatusService.updateAuditStatus(codeStatus); + } + } + + @ApiOperation(value = "批量审核查询", notes = "{\"version\":\"string\"}") @PostMapping("batchAuditQuery") public ResultData batchAuditQuery(@RequestBody Map params) {