diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java index 0910aacd4a..8dd819e4b7 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java @@ -66,7 +66,7 @@ public abstract class BaseRequestLogAspect { resultInfoLog(transactionSerial, getExecPeriod(startTime), result); } catch (RenException e) { result = handleRenException(e); - resultErrorLog(transactionSerial, getExecPeriod(startTime), result, e.getMsg(), ExceptionUtils.getErrorStackTrace(e)); + resultErrorLog(transactionSerial, getExecPeriod(startTime), result, e.getInternalMsg(), ExceptionUtils.getErrorStackTrace(e)); } catch (ValidateException e) { result = handleValidateException(e); resultErrorLog(transactionSerial, getExecPeriod(startTime), result, e.getMsg(), ExceptionUtils.getErrorStackTrace(e)); @@ -174,14 +174,20 @@ public abstract class BaseRequestLogAspect { */ private Result handleRenException(RenException e) { if (e.getCode() > 8000) { - // 原样返回 - Result result=new Result().error(e.getCode()); - result.setInternalMsg(e.getMsg()); + Result result; + if (StringUtils.isNotBlank(e.getMsg())) { + // 抛出异常的时候填写了自定义显示信息,把显示信息返回 + result = new Result().error(e.getCode(), e.getMsg()); + } else { + // 没有填写显示信息,则根据code找固定的显示信息 + result = new Result().error(e.getCode()); + } + result.setInternalMsg(e.getInternalMsg()); return result; } // 转化成服务器开小差... Result result=new Result().error(); - result.setInternalMsg(e.getMsg()); + result.setInternalMsg(e.getInternalMsg()); //result.setMsg(e.getMsg()); return result; } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenException.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenException.java index 36d9a85418..8d6285a26c 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenException.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenException.java @@ -21,26 +21,67 @@ import org.apache.commons.lang3.StringUtils; public class RenException extends RuntimeException { private static final long serialVersionUID = 1L; private int code; + /** + * 显示给客户的消息 + */ private String msg; + /** + * 内部消息,用于服务之间传递错误信息,排错用 + */ + private String internalMsg; public RenException(int code) { this(code, ""); } + public RenException(int code, String internalMsg) { + super(internalMsg); + this.code = code; + if (StringUtils.isBlank(internalMsg)) { + this.internalMsg = EpmetErrorCode.getMsg(code); + if (StringUtils.isBlank(this.internalMsg)) { + this.internalMsg = MessageUtils.getMessage(code, internalMsg); + } + } else { + this.internalMsg = internalMsg; + } + } + + public RenException(int code, String internalMsg, String msg) { + this(code, internalMsg); + this.msg = msg; + } + + public RenException(String internalMsg) { + super(internalMsg); +// this.code = ErrorCode.INTERNAL_SERVER_ERROR; + this.code = EpmetErrorCode.SERVER_ERROR.getCode(); + this.internalMsg = internalMsg; + } + + public RenException(String internalMsg, String msg) { + this(internalMsg); + this.msg = msg; + } + + + + + public RenException(int code, String... params) { this.code = code; - this.msg = EpmetErrorCode.getMsg(code); - if (StringUtils.isBlank(this.msg)) { - this.msg = MessageUtils.getMessage(code, params); + this.internalMsg = EpmetErrorCode.getMsg(code); + if (StringUtils.isBlank(this.internalMsg)) { + this.internalMsg = MessageUtils.getMessage(code, params); } } public RenException(int code, Throwable e) { super(e); this.code = code; - this.msg = EpmetErrorCode.getMsg(code); - if (StringUtils.isBlank(this.msg)) { - this.msg = MessageUtils.getMessage(code); + this.internalMsg = EpmetErrorCode.getMsg(code); + if (StringUtils.isBlank(this.internalMsg)) { + this.internalMsg = MessageUtils.getMessage(code); } } @@ -50,40 +91,18 @@ public class RenException extends RuntimeException { } - public RenException(int code, String msg) { - super(msg); - this.code = code; - if (StringUtils.isBlank(msg)) { - this.msg = EpmetErrorCode.getMsg(code); - if (StringUtils.isBlank(this.msg)) { - this.msg = MessageUtils.getMessage(code, msg); - } - } else { - this.msg = msg; - } - } - - - public RenException(String msg) { - super(msg); -// this.code = ErrorCode.INTERNAL_SERVER_ERROR; + public RenException(String internalMsg, Throwable e) { + super(internalMsg, e); this.code = EpmetErrorCode.SERVER_ERROR.getCode(); - this.msg = msg; + this.internalMsg = internalMsg; } - public RenException(String msg, Throwable e) { - super(msg, e); -// this.code = ErrorCode.INTERNAL_SERVER_ERROR; - this.code = EpmetErrorCode.SERVER_ERROR.getCode(); - this.msg = msg; + public String getInternalMsg() { + return internalMsg; } - public String getMsg() { - return msg; - } - - public void setMsg(String msg) { - this.msg = msg; + public void setInternalMsg(String internalMsg) { + this.internalMsg = internalMsg; } public int getCode() { @@ -94,4 +113,11 @@ public class RenException extends RuntimeException { this.code = code; } + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenExceptionHandler.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenExceptionHandler.java index 5debad3823..035ec89088 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenExceptionHandler.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenExceptionHandler.java @@ -24,7 +24,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DuplicateKeyException; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.servlet.http.HttpServletRequest; import java.util.Date; @@ -56,12 +55,12 @@ public class RenExceptionHandler { public Result handleRRException(RenException ex){ if (ex.getCode() > 8000) { Result result=new Result().error(ex.getCode()); - result.setData(ex.getMsg()); + result.setData(ex.getInternalMsg()); return result; } logger.error(ExceptionUtils.getErrorStackTrace(ex)); Result result=new Result().error(); - result.setData(ex.getMsg()); + result.setData(ex.getInternalMsg()); return result; // return new Result().error(); } diff --git a/epmet-gateway/src/main/java/com/epmet/auth/ExternalAuthProcessor.java b/epmet-gateway/src/main/java/com/epmet/auth/ExternalAuthProcessor.java index 18854a8776..8af2cdd5ef 100644 --- a/epmet-gateway/src/main/java/com/epmet/auth/ExternalAuthProcessor.java +++ b/epmet-gateway/src/main/java/com/epmet/auth/ExternalAuthProcessor.java @@ -3,7 +3,6 @@ package com.epmet.auth; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; -import com.epmet.commons.tools.utils.Result; import com.epmet.filter.CpProperty; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -15,7 +14,6 @@ import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.util.AntPathMatcher; import org.springframework.web.server.ServerWebExchange; -import reactor.core.publisher.Mono; /** * 外部应用认证 @@ -93,7 +91,7 @@ public class ExternalAuthProcessor extends AuthProcessor { } } catch (RenException e) { //return response(exchange, new Result<>().error(e.getCode(), e.getMsg())); - throw new RenException(e.getCode(),e.getMsg()); + throw new RenException(e.getCode(),e.getInternalMsg()); } catch (Exception e) { logger.error("外部应用请求认证发生未知错误:" + ExceptionUtils.getErrorStackTrace(e)); //return response(exchange, new Result<>().error("外部应用请求认证发生未知错误")); diff --git a/epmet-gateway/src/main/java/com/epmet/auth/InternalAuthProcessor.java b/epmet-gateway/src/main/java/com/epmet/auth/InternalAuthProcessor.java index 43895ce9af..98583c8f3c 100644 --- a/epmet-gateway/src/main/java/com/epmet/auth/InternalAuthProcessor.java +++ b/epmet-gateway/src/main/java/com/epmet/auth/InternalAuthProcessor.java @@ -54,7 +54,7 @@ public class InternalAuthProcessor extends AuthProcessor { baseTokenDto = getBaseTokenDto(token, jwtTokenUtils); }catch(RenException e){ //return response(exchange,new Result<>().error(e.getCode(),e.getMsg())); - throw new RenException(e.getCode(), e.getMsg()); + throw new RenException(e.getCode(), e.getInternalMsg()); } }else{ baseTokenDto = null; @@ -97,7 +97,7 @@ public class InternalAuthProcessor extends AuthProcessor { validateTokenDto(baseTokenDto, token); } catch (RenException e) { //return response(exchange, new Result<>().error(e.getCode(), e.getMsg())); - throw new RenException(e.getCode(), e.getMsg()); + throw new RenException(e.getCode(), e.getInternalMsg()); } } diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CustomerTemplateListFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CustomerTemplateListFormDTO.java index 9dbabbfdbe..2fb11064f0 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CustomerTemplateListFormDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CustomerTemplateListFormDTO.java @@ -22,6 +22,10 @@ public class CustomerTemplateListFormDTO implements Serializable { */ @NotBlank(message="公共模板Id不能为空", groups = {AddUserInternalGroup.class}) private String publicId; + /** + * 模板关键词Id + */ + private String keyIds; public interface AddUserInternalGroup {} } diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/GetTemplateListFormDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/GetTemplateListFormDTO.java index 09fb259376..8bde81adf2 100644 --- a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/GetTemplateListFormDTO.java +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/GetTemplateListFormDTO.java @@ -26,6 +26,10 @@ public class GetTemplateListFormDTO implements Serializable { * 模板类型(站内信提醒) */ private String templateType; + /** + * 模板关键词Id + */ + private String keyIds; public interface AddUserInternalGroup {} } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java index 6e229dc052..c89ed2aeba 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PersonalTemplateDao.java @@ -94,4 +94,15 @@ public interface PersonalTemplateDao extends BaseDao { * @author sun */ List selectCustomerTemplateList(CustomerTemplateListFormDTO formDTO); + + /** + * 根据tid和keyIds查询是否已存在该模板类型数据 + * @author zhaoqifeng + * @date 2020/11/2 10:31 + * @param appId + * @param tid + * @param keyIds + * @return java.util.List + */ + List selectListByKey(@Param("appId") String appId, @Param("tid") String tid, @Param("keyIds") String keyIds); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java index f3f0da9b49..1d69a7b16a 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PersonalTemplateService.java @@ -141,4 +141,15 @@ public interface PersonalTemplateService extends BaseService customerTemplateList(CustomerTemplateListFormDTO formDTO); + + /** + * 根据tid和keyIds查询是否已存在该模板类型数据 + * @author zhaoqifeng + * @date 2020/11/2 10:29 + * @param appId + * @param tid + * @param keyIds + * @return java.util.List + */ + List getListByKey(String appId, String tid, String keyIds); } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java index 154cca9082..6aac8fdc8f 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PersonalTemplateServiceImpl.java @@ -127,6 +127,7 @@ public class PersonalTemplateServiceImpl extends BaseServiceImpl templateList(GetTemplateListFormDTO formDTO) { + formDTO.setKeyIds("5,4,2"); //根据客户Id、appId、模板类型查询小程序订阅消息模板列表 return baseDao.selectTemplateList(formDTO); } @@ -138,7 +139,23 @@ public class PersonalTemplateServiceImpl extends BaseServiceImpl customerTemplateList(CustomerTemplateListFormDTO formDTO) { + formDTO.setKeyIds("5,4,2"); return baseDao.selectCustomerTemplateList(formDTO); } + /** + * 根据tid和keyIds查询是否已存在该模板类型数据 + * + * @param appId + * @param tid + * @param keyIds + * @return java.util.List + * @author zhaoqifeng + * @date 2020/11/2 10:29 + */ + @Override + public List getListByKey(String appId, String tid, String keyIds) { + return baseDao.selectListByKey(appId, tid, keyIds); + } + } \ No newline at end of file diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java index 1521aa508a..4596bcf589 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/SubscribeServiceImpl.java @@ -180,6 +180,11 @@ public class SubscribeServiceImpl implements SubscribeService { String keywords = String.join(",", formDTO.getNameList()); List keyIdList = formDTO.getKidList().stream().map(Object::toString).collect(Collectors.toList()); String keyIds = String.join(",", keyIdList); + //根据tid和keyIds查询是否已存在该模板类型数据 + List list = personalTemplateService.getListByKey(formDTO.getAppId(), formDTO.getTid(), keyIds); + if (null != list && list.size() > NumConstant.ZERO) { + throw new RenException(formDTO.getTitle() + "已存在所选关键词[" + keywords + "]的模板"); + } //将公共模板存入数据库 PersonalTemplateDTO personalTemplateDTO = new PersonalTemplateDTO(); personalTemplateDTO.setCustomerId(authInfo.getCustomerId()); diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml index 7eab9a2e63..97452fa3b9 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PersonalTemplateDao.xml @@ -86,7 +86,8 @@ AND customer_id = #{customerId} AND app_id = #{appId} AND title = #{templateType} - ORDER BY CREATED_TIME DESC + AND key_ids = '5,4,2' + ORDER BY created_time ASC + \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java index f2e814a0a4..7743205c28 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java @@ -31,7 +31,6 @@ import com.epmet.dto.result.*; import com.epmet.entity.IssueEntity; import com.epmet.entity.IssueProcessEntity; import com.epmet.entity.IssueProjectRelationEntity; -import com.epmet.entity.IssueVoteStatisticalEntity; import com.epmet.feign.*; import com.epmet.redis.GovIssueRedis; import com.epmet.redis.IssueVoteDetailRedis; @@ -446,7 +445,7 @@ public class IssueServiceImpl extends BaseServiceImpl imp try { issueVoteStatisticalService.syncVotingCacheToDbByParams(formDTO.getIssueId(),entity.getGridId(),null); }catch (RenException e){ - logger.error(e.getMsg()); + logger.error(e.getInternalMsg()); } } @@ -624,7 +623,7 @@ public class IssueServiceImpl extends BaseServiceImpl imp try{ issueVoteStatisticalService.syncVotingCacheToDbByParams(formDTO.getIssueId(),entity.getGridId(),null); }catch(RenException e){ - logger.error(e.getMsg()); + logger.error(e.getInternalMsg()); } }