PushJmAspect.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package com.fdkankan.fusion.aop;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.http.ContentType;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.fdkankan.fusion.common.ResultCode;
  7. import com.fdkankan.fusion.common.ResultData;
  8. import com.fdkankan.fusion.config.FusionConfig;
  9. import com.fdkankan.fusion.down.CaseDownService;
  10. import com.fdkankan.fusion.exception.BusinessException;
  11. import com.fdkankan.fusion.httpClient.client.OtherClient;
  12. import com.fdkankan.fusion.mq.vo.JmGaEventVo;
  13. import com.fdkankan.rabbitmq.util.RabbitMqProducer;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.aspectj.lang.JoinPoint;
  16. import org.aspectj.lang.ProceedingJoinPoint;
  17. import org.aspectj.lang.annotation.After;
  18. import org.aspectj.lang.annotation.Around;
  19. import org.aspectj.lang.annotation.Aspect;
  20. import org.aspectj.lang.annotation.Pointcut;
  21. import org.aspectj.lang.reflect.MethodSignature;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Component;
  24. import org.springframework.util.StringUtils;
  25. import org.springframework.web.bind.annotation.RequestBody;
  26. import org.springframework.web.context.request.RequestContextHolder;
  27. import org.springframework.web.context.request.ServletRequestAttributes;
  28. import org.springframework.web.multipart.MultipartFile;
  29. import javax.servlet.http.HttpServletRequest;
  30. import java.lang.annotation.Annotation;
  31. import java.lang.reflect.Method;
  32. import java.util.HashMap;
  33. import java.util.Map;
  34. @Slf4j
  35. @Aspect
  36. @Component
  37. public class PushJmAspect {
  38. @Autowired
  39. RabbitMqProducer rabbitMqProducer;
  40. @Autowired
  41. FusionConfig fusionConfig;
  42. @Autowired
  43. OtherClient otherClient;
  44. @Autowired
  45. CaseDownService caseDownService;
  46. @Pointcut("@annotation(com.fdkankan.fusion.aop.PushJm)")
  47. public void servicePush() {
  48. }
  49. @Around("servicePush()")
  50. public Object servicePush(ProceedingJoinPoint joinPoint) {
  51. Object result = null;
  52. try {
  53. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  54. //获取参数
  55. JSONObject params = this.getParams(joinPoint, request);
  56. log.info("请求参数:{}",params);
  57. //放行
  58. result = joinPoint.proceed();
  59. ResultData resultData = (ResultData) result;
  60. if(resultData.getCode() != 0){
  61. return result;
  62. }
  63. MethodSignature signature = (MethodSignature)joinPoint.getSignature();
  64. Method method = signature.getMethod();
  65. PushJm methodAnnotation = method.getAnnotation(PushJm.class);
  66. String method1 = methodAnnotation.method();
  67. String event_type = methodAnnotation.event_type();
  68. String event_content = methodAnnotation.event_content();
  69. JmGaEventVo vo = new JmGaEventVo();
  70. vo.setMethod(method1);
  71. vo.setEvent_type(event_type);
  72. if(org.apache.commons.lang3.StringUtils.isBlank(event_content)){
  73. event_content = event_type;
  74. }
  75. vo.setEvent_content(event_content);
  76. String ryid = "";
  77. String platform_id = "";
  78. String ajbh = params != null ? params.getString("caseId") : null;
  79. vo.setRyid(ryid);
  80. vo.setPlatform_id(platform_id);
  81. vo.setAjbh(ajbh);
  82. rabbitMqProducer.sendByWorkQueue("jmga-event-notice",BeanUtil.beanToMap(vo));
  83. if(params != null && params.getInteger("caseId")!=null){
  84. caseDownService.cleckDownUrl(params.getInteger("caseId"));
  85. }
  86. return result;
  87. }catch (BusinessException e){
  88. log.info("servicePush-BusinessException-error:{}",e);
  89. return ResultData.error(e.getCode(),e.getMessage());
  90. }catch (Exception e){
  91. log.info("servicePush-Exception-error:{}",e);
  92. }catch (Throwable throwable){
  93. log.info("servicePush-throwable-error:{}",throwable);
  94. }
  95. return ResultData.error(ResultCode.SYSTEM_ERROR);
  96. }
  97. private JSONObject getParams(JoinPoint pjp, HttpServletRequest request){
  98. try {
  99. MethodSignature signature = (MethodSignature) pjp.getSignature();
  100. Method method = signature.getMethod();
  101. Annotation[][] parameterAnnotations = method.getParameterAnnotations();
  102. Object[] args = pjp.getArgs();
  103. for (int i = 0; i < parameterAnnotations.length; i++) {
  104. for (Annotation annotation : parameterAnnotations[i]) {
  105. if (annotation instanceof RequestBody) {
  106. log.info("请求体内容: " + args[i]);
  107. Object arg = args[i];
  108. String jsonString = JSONObject.toJSONString(arg);
  109. return JSON.parseObject(jsonString);
  110. }
  111. }
  112. }
  113. }catch (Exception e){
  114. e.printStackTrace();
  115. }
  116. return null;
  117. }
  118. }