Sfoglia il codice sorgente

feat: 优化客户查询体验

lfx 1 settimana fa
parent
commit
e66008fc46

+ 43 - 11
mjava-ts/src/main/java/com/malk/taisen/service/sap/impl/SapCustomerClientImpl.java

@@ -19,10 +19,10 @@ import java.util.Map;
 @Slf4j
 public class SapCustomerClientImpl implements SapCustomerClient {
 
-    @Value("${sap.customer-balance-url:}")
-    private String customerBalanceUrl;
-    @Value("${sap.customer-unlock-order-url:}")
-    private String customerUnlockOrderUrl;
+    @Value("${sap.customer-inquiry-url:}")
+    private String customerInquiryUrl;
+    @Value("${sap.customer-inquiry-token:}")
+    private String customerInquiryToken;
 
     /**
      * Query customer balance.
@@ -34,7 +34,7 @@ public class SapCustomerClientImpl implements SapCustomerClient {
      */
     @Override
     public Map queryBalance(String requestId, String customerNumber) {
-        return query(customerBalanceUrl, requestId, customerNumber);
+        return query("OTC002", requestId, customerNumber);
     }
 
     /**
@@ -47,20 +47,23 @@ public class SapCustomerClientImpl implements SapCustomerClient {
      */
     @Override
     public Map queryUnlockOrders(String requestId, String customerNumber) {
-        return query(customerUnlockOrderUrl, requestId, customerNumber);
+        return query("OTC004", requestId, customerNumber);
     }
 
-    private Map query(String url, String requestId, String customerNumber) {
-        if (StringUtils.isBlank(url)) {
+    private Map query(String interfaceNo, String requestId, String customerNumber) {
+        if (StringUtils.isBlank(customerInquiryUrl)) {
             return null;
         }
         Map<String, Object> param = new HashMap<>();
+        param.put("bearer_token", customerInquiryToken);
+        param.put("interface_no", interfaceNo);
         param.put("requestID", requestId);
         Map<String, Object> body = new HashMap<>();
         body.put("CUSTOMER_NUMBER", customerNumber);
-        log.info("SAP客户查询请求: endpoint={}, query={}, body={}", endpoint(url), param, body);
-        String response = UtilHttp.doPost_S(url, null, param, body);
-        log.info("SAP客户查询响应: endpoint={}, response={}", endpoint(url), response);
+        log.info("SAP客户查询请求: endpoint={}, query={}, body={}", endpoint(customerInquiryUrl), safeParam(param), body);
+        String response = UtilHttp.doPost_S(customerInquiryUrl, null, param, body);
+        log.info("SAP客户查询响应: endpoint={}, response={}", endpoint(customerInquiryUrl), response);
+        assertJsonResponse(response);
         Object parsed = JSON.parse(response);
         Map result;
         if (parsed instanceof JSONArray) {
@@ -73,9 +76,38 @@ public class SapCustomerClientImpl implements SapCustomerClient {
             throw new IllegalStateException("SAP客户查询接口返回为空");
         }
         result.remove("original");
+        assertSuccess(result);
         return result;
     }
 
+    private void assertJsonResponse(String response) {
+        if (StringUtils.isBlank(response)) {
+            throw new IllegalStateException("SAP查询服务未返回数据");
+        }
+        String content = response.trim().toLowerCase();
+        if (content.startsWith("<") || content.contains("502 bad gateway") || content.contains("503 service unavailable")) {
+            throw new IllegalStateException("SAP查询服务暂时不可用,请稍后重试");
+        }
+        if (!content.startsWith("{") && !content.startsWith("[")) {
+            throw new IllegalStateException("SAP查询服务返回格式异常");
+        }
+    }
+
+    private void assertSuccess(Map result) {
+        String status = result.get("STATUS") == null ? "" : String.valueOf(result.get("STATUS"));
+        if (!"S".equalsIgnoreCase(status) && StringUtils.isNotBlank(status)) {
+            String message = result.get("MESSAGE") == null ? "" : String.valueOf(result.get("MESSAGE"));
+            throw new IllegalStateException(StringUtils.isBlank(message)
+                    ? "SAP客户查询失败,状态=" + status : message);
+        }
+    }
+
+    private Map<String, Object> safeParam(Map<String, Object> param) {
+        Map<String, Object> safe = new HashMap<>(param);
+        safe.put("bearer_token", "***");
+        return safe;
+    }
+
     private String endpoint(String url) {
         int queryStart = url.indexOf('?');
         return queryStart >= 0 ? url.substring(0, queryStart) : url;

+ 2 - 2
mjava-ts/src/main/resources/application-prod.yml

@@ -56,8 +56,8 @@ aliwork:
   systemToken: "UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW"
 
 sap:
-  customer-balance-url: ${SAP_CUSTOMER_BALANCE_URL:}
-  customer-unlock-order-url: ${SAP_CUSTOMER_UNLOCK_ORDER_URL:}
+  customer-inquiry-url: ${SAP_CUSTOMER_INQUIRY_URL:}
+  customer-inquiry-token: ${SAP_CUSTOMER_INQUIRY_TOKEN:}
   QA_sapUrl_Poc: "https://etl-prod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonProd/Ultraprojects/team-fssc/tk_oa_to_sap_p2p?bearer_token=bBiGTA7PS0JJ6wKhQU8Vm0vLsIDNjLaN&interface_id="
   JT_sapUrl_Poc: "https://etl-prod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonProd/Ultraprojects/team-fssc/tk_oa_to_sap_r2r_generate_fi_document_with_copa?bearer_token=TVof6BjMdOvJreUmI9DzEepesFVwbfEc&interface_id=SAP020"
 #  JT_sapUrl_Poc: "https://etl-nonprod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonNonProd/Ultra_PoC/00-STG-team-fssc/tk_oa_to_sap_r2r_generate_fi_document_with_copa?bearer_token=TVof6BjMdOvJreUmI9DzEepesFVwbfEc&interface_id=SAP020"

+ 2 - 2
mjava-ts/src/main/resources/application-test.yml

@@ -55,8 +55,8 @@ aliwork:
   systemToken: "UM6660D1PGF2O34KAVVKG8XZ756E3O06MZX5LW"
 
 sap:
-  customer-balance-url: ${SAP_CUSTOMER_BALANCE_URL:}
-  customer-unlock-order-url: ${SAP_CUSTOMER_UNLOCK_ORDER_URL:}
+  customer-inquiry-url: ${SAP_CUSTOMER_INQUIRY_URL:}
+  customer-inquiry-token: ${SAP_CUSTOMER_INQUIRY_TOKEN:}
   QA_sapUrl_Poc: "https://etl-nonprod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonNonProd/Ultra_PoC/00-STG-team-fssc/tk_oa_to_sap_p2p?bearer_token=bBiGTA7PS0JJ6wKhQU8Vm0vLsIDNjLaN&interface_id="
   JT_sapUrl_Poc: "https://etl-nonprod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonNonProd/Ultra_PoC/10-QA-team-fssc/tk_oa_to_sap_r2r_generate_fi_document_with_copa?bearer_token=TVof6BjMdOvJreUmI9DzEepesFVwbfEc&interface_id=SAP020"
 #  JT_sapUrl_Poc: "https://etl-nonprod-tasks.tysondt.com:443/api/1/rest/feed/run/task/TysonNonProd/Ultra_PoC/00-STG-team-fssc/tk_oa_to_sap_r2r_generate_fi_document_with_copa?bearer_token=TVof6BjMdOvJreUmI9DzEepesFVwbfEc&interface_id=SAP020"

File diff suppressed because it is too large
+ 216 - 51
pages/build/customer-info-query.yida.jsx


File diff suppressed because it is too large
+ 1 - 1
pages/dist/customer-info-query.yida.js


File diff suppressed because it is too large
+ 67 - 26
pages/src/customer-info-query.oyd.jsx