From b58df982bda78124dd785f595a5519cb88b7d3a9 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期一, 06 七月 2020 00:09:02 +0800
Subject: [PATCH] 事务问题优化

---
 java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java |   33 +++++++++++++++++++++++++++++----
 1 files changed, 29 insertions(+), 4 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 d1623fb..50066f9 100644
--- a/java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java
+++ b/java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java
@@ -1,6 +1,7 @@
 package com.java110.core.aop;
 
 import com.java110.core.factory.Java110TransactionalFactory;
+import com.java110.dto.order.OrderDto;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.After;
@@ -15,8 +16,12 @@
 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;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
+import java.util.Enumeration;
 
 /**
  * @ClassName Java110TransactionalAop
@@ -45,11 +50,29 @@
     @Before("dataProcess()")
     public void deBefore(JoinPoint joinPoint) throws Throwable {
         // 鎺ユ敹鍒拌姹傦紝璁板綍璇锋眰鍐呭
-        logger.debug("鏂规硶璋冪敤鍓嶆墽琛宒eBefore锛堬級");
-
+        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);
+            if (OrderDto.APP_ID.equals(key.toUpperCase())) {
+                orderDto.setAppId(value);
+            }
+            if (OrderDto.TRANSACTION_ID.equals(key.toUpperCase())) {
+                orderDto.setExtTransactionId(value);
+            }
+            if (OrderDto.REQUEST_TIME.equals(key.toUpperCase())) {
+                orderDto.setRequestTime(value);
+            }
+            if (OrderDto.O_ID.equals(key.toUpperCase())) {
+                orderDto.setoId(value);
+            }
+        }
+        orderDto.setOrderTypeCd(OrderDto.ORDER_TYPE_DEAL);
         //鍏ㄥ眬浜嬪姟ID鐢宠
-        Java110TransactionalFactory.getOrCreateTId();
-
+        Java110TransactionalFactory.getOrCreateOId(orderDto);
     }
 
     @AfterReturning(returning = "ret", pointcut = "dataProcess()")
@@ -63,6 +86,8 @@
     public void throwException(JoinPoint jp) {
         logger.debug("鏂规硶璋冪敤寮傚父鎵цthrowException锛堬級");
 
+        //鍥為��浜嬪姟
+        Java110TransactionalFactory.fallbackOId();
     }
 
     //鍚庣疆鏈�缁堥�氱煡,final澧炲己锛屼笉绠℃槸鎶涘嚭寮傚父鎴栬�呮甯搁��鍑洪兘浼氭墽琛�

--
Gitblit v1.8.0