From c2614ad5c7d1e27fae68e52cd058af363464cdb4 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期六, 21 五月 2022 23:16:38 +0800
Subject: [PATCH] 优化代码

---
 java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java |   81 +++++++++++++++++++++++-----------------
 1 files changed, 47 insertions(+), 34 deletions(-)

diff --git a/java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java b/java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java
index 85c3f5d..5b33ee6 100755
--- a/java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java
+++ b/java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java
@@ -4,6 +4,7 @@
 import com.java110.core.log.LoggerFactory;
 import com.java110.dto.order.OrderDto;
 import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.util.StringUtil;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.*;
@@ -42,36 +43,7 @@
      */
     @Before("dataProcess()")
     public void deBefore(JoinPoint joinPoint) throws Throwable {
-        // 鎺ユ敹鍒拌姹傦紝璁板綍璇锋眰鍐呭
-        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-        HttpServletRequest request = attributes.getRequest();
-        Enumeration<String> headerNames = request.getHeaderNames();
-        OrderDto orderDto = new OrderDto();
-        while (headerNames.hasMoreElements()) {
-            String key = (String) headerNames.nextElement();
-            String value = request.getHeader(key);
-            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 (CommonConstant.TRANSACTION_ID.equals(key)|| CommonConstant.HTTP_TRANSACTION_ID.equals(key)) {
-                orderDto.setExtTransactionId(value);
-            }
-            if (CommonConstant.REQUEST_TIME.equals(key)|| CommonConstant.HTTP_REQ_TIME.equals(key)) {
-                orderDto.setRequestTime(value);
-            }
-            if (OrderDto.O_ID.equals(key)) {
-                orderDto.setoId(value);
-            }
-            if (CommonConstant.USER_ID.equals(key)|| CommonConstant.HTTP_USER_ID.equals(key)) {
-                orderDto.setUserId(value);
-            }
-        }
-        orderDto.setOrderTypeCd(OrderDto.ORDER_TYPE_DEAL);
-        //鍏ㄥ眬浜嬪姟ID鐢宠
-        Java110TransactionalFactory.getOrCreateOId(orderDto);
     }
 
     @AfterReturning(returning = "ret", pointcut = "dataProcess()")
@@ -99,6 +71,40 @@
     @Around("dataProcess()")
     public Object around(ProceedingJoinPoint pjp) throws Throwable {
         Object o = null;
+        // 鎺ユ敹鍒拌姹傦紝璁板綍璇锋眰鍐呭
+        String curOId = Java110TransactionalFactory.getOId();
+        if (StringUtil.isEmpty(curOId)) {
+            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+            HttpServletRequest request = attributes.getRequest();
+            Enumeration<String> headerNames = request.getHeaderNames();
+            OrderDto orderDto = new OrderDto();
+            while (headerNames.hasMoreElements()) {
+                String key = (String) headerNames.nextElement();
+                String value = request.getHeader(key);
+                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 (CommonConstant.TRANSACTION_ID.equals(key) || CommonConstant.HTTP_TRANSACTION_ID.equals(key)) {
+                    orderDto.setExtTransactionId(value);
+                }
+                if (CommonConstant.REQUEST_TIME.equals(key) || CommonConstant.HTTP_REQ_TIME.equals(key)) {
+                    orderDto.setRequestTime(value);
+                }
+                if (OrderDto.O_ID.equals(key)) {
+                    orderDto.setoId(value);
+                }
+                if (CommonConstant.USER_ID.equals(key) || CommonConstant.HTTP_USER_ID.equals(key)) {
+                    orderDto.setUserId(value);
+                }
+            }
+            orderDto.setOrderTypeCd(OrderDto.ORDER_TYPE_DEAL);
+            //鍏ㄥ眬浜嬪姟ID鐢宠
+            Java110TransactionalFactory.getOrCreateOId(orderDto);
+        }
+
         try {
             o = pjp.proceed();
             //瑙傚療鑰呬笉鍋氬鐞�
@@ -106,17 +112,24 @@
                 return o;
             }
             //瀹屾垚浜嬪姟
-            Java110TransactionalFactory.finishOId();
+            if (StringUtil.isEmpty(curOId)) {
+                Java110TransactionalFactory.finishOId();
+            }
             return o;
         } catch (Throwable e) {
             logger.error("鎵ц鏂规硶寮傚父", e);
             //鍥為��浜嬪姟
-            Java110TransactionalFactory.fallbackOId();
+            if (StringUtil.isEmpty(curOId)) {
+                Java110TransactionalFactory.fallbackOId();
+            }
             //return new BusinessDto(BusinessDto.CODE_ERROR, "鍐呴儴寮傚父" + e.getLocalizedMessage());
             throw e;
-        }finally {
-            //娓呯悊浜嬪姟淇℃伅
-            Java110TransactionalFactory.clearOId();
+        } finally {
+            //瀹屾垚浜嬪姟
+            if (StringUtil.isEmpty(curOId)) {
+                //娓呯悊浜嬪姟淇℃伅
+                Java110TransactionalFactory.clearOId();
+            }
         }
     }
 }

--
Gitblit v1.8.0