Pārlūkot izejas kodu

调整兔灵erp物流同步回调接口

cgp 1 nedēļu atpakaļ
vecāks
revīzija
15a214f3de

+ 17 - 13
fs-admin/src/main/java/com/fs/his/controller/JstOrderSyncController.java

@@ -94,7 +94,8 @@ public class JstOrderSyncController {
         request.setCorpId("LwMAMdlBIH7agxn2t9N4Zv40"); // 正式环境企业ID
 
 
-        ShopOrderDTO order = buildOrderItem();
+        //ShopOrderDTO order = buildOrderItem();
+        TlOrderItem order = buildOrderItem();
         request.setData(Collections.singletonList(order));
 
         TlOptions options = buildOptions();
@@ -104,10 +105,11 @@ public class JstOrderSyncController {
     }
 
     // 构建订单主体
-    private ShopOrderDTO buildOrderItem() {
-        ShopOrderDTO order = new ShopOrderDTO();
+    private TlOrderItem buildOrderItem() {
+        //ShopOrderDTO order = new ShopOrderDTO();
+        TlOrderItem order = new TlOrderItem();
         //order.setShopId(18150182);//测试店铺
-        order.setShopId(19415819L);
+        order.setShopId(19415819);
         order.setSoId("SO_20251110_001");
         order.setOrderDate("2025-11-10T10:30:00Z");
         order.setShopStatus("paid");
@@ -118,8 +120,7 @@ public class JstOrderSyncController {
         order.setReceiverDistrict("南山区");
         order.setReceiverAddress("科技园A座101");
         order.setReceiverName("张三");
-        //order.setReceiverMobile("13800138000");
-
+        order.setReceiverMobile("13800138000");
         order.setPayAmount(10000.0);
         order.setFreight(0.0);
 
@@ -127,9 +128,9 @@ public class JstOrderSyncController {
         order.setBuyerMessage("请发顺丰");
         order.setLabels("测试,同步");
 
-        //order.setCreatorName("李四");
+        order.setCreatorName("李四");
         order.setShopModified("2025-11-10T10:30:00Z");
-        //order.setSendDate("2025-11-10T10:30:00Z");
+        order.setSendDate("2025-11-10T10:30:00Z");
         order.setLId("cs12345678912");
         order.setIsCod(false);
 
@@ -141,8 +142,9 @@ public class JstOrderSyncController {
     }
 
     // 构建商品明细
-    private OrderItemDTO buildOrderItemDetail() {
-        OrderItemDTO item = new OrderItemDTO();
+    private TlOrderItemDetail buildOrderItemDetail() {
+        TlOrderItemDetail item = new TlOrderItemDetail();
+        //OrderItemDTO item = new OrderItemDTO();
         item.setSkuId("SKU123");
         item.setShopSkuId("SHOP_SKU_001");
         item.setAmount(BigDecimal.valueOf(10000));      // 实付金额(分)
@@ -156,14 +158,16 @@ public class JstOrderSyncController {
     }
 
     // 构建支付明细
-    private PaymentDTO buildPayDetail() {
-        PaymentDTO pay = new PaymentDTO();
+    private TlPayDetail buildPayDetail() {
+        //PaymentDTO pay = new PaymentDTO();
+        TlPayDetail pay = new TlPayDetail();
         pay.setOuterPayId("PAY_20251110_001"); // 必填
         pay.setPayDate("2025-11-10T10:30:00Z"); // 必填,RFC3339
         pay.setPayment("online");
         pay.setSellerAccount("alipay@company.com"); // 必填
         pay.setBuyerAccount("buyer@example.com");   // 必填
-        pay.setAmount(10000.0);
+        //pay.setAmount(10000.0);
+        pay.setAmount(10000);
         return pay;
     }
 

+ 2 - 1
fs-service/src/main/java/com/fs/erp/dto/tl/TlCreateOrderRequest.java

@@ -18,7 +18,8 @@ public class TlCreateOrderRequest {
 
     /** 订单数据列表 */
     @JsonProperty("data")
-    private List<ShopOrderDTO> data;
+    //private List<ShopOrderDTO> data;
+    private List<TlOrderItem> data;
 
     /** 请求选项 */
     @JsonProperty("options")

+ 2 - 10
fs-service/src/main/java/com/fs/erp/dto/tl/TlCreateOrderResponse.java

@@ -2,16 +2,8 @@ package com.fs.erp.dto.tl;
 
 import lombok.Data;
 
-import java.util.List;
-
 @Data
 public class TlCreateOrderResponse {
-    private ResponseData data;
-
-    @Data
-    public static class ResponseData {
-        private String status;          // "ok" or "error"
-        private String errmsg;         // 错误信息
-        private List<Integer> accept_index; // 接受的索引(通常 [0] 或 [1])
-    }
+    private String status;
+    private String errmsg;
 }

+ 2 - 2
fs-service/src/main/java/com/fs/erp/dto/tl/TlOrderItem.java

@@ -71,11 +71,11 @@ public class TlOrderItem {
     // --- 金额与状态 ---
     /** 应付金额(单位:分,注意文档中类型为 integer,但描述为保留两位小数 → 实际应为“分”) */
     @JsonProperty("pay_amount")
-    private Integer payAmount;
+    private Double payAmount;
 
     /** 运费(单位:分) */
     @JsonProperty("freight")
-    private Integer freight;
+    private Double freight;
 
     /** 卖家备注 */
     @JsonProperty("remark")

+ 5 - 3
fs-service/src/main/java/com/fs/erp/dto/tl/TlOrderItemDetail.java

@@ -3,6 +3,8 @@ package com.fs.erp.dto.tl;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 /**
  * 聚水潭订单商品明细
  */
@@ -19,15 +21,15 @@ public class TlOrderItemDetail {
 
     /** 商品实付金额(单位:分) - 必填 */
     @JsonProperty("amount")
-    private Integer amount;
+    private BigDecimal amount;
 
     /** 商品单价(单位:分,支持4位小数 → 实际应为“万分之一元”,但文档写 integer,建议确认) */
     @JsonProperty("price")
-    private Integer price;
+    private BigDecimal price;
 
     /** 商品原价(单位:分) - 必填 */
     @JsonProperty("base_price")
-    private Integer basePrice;
+    private Double basePrice;
 
     /** 商品数量 - 必填 */
     @JsonProperty("qty")

+ 2 - 1
fs-service/src/main/java/com/fs/erp/service/TlErpOrderService.java

@@ -5,6 +5,7 @@ import com.fs.erp.dto.CommonResponse;
 import com.fs.erp.dto.tl.JstLogisticsPushRequest;
 import com.fs.erp.dto.tl.TlCreateOrderRequest;
 import com.fs.erp.dto.tl.TlCreateOrderResponse;
+import org.springframework.http.ResponseEntity;
 
 public interface TlErpOrderService {
 
@@ -14,7 +15,7 @@ public interface TlErpOrderService {
      * @param request 请求参数
      * @return CommonResponse<AfterSaleResponseDTO>
      */
-    HttpResponse syncOrderToJst(TlCreateOrderRequest request);
+    ResponseEntity<TlCreateOrderResponse> syncOrderToJst(TlCreateOrderRequest request);
 
     /**
      * 兔灵erp物流回调接口

+ 21 - 48
fs-service/src/main/java/com/fs/erp/service/impl/TlErpOrderServiceImpl.java

@@ -38,7 +38,7 @@ public class TlErpOrderServiceImpl implements TlErpOrderService {
             .configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
 
     @Override
-    public HttpResponse syncOrderToJst(TlCreateOrderRequest request) {
+    public ResponseEntity<TlCreateOrderResponse> syncOrderToJst(TlCreateOrderRequest request) {
         try {
                 String corpId = request.getCorpId();
                 List<?> rawData = request.getData();
@@ -70,56 +70,29 @@ public class TlErpOrderServiceImpl implements TlErpOrderService {
                 log.info("sign = MD5({})", signSource);
                 log.info("最终 sign: {}, t: {}", sign, timestamp);
 
-//                HttpHeaders headers = new HttpHeaders();
-//                headers.setContentType(MediaType.APPLICATION_JSON);
-//                HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
-
-    //            ResponseEntity<TlCreateOrderResponse> response = restTemplate.exchange(
-    //                    url,
-    //                    HttpMethod.POST,
-    //                    entity,
-    //                    TlCreateOrderResponse.class
-    //            );
-                Map<String, String> headers = MapUtil.builder(new HashMap<String, String>())
-                    .put("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8")
-                    .build();
-                HttpResponse response = cn.hutool.http.HttpRequest.post(url)
-                        .headerMap(headers, true)
-                        .form(requestBody)
-                        .execute();
-                return response;
-
-//                log.info("响应状态: {}, body: {}", response.getStatusCode(), response.getBody());
-//
-//                if (response.getStatusCode() == HttpStatus.OK && response.getBody() != null) {
-//                    return new CommonResponse<TlCreateOrderResponse>()
-//                            .setCode(200)
-//                            .setMsg("success")
-//                            .setData(response.getBody());
-//                } else {
-//                    String errorMsg = "HTTP状态码非200或响应体为空";
-//                    log.error("订单同步失败: {}", errorMsg);
-//                    return new CommonResponse<TlCreateOrderResponse>()
-//                            .setCode(-1)
-//                            .setMsg(errorMsg)
-//                            .setData(null);
-//                }
-//
-//        } catch (JsonProcessingException e) {
-//            log.error("JSON 序列化失败", e);
-//            return new CommonResponse<TlCreateOrderResponse>()
-//                    .setCode(-2)
-//                    .setMsg("订单数据格式异常: " + e.getMessage())
-//                    .setData(null);
-//        } catch (Exception e) {
-//            log.error("调用同步兔灵(聚水潭)订单接口失败", e);
-//            return new CommonResponse<TlCreateOrderResponse>()
-//                    .setCode(-3)
-//                    .setMsg("同步订单到兔灵(聚水潭)失败: " + e.getMessage())
-//                    .setData(null);
+                HttpHeaders headers = new HttpHeaders();
+                headers.setContentType(MediaType.APPLICATION_JSON);
+                HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
+
+                ResponseEntity<TlCreateOrderResponse> response = restTemplate.exchange(
+                        url,
+                        HttpMethod.POST,
+                        entity,
+                        TlCreateOrderResponse.class
+                );
+            return response;
+//                Map<String, String> headers = MapUtil.builder(new HashMap<String, String>())
+//                    .put("Content-Type", "application/json;charset=UTF-8")
+//                    .build();
+//                HttpResponse response = cn.hutool.http.HttpRequest.post(url)
+//                        .headerMap(headers, true)
+//                        .body(requestBody)
+//                        .execute();
+//                return response;
        } catch (JsonProcessingException e) {
             throw new RuntimeException(e);
         }
+
     }
 
     /**