SecuritySignAop.java 1.25 KB
package com.diligrp.cashier.shared.aop;

import com.diligrp.cashier.shared.annotation.Sign;
import com.diligrp.cashier.shared.handler.sign.NoSign;
import com.diligrp.cashier.shared.handler.sign.SecuritySign;
import com.diligrp.cashier.shared.util.SpringContextUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * @author dengwei
 * @version 1.0.0
 * @ClassName SecuritySignAop.java
 * @Description SecuritySignAop
 * 验签流程 放到网关合理点 前期先放到AOP下
 */
@Aspect
@Component
@Order(1)
public class SecuritySignAop {
    /**
     * doBefore
     */
    @Before(value = "@annotation(sign)")
    public void doBefore(JoinPoint joinPoint, Sign sign) {
        Class<? extends SecuritySign> securitySign = sign.sign();
        if (securitySign == NoSign.class) {
            return;
        }

        Object[] args = joinPoint.getArgs();
        if (ArrayUtils.isEmpty(args)) {
            return;
        }
        SecuritySign signBean = SpringContextUtils.getBean(securitySign);
        signBean.sign(null, null, args[0]);
    }
}