瀏覽代碼

fix:子订单打单同步发货状态bug

xuyongjun 1 年之前
父節點
當前提交
da24248e62

+ 24 - 18
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -2319,24 +2319,30 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                         throw new RuntimeException("未映射到抖音店铺,系统出小差啦~");
                     }
 
-                    // 查询系统快递公司信息
-                    LogisticsInfo logisticsInfo = logisticsInfoService.getLogisticsNameByRSTCode(salesOrder.getSalesPostFirm());
-
-                    OrderLogisticsAddParam param = new OrderLogisticsAddParam();
-                    param.setOrderId(salesOrder.getSalesExOrderId());
-                    param.setLogisticsCode(salesOrder.getSalesPostNum());
-                    param.setCompany(logisticsInfo.getLogisticsName());
-                    // 这里抖音的快递公司编码和系统快递100的一样,就先不调用抖音的了
-                    param.setCompanyCode(logisticsInfo.getLogisticsOnehundredCode());
-
-                    OrderLogisticsAddRequest request = new OrderLogisticsAddRequest();
-                    request.setParam(param);
-                    OrderLogisticsAddResponse response = request.execute(AccessTokenBuilder.build(shopId));
-                    if (response.isSuccess()) {
-                        logger.info("抖音发货回传请求成功");
-                    } else {
-                        logger.info("抖音发货回传请求错误:{}", response.getMsg());
-                        throw new RuntimeException("抖音发货回传请求失败" );
+                    // 判断是否是赠品,后台拆分的订单不处理(mainOrderId为null,说明是主单)
+                    if (salesOrder.getSalesMainOrderId() == null) {
+
+                        // 查询系统快递公司信息
+                        LogisticsInfo logisticsInfo = logisticsInfoService.getLogisticsNameByRSTCode(salesOrder.getSalesPostFirm());
+
+                        OrderLogisticsAddParam param = new OrderLogisticsAddParam();
+                        param.setOrderId(salesOrder.getSalesExOrderId());
+                        param.setLogisticsCode(salesOrder.getSalesPostNum());
+                        param.setCompany(logisticsInfo.getLogisticsName());
+                        // 这里抖音的快递公司编码和系统快递100的一样,就先不调用抖音的了
+                        param.setCompanyCode(logisticsInfo.getLogisticsOnehundredCode());
+
+                        OrderLogisticsAddRequest request = new OrderLogisticsAddRequest();
+                        request.setParam(param);
+                        OrderLogisticsAddResponse response = request.execute(AccessTokenBuilder.build(shopId));
+                        if (response.isSuccess()) {
+                            logger.info("抖音发货回传请求成功");
+                        } else if ("50002".equals(response.getCode())) {
+                            logger.info("抖音发货回传请求失败:订单已发货,不允许再次执行发货。");
+                        } else {
+                            logger.info("抖音发货回传请求错误:{}", response.getMsg());
+                            throw new RuntimeException("抖音发货回传请求失败");
+                        }
                     }
                 } catch (Exception e) {
                     logger.error("抖音订单发货失败:", e);

+ 7 - 3
watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/DouyinTask.java

@@ -111,14 +111,18 @@ public class DouyinTask {
             int rstSalesStoreId;
             String accountId;
             String accountType;
+            // 销售公司 tb_rst_sales_company
+            int salesCompanyId;
             if (shopId.equals(DOUYIN_IAMBERRY_SHOP_ID)) {
                 // 抖音旗舰店
                 rstSalesStoreId = 148;
+                salesCompanyId = 1;
                 accountId = DOUYIN_IAMBERRY_ACCOUNT_ID;
                 accountType = DOUYIN_IAMBERRY_ACCOUNT_TYPE;
             } else {
                 // 美塔璞儿的抖店
                 rstSalesStoreId = 172;
+                salesCompanyId = 16;
                 accountId = DOUYIN_METAPURE_ACCOUNT_ID;
                 accountType = DOUYIN_METAPURE_ACCOUNT_TYPE;
             }
@@ -153,7 +157,7 @@ public class DouyinTask {
                     if (CollectionUtils.isNotEmpty(shopOrderList)) {
                         total += shopOrderList.size();
                         for (ShopOrderListItem item : shopOrderList) {
-                            SalesOrder salesOrder = assembleSalesOrder(item, accessToken, rstSalesStoreId, accountId, accountType);
+                            SalesOrder salesOrder = assembleSalesOrder(item, accessToken, rstSalesStoreId, accountId, accountType, salesCompanyId);
                             if (salesOrder != null) {
                                 salesOrder.setSalesBatchId(batchIdST);
                                 salesOrderService.addOrder(salesOrder, "创建订单(抖音拉取订单)");
@@ -205,7 +209,7 @@ public class DouyinTask {
      * @param salesStoreId rst后台店铺id
      * @return
      */
-    private SalesOrder assembleSalesOrder(ShopOrderListItem trade, AccessToken accessToken, int salesStoreId, String accountId, String accountType) {
+    private SalesOrder assembleSalesOrder(ShopOrderListItem trade, AccessToken accessToken, int salesStoreId, String accountId, String accountType, Integer salesCompanyId) {
         SalesOrder order = new SalesOrder();
 
         String orderId = trade.getOrderId();
@@ -289,7 +293,7 @@ public class DouyinTask {
         order.setSalesCreateTime(new Date(trade.getCreateTime() * 1000));
         order.setSalesAdminRemark(trade.getSellerWords());
         order.setSalesUserRemark(trade.getBuyerWords());
-        order.setSalesCompanyId(1);
+        order.setSalesCompanyId(salesCompanyId);
         order.setSalesStoreId(salesStoreId);
         order.setSalesType(1);
         order.setSalesAddType(4);

+ 6 - 6
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -129,7 +129,7 @@ public class AwaitSendController {
     @Autowired
     private SalesOrderMapper salesOrderMapper ;
 
-    private static String jdOrderDomain = "http://jd-order.iamberry.com/:8088/watero";
+    private static String jdOrderDomain = "http://jd-order.iamberry.com:8088/watero";
 
     private static final Logger LOGGER = LoggerFactory.getLogger(AwaitSendController.class);
 
@@ -361,16 +361,16 @@ public class AwaitSendController {
                 订单状态1 待确认/待支付(订单创建完毕)105 已支付 2 备货中 101 部分发货 3 已发货(全部发货)4 已取消5 已完成(已收货)
                  */
                 Long orderStatus = data.getShopOrderDetail().getOrderStatus();
-                if (orderStatus == 105) {
-                    // 待发货订单
-                    salesOrderList.add(temp);
-                } else {
+                if (orderStatus == 4) {
                     // 订单状态异常,不允许发货
                     syncOrderStateError(temp.getSalesId(), temp.getSalesDealCode());
+                } else {
+                    // 待发货订单
+                    salesOrderList.add(temp);
                 }
             } else {
                 LOGGER.info("请求抖音订单详情失败,OrderId: {}, 结果:{}", temp.getSalesExOrderId(), response.getMsg());
-                throw new RuntimeException("京东订单验证失败,原因:{远程调用失败!}");
+                throw new RuntimeException("抖音订单验证失败,原因:{远程调用失败!}");
             }
         } catch (Exception e) {
             throw new RuntimeException(e);

+ 8 - 1
watero-rst-web/src/test/java/junit/com/iamberry/rst/DouyinSdkTest.java

@@ -20,6 +20,7 @@ import com.doudian.open.api.order_searchList.param.OrderSearchListParam;
 import com.doudian.open.core.AccessToken;
 import com.doudian.open.core.AccessTokenBuilder;
 import com.doudian.open.core.GlobalConfig;
+import com.iamberry.app.tool.util.AES;
 import com.iamberry.rst.controllers.mq.TaobaoConfig;
 import com.iamberry.wechat.tools.DateTimeUtil;
 import com.iamberry.wechat.tools.payUtil.DatetimeUtil;
@@ -107,7 +108,7 @@ public class DouyinSdkTest {
     public void testGetOrderDetail() {
         OrderOrderDetailRequest request = new OrderOrderDetailRequest();
         OrderOrderDetailParam param = new OrderOrderDetailParam();
-        param.setShopOrderId("6919512310210303803");
+        param.setShopOrderId("6919916773303588141");
         request.setParam(param);
         OrderOrderDetailResponse response = request.execute(AccessTokenBuilder.parse(token));
         System.out.println(response.getLogId());
@@ -127,6 +128,12 @@ public class DouyinSdkTest {
     }
 
     @Test
+    public void dec() {
+        String encrypt = AES.encrypt("277556851298");
+        System.out.println(encrypt);
+    }
+
+    @Test
     public void testTime() {
         System.out.println(DateTimeUtil.format(DateTimeUtil.addDay(-20), "yyyy-MM-dd HH:mm:ss"));
     }