| package com.xzx.gc.util;  | 
|   | 
|   | 
| import com.xzx.gc.common.HttpRequestLocal;  | 
| import com.xzx.gc.common.utils.RedisUtil;  | 
| import org.aspectj.lang.JoinPoint;  | 
| import org.aspectj.lang.ProceedingJoinPoint;  | 
| import org.aspectj.lang.annotation.*;  | 
| import org.aspectj.lang.reflect.MethodSignature;  | 
| import org.springframework.beans.factory.annotation.Autowired;  | 
| import org.springframework.stereotype.Component;  | 
|   | 
| import javax.servlet.http.HttpServletRequest;  | 
| import java.lang.reflect.Method;  | 
|   | 
| /**  | 
|  * 表单提交时间间隔  | 
|  */  | 
| @Aspect  | 
| @Component  | 
| public class PreventManyCommitAspect {  | 
|   | 
|     public static final String PREVENT_MANY_COMMIT="FROM_";  | 
|   | 
|     @Autowired  | 
|     HttpServletRequest request;  | 
|   | 
|     @Autowired  | 
|     RedisUtil redisService;  | 
|   | 
|     @Autowired  | 
|     HttpRequestLocal httpRequestLocal;  | 
|   | 
|   | 
|     @Around("@annotation(com.xzx.gc.util.PreventManyCommit)")  | 
|     public Object around(ProceedingJoinPoint point) throws Throwable{  | 
|         MethodSignature signature = (MethodSignature)point.getSignature();  | 
|         Method method = signature.getMethod();  | 
|   | 
|         PreventManyCommit preventManyCommit = method.getAnnotation(PreventManyCommit.class);  | 
|         long time = preventManyCommit.time() > 1 ? preventManyCommit.time() : 1;  | 
|   | 
|         /*if(!redisService.preventManyCommit(PREVENT_MANY_COMMIT+httpRequestLocal.getIpAddr(request)+""+request.getRequestURI(), request.getRequestURI(), time)){  | 
|             throw new PlatformException("速度太快了...");  | 
|         }*/  | 
|   | 
|         return point.proceed();  | 
|     }  | 
|   | 
|     @After("@annotation(com.xzx.gc.util.PreventManyCommit)")  | 
|     public void after(JoinPoint point) {  | 
|     }  | 
|   | 
|     @AfterReturning("@annotation(com.xzx.gc.util.PreventManyCommit)")  | 
|     public void afterReturning(JoinPoint joinPoint) {  | 
|     }  | 
|   | 
|     @AfterThrowing(pointcut = "@annotation(UserLock)",throwing = "ex")  | 
|     public void AfterThrowing(JoinPoint joinPoint,Throwable ex){  | 
|     }  | 
|   | 
|   | 
| }  | 
|   | 
|   |