From 4e98eb7c761b874bbbc28b485f76d88c44ef08d4 Mon Sep 17 00:00:00 2001 From: zhangchenbiao Date: Fri, 16 Jun 2023 14:27:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=A4=84=E7=90=86=EF=BC=8C?= =?UTF-8?q?=20=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coolstore-partner-service.iml | 2 + coolstore-partner-service/pom.xml | 8 +++ .../com/cool/store/mq/RocketMqLogAspect.java | 66 +++++++++++++++++++ .../com/cool/store/service/AliyunService.java | 3 +- .../store/service/impl/AliyunServiceImpl.java | 10 +-- .../coolstore-partner-webb.iml | 2 + .../store/config/TokenValidateFilter.java | 5 ++ .../coolstore-partner-webc.iml | 2 + .../cool/store/config/SignValidateFilter.java | 12 +++- pom.xml | 10 +++ 10 files changed, 112 insertions(+), 8 deletions(-) create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/mq/RocketMqLogAspect.java diff --git a/coolstore-partner-service/coolstore-partner-service.iml b/coolstore-partner-service/coolstore-partner-service.iml index 8b2bb5d5c..a2ae95c30 100644 --- a/coolstore-partner-service/coolstore-partner-service.iml +++ b/coolstore-partner-service/coolstore-partner-service.iml @@ -168,5 +168,7 @@ + + \ No newline at end of file diff --git a/coolstore-partner-service/pom.xml b/coolstore-partner-service/pom.xml index 3b9d0f66a..eea141c69 100644 --- a/coolstore-partner-service/pom.xml +++ b/coolstore-partner-service/pom.xml @@ -72,6 +72,14 @@ com.aliyun ocr20191230 + + org.aspectj + aspectjrt + + + org.aspectj + aspectjweaver + \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/mq/RocketMqLogAspect.java b/coolstore-partner-service/src/main/java/com/cool/store/mq/RocketMqLogAspect.java new file mode 100644 index 000000000..1f1cc1c27 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/mq/RocketMqLogAspect.java @@ -0,0 +1,66 @@ +package com.cool.store.mq; + + +import com.aliyun.openservices.ons.api.Constants; +import com.aliyun.openservices.ons.api.Message; +import com.cool.store.constants.CommonConstants; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.slf4j.MDC; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.Objects; + +/** + * 切面处理类,操作日志异常日志记录处理 + * @author jiangjixiang + */ +@Aspect +@Component +@Slf4j +public class RocketMqLogAspect { + + + /** + * 设置操作异常切入点记录异常日志 扫描所有controller包下操作 + */ + @Pointcut(value = "execution(public * com.cool.store.mq.consumer.listener..*.consume(..))") + public void rocketMqMdc() { + } + + /** + * 正常返回通知,拦截用户操作日志,连接点正常执行完成后执行, 如果连接点抛出异常,则不会执行 + * + * @param joinPoint 切入点 + * @param keys 返回结果 + */ + @Before(value = "rocketMqMdc()") + public void mqBeforeLog(JoinPoint joinPoint) { + try { + Object[] args = joinPoint.getArgs(); + Message message = (Message)args[0]; + String traceId = message.getMsgID() + Constants.TOPIC_PARTITION_SEPARATOR + message.getReconsumeTimes(); + Map context = MDC.getCopyOfContextMap(); + if(Objects.isNull(context)){ + MDC.put(CommonConstants.REQUEST_ID, traceId); + } + } catch (IllegalArgumentException e) { + log.info("MDC mqBeforeLog", e); + } + } + + + @AfterReturning(value = "rocketMqMdc()") + public void doAfterReturning(JoinPoint joinPoint){ + try { + MDC.clear(); + } catch (Exception e) { + log.info("MDC doAfterReturning", e); + } + } +} \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/AliyunService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/AliyunService.java index f8a02ab6d..0a7bf8b6c 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/AliyunService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/AliyunService.java @@ -1,6 +1,7 @@ package com.cool.store.service; import com.cool.store.dto.partner.DescribePhoneNumberDTO; +import com.cool.store.exception.ApiException; import com.cool.store.vo.cuser.IdentityCardInfoVO; /** @@ -23,6 +24,6 @@ public interface AliyunService { * @param faceImageUrl * @return */ - IdentityCardInfoVO getIdentityCardInfo(String faceImageUrl); + IdentityCardInfoVO getIdentityCardInfo(String faceImageUrl) throws ApiException; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java index 00df38d16..0d171c9f1 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/AliyunServiceImpl.java @@ -6,11 +6,10 @@ import com.aliyun.dytnsapi20200217.models.DescribePhoneNumberOperatorAttributeRe import com.aliyun.dytnsapi20200217.models.DescribePhoneNumberOperatorAttributeResponse; import com.aliyun.ocr20191230.models.RecognizeIdentityCardResponse; import com.aliyun.ocr20191230.models.RecognizeIdentityCardResponseBody; -import com.aliyun.tea.TeaException; -import com.aliyun.tea.TeaModel; import com.aliyun.teaopenapi.models.Config; import com.cool.store.dto.partner.DescribePhoneNumberDTO; import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ApiException; import com.cool.store.exception.ServiceException; import com.cool.store.service.AliyunService; import com.cool.store.vo.cuser.IdentityCardInfoVO; @@ -62,7 +61,7 @@ public class AliyunServiceImpl implements AliyunService { } @Override - public IdentityCardInfoVO getIdentityCardInfo(String faceImageUrl) { + public IdentityCardInfoVO getIdentityCardInfo(String faceImageUrl) throws ApiException { //todo zcb ak sk替换 com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() .setAccessKeyId("LTAI5t9RaXvABZbHvoXjDFJ1") @@ -94,14 +93,17 @@ public class AliyunServiceImpl implements AliyunService { return result; } catch (com.aliyun.tea.TeaException e) { log.error("身份证解析报错TeaException:{}", e); + throw new ApiException(e.getMessage()); } catch (MalformedURLException e) { log.error("身份证解析报错MalformedURLException:{}", e); + throw new ApiException(e.getMessage()); } catch (IOException e) { log.error("身份证解析报错IOException:{}", e); + throw new ApiException(e.getMessage()); } catch (Exception e) { log.error("身份证解析报错Exception:{}", e); + throw new ApiException(e.getMessage()); } - return null; } public static String convertDate(String date, String format) { diff --git a/coolstore-partner-webb/coolstore-partner-webb.iml b/coolstore-partner-webb/coolstore-partner-webb.iml index af0ff3164..a2e227e0b 100644 --- a/coolstore-partner-webb/coolstore-partner-webb.iml +++ b/coolstore-partner-webb/coolstore-partner-webb.iml @@ -119,6 +119,8 @@ + + diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java b/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java index 25b570df4..aeb9c1d94 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/config/TokenValidateFilter.java @@ -1,14 +1,17 @@ package com.cool.store.config; import com.alibaba.fastjson.JSON; +import com.cool.store.constants.CommonConstants; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.response.ResponseResult; import com.cool.store.context.CurrentUserHolder; import com.cool.store.utils.RedisUtilPool; import com.cool.store.context.LoginUserInfo; +import com.cool.store.utils.UUIDUtils; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; @@ -67,6 +70,7 @@ public class TokenValidateFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID()); HttpServletResponse response = (HttpServletResponse) servletResponse; HttpServletRequest reqs = (HttpServletRequest) servletRequest; String uri = reqs.getRequestURI(); @@ -109,6 +113,7 @@ public class TokenValidateFilter implements Filter { filterChain.doFilter(servletRequest, servletResponse); } finally { CurrentUserHolder.removeUser(); + MDC.clear(); } } diff --git a/coolstore-partner-webc/coolstore-partner-webc.iml b/coolstore-partner-webc/coolstore-partner-webc.iml index 9cfa8ce03..f6dc12615 100644 --- a/coolstore-partner-webc/coolstore-partner-webc.iml +++ b/coolstore-partner-webc/coolstore-partner-webc.iml @@ -117,6 +117,8 @@ + + diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java b/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java index 1bb596309..f76d54ea9 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java @@ -2,6 +2,7 @@ package com.cool.store.config; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.cool.store.constants.CommonConstants; import com.cool.store.context.PartnerUserHolder; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.response.ResponseResult; @@ -9,9 +10,11 @@ import com.cool.store.service.WechatMiniAppService; import com.cool.store.utils.AesUtil; import com.cool.store.utils.Md5Utils; import com.cool.store.utils.Sha1Utils; +import com.cool.store.utils.UUIDUtils; import com.cool.store.vo.PartnerUserInfoVO; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; +import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; @@ -46,7 +49,9 @@ public class SignValidateFilter implements Filter { private static List patternList = Lists.newArrayList("/web/check/ok","/check/ok", - "/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs","/**/test/**","/partner/mini/program/oss/getUploadFileConfig","/partner/mini/program/v1/partnerManage/partner/getIdentityCardInfo", + "/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs","/**/test/**", + "/partner/mini/program/oss/getUploadFileConfig", + "/partner/mini/program/v1/partnerManage/partner/getIdentityCardInfo", "/**/swagger*/**", "/**/webjars/**"); @@ -73,6 +78,7 @@ public class SignValidateFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID()); HttpServletResponse response = (HttpServletResponse) servletResponse; HttpServletRequest request = (HttpServletRequest) servletRequest; String uri = request.getRequestURI(); @@ -101,8 +107,7 @@ public class SignValidateFilter implements Filter { // 前后端验签不等 if (!newSign.equals(sign)) { response.setStatus(HttpStatus.OK.value()); - response.getWriter().write(JSON.toJSONString( - ResponseResult.fail(ErrorCodeEnum.SIGN_FAIL))); + response.getWriter().write(JSON.toJSONString(ResponseResult.fail(ErrorCodeEnum.SIGN_FAIL))); return; } PartnerUserInfoVO partnerUserInfoVO = wechatMiniAppService.getUserInfo(phone, openid); @@ -116,6 +121,7 @@ public class SignValidateFilter implements Filter { filterChain.doFilter(servletRequest, servletResponse); } finally { PartnerUserHolder.removeUser(); + MDC.clear(); } } diff --git a/pom.xml b/pom.xml index 2522598c4..928a3d908 100644 --- a/pom.xml +++ b/pom.xml @@ -186,6 +186,16 @@ ocr20191230 1.0.26 + + org.aspectj + aspectjrt + 1.9.5 + + + org.aspectj + aspectjweaver + 1.9.5 +