Kaynağa Gözat

兔灵erp物流同步回调接口

cgp 1 hafta önce
ebeveyn
işleme
37a5089881

+ 64 - 0
fs-service/src/main/java/com/fs/erp/dto/tl/JstLogisticsPushRequest.java

@@ -0,0 +1,64 @@
+package com.fs.erp.dto.tl;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import java.util.List;
+
+@Data
+public class JstLogisticsPushRequest {
+    // 内部订单号
+    @JsonProperty("o_id")
+    private Long oId;
+
+    // 物流单号
+    @JsonProperty("l_id")
+    private String lId;
+
+    // 外部单号
+    @JsonProperty("so_id")
+    private String soId;
+
+    // 快递公司编码
+    @JsonProperty("lc_id")
+    private String lcId;
+
+    // 快递公司名称
+    @JsonProperty("logistics_company")
+    private String logisticsCompany;
+
+    // 发送时间,格式:yyyy-MM-dd HH:mm:ss
+    @JsonProperty("send_date")
+    private String sendDate;
+
+    // 商品明细
+    @JsonProperty("items")
+    private List<Item> items;
+
+    @Data
+    public static class Item {
+
+        // 订单项ID
+        @JsonProperty("oi_id")
+        private Long oiId;
+
+        // 商品编码
+        @JsonProperty("sku_id")
+        private String skuId;
+
+        // 数量
+        @JsonProperty("qty")
+        private Integer qty;
+
+        // 商品名称
+        @JsonProperty("name")
+        private String name;
+
+        // 外部订单项ID
+        @JsonProperty("outer_oi_id")
+        private String outerOiId;
+
+        // 外部订单号
+        @JsonProperty("so_id")
+        private String soId;
+    }
+}

+ 13 - 0
fs-service/src/main/java/com/fs/erp/dto/tl/PushResponse.java

@@ -0,0 +1,13 @@
+package com.fs.erp.dto.tl;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class PushResponse {
+    private String code;
+    private String msg;
+}

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

@@ -15,7 +15,7 @@ public class TlCreateOrderRequest {
     @JsonProperty("corp_id")
     private String corpId;
 
-    /** 订单数据列表(仅支持1条) */
+    /** 订单数据列表 */
     @JsonProperty("data")
     private List<TlOrderItem> data;
 

+ 7 - 0
fs-service/src/main/java/com/fs/erp/http/JstErpHttpService.java

@@ -2,6 +2,7 @@ package com.fs.erp.http;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fs.erp.dto.*;
+import com.fs.erp.dto.tl.JstLogisticsPushRequest;
 import com.fs.erp.dto.tl.TlCreateOrderRequest;
 import com.fs.erp.dto.tl.TlCreateOrderResponse;
 import com.fs.ybPay.dto.RefundOrderDTO;
@@ -85,4 +86,10 @@ public interface JstErpHttpService {
      * @return CommonResponse<AfterSaleResponseDTO>
      */
     CommonResponse<TlCreateOrderResponse> syncOrderToJst(TlCreateOrderRequest request);
+
+    /**
+     * 兔灵erp物流同步
+     * @param request 订单物流信息
+     */
+    public void processLogisticsPush(JstLogisticsPushRequest request);
 }

+ 28 - 0
fs-service/src/main/java/com/fs/erp/http/JstErpHttpServiceImpl.java

@@ -13,6 +13,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fs.erp.dto.*;
+import com.fs.erp.dto.tl.JstLogisticsPushRequest;
 import com.fs.erp.dto.tl.TlCreateOrderRequest;
 import com.fs.erp.dto.tl.TlCreateOrderResponse;
 import com.fs.erp.service.impl.JstTokenService;
@@ -69,6 +70,7 @@ public class JstErpHttpServiceImpl implements JstErpHttpService {
 
     //    测试兔灵ERP
     @Value("${jst.api.url:https://api.xiangyue.life/api}")
+    //@Value("${jst.api.url:https://papi.xiangyue.life/api}")
     private String jstApiBaseUrl;
 
     @Value("${jst.secret.key:xysync_dLsSaheCzK7RU9gd}")
@@ -440,4 +442,30 @@ public class JstErpHttpServiceImpl implements JstErpHttpService {
         }
         return objectMapper.writeValueAsString(sortedList);
     }
+
+    public void processLogisticsPush(JstLogisticsPushRequest request) {
+        // 关键业务字段
+        String soId = request.getSoId();       // 外部单号
+        String lId = request.getLId();         // 物流单号
+        String lcId = request.getLcId();       // 快递公司编码
+        String sendDate = request.getSendDate();
+        log.info("【兔灵】物流单号推送: 外部单号:{}, 物流单号:{}, 快递公司编码:{}, 发送时间:{}", soId, lId, lcId, sendDate);
+
+        // TODO: 根据 soId 查询系统中的订单,并更新物流信息
+        // 示例伪代码:
+        // Order order = orderRepository.findBySoId(soId);
+        // if (order != null) {
+        //     order.setLogisticsNo(lId);
+        //     order.setLogisticsCompany(lcId);
+        //     order.setShipTime(LocalDateTime.parse(sendDate, ...));
+        //     orderRepository.save(order);
+        // }
+
+        // 如果 items 有特殊用途(如分拣、库存核销),也可遍历处理
+        if (request.getItems() != null) {
+            request.getItems().forEach(item -> {
+                log.debug("商品项: skuId={}, qty={}", item.getSkuId(), item.getQty());
+            });
+        }
+    }
 }