wuxw
2022-01-15 e3aed650aa4e232f4583a00fc3de088276a2188b
java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java
old mode 100644 new mode 100755
@@ -1,14 +1,13 @@
package com.java110.core.aop;
import com.java110.core.factory.Java110TransactionalFactory;
import com.java110.core.log.LoggerFactory;
import com.java110.dto.order.OrderDto;
import com.java110.utils.constant.CommonConstant;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -51,19 +50,22 @@
        while (headerNames.hasMoreElements()) {
            String key = (String) headerNames.nextElement();
            String value = request.getHeader(key);
            if (OrderDto.APP_ID.equals(key.toUpperCase())) {
            logger.debug("请求头信息 key= " + key+",value = "+value);
            key = key.toLowerCase();
            if (CommonConstant.APP_ID.equals(key) || CommonConstant.HTTP_APP_ID.equals(key)) {
                orderDto.setAppId(value);
            }
            if (OrderDto.TRANSACTION_ID.equals(key.toUpperCase())) {
            if (CommonConstant.TRANSACTION_ID.equals(key)|| CommonConstant.HTTP_TRANSACTION_ID.equals(key)) {
                orderDto.setExtTransactionId(value);
            }
            if (OrderDto.REQUEST_TIME.equals(key.toUpperCase())) {
            if (CommonConstant.REQUEST_TIME.equals(key)|| CommonConstant.HTTP_REQ_TIME.equals(key)) {
                orderDto.setRequestTime(value);
            }
            if (OrderDto.O_ID.equals(key.toUpperCase())) {
            if (OrderDto.O_ID.equals(key)) {
                orderDto.setoId(value);
            }
            if (OrderDto.USER_ID.equals(key.toUpperCase())) {
            if (CommonConstant.USER_ID.equals(key)|| CommonConstant.HTTP_USER_ID.equals(key)) {
                orderDto.setUserId(value);
            }
        }
@@ -95,9 +97,10 @@
    //环绕通知,环绕增强,相当于MethodInterceptor
    @Around("dataProcess()")
    public Object around(ProceedingJoinPoint pjp) {
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        Object o = null;
        try {
            Object o = pjp.proceed();
            o = pjp.proceed();
            //观察者不做处理
            if (Java110TransactionalFactory.ROLE_OBSERVER.equals(Java110TransactionalFactory.getServiceRole())) {
                return o;
@@ -109,7 +112,11 @@
            logger.error("执行方法异常", e);
            //回退事务
            Java110TransactionalFactory.fallbackOId();
            return new ResponseEntity("内部异常" + e.getLocalizedMessage(), HttpStatus.BAD_REQUEST);
            //return new BusinessDto(BusinessDto.CODE_ERROR, "内部异常" + e.getLocalizedMessage());
            throw e;
        }finally {
            //清理事务信息
            Java110TransactionalFactory.clearOId();
        }
    }
}