From 70862b9228ccb2156971a22085ac31b6c8b6d2cd Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 07 七月 2020 19:35:42 +0800
Subject: [PATCH] 优化代码
---
java110-core/src/main/java/com/java110/core/factory/Java110TransactionalFactory.java | 78 +++++++++++++++++++++++++++++++++++----
1 files changed, 70 insertions(+), 8 deletions(-)
diff --git a/java110-core/src/main/java/com/java110/core/factory/Java110TransactionalFactory.java b/java110-core/src/main/java/com/java110/core/factory/Java110TransactionalFactory.java
index d49dcc9..25fa152 100644
--- a/java110-core/src/main/java/com/java110/core/factory/Java110TransactionalFactory.java
+++ b/java110-core/src/main/java/com/java110/core/factory/Java110TransactionalFactory.java
@@ -8,11 +8,7 @@
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
+import org.springframework.http.*;
import org.springframework.web.client.HttpStatusCodeException;
import org.springframework.web.client.RestTemplate;
@@ -44,12 +40,25 @@
*/
private static final String FALLBACK_O_ID = URL_API + "/fallBackOId";
+ /**
+ * 鍥為��浜嬪姟ID
+ */
+ private static final String FINISH_O_ID = URL_API + "/finishOId";
+
//鍏ㄥ眬浜嬪姟ID
public static final String O_ID = "O-ID";
//褰撳墠鏈嶅姟ID
public static final String SERVICE_ID = "SERVICE-ID";
+
+ //鏈嶅姟瑙掕壊 鍒涘缓浜嬪姟鑰� 杩樻槸 瑙傚療鑰�
+ public static final String SERVICE_ROLE = "SERVICE-ROLE";
+
+ //鍒涘缓鑰�
+ public static final String ROLE_CREATE = "creator";
+
+ public static final String ROLE_OBSERVER = "observer";
private static ThreadLocal<Map<String, String>> threadLocal = new ThreadLocal<Map<String, String>>() {
@Override
@@ -78,9 +87,13 @@
//鍏ㄥ眬浜嬪姟寮�鍚��
if (StringUtils.isEmpty(orderDto.getoId())) {
createOId(orderDto);
+ put(SERVICE_ROLE, ROLE_CREATE);
+ } else {
+ put(SERVICE_ROLE, ROLE_OBSERVER);//瑙傚療鑰�
}
- String oId = get(O_ID);
- return oId;
+ //灏嗕簨鍔D 瀛樻斁璧锋潵
+ put(O_ID, orderDto.getoId());
+ return orderDto.getoId();
}
/**
@@ -90,6 +103,17 @@
*/
public static String getOId() {
String oId = get(O_ID);
+ return oId;
+ }
+
+
+ /**
+ * 鑾峰彇浜嬪姟ID
+ *
+ * @return
+ */
+ public static String getServiceRole() {
+ String oId = get(SERVICE_ROLE);
return oId;
}
@@ -130,7 +154,7 @@
*/
public static void fallbackOId() {
String oId = getOId();
- if (StringUtil.isEmpty(oId)) {
+ if (StringUtil.isEmpty(oId) || ROLE_OBSERVER.equals(getServiceRole())) {
//褰撳墠娌℃湁寮�鍚簨鍔℃棤闇�鍥為��
logger.debug("褰撳墠娌℃湁寮�鍚簨鍔℃棤闇�鍥為��");
return;
@@ -162,4 +186,42 @@
}
}
+
+ /**
+ * 澶勭悊澶辫触锛屽洖閫�浜嬪姟
+ */
+ public static void finishOId() {
+ String oId = getOId();
+ if (StringUtil.isEmpty(oId) || ROLE_OBSERVER.equals(getServiceRole())) {
+ //褰撳墠娌℃湁寮�鍚簨鍔℃棤闇�鍥為��
+ logger.debug("褰撳墠娌℃湁寮�鍚簨鍔℃棤闇�鍥為��");
+ return;
+ }
+ OrderDto orderDto = new OrderDto();
+ orderDto.setoId(oId);
+ RestTemplate restTemplate = ApplicationContextFactory.getBean("restTemplate", RestTemplate.class);
+ HttpHeaders header = new HttpHeaders();
+ HttpEntity<String> httpEntity = new HttpEntity<String>(JSONObject.toJSONString(orderDto), header);
+ ResponseEntity<String> responseEntity = null;
+ try {
+ responseEntity = restTemplate.exchange(FINISH_O_ID, HttpMethod.POST, httpEntity, String.class);
+ } catch (HttpStatusCodeException e) { //杩欓噷spring 妗嗘灦 鍦�4XX 鎴� 5XX 鏃舵姏鍑� HttpServerErrorException 寮傚父锛岄渶瑕侀噸鏂板皝瑁呬竴涓�
+ responseEntity = new ResponseEntity<String>(e.getResponseBodyAsString(), e.getStatusCode());
+ } catch (Exception e) {
+ responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+ } finally {
+ logger.debug("瀹屾垚浜嬪姟 璇锋眰鍦板潃涓�,{} 璇锋眰璁㈠崟鏈嶅姟淇℃伅锛寋},璁㈠崟鏈嶅姟杩斿洖淇℃伅锛寋}", FINISH_O_ID, httpEntity, responseEntity);
+ }
+
+ if (responseEntity.getStatusCode() == HttpStatus.NOT_FOUND) {
+ //褰撳墠娌℃湁寮�鍚簨鍔℃棤闇�鍥為��
+ logger.debug("褰撳墠娌℃湁寮�鍚簨鍔℃棤闇�澶勭悊");
+ return;
+ }
+
+ if (responseEntity.getStatusCode() == HttpStatus.BAD_REQUEST) {
+ throw new IllegalArgumentException("瀹屾垚浜嬪姟澶辫触" + responseEntity.getBody());
+ }
+
+ }
}
--
Gitblit v1.8.0