controller
@RestController
@RequestMapping("app/111")
public class test {
/**
* 登录界面开关
* @return
*/
@PostMapping("/loginOnOff1")
@CheckForm(delaySeconds = 1,checkType = "sd")
private ApiResult loginOnOff1() {
System.out.println("测试");
return null;
}
}
注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CheckForm {
int delaySeconds() default 5;
String checkType() default "";
}
切面
@Aspect
@Component
@Slf4j
public class SubmitAspect {
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private CommonCacheUtil cacheUtil;
@Pointcut(value = "@annotation(com.fengou.common.annotation.CheckForm)")
private void pointcut() {
System.out.println("111111");
}
@Around("pointcut()&&@annotation(checkForm)")
public Object around(ProceedingJoinPoint proceedingJoinPoint,CheckForm checkForm ) throws Throwable {
Integer delaySeconds = checkForm.delaySeconds();
String checkType = checkForm.checkType();
UserElement ue;
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
String token = request.getHeader(Constants.REQUEST_TOKEN_KEY);
Boolean falg = redisTemplate.opsForValue().setIfAbsent(token+":"+checkType,1,delaySeconds, TimeUnit.SECONDS);
// boolean falg = true;
if (falg){
log.error("正确执行了");
return proceedingJoinPoint.proceed();
}else {
log.error("错误执行了");
return ApiResult.createByInfo(ResponseCode.SUBMIT_ERROR.getCode());
}
}
}