浏览代码

feat: 完善客户信息查询

lfx 1 周之前
父节点
当前提交
919f17a74a

+ 16 - 4
mjava-ts/src/main/java/com/malk/taisen/controller/CustomerInfoController.java

@@ -1,6 +1,7 @@
 package com.malk.taisen.controller;
 
 import com.malk.taisen.service.sap.SapCustomerService;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -15,6 +16,7 @@ import java.util.Map;
  * Customer information query API for the Yida customer query page.
  */
 @RestController
+@Slf4j
 @RequestMapping("/customer-info")
 public class CustomerInfoController {
 
@@ -24,23 +26,33 @@ public class CustomerInfoController {
     /**
      * Query customer balance.
      *
-     * @param body CUSTOMER_NUMBER and optional CUSTOMER_NAME
+     * @param body requestID, CUSTOMER_NUMBER and optional CUSTOMER_NAME
      * @return SAP balance response or mock response while SAP URL is unconfigured
      */
     @PostMapping("/balance")
     public Map queryBalance(@RequestBody Map body) {
-        return sapCustomerService.queryBalance(customerNumber(body), stringValue(body.get("CUSTOMER_NAME")));
+        log.info("客户余额查询请求: {}", body);
+        return sapCustomerService.queryBalance(requestId(body), customerNumber(body), stringValue(body.get("CUSTOMER_NAME")));
     }
 
     /**
      * Query payment-unlocked sales orders.
      *
-     * @param body CUSTOMER_NUMBER and optional CUSTOMER_NAME
+     * @param body requestID, CUSTOMER_NUMBER and optional CUSTOMER_NAME
      * @return SAP unlocked order response or mock response while SAP URL is unconfigured
      */
     @PostMapping("/unlock-orders")
     public Map queryUnlockOrders(@RequestBody Map body) {
-        return sapCustomerService.queryUnlockOrders(customerNumber(body), stringValue(body.get("CUSTOMER_NAME")));
+        log.info("收款解锁订单查询请求: {}", body);
+        return sapCustomerService.queryUnlockOrders(requestId(body), customerNumber(body), stringValue(body.get("CUSTOMER_NAME")));
+    }
+
+    private String requestId(Map body) {
+        String requestId = stringValue(body == null ? null : body.get("requestID"));
+        if (StringUtils.isBlank(requestId)) {
+            throw new IllegalArgumentException("requestID不能为空");
+        }
+        return requestId;
     }
 
     private String customerNumber(Map body) {

+ 4 - 2
mjava-ts/src/main/java/com/malk/taisen/service/sap/SapCustomerClient.java

@@ -10,18 +10,20 @@ public interface SapCustomerClient {
     /**
      * Query customer balance by customer number.
      *
+     * @param requestId unique request identifier
      * @param customerNumber SAP customer number
      * @return raw SAP response
      * @apiNote SAP interface URL pending confirmation
      */
-    Map queryBalance(String customerNumber);
+    Map queryBalance(String requestId, String customerNumber);
 
     /**
      * Query customer payment-unlocked sales orders by customer number.
      *
+     * @param requestId unique request identifier
      * @param customerNumber SAP customer number
      * @return raw SAP response
      * @apiNote SAP interface URL pending confirmation
      */
-    Map queryUnlockOrders(String customerNumber);
+    Map queryUnlockOrders(String requestId, String customerNumber);
 }

+ 4 - 2
mjava-ts/src/main/java/com/malk/taisen/service/sap/SapCustomerService.java

@@ -10,18 +10,20 @@ public interface SapCustomerService {
     /**
      * Query balance, or return mock data until the SAP URL is configured.
      *
+     * @param requestId unique request identifier
      * @param customerNumber SAP customer number
      * @param customerName selected customer name
      * @return customer balance response
      */
-    Map queryBalance(String customerNumber, String customerName);
+    Map queryBalance(String requestId, String customerNumber, String customerName);
 
     /**
      * Query payment-unlocked orders, or return mock data until the SAP URL is configured.
      *
+     * @param requestId unique request identifier
      * @param customerNumber SAP customer number
      * @param customerName selected customer name
      * @return unlocked sales order response
      */
-    Map queryUnlockOrders(String customerNumber, String customerName);
+    Map queryUnlockOrders(String requestId, String customerNumber, String customerName);
 }

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

@@ -1,8 +1,10 @@
 package com.malk.taisen.service.sap.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.malk.taisen.service.sap.SapCustomerClient;
 import com.malk.utils.UtilHttp;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -14,6 +16,7 @@ import java.util.Map;
  * SAP customer information atomic HTTP client.
  */
 @Component
+@Slf4j
 public class SapCustomerClientImpl implements SapCustomerClient {
 
     @Value("${sap.customer-balance-url:}")
@@ -24,38 +27,57 @@ public class SapCustomerClientImpl implements SapCustomerClient {
     /**
      * Query customer balance.
      *
+     * @param requestId unique request identifier
      * @param customerNumber SAP customer number
      * @return raw SAP response
      * @apiNote SAP interface URL pending confirmation
      */
     @Override
-    public Map queryBalance(String customerNumber) {
-        return query(customerBalanceUrl, customerNumber);
+    public Map queryBalance(String requestId, String customerNumber) {
+        return query(customerBalanceUrl, requestId, customerNumber);
     }
 
     /**
      * Query customer payment-unlocked sales orders.
      *
+     * @param requestId unique request identifier
      * @param customerNumber SAP customer number
      * @return raw SAP response
      * @apiNote SAP interface URL pending confirmation
      */
     @Override
-    public Map queryUnlockOrders(String customerNumber) {
-        return query(customerUnlockOrderUrl, customerNumber);
+    public Map queryUnlockOrders(String requestId, String customerNumber) {
+        return query(customerUnlockOrderUrl, requestId, customerNumber);
     }
 
-    private Map query(String url, String customerNumber) {
+    private Map query(String url, String requestId, String customerNumber) {
         if (StringUtils.isBlank(url)) {
             return null;
         }
+        Map<String, Object> param = new HashMap<>();
+        param.put("requestID", requestId);
         Map<String, Object> body = new HashMap<>();
         body.put("CUSTOMER_NUMBER", customerNumber);
-        String response = UtilHttp.doPost_S(url, null, null, body);
-        Map result = JSON.parseObject(response, Map.class);
+        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);
+        Object parsed = JSON.parse(response);
+        Map result;
+        if (parsed instanceof JSONArray) {
+            JSONArray items = (JSONArray) parsed;
+            result = items.isEmpty() ? null : items.getObject(0, Map.class);
+        } else {
+            result = JSON.parseObject(response, Map.class);
+        }
         if (result == null) {
             throw new IllegalStateException("SAP客户查询接口返回为空");
         }
+        result.remove("original");
         return result;
     }
+
+    private String endpoint(String url) {
+        int queryStart = url.indexOf('?');
+        return queryStart >= 0 ? url.substring(0, queryStart) : url;
+    }
 }

+ 6 - 4
mjava-ts/src/main/java/com/malk/taisen/service/sap/impl/SapCustomerServiceImpl.java

@@ -23,26 +23,28 @@ public class SapCustomerServiceImpl implements SapCustomerService {
     /**
      * Query customer balance.
      *
+     * @param requestId unique request identifier
      * @param customerNumber SAP customer number
      * @param customerName selected customer name
      * @return customer balance response
      */
     @Override
-    public Map queryBalance(String customerNumber, String customerName) {
-        Map result = sapCustomerClient.queryBalance(customerNumber);
+    public Map queryBalance(String requestId, String customerNumber, String customerName) {
+        Map result = sapCustomerClient.queryBalance(requestId, customerNumber);
         return result == null ? mockBalance(customerNumber, customerName) : result;
     }
 
     /**
      * Query customer payment-unlocked orders.
      *
+     * @param requestId unique request identifier
      * @param customerNumber SAP customer number
      * @param customerName selected customer name
      * @return unlocked sales order response
      */
     @Override
-    public Map queryUnlockOrders(String customerNumber, String customerName) {
-        Map result = sapCustomerClient.queryUnlockOrders(customerNumber);
+    public Map queryUnlockOrders(String requestId, String customerNumber, String customerName) {
+        Map result = sapCustomerClient.queryUnlockOrders(requestId, customerNumber);
         return result == null ? mockUnlockOrders(customerNumber, customerName) : result;
     }
 

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

@@ -68,4 +68,4 @@ hangxing:
 
 ar:
   notify:
-    user-ids: ${AR_NOTIFY_USER_IDS:15362032421245878}
+    user-ids: ${AR_NOTIFY_USER_IDS:15362032421245878,2051455621692234,09212200432044720}

文件差异内容过多而无法显示
+ 745 - 0
pages/build/customer-info-query.yida.jsx


文件差异内容过多而无法显示
+ 1 - 0
pages/dist/customer-info-query.yida.js


文件差异内容过多而无法显示
+ 352 - 0
pages/src/customer-info-query.oyd.jsx