// package cn.besteam.common.aspect; // // import cn.besteam.common.aspect.annotation.LockApi; // import com.baomidou.lock.LockExecutor; // import com.baomidou.lock.LockInfo; // 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.beans.factory.annotation.Autowired; // import org.springframework.stereotype.Component; // // import java.lang.reflect.Method; // // /** // * 系统日志,切面处理类 // * // * @author chenqilong // * @since 2019/4/19 // */ // @Aspect // @Component // public class LockApiAspect { // // @Autowired // private LockExecutor lockExecutor; // // private LockKeyGenerator lockKeyGenerator = new LockKeyGenerator(); // // @Pointcut("@annotation(cn.besteam.common.aspect.annotation.LockApi)") // public void lockPointCut() { // // } // // @Around("lockPointCut()") // public Object around(ProceedingJoinPoint point) throws Throwable { // // LockInfo lockInfo = null; // try { // MethodSignature signature = (MethodSignature) point.getSignature(); // Method method = signature.getMethod(); // LockApi lockApi = method.getAnnotation(LockApi.class); // String keyName = lockKeyGenerator.getKeyName(point, lockApi); // lockInfo = lockExecutor.tryLock(keyName, lockApi.expire(), lockApi.tryTimeout()); // if (null != lockInfo) { // return point.proceed(); // } // return null; // } finally { // if (null != lockInfo) { // lockExecutor.releaseLock(lockInfo); // } // } // } // // }