|
@@ -0,0 +1,75 @@
|
|
|
+package com.caimei365.commodity.annotation;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.caimei365.commodity.feign.ToolsFeign;
|
|
|
+import com.caimei365.commodity.model.dto.MessageDto;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.aspectj.lang.ProceedingJoinPoint;
|
|
|
+import org.aspectj.lang.annotation.Around;
|
|
|
+import org.aspectj.lang.annotation.Aspect;
|
|
|
+import org.aspectj.lang.annotation.Pointcut;
|
|
|
+import org.aspectj.lang.reflect.MethodSignature;
|
|
|
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
|
|
+import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
|
|
|
+import org.springframework.data.redis.core.RedisCallback;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+import org.springframework.expression.EvaluationContext;
|
|
|
+import org.springframework.expression.Expression;
|
|
|
+import org.springframework.expression.ExpressionParser;
|
|
|
+import org.springframework.expression.spel.standard.SpelExpressionParser;
|
|
|
+import org.springframework.expression.spel.support.StandardEvaluationContext;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.web.context.request.RequestAttributes;
|
|
|
+import org.springframework.web.context.request.RequestContextHolder;
|
|
|
+import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
+import redis.clients.jedis.commands.JedisCommands;
|
|
|
+import redis.clients.jedis.params.SetParams;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.lang.reflect.Method;
|
|
|
+import java.util.Arrays;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Aspect
|
|
|
+@Component
|
|
|
+public class IpSaveAspect {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ToolsFeign toolsFeign;
|
|
|
+ /**
|
|
|
+ * 切入点,根据自定义IpSave实际路径进行调整
|
|
|
+ */
|
|
|
+ @Pointcut("@annotation(com.caimei365.commodity.annotation.IpSave)")
|
|
|
+ public void executeIdempotent() {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Around("executeIdempotent()")
|
|
|
+ public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
|
+ //获取方法对象
|
|
|
+ Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
|
|
|
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
|
|
|
+ ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
|
|
|
+ HttpServletRequest request = servletRequestAttributes.getRequest();
|
|
|
+ // ip
|
|
|
+ String remoteAddr = request.getRemoteAddr();
|
|
|
+ // 接口路径
|
|
|
+ String requestURI = request.getRequestURI();
|
|
|
+ // 接口真实发送参数
|
|
|
+ String queryString = request.getQueryString();
|
|
|
+ //获取自定义注解
|
|
|
+ IpSave ipSave = method.getAnnotation(IpSave.class);
|
|
|
+ // 访问名 注解的值
|
|
|
+ String s = ipSave.saveName();
|
|
|
+
|
|
|
+ //异步给mq存
|
|
|
+ toolsFeign.sendCommonMessage("IpSave","你好",null,null,1,null,null);
|
|
|
+
|
|
|
+ return joinPoint.proceed();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|