diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java index 2806aa1145..9f7f31bcac 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java @@ -20,6 +20,7 @@ public class CodeCommonFormDTO implements Serializable { * 代码ID */ private String codeId; + private String grayPercentage; private String path; private Integer page = 1; private Integer limit = 999; diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CodeVersionInfoResultDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CodeVersionInfoResultDTO.java index 03853d654b..b1b367c457 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CodeVersionInfoResultDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CodeVersionInfoResultDTO.java @@ -10,7 +10,6 @@ import java.io.Serializable; * @dscription * @date 2020/8/7 14:00 */ -@NoArgsConstructor @Data public class CodeVersionInfoResultDTO implements Serializable { @@ -28,7 +27,6 @@ public class CodeVersionInfoResultDTO implements Serializable { */ private ReleaseBean release; - @NoArgsConstructor @Data public static class CommitBean { private String codeId; @@ -50,7 +48,6 @@ public class CodeVersionInfoResultDTO implements Serializable { private String modelId; } - @NoArgsConstructor @Data public static class AuditBean { private String codeId; @@ -76,7 +73,6 @@ public class CodeVersionInfoResultDTO implements Serializable { private String status; } - @NoArgsConstructor @Data public static class ReleaseBean { private String codeId; @@ -107,6 +103,6 @@ public class CodeVersionInfoResultDTO implements Serializable { /** * */ - private int grayPercentage; + private Integer grayPercentage; } } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java index b7b7ca6ed6..b03a808edf 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java @@ -214,5 +214,17 @@ public class CodeController { return new Result().ok(pageData); } + @PostMapping("version") + public Result version(@RequestBody CustomerClientFormDTO formDTO) { + CodeVersionInfoResultDTO result = codeService.version(formDTO); + return new Result().ok(result); + } + + @PostMapping("speedupaudit") + public Result speedUpAudit(@RequestBody CodeCommonFormDTO formDTO) { + codeService.speedUpAudit(formDTO); + return new Result<>(); + } + } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CodeCustomerDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CodeCustomerDao.java index 0b1916a56a..7ff7c5114e 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CodeCustomerDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CodeCustomerDao.java @@ -73,6 +73,8 @@ public interface CodeCustomerDao extends BaseDao { */ void deleteCode(@Param("customerId") String customerId, @Param("clientType") String clientType); + void deleteCommitCode(@Param("customerId") String customerId, @Param("clientType") String clientType); + /** * 获取审核中代码列表 * @@ -92,7 +94,8 @@ public interface CodeCustomerDao extends BaseDao { * @author zhaoqifeng * @date 2020/7/31 15:54 */ - CodeCustomerDTO selectUploadCodeByCustomer(@Param("customerId") String customerId, @Param("clientType") String clientType); + CodeCustomerDTO selectUploadCodeByCustomer(@Param("codeId") String codeId, @Param("customerId") String customerId, + @Param("clientType") String clientType); /** diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeCustomerService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeCustomerService.java index fcbddcd665..f115eabba7 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeCustomerService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeCustomerService.java @@ -120,7 +120,7 @@ public interface CodeCustomerService extends BaseService { * @param clientType * @return com.epmet.dto.CodeCustomerDTO */ - CodeCustomerDTO getUploadCodeByCustomer(String customerId, String clientType); + CodeCustomerDTO getUploadCodeByCustomer(String codeId, String customerId, String clientType); /** * 删除旧代码记录 @@ -132,6 +132,16 @@ public interface CodeCustomerService extends BaseService { */ void deleteCode(String customerId, String clientType); + /** + * 删除旧上传记录 + * @author zhaoqifeng + * @date 2020/8/10 11:09 + * @param customerId + * @param clientType + * @return void + */ + void deleteCommitCode(String customerId, String clientType); + /** * 开发版 * @author zhaoqifeng @@ -161,4 +171,14 @@ public interface CodeCustomerService extends BaseService { * @return com.epmet.dto.CodeCustomerDTO */ CodeCustomerDTO getReleaseInfo(String customerId, String clientType); + + /** + * 版本回退 + * @author zhaoqifeng + * @date 2020/8/10 15:50 + * @param customerId + * @param clientType + * @return void + */ + void revertCodeRelease(String customerId, String clientType); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeService.java index a2fb76a0d7..ae2240010c 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CodeService.java @@ -163,4 +163,40 @@ public interface CodeService { */ PageData getCustomerList(UploadListFormDTO formDTO); + /** + * 加急审核 + * @author zhaoqifeng + * @date 2020/8/10 14:57 + * @param formDTO + * @return void + */ + void speedUpAudit(CodeCommonFormDTO formDTO); + + /** + * 分阶段发布 + * @author zhaoqifeng + * @date 2020/8/10 15:29 + * @param formDTO + * @return void + */ + void grayRelease(CodeCommonFormDTO formDTO); + + /** + * 取消分阶段发布 + * @author zhaoqifeng + * @date 2020/8/10 15:29 + * @param formDTO + * @return void + */ + void revertGrayRelease(CodeCommonFormDTO formDTO); + + /** + * 版本退回 + * @author zhaoqifeng + * @date 2020/8/10 15:31 + * @param formDTO + * @return void + */ + void revertCodeRelease(CodeCommonFormDTO formDTO); + } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeCustomerServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeCustomerServiceImpl.java index cc3b41531d..02de9c657a 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeCustomerServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeCustomerServiceImpl.java @@ -120,8 +120,8 @@ public class CodeCustomerServiceImpl extends BaseServiceImpl wxAuditResult = wxMaCodeService.getAuditStatus(authInfo.getAuthorizerAccessToken(), request); - if (wxAuditResult.success()) { - WxMaAuditStatusResult result = wxAuditResult.getData(); - if (result.getStatus() == NumConstant.ZERO) { - audit.setStatus(CodeConstant.AUDIT_SUCCESS); - auditResult.setResult(CodeConstant.AUDIT_SUCCESS); - saveOperation(formDTO.getCustomerId(), formDTO.getClientType(), audit.getId(), audit.getUserVersion(), CodeConstant.OPER_SUCCESS - , "审核成功"); - } else if (result.getStatus() == NumConstant.ONE) { - audit.setStatus(CodeConstant.AUDIT_FAILED); - auditResult.setResult(CodeConstant.AUDIT_FAILED); - auditResult.setReason(result.getReason()); - auditResult.setScreenShot(result.getScreenshot()); - saveOperation(formDTO.getCustomerId(), formDTO.getClientType(), audit.getId(), audit.getUserVersion(), CodeConstant.OPER_FAILED, - result.getReason()); - } else if (result.getStatus() == NumConstant.FOUR) { - audit.setStatus(CodeConstant.DELAY); - auditResult.setResult(CodeConstant.DELAY); - auditResult.setReason(result.getReason()); - saveOperation(formDTO.getCustomerId(), formDTO.getClientType(), audit.getId(), audit.getUserVersion(), CodeConstant.OPER_DELAY, - result.getReason()); + if(null != audit) { + CodeVersionInfoResultDTO.AuditBean auditBean = new CodeVersionInfoResultDTO.AuditBean(); + auditBean.setCodeId(audit.getId()); + auditBean.setVersion(audit.getUserVersion()); + auditBean.setCodeInfo(audit.getUserDesc()); + if (CodeConstant.AUDITING.equals(audit.getStatus())) { + //获取小程序调用令牌 + AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(formDTO.getCustomerId(), formDTO.getClientType()); + //获取审核结果信息 + CodeAuditResultDTO auditResult = codeAuditResultService.getAuditResultByCodeId(audit.getId()); + //调用微信API获取最新审核状态 + WxMaCodeAuditStatusReq request = new WxMaCodeAuditStatusReq(); + request.setAuditId(auditResult.getAuditId()); + WxResult wxAuditResult = wxMaCodeService.getAuditStatus(authInfo.getAuthorizerAccessToken(), request); + if (wxAuditResult.success()) { + WxMaAuditStatusResult result = wxAuditResult.getData(); + if (result.getStatus() == NumConstant.ZERO) { + audit.setStatus(CodeConstant.AUDIT_SUCCESS); + auditResult.setResult(CodeConstant.AUDIT_SUCCESS); + saveOperation(formDTO.getCustomerId(), formDTO.getClientType(), audit.getId(), audit.getUserVersion(), CodeConstant.OPER_SUCCESS + , "审核成功"); + } else if (result.getStatus() == NumConstant.ONE) { + audit.setStatus(CodeConstant.AUDIT_FAILED); + auditResult.setResult(CodeConstant.AUDIT_FAILED); + auditResult.setReason(result.getReason()); + auditResult.setScreenShot(result.getScreenshot()); + saveOperation(formDTO.getCustomerId(), formDTO.getClientType(), audit.getId(), audit.getUserVersion(), CodeConstant.OPER_FAILED, + result.getReason()); + } else if (result.getStatus() == NumConstant.FOUR) { + audit.setStatus(CodeConstant.DELAY); + auditResult.setResult(CodeConstant.DELAY); + auditResult.setReason(result.getReason()); + saveOperation(formDTO.getCustomerId(), formDTO.getClientType(), audit.getId(), audit.getUserVersion(), CodeConstant.OPER_DELAY, + result.getReason()); + } + codeCustomerService.update(audit); + codeAuditResultService.update(auditResult); } - codeCustomerService.update(audit); - codeAuditResultService.update(auditResult); } + auditBean.setStatus(audit.getStatus()); + auditBean.setCommitTime(DateUtils.format(audit.getCommitTime(), DateUtils.DATE_TIME_PATTERN)); + auditBean.setAuditTime(DateUtils.format(audit.getAuditTime(), DateUtils.DATE_TIME_PATTERN)); + resultDTO.setAudit(auditBean); } - resultDTO.getAudit().setStatus(audit.getStatus()); - resultDTO.getAudit().setCommitTime(DateUtils.format(audit.getCommitTime(), DateUtils.DATE_TIME_PATTERN)); - resultDTO.getAudit().setAuditTime(DateUtils.format(audit.getAuditTime(), DateUtils.DATE_TIME_PATTERN)); //线上版本 CodeCustomerDTO release = codeCustomerService.getReleaseInfo(formDTO.getCustomerId(), formDTO.getClientType()); - resultDTO.getRelease().setCodeId(release.getId()); - resultDTO.getRelease().setCodeInfo(release.getUserDesc()); - resultDTO.getRelease().setCommitTime(DateUtils.format(release.getCommitTime(), DateUtils.DATE_TIME_PATTERN)); - resultDTO.getRelease().setAuditTime(DateUtils.format(release.getAuditTime(), DateUtils.DATE_TIME_PATTERN)); - resultDTO.getRelease().setReleaseTime(DateUtils.format(release.getReleaseTime(), DateUtils.DATE_TIME_PATTERN)); - resultDTO.getRelease().setReleaseType(release.getReleaseType()); - resultDTO.getRelease().setGrayPercentage(release.getGaryPercentage()); - resultDTO.getRelease().setVersion(release.getUserVersion()); + if(null != release) { + CodeVersionInfoResultDTO.ReleaseBean releaseBean = new CodeVersionInfoResultDTO.ReleaseBean(); + releaseBean.setCodeId(release.getId()); + releaseBean.setCodeInfo(release.getUserDesc()); + releaseBean.setCommitTime(DateUtils.format(release.getCommitTime(), DateUtils.DATE_TIME_PATTERN)); + releaseBean.setAuditTime(DateUtils.format(release.getAuditTime(), DateUtils.DATE_TIME_PATTERN)); + releaseBean.setReleaseTime(DateUtils.format(release.getReleaseTime(), DateUtils.DATE_TIME_PATTERN)); + releaseBean.setReleaseType(release.getReleaseType()); + releaseBean.setGrayPercentage(release.getGaryPercentage()); + releaseBean.setVersion(release.getUserVersion()); + resultDTO.setRelease(releaseBean); + } + return resultDTO; } @@ -245,7 +257,16 @@ public class CodeServiceImpl implements CodeService { if (null == authInfo) { throw new RenException("未授权"); } - + //获取上传代码信息 + CodeCustomerDTO uploadCode = codeCustomerService.getUploadCodeByCustomer(formDTO.getCodeId(), codeCustomerDTO.getCustomerId(), + codeCustomerDTO.getClientType()); + if (null != uploadCode) { + if (CodeConstant.AUDITING.equals(uploadCode.getStatus())) { + throw new RenException("已经有正在审核的版本"); + } else { + codeCustomerService.deleteById(uploadCode.getId()); + } + } //调用微信API上提交审核 WxMaCodeSubmitAuditRequest request = new WxMaCodeSubmitAuditRequest(); request.setVersionDesc(formDTO.getVersionDesc()); @@ -292,6 +313,7 @@ public class CodeServiceImpl implements CodeService { } //更新代码表状态 codeCustomerDTO.setStatus(CodeConstant.AUDITING); + codeCustomerDTO.setAuditTime(new Date()); codeCustomerService.update(codeCustomerDTO); saveOperation(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType(), codeCustomerDTO.getId(), codeCustomerDTO.getUserVersion(), CodeConstant.OPER_SUBMIT, "审核中"); @@ -370,6 +392,9 @@ public class CodeServiceImpl implements CodeService { //更新代码表状态 codeCustomerDTO.setStatus(CodeConstant.RELEASE_SUCCESS); + codeCustomerDTO.setReleaseTime(new Date()); + codeCustomerDTO.setReleaseType("total"); + codeCustomerDTO.setGaryPercentage(NumConstant.ZERO); codeCustomerService.update(codeCustomerDTO); saveOperation(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType(), codeCustomerDTO.getId(), codeCustomerDTO.getUserVersion(), CodeConstant.OPER_RELEASE, "发布成功"); @@ -467,7 +492,6 @@ public class CodeServiceImpl implements CodeService { public PageData history(CodeCommonFormDTO formDTO) { PageHelper.startPage(formDTO.getPage(), formDTO.getLimit()); //获取上传代码信息 -// CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId()); List list = codeOperationHistoryService.getHistoryList(formDTO.getCodeId()); PageInfo pageInfo = new PageInfo<>(list); return new PageData<>(list, pageInfo.getTotal()); @@ -553,6 +577,57 @@ public class CodeServiceImpl implements CodeService { return paCustomerService.getCustomerList(formDTO); } + @Override + public void speedUpAudit(CodeCommonFormDTO formDTO) { + //获取上传代码信息 + CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId()); + //获取小程序调用令牌 + AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType()); + if (null == authInfo) { + throw new RenException("未授权"); + } + //获取审核结果信息 + CodeAuditResultDTO codeAuditResultDTO = codeAuditResultService.getAuditResultByCodeId(formDTO.getCodeId()); + //调用微信API 加急审核 + WxMaSpeedUpAuditReq speedRequest = new WxMaSpeedUpAuditReq(); + speedRequest.setAuditId(codeAuditResultDTO.getAuditId()); + WxResult wxSpeedResult = wxMaCodeService.speedUpAudit(authInfo.getAuthorizerAccessToken(), speedRequest); + if (!wxSpeedResult.success()) { + saveOperation(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType(), codeCustomerDTO.getId(), + codeCustomerDTO.getUserVersion(), CodeConstant.OPER_SUBMIT, wxSpeedResult.getErrorMsg()); + throw new RenException(wxSpeedResult.getErrorCode(), wxSpeedResult.getErrorMsg()); + } + } + + @Override + public void grayRelease(CodeCommonFormDTO formDTO) { + + } + + @Override + public void revertGrayRelease(CodeCommonFormDTO formDTO) { + + } + + @Override + public void revertCodeRelease(CodeCommonFormDTO formDTO) { + //获取上传代码信息 + CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId()); + //获取小程序调用令牌 + AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType()); + if (null == authInfo) { + throw new RenException("未授权"); + } + WxResult wxSpeedResult = wxMaCodeService.revertCodeRelease(authInfo.getAuthorizerAccessToken()); + if (!wxSpeedResult.success()) { + saveOperation(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType(), codeCustomerDTO.getId(), + codeCustomerDTO.getUserVersion(), CodeConstant.OPER_SUBMIT, wxSpeedResult.getErrorMsg()); + throw new RenException(wxSpeedResult.getErrorCode(), wxSpeedResult.getErrorMsg()); + } + codeCustomerService.revertCodeRelease(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType()); + codeCustomerService.deleteById(codeCustomerDTO.getId()); + } + private void saveOperation(String customerId, String clientType, String codeId, String version, String operation, String describe) { CodeOperationHistoryDTO operationDTO = new CodeOperationHistoryDTO(); operationDTO.setCustomerId(customerId); diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java index 28212e5674..df405b12e9 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java @@ -191,4 +191,13 @@ public interface WxMaCodeService { * @date 2020/8/6 14:07 */ WxResult getAccountBasicInfo(String accessToken); + + /** + * 版本退回 + * @author zhaoqifeng + * @date 2020/8/10 15:41 + * @param accessToken + * @return com.epmet.wxapi.result.WxResult + */ + WxResult revertCodeRelease(String accessToken); } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java index e91b31cee6..4711ac11b7 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java @@ -293,7 +293,7 @@ public class WxMaCodeServiceImpl implements WxMaCodeService { public WxResult getWeAppSupportVersion(String accessToken) { WxResult result = new WxResult<>(); String url = WxMaCodeConstant.GET_SUPPORT_VERSION_URL + "?" + "access_token=" + accessToken; - Result statusResult = HttpClientManager.getInstance().sendPostByJSON(url, null); + Result statusResult = HttpClientManager.getInstance().sendPostByJSON(url, "{}"); if (!statusResult.success()) { result.setErrorCode(statusResult.getCode()); result.setErrorMsg(statusResult.getMsg()); @@ -367,6 +367,22 @@ public class WxMaCodeServiceImpl implements WxMaCodeService { return result; } + @Override + public WxResult revertCodeRelease(String accessToken) { + WxResult result = new WxResult(); + String url = WxMaCodeConstant.REVERT_CODE_RELEASE_URL + "?" + "access_token=" + accessToken; + Result setVersionResult = HttpClientManager.getInstance().sendPostByJSON(url, null); + if (!setVersionResult.success()) { + result.setErrorCode(setVersionResult.getCode()); + result.setErrorMsg(setVersionResult.getMsg()); + return result; + } + JSONObject jsonObject = JSONObject.parseObject(setVersionResult.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(); diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeCustomerDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeCustomerDao.xml index 4ef32234ef..366e15e889 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeCustomerDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeCustomerDao.xml @@ -21,6 +21,15 @@ + + UPDATE code_customer + SET + DEL_FLAG = '1' + WHERE CUSTOMER_ID = #{customerId} + AND CLIENT_TYPE = #{clientType} + AND STATUS = 'unaudited' + AND DEL_FLAG = '0' + @@ -116,8 +128,9 @@ FROM code_customer WHERE CUSTOMER_ID = #{customerId} AND CLIENT_TYPE = #{clientType} - AND STATUS = 'unaudited' AND DEL_FLAG = '0' + ORDER BY COMMIT_TIME DESC + LIMIT 1