package cn.lili.modules.verification.aop;
|
|
import cn.lili.common.enums.ResultCode;
|
import cn.lili.common.exception.ServiceException;
|
import cn.lili.modules.verification.aop.annotation.Verification;
|
import cn.lili.modules.verification.entity.enums.VerificationEnums;
|
import cn.lili.modules.verification.service.VerificationService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.aspectj.lang.JoinPoint;
|
import org.aspectj.lang.annotation.Aspect;
|
import org.aspectj.lang.annotation.Before;
|
import org.aspectj.lang.reflect.MethodSignature;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Configuration;
|
|
import java.lang.reflect.Method;
|
|
/**
|
* 验证码验证拦截
|
*
|
* @author Chopper
|
*/
|
@Aspect
|
@Configuration
|
@Slf4j
|
public class VerificationInterceptor {
|
|
@Autowired
|
private VerificationService verificationService;
|
|
@Before("@annotation(cn.lili.modules.verification.aop.annotation.Verification)")
|
public void interceptor(JoinPoint pjp) {
|
MethodSignature signature = (MethodSignature) pjp.getSignature();
|
Method method = signature.getMethod();
|
Verification verificationAnnotation = method.getAnnotation(Verification.class);
|
VerificationEnums verificationEnums = verificationAnnotation.type();
|
String uuid = verificationAnnotation.uuid();
|
boolean result = verificationService.check(uuid, verificationEnums);
|
if (result) {
|
return;
|
}
|
throw new ServiceException(ResultCode.VERIFICATION_ERROR);
|
}
|
}
|