From 22e8a676ee42c0d78b3526bcd9a635abbe8dca03 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 28 六月 2022 11:28:21 +0800
Subject: [PATCH] 优化databus bug
---
java110-core/src/main/java/com/java110/core/aop/Java110TransactionalAop.java | 80 ++++++++++++++++++++++++----------------
1 files changed, 48 insertions(+), 32 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
old mode 100644
new mode 100755
index 9cca226..5b33ee6
--- 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,13 +1,14 @@
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 com.java110.utils.util.StringUtil;
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.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -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)) {
- orderDto.setAppId(value);
- }
- if (CommonConstant.TRANSACTION_ID.equals(key)) {
- orderDto.setExtTransactionId(value);
- }
- if (CommonConstant.REQUEST_TIME.equals(key)) {
- orderDto.setRequestTime(value);
- }
- if (OrderDto.O_ID.equals(key)) {
- orderDto.setoId(value);
- }
- if (CommonConstant.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,14 +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 {
+ //瀹屾垚浜嬪姟
+ if (StringUtil.isEmpty(curOId)) {
+ //娓呯悊浜嬪姟淇℃伅
+ Java110TransactionalFactory.clearOId();
+ }
}
}
}
--
Gitblit v1.8.0