Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

jzp 2 дней назад
Родитель
Сommit
62fe60999a
18 измененных файлов с 562 добавлено и 31 удалено
  1. 18 8
      README.md
  2. 48 0
      fs-admin/src/main/java/com/fs/his/controller/HzOMSErpApiController.java
  3. 21 1
      fs-admin/src/main/java/com/fs/hisStore/task/MallStoreTask.java
  4. 1 1
      fs-company/src/main/resources/logback.xml
  5. 4 0
      fs-service/src/main/java/com/fs/erp/service/IErpOrderService.java
  6. 198 3
      fs-service/src/main/java/com/fs/erp/service/impl/DfOrderServiceImpl.java
  7. 11 0
      fs-service/src/main/java/com/fs/erp/service/impl/ErpOrderServiceImpl.java
  8. 11 0
      fs-service/src/main/java/com/fs/erp/service/impl/HzOMSErpOrderServiceImpl.java
  9. 10 0
      fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java
  10. 10 0
      fs-service/src/main/java/com/fs/erp/service/impl/K9OrderScrmServiceImpl.java
  11. 10 0
      fs-service/src/main/java/com/fs/erp/service/impl/WdtErpOrderServiceImpl.java
  12. 12 1
      fs-service/src/main/java/com/fs/hisStore/enums/OrderLogEnum.java
  13. 3 0
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderScrmMapper.java
  14. 4 0
      fs-service/src/main/java/com/fs/hisStore/service/IFsStoreOrderScrmService.java
  15. 163 0
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java
  16. 13 0
      fs-service/src/main/java/com/fs/huifuPay/sdk/opps/core/utils/HuiFuUtils.java
  17. 9 17
      fs-user-app/src/main/java/com/fs/app/controller/HuifuPayController.java
  18. 16 0
      fs-user-app/src/main/java/com/fs/app/controller/store/PayScrmController.java

+ 18 - 8
README.md

@@ -32,11 +32,21 @@
 4.  新建 Pull Request
 
 
-#### 特技
-
-1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
-2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
-3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
-4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
-5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
-6.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
+#### sql更新
+
+-- 添加字段(修改企微的备注手机号码搜索时用到)
+
+ALTER TABLE qw_external_contact
+ADD COLUMN search_mobile char(44)
+GENERATED ALWAYS AS (
+CAST(
+REGEXP_REPLACE(
+COALESCE(JSON_UNQUOTE(JSON_EXTRACT(remark_mobiles, '$[0]')), ''),
+'[^0-9]', ''
+) AS CHAR(44)
+)
+) VIRTUAL;
+
+-- 创建索引
+
+CREATE INDEX idx_search_mobile ON qw_external_contact(search_mobile);

+ 48 - 0
fs-admin/src/main/java/com/fs/his/controller/HzOMSErpApiController.java

@@ -8,6 +8,7 @@ import com.fs.his.param.HzOMSErpApiParam;
 import com.fs.his.service.ErpApiService;
 import com.fs.his.service.IFsStoreOrderService;
 import com.fs.his.vo.HzOMSErpResponseVO;
+import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +41,9 @@ public class HzOMSErpApiController {
     @Autowired
     private IFsStoreOrderService fsStoreOrderService;
 
+    @Autowired
+    private IFsStoreOrderScrmService fsStoreOrderScrmService;
+
     /**
      * 用于将瀚智商品库存同步到第三方
      *
@@ -169,4 +173,48 @@ public class HzOMSErpApiController {
                 ? fsStoreOrderService.receiveWaybillPush(body)
                 : R.ok();
     }
+
+    /**
+     * 代服管家订单回调
+     */
+    @PostMapping("/dfNotifyUrlScrm")
+    public R dfOrderScrmResult(HttpServletRequest request){
+        String body = null;
+        try {
+            // 1. 先设置编码
+            request.setCharacterEncoding("UTF-8");
+            // 3. 按 UTF-8 解码
+            body = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8);
+        } catch (IOException e) {
+            log.error("读取 body 失败", e);
+            return null;
+        }
+        log.info("Body UTF-8: {}", body);
+
+        return StringUtils.isNotBlank(body)
+                ? fsStoreOrderScrmService.dfOrderResult(body)
+                : R.ok();
+    }
+
+    /**
+     * 代服管家订单状态回调
+     */
+    @PostMapping("/receiveWaybillPushScrm")
+    public R receiveWaybillPushScrm(HttpServletRequest request) {
+        String body = null;
+        try {
+            // 1. 先设置编码
+            request.setCharacterEncoding("UTF-8");
+            // 3. 按 UTF-8 解码
+            body = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8);
+        } catch (IOException e) {
+            log.error("读取 body 失败", e);
+            return null;
+        }
+        log.info("Body UTF-8: {}", body);
+
+        return StringUtils.isNotBlank(body)
+                ? fsStoreOrderScrmService.receiveWaybillPush(body)
+                : R.ok();
+    }
 }

+ 21 - 1
fs-admin/src/main/java/com/fs/hisStore/task/MallStoreTask.java

@@ -51,6 +51,7 @@ import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.CompletableFuture;
 
 import static com.fs.hisStore.constants.StoreConstants.DELIVERY;
 
@@ -507,7 +508,7 @@ public class MallStoreTask
                     //旺店通
                     erpOrderService = wdtOrderService;
                 } else if (erpType == 3) {
-                    //瀚智
+                    //代服
                     erpOrderService = hzOMSOrderService;
                 } else if (erpType == 4) {
                     //瀚智
@@ -625,4 +626,23 @@ public class MallStoreTask
         });
     }
 
+    public void getOrderDeliveryStatus()
+    {
+        IErpOrderService erpOrderService = getErpOrderService();
+        List<FsStoreOrderScrm> orders = null;
+        if (erpOrderService != null && erpOrderService == dfOrderService) {
+            orders = fsStoreOrderMapper.selectShippedOrder();
+            if (orders != null && !orders.isEmpty()) {
+                List<CompletableFuture<Void>> futures = new ArrayList<>();
+                for (FsStoreOrderScrm order : orders) {
+                    CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
+                        erpOrderService.getOrderScrmDeliveryStatus(order);
+                    });
+                    futures.add(future);
+                }
+                CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
+            }
+        }
+    }
+
 }

+ 1 - 1
fs-company/src/main/resources/logback.xml

@@ -72,7 +72,7 @@
     </appender>
 
 	<!-- 系统模块日志级别控制  -->
-	<logger name="com.fs" level="info" />
+	<logger name="com.fs" level="debug" />
 	<!-- Spring日志级别控制  -->
 	<logger name="org.springframework" level="warn" />
 

+ 4 - 0
fs-service/src/main/java/com/fs/erp/service/IErpOrderService.java

@@ -4,6 +4,7 @@ import com.fs.erp.domain.ErpOrder;
 import com.fs.erp.domain.ErpRefundOrder;
 import com.fs.erp.dto.*;
 import com.fs.his.domain.FsStoreOrder;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
 
 public interface IErpOrderService
 {
@@ -14,6 +15,7 @@ public interface IErpOrderService
 
     //用户发起退款,然后后台审核通过后,提交退款单
     ErpOrderResponse refundOrder(ErpRefundOrder order);
+    ErpOrderResponse refundOrderScrm(ErpRefundOrder order);
     ErpDeliverysResponse getDeliver(ErpDeliverysRequest param);
     ErpOrderQueryResponse getOrder(ErpOrderQueryRequert param);
     ErpOrderQueryResponse getScrmOrder(ErpOrderQueryRequert param);
@@ -23,5 +25,7 @@ public interface IErpOrderService
     ErpOrderResponse finishOrder(ErpOrder order);
     //代服管家查物流状态
     void getOrderDeliveryStatus(FsStoreOrder order);
+
+    void getOrderScrmDeliveryStatus(FsStoreOrderScrm order);
 }
 

+ 198 - 3
fs-service/src/main/java/com/fs/erp/service/impl/DfOrderServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.fs.common.core.redis.RedisCache;
 import com.fs.common.event.TemplateBean;
 import com.fs.common.event.TemplateEvent;
 import com.fs.common.event.TemplateListenEnum;
@@ -40,6 +41,7 @@ import com.fs.hisStore.enums.ShipperCodeEnum;
 import com.fs.hisStore.mapper.FsStoreOrderItemScrmMapper;
 import com.fs.hisStore.mapper.FsStoreOrderScrmMapper;
 import com.fs.hisStore.mapper.FsStoreProductScrmMapper;
+import com.fs.hisStore.param.FsStoreAfterSalesParam;
 import com.fs.hisStore.service.IFsExpressScrmService;
 import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import com.fs.hisStore.vo.FsStoreOrderItemVO;
@@ -58,6 +60,8 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import static com.fs.hisStore.constants.StoreConstants.DELIVERY;
+
 @Service
 @Slf4j
 public class DfOrderServiceImpl implements IErpOrderService {
@@ -115,9 +119,15 @@ public class DfOrderServiceImpl implements IErpOrderService {
     @Autowired
     private IFsStoreOrderService fsStoreOrderService;
 
+    @Autowired
+    private IFsStoreOrderScrmService fsStoreOrderScrmService;
+
     @Autowired
     private SysConfigMapper sysConfigMapper;
 
+    @Autowired
+    private RedisCache redisCache;
+
 
     @Override
     public ErpOrderResponse addOrder(ErpOrder order) {
@@ -184,6 +194,61 @@ public class DfOrderServiceImpl implements IErpOrderService {
         return new ErpOrderResponse();
     }
 
+    /**
+     * 退款 取消订单
+     *
+     * @param order
+     * @return
+     */
+    @Override
+    public ErpOrderResponse refundOrderScrm(ErpRefundOrder order) {
+        //获取代服账户
+        String orderCode = order.getOrderCode();
+        FsStoreOrderScrm fsStoreOrder = fsStoreOrderScrmMapper.selectFsStoreOrderByOrderCode(orderCode);
+        FsStoreOrderDf df = fsStoreOrderDfMapper.selectFsStoreOrderDfByOrderId(fsStoreOrder.getId());
+        if (df == null) {
+            return null;
+        }
+        Long dfAccountId = getSFAccountIndex(fsStoreOrder.getId());
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("loginAccount", df.getLoginAccount());
+        FsDfAccount dfAccount = fsDfAccountMapper.selectFsDfAccountById(dfAccountId);
+        if (dfAccount != null && StringUtils.isNotBlank(dfAccount.getCallBackUrl())) {
+            map.put("callBackUrl", dfAccount.getCallBackUrl());
+        }
+        map.put("orderNumber", orderCode);
+        map.put("mailNumber", fsStoreOrder.getDeliveryId());
+        try {
+            //2.请求
+            log.info("开始取消订单,参数: {}", JSON.toJSONString(map));
+            String response = client.execute(RequestUrlEnum.ORDER_CANCEL, map, dfAccountId);
+            DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
+            //3.处理请求结果
+            if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
+                //存储订单推送用的哪个账户
+                log.info("订单取消成功: {}", response);
+                //修改df表
+                df.setStatus(2);
+                df.setUpdateTime(DateUtils.getNowDate());
+                fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
+                //可以回调 也可以查询订单
+                Map<String, Object> orderResultQueryParam = new HashMap<>();
+                orderResultQueryParam.put("orderNumber", orderCode);
+                orderResultQueryParam.put("exInterfaceType", 2); //2为查询取消订单结果
+//                    getOrderResult(orderResultQueryParam,sfAccountIndex);
+                ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
+                erpOrderResponse.setCode(orderCode);
+                erpOrderResponse.setSuccess(true);
+                return erpOrderResponse;
+            } else {
+                throw new RuntimeException(String.format("订单取消失败,原因: %s", dfApiResponse.getMsg()));
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return new ErpOrderResponse();
+    }
+
     @Override
     public ErpDeliverysResponse getDeliver(ErpDeliverysRequest request) {
         ErpDeliverysResponse erpDeliverysResponse = new ErpDeliverysResponse();
@@ -310,8 +375,10 @@ public class DfOrderServiceImpl implements IErpOrderService {
     }
 
     @Override
-    public BaseResponse refundUpdateScrm(ErpRefundUpdateRequest param) {
-        return null;
+    public BaseResponse refundUpdateScrm(ErpRefundUpdateRequest request) {
+        ErpRefundOrder erpRefundOrder = new ErpRefundOrder();
+        erpRefundOrder.setOrderCode(request.getTid());
+        return refundOrderScrm(erpRefundOrder);
     }
 
     @Override
@@ -414,6 +481,101 @@ public class DfOrderServiceImpl implements IErpOrderService {
         }
     }
 
+    @Override
+    public void getOrderScrmDeliveryStatus(FsStoreOrderScrm order) {
+        Map<String, Object> map = new HashMap<>();
+        Long dfAccountId = getSFAccountIndex(order.getId());
+        map.put("orderNumber", order.getOrderCode());
+        map.put("mailNumber", order.getDeliveryId());
+        try {
+            String response = client.execute(RequestUrlEnum.ORDER_DELIVERY_STATUS, map, dfAccountId);
+            DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
+            if ("运单不存在".equals(dfApiResponse.getMsg())) {
+
+                //查看原来物流状态
+                cancelOrderScrm(order);
+                log.info("代服管家 getOrderDeliveryStatus: {}", response);
+                return;
+            }
+            //3.处理请求结果
+            if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
+                String jsonString = JSON.toJSONString(dfApiResponse.getResult());
+//                List<DFOrderStatusResultRequest> requestList = JSON.parseArray(jsonString, DFOrderStatusResultRequest.class);
+                DFOrderStatusResultRequest temp = JSON.parseObject(jsonString, DFOrderStatusResultRequest.class);
+                //0待揽收 1已揽收 2运输中 3派送中 4异常件 5退回件 6退回签收 7转寄件 8作废件 9已签收 10 已取消
+                Integer deliveryStatus = 0;
+                String stateEx = "0";
+                FsStoreOrderScrm fsStoreOrderMap = new FsStoreOrderScrm();
+                fsStoreOrderMap.setId(order.getId());
+                Integer status = temp.getStatus();
+                switch (status) {
+                    case 0:
+                        //0待揽收 1已揽收 2运输中
+                        deliveryStatus = status;
+                        stateEx = status.toString();
+                        break;
+                    case 1:
+                        //0待揽收 1已揽收 2运输中
+                        deliveryStatus = status;
+                        stateEx = status.toString();
+                        break;
+                    case 2:
+                        //0待揽收 1已揽收 2运输中
+                        deliveryStatus = status;
+                        stateEx = status.toString();
+                        break;
+                    case 3:
+                        //3派送中
+                        deliveryStatus = 2;
+                        stateEx = "202";
+                        break;
+                    case 4:
+                        // 4异常件
+                        deliveryStatus = status;
+                        stateEx = status.toString();
+                        break;
+                    case 5:
+                        //5退回件
+                        deliveryStatus = 4;
+                        stateEx = "407"; //退货未签收
+                        break;
+                    case 6:
+                        // 6退回签收 7转寄件 8作废件 9已签收 10 已取消
+                        deliveryStatus = status;
+                        stateEx = "406"; //退货签收
+                        break;
+                    case 9:
+                        //已签收
+                        deliveryStatus = 3;
+                        stateEx = "301"; //退货签收
+//                        SysConfig sysConfig = sysConfigMapper.selectConfigByConfigKey("his.store");
+//                        Map<String, Object> config = (Map<String, Object>) JSON.parse(sysConfig.getConfigValue());
+//                        Object isUpdateOrder = config.get("isUpdateOrder");
+//                        if (isUpdateOrder == null || "1".equals(isUpdateOrder.toString())) {
+//                            fsStoreOrderService.getGoods(order.getId(), "物流自动");
+//                        }
+                        break;
+                    case 10:
+                        //取消订单
+                        String mailNumber = temp.getMailNumber();
+                        List<FsStoreOrderScrm> fsStoreOrders = fsStoreOrderScrmMapper.selectFsStoreOrderListByDeliveryId(mailNumber);
+                        if (fsStoreOrders != null && !fsStoreOrders.isEmpty()) {
+                            fsStoreOrders.forEach(tempOrder -> {
+                                cancelOrderScrm(order);
+                                log.info("代服管家 订单取消成功: {}", response);
+                            });
+                        }
+                        break;
+                }
+                fsStoreOrderMap.setDeliveryStatus(deliveryStatus); //物流状态:0-暂无轨迹信息 1-已揽收 2-在途中,3-签收,4-问题件
+                fsStoreOrderMap.setDeliveryType(stateEx);
+                fsStoreOrderScrmMapper.updateFsStoreOrder(fsStoreOrderMap);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
     private void cancelOrder(FsStoreOrder order) {
         Integer deliveryStatus = order.getDeliveryStatus();
         if (deliveryStatus == null || deliveryStatus == 0) {
@@ -443,6 +605,37 @@ public class DfOrderServiceImpl implements IErpOrderService {
         fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
     }
 
+    private void cancelOrderScrm(FsStoreOrderScrm order) {
+        Integer deliveryStatus = order.getDeliveryStatus();
+        if (deliveryStatus == null || deliveryStatus == 0) {
+            //没有物流信息
+            //修改订单状态 方便后续重新发货
+            order.setStatus(OrderInfoEnum.STATUS_1.getValue());
+            order.setExtendOrderId("");
+            order.setDeliveryId("");
+            fsStoreOrderScrmMapper.updateFsStoreOrder(order);
+            fsStoreOrderScrmLogsService.create(order.getId(), OrderLogEnum.UPDATE_ORDER_DF.getValue(),
+                    "运单不存在," + OrderLogEnum.UPDATE_ORDER_DF.getDesc());
+        } else {
+            //有物流信息->售后处理
+            //取消订单
+            FsStoreAfterSalesParam afterSalesParam = new FsStoreAfterSalesParam();
+//            afterSalesParam.setOrderId(order.getId());
+//            afterSalesParam.setOrderCode(order.getOrderCode());
+//            afterSalesParam.setReasons("代服管家取消订单");
+//            afterSalesParam.setOperator("代服管家");
+//            fsStoreOrderScrmService.afterSales(afterSalesParam);
+            fsStoreOrderScrmService.refundOrderMoney(order.getId());
+            fsStoreOrderScrmLogsService.create(order.getId(), OrderLogEnum.REFUND_ORDER_DF.getValue(),
+                    "运单不存在," + OrderLogEnum.REFUND_ORDER_DF.getDesc());
+        }
+        FsStoreOrderDf df = new FsStoreOrderDf();
+        df.setOrderId(order.getId());
+        df.setStatus(2);
+        df.setUpdateTime(new Date());
+        fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
+    }
+
     /**
      * 获取erp推送参数
      *
@@ -632,7 +825,7 @@ public class DfOrderServiceImpl implements IErpOrderService {
             couponPrice = BigDecimal.ZERO;
         }
 
-        if (ObjectUtil.equal(1, fsStoreOrder.getPayType())) {
+        if ("1".equals(fsStoreOrder.getPayType())) {
             //在线支付
             orderPayMethod = 1;
         } else { // 如果是线上付款
@@ -1011,6 +1204,7 @@ public class DfOrderServiceImpl implements IErpOrderService {
                                             order.setDeliverySendTime(DateUtils.getNowDate()); //更新发货时间
                                             fsStoreOrderMapper.updateFsStoreOrder(order);
                                             fsStoreOrderLogsService.create(order.getOrderId(), FsStoreOrderLogEnum.DELIVERY_GOODS.getValue(), FsStoreOrderLogEnum.DELIVERY_GOODS.getDesc());
+                                            redisCache.deleteObject(DELIVERY+":"+order.getExtendOrderId());
                                             if (order.getCompanyId() != null && order.getCompanyId() > 0) {
                                                 companyService.subtractCompanyMoney(order);
                                             }
@@ -1087,6 +1281,7 @@ public class DfOrderServiceImpl implements IErpOrderService {
 
                                             fsStoreOrderScrmMapper.updateFsStoreOrder(order);
                                             fsStoreOrderScrmLogsService.create(order.getId(), FsStoreOrderLogEnum.DELIVERY_GOODS.getValue(), FsStoreOrderLogEnum.DELIVERY_GOODS.getDesc());
+                                            redisCache.deleteObject(DELIVERY+":"+order.getExtendOrderId());
                                             //订阅物流回调
 //                                            String lastFourNumber = "";
 //                                            if (order.getDeliverySn().equals(ShipperCodeEnum.SF.getValue())) {

+ 11 - 0
fs-service/src/main/java/com/fs/erp/service/impl/ErpOrderServiceImpl.java

@@ -11,6 +11,7 @@ import com.fs.erp.utils.CommonUtils;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.domain.FsStoreOrder;
 import com.fs.his.utils.ConfigUtil;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -83,6 +84,11 @@ public class ErpOrderServiceImpl implements IErpOrderService
         return response;
     }
 
+    @Override
+    public ErpOrderResponse refundOrderScrm(ErpRefundOrder order) {
+        return null;
+    }
+
     @Override
     public ErpDeliverysResponse getDeliver(ErpDeliverysRequest request) {
         FsSysConfig sysConfig = configUtil.getSysConfig();
@@ -153,4 +159,9 @@ public class ErpOrderServiceImpl implements IErpOrderService
     public void getOrderDeliveryStatus(FsStoreOrder order) {
 
     }
+
+    @Override
+    public void getOrderScrmDeliveryStatus(FsStoreOrderScrm order) {
+
+    }
 }

+ 11 - 0
fs-service/src/main/java/com/fs/erp/service/impl/HzOMSErpOrderServiceImpl.java

@@ -13,6 +13,7 @@ import com.fs.erp.service.IErpOrderService;
 import com.fs.his.domain.*;
 import com.fs.his.service.*;
 import com.fs.his.utils.PhoneUtil;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -77,6 +78,11 @@ public class HzOMSErpOrderServiceImpl implements IErpOrderService {
         return null;
     }
 
+    @Override
+    public ErpOrderResponse refundOrderScrm(ErpRefundOrder order) {
+        return null;
+    }
+
     @Override
     public ErpDeliverysResponse getDeliver(ErpDeliverysRequest param) {
         return null;
@@ -171,6 +177,11 @@ public class HzOMSErpOrderServiceImpl implements IErpOrderService {
 
     }
 
+    @Override
+    public void getOrderScrmDeliveryStatus(FsStoreOrderScrm order) {
+
+    }
+
     /**
      * 构建瀚智创建订单参数
      *

+ 10 - 0
fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java

@@ -334,6 +334,11 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
         return null;
     }
 
+    @Override
+    public ErpOrderResponse refundOrderScrm(ErpRefundOrder order) {
+        return null;
+    }
+
     @Override
     public ErpDeliverysResponse getDeliver(ErpDeliverysRequest param) {
         return null;
@@ -636,5 +641,10 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
     public void getOrderDeliveryStatus(FsStoreOrder order) {
 
     }
+
+    @Override
+    public void getOrderScrmDeliveryStatus(FsStoreOrderScrm order) {
+
+    }
 }
 

+ 10 - 0
fs-service/src/main/java/com/fs/erp/service/impl/K9OrderScrmServiceImpl.java

@@ -88,6 +88,11 @@ public class K9OrderScrmServiceImpl implements IErpOrderService {
         return null;
     }
 
+    @Override
+    public ErpOrderResponse refundOrderScrm(ErpRefundOrder order) {
+        return null;
+    }
+
     private KingbosRefundOrderRequest getKingbosRefundOrderRequest(String orderCode) {
         FsStoreOrderScrm order = fsStoreOrderMapper.selectFsStoreOrderByOrderCode(orderCode);
         if (order != null){
@@ -450,4 +455,9 @@ public class K9OrderScrmServiceImpl implements IErpOrderService {
     public void getOrderDeliveryStatus(FsStoreOrder order) {
 
     }
+
+    @Override
+    public void getOrderScrmDeliveryStatus(FsStoreOrderScrm order) {
+
+    }
 }

+ 10 - 0
fs-service/src/main/java/com/fs/erp/service/impl/WdtErpOrderServiceImpl.java

@@ -795,6 +795,11 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
         return null;
     }
 
+    @Override
+    public ErpOrderResponse refundOrderScrm(ErpRefundOrder order) {
+        return null;
+    }
+
     @Override
     public ErpDeliverysResponse getDeliver(ErpDeliverysRequest param) {
         return null;
@@ -1093,6 +1098,11 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
 
     }
 
+    @Override
+    public void getOrderScrmDeliveryStatus(FsStoreOrderScrm order) {
+
+    }
+
     public static String convertToSnakeCase(Object obj) {
         SerializeConfig config = new SerializeConfig();
         config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;

+ 12 - 1
fs-service/src/main/java/com/fs/hisStore/enums/OrderLogEnum.java

@@ -13,6 +13,9 @@ public enum OrderLogEnum {
     REMOVE_ORDER("remove_order","删除订单"),
     EVAL_ORDER("order_eval","用户评价"),
     REFUND_ORDER_APPLY("apply_refund","用户申请退款"),
+    REFUND_ORDER_PLATFORM("REFUND_ORDER_PLATFORM","平台申请退款"),
+    REFUND_ORDER_DF("refund_order_df","代服取消订单,申请退款"),
+    UPDATE_ORDER_DF("update_order_df","代服取消订单,需要重新发货"),
     TAKE_ORDER_DELIVERY("user_take_delivery","用户已收货"),
     PAY_ORDER_SUCCESS("pay_success","用户付款成功"),
     PAY_REMAIN_ORDER_SUCCESS("pay_remain_success","用户付款尾款成功"),
@@ -24,7 +27,15 @@ public enum OrderLogEnum {
     FINISH_ORDER("finish","确认收货"),
     LOCK_TUI_MONEY("lock_tui_money","冻结推广金"),
     UNLOCK_TUI_MONEY("unlock_tui_money","解冻推广金"),
-    EDIT_ORDER_PRICE("edit_order_money","改价");
+    EDIT_ORDER_PRICE("edit_order_money","改价"),
+    PLATFORM_REVIEW_SALES("PLATFORM_REVIEW_SALES","平台已审核"),
+    WAREHOUSE_REVIEW_SALES("WAREHOUSE_REVIEW_SALES","仓库已审核"),
+    FINANCE_REVIEW_SALES("FINANCE_REVIEW_SALES","财务已审核"),
+    PLATFORM_REVIEW_CANCEL("PLATFORM_REVIEW_CANCEL","平台已取消售后"),
+
+    SET_PUSH_MOBILE("SET_PUSH_MOBILE","设置推送手机号"),
+    SET_PUSH_ACCOUNT("SET_PUSH_ACCOUNT","数据分拣"),
+    PUSH_ORDER_ERP("PUSH_ORDER_ERP","创建ERP");
 
     private String value;
     private String desc;

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderScrmMapper.java

@@ -1375,4 +1375,7 @@ public interface FsStoreOrderScrmMapper
             " limit 50000 "+
             "</script>"})
     List<FsStoreOrderErpExportVO> selectFsStoreOrderErpListVOByExport(@Param("maps") FsStoreOrderParam param);
+
+    @Select("select * from fs_store_order_scrm where  `status`=2 and (extend_order_id is not null and extend_order_id != '') and (delivery_id is not null and delivery_id != '')")
+    List<FsStoreOrderScrm> selectShippedOrder();
 }

+ 4 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsStoreOrderScrmService.java

@@ -316,4 +316,8 @@ public interface IFsStoreOrderScrmService
     String selectFsStoreOrderProductStatistics(FsStoreOrderParam param);
 
     int create(Long orderId, String type, String msg);
+
+    R dfOrderResult(String body);
+
+    R receiveWaybillPush(String body);
 }

+ 163 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -50,6 +50,7 @@ import com.fs.core.utils.OrderCodeUtils;
 import com.fs.course.dto.FsOrderDeliveryNoteDTO;
 import com.fs.erp.domain.*;
 import com.fs.erp.dto.*;
+import com.fs.erp.dto.df.*;
 import com.fs.erp.mapper.FsErpFinishPushMapper;
 import com.fs.erp.service.IErpOrderService;
 import com.fs.his.config.FsSysConfig;
@@ -90,6 +91,7 @@ import com.fs.huifuPay.domain.HuiFuCreateOrder;
 import com.fs.huifuPay.domain.HuiFuRefundResult;
 import com.fs.huifuPay.domain.HuifuCreateOrderResult;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundRequest;
+import com.fs.huifuPay.sdk.opps.core.utils.HuiFuUtils;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.pay.pay.dto.OrderQueryDTO;
 import com.fs.pay.pay.dto.RefundDTO;
@@ -355,6 +357,9 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
     @Autowired
     private FsStoreOrderLogsScrmMapper fsStoreOrderLogsScrmMapper;
 
+    @Autowired
+    private FsStoreOrderDfMapper fsStoreOrderDfMapper;
+
     @PostConstruct
     public void initErpServiceMap() {
         erpServiceMap = new HashMap<>();
@@ -3916,6 +3921,13 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                     o.setTransAmt(storePayment.getPayMoney().toString());
                     o.setGoodsDesc("商城订单支付");
                     o.setAppId(param.getAppId());
+                    try {
+                        HuiFuUtils.doDiv(o,order.getCompanyId());
+                        //存储分账明细
+                        HuiFuUtils.saveDivItem(o, order.getOrderCode(), storePayment.getPayCode());
+                    } catch (Exception e) {
+                        logger.error("-------------分账出错:{}", e.getMessage());
+                    }
                     HuifuCreateOrderResult result = huiFuService.createOrder(o);
                     if(result.getResp_code()!=null&&(result.getResp_code().equals("00000000")||result.getResp_code().equals("00000100"))){
                         FsStorePaymentScrm mt=new FsStorePaymentScrm();
@@ -4489,6 +4501,157 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         return fsStoreOrderLogsScrmMapper.insertFsStoreOrderLogs(logs);
     }
 
+    @Override
+    @Transactional
+    public R dfOrderResult(String body) {
+        //先判断 取消订单/创建订单
+        DFCancelOrderResultRequest cancelParam = JSON.parseObject(body, DFCancelOrderResultRequest.class);
+        if (cancelParam.getIsCancelSuss() != null) {
+            //取消订单
+            log.info("代服管家取消订单回调,{}", JSON.toJSONString(cancelParam));
+            FsStoreOrderScrm fsStoreOrder = fsStoreOrderMapper.selectFsStoreOrderByOrderCode(cancelParam.getOrderNumber());
+            if (fsStoreOrder != null) {
+//                //1.修改订单
+//                FsStoreOrderSalesParam afterSalesParam = new FsStoreOrderSalesParam();
+//                afterSalesParam.setOrderId(fsStoreOrder.getOrderId());
+//                afterSalesParam.setReasons("代服管家取消订单");
+//                afterSalesParam.setOperator("代服管家");
+//                afterSales(afterSalesParam);
+            }
+
+        } else {
+            BspOrderResponseWrapper addParam = JSON.parseObject(body, BspOrderResponseWrapper.class);
+            if (addParam == null) {
+                return R.ok("接收成功").put("code", "ok");
+            }
+            String failMsg = addParam.getFailMsg();
+            if (com.hc.openapi.tool.util.StringUtils.isNotBlank(failMsg)) {
+                if (failMsg.equals("暂未结果, 请稍后再查")) {
+                    return R.ok("接收成功").put("code", "ok");
+                }
+                //下单失败 返回未推送状态
+                String orderNumber = addParam.getOrderNumber();
+                FsStoreOrderScrm fsStoreOrder = fsStoreOrderMapper.selectFsStoreOrderByOrderCode(orderNumber);
+                FsStoreOrderScrm tempOrder = new FsStoreOrderScrm();
+                tempOrder.setId(fsStoreOrder.getId());
+                Integer deliveryStatus = fsStoreOrder.getDeliveryStatus();
+                if (deliveryStatus == null || deliveryStatus == 0) {
+                    //没有物流信息
+                    //修改订单状态 方便后续重新发货
+                    tempOrder.setStatus(FsStoreOrderStatusEnum.STATUS_2.getValue());
+                    tempOrder.setExtendOrderId("");
+                    tempOrder.setDeliverySn("");
+                    fsStoreOrderMapper.updateFsStoreOrder(tempOrder);
+                    fsStoreOrderLogsService.create(tempOrder.getId(), OrderLogEnum.UPDATE_ORDER_DF.getValue(),
+                            "运单不存在,"+OrderLogEnum.UPDATE_ORDER_DF.getDesc());
+                } else {
+                    //有物流信息->售后处理
+                    //取消订单
+//                    FsStoreOrderSalesParam afterSalesParam = new FsStoreOrderSalesParam();
+//                    afterSalesParam.setOrderId(tempOrder.getOrderId());
+//                    afterSalesParam.setReasons("代服管家取消订单");
+//                    afterSalesParam.setOperator("代服管家");
+//                    fsStoreOrderService.afterSales(afterSalesParam);
+                    refundOrderMoney(fsStoreOrder.getId());
+                    fsStoreOrderLogsService.create(tempOrder.getId(), OrderLogEnum.REFUND_ORDER_DF.getValue(),
+                            "运单不存在,"+OrderLogEnum.REFUND_ORDER_DF.getDesc());
+                }
+                FsStoreOrderDf df = new FsStoreOrderDf();
+                df.setOrderId(tempOrder.getId());
+                df.setStatus(0); //回到默认
+                df.setUpdateTime(new Date());
+                df.setFailMsg(failMsg); //失败消息
+                fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
+                //推送失败消息
+                return R.ok("接收成功").put("code", "ok");
+            }
+            if (addParam.getBspResponse() != null) {
+                //更新物流
+                log.info("代服管家创建订单回调,{}", JSON.toJSONString(addParam));
+                List<OrderResponse> list = addParam.getBspResponse().getBody();
+                if (list != null && !list.isEmpty()) {
+                    for (OrderResponse orderResponse : list) {
+                        List<RlsInfo> rlsInfos = orderResponse.getRlsInfo();
+                        String orderNumber = orderResponse.getOrderNumber();
+                        String mailNumber = orderResponse.getMailNumber();
+                        if (rlsInfos != null && rlsInfos.size() > 0) {
+                            RlsInfo rlsInfo = rlsInfos.get(0);
+                            List<RlsDetail> rlsDetails = rlsInfo.getRlsDetail();
+                            if (rlsDetails != null && !rlsDetails.isEmpty()) {
+                                RlsDetail rlsDetail = rlsDetails.get(0);
+                                String proName = rlsDetail.getProName();
+                                if (com.hc.openapi.tool.util.StringUtils.isNotBlank(proName)) {
+                                    FsStoreOrderScrm order = fsStoreOrderMapper.selectFsStoreOrderByOrderCode(orderNumber);
+                                    if (order != null && order.getStatus() == 2) {
+                                        order.setDeliveryId(mailNumber);
+                                        order.setDeliveryName(proName);
+                                        order.setDeliveryCode("SF");
+                                        order.setStatus(OrderInfoEnum.STATUS_2.getValue());
+                                        order.setDeliverySendTime(DateUtils.getNowDate());
+                                        fsStoreOrderMapper.updateFsStoreOrder(order);
+                                        fsStoreOrderLogsService.create(order.getId(), OrderLogEnum.DELIVERY_GOODS.getValue(), OrderLogEnum.DELIVERY_GOODS.getDesc());
+                                    }
+                                    break;
+                                }
+                            }
+                        }
+                    }
+
+                }
+            }
+        }
+        return R.ok("接收成功").put("code", "ok");
+    }
+
+    @Override
+    public R receiveWaybillPush(String body) {
+        DFApiResponse dfApiResponse = JSON.parseObject(body, DFApiResponse.class);
+        Object result = dfApiResponse.getResult();
+        if (result != null) {
+
+            String jsonString = JSON.toJSONString(result);
+            log.info("ct1111111111111111111{}", jsonString);
+            com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(jsonString);
+            if (jsonObject != null) {
+                Object listObj = jsonObject.get("list");
+                String listJson = JSON.toJSONString(listObj);
+                List<DFOrderStatusResultRequest> requestList = JSON.parseArray(listJson, DFOrderStatusResultRequest.class);
+                if (requestList != null && !requestList.isEmpty()) {
+                    //0待揽收 1已揽收 2运输中 3派送中 4异常件 5退回件 6退回签收 7转寄件 8作废件 9已签收 10 已取消
+                    for (DFOrderStatusResultRequest temp : requestList) {
+                        if (temp.getStatus() == 10) {
+                            //取消订单
+                            String mailNumber = temp.getMailNumber();
+                            List<FsStoreOrderScrm> fsStoreOrders = fsStoreOrderMapper.selectFsStoreOrderListByDeliveryId(mailNumber);
+                            if (fsStoreOrders != null && !fsStoreOrders.isEmpty()) {
+                                fsStoreOrders.forEach(order -> {
+//                                    FsStoreOrderSalesParam afterSalesParam = new FsStoreOrderSalesParam();
+                                    //修改订单状态 方便后续重新发货
+                                    order.setStatus(OrderInfoEnum.STATUS_1.getValue());
+                                    order.setExtendOrderId("");
+                                    fsStoreOrderMapper.updateFsStoreOrder(order);
+//                                    afterSalesParam.setOrderId(order.getOrderId());
+//                                    afterSalesParam.setReasons("代服管家取消订单");
+//                                    afterSalesParam.setOperator("代服管家");
+//                                    afterSales(afterSalesParam);
+                                    refundOrderMoney(order.getId());
+                                    FsStoreOrderDf df = new FsStoreOrderDf();
+                                    df.setOrderId(order.getId());
+                                    df.setStatus(2);
+                                    df.setUpdateTime(new Date());
+                                    fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
+                                    fsStoreOrderLogsService.create(order.getId(), OrderLogEnum.REFUND_ORDER_DF.getValue(),
+                                            OrderLogEnum.REFUND_ORDER_DF.getDesc());
+                                });
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
     private static final DateTimeFormatter CST_FORMATTER = DateTimeFormatter
             .ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US)
             .withZone(ZoneId.of("Asia/Shanghai"));

+ 13 - 0
fs-service/src/main/java/com/fs/huifuPay/sdk/opps/core/utils/HuiFuUtils.java

@@ -155,4 +155,17 @@ public class HuiFuUtils {
             companyDivItemService.insertCompanyDivItem(companyDivItem);
         }
     }
+
+    /**
+     * 回调修改分账明细状态
+     * @param payCode
+     */
+    public static void updateDivItem(String payCode) {
+        //修改分账状态
+        CompanyDivItem companyDivItem = companyDivItemService.selectCompanyDivItemByPayCode(payCode);
+        if (companyDivItem != null) {
+            companyDivItem.setIsPay(1);
+            companyDivItemService.updateCompanyDivItem(companyDivItem);
+        }
+    }
 }

+ 9 - 17
fs-user-app/src/main/java/com/fs/app/controller/HuifuPayController.java

@@ -10,6 +10,7 @@ import com.fs.his.service.*;
 import com.fs.huifuPay.domain.HuiFuOnlinePay;
 import com.fs.huifuPay.domain.HuiFuOnlineRefund;
 import com.fs.huifuPay.domain.HuiFuResult;
+import com.fs.huifuPay.sdk.opps.core.utils.HuiFuUtils;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -50,7 +51,7 @@ public class HuifuPayController {
                 case "inquiry":
                     inquiryOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     try {
-                        updateDivItem(orderId[1]);
+                        HuiFuUtils.updateDivItem(orderId[1]);
                     } catch (Exception e) {
                         logger.error("-------分账明细回调错误{}", e.getMessage());
                     }
@@ -58,7 +59,7 @@ public class HuifuPayController {
                 case "store":
                     storeOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     try {
-                        updateDivItem(orderId[1]);
+                        HuiFuUtils.updateDivItem(orderId[1]);
                     } catch (Exception e) {
                         logger.error("-------分账明细回调错误{}", e.getMessage());
                     }
@@ -66,7 +67,7 @@ public class HuifuPayController {
                 case "package":
                     packageOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     try {
-                        updateDivItem(orderId[1]);
+                        HuiFuUtils.updateDivItem(orderId[1]);
                     } catch (Exception e) {
                         logger.error("-------分账明细回调错误{}", e.getMessage());
                     }
@@ -74,7 +75,7 @@ public class HuifuPayController {
                 case "course":
                     courseOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     try {
-                        updateDivItem(orderId[1]);
+                        HuiFuUtils.updateDivItem(orderId[1]);
                     } catch (Exception e) {
                         logger.error("-------分账明细回调错误{}", e.getMessage());
                     }
@@ -82,7 +83,7 @@ public class HuifuPayController {
                 case "appvip":
                     vipOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     try {
-                        updateDivItem(orderId[1]);
+                        HuiFuUtils.updateDivItem(orderId[1]);
                     } catch (Exception e) {
                         logger.error("-------分账明细回调错误{}", e.getMessage());
                     }
@@ -90,7 +91,7 @@ public class HuifuPayController {
                 case "integral":
                     integralOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     try {
-                        updateDivItem(orderId[1]);
+                        HuiFuUtils.updateDivItem(orderId[1]);
                     } catch (Exception e) {
                         logger.error("-------分账明细回调错误{}", e.getMessage());
                     }
@@ -98,7 +99,7 @@ public class HuifuPayController {
                 case "product":
                     courseProductOrderService.payConfirm("",orderId[1],huiFuResult.getHf_seq_id(),"",1,huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     try {
-                        updateDivItem(orderId[1]);
+                        HuiFuUtils.updateDivItem(orderId[1]);
                     } catch (Exception e) {
                         logger.error("-------分账明细回调错误{}", e.getMessage());
                     }
@@ -106,7 +107,7 @@ public class HuifuPayController {
                 case "payment":
                     storePaymentService.payConfirm(orderId[1],huiFuResult.getHf_seq_id(),huiFuResult.getOut_trans_id(),huiFuResult.getParty_order_id());
                     try {
-                        updateDivItem(orderId[1]);
+                        HuiFuUtils.updateDivItem(orderId[1]);
                     } catch (Exception e) {
                         logger.error("-------分账明细回调错误{}", e.getMessage());
                     }
@@ -117,15 +118,6 @@ public class HuifuPayController {
         return "ok";
     }
 
-    private void updateDivItem(String payCode) {
-        //修改分账状态
-        CompanyDivItem companyDivItem = companyDivItemService.selectCompanyDivItemByPayCode(payCode);
-        if (companyDivItem != null) {
-            companyDivItem.setIsPay(1);
-            companyDivItemService.updateCompanyDivItem(companyDivItem);
-        }
-    }
-
 
     @RequestMapping("/payOnlineNotifyUrl")
     public String asyncHuFuOnlinePay(@RequestParam String resp_desc,@RequestParam String resp_code,@RequestParam String sign,@RequestParam String resp_data) {

+ 16 - 0
fs-user-app/src/main/java/com/fs/app/controller/store/PayScrmController.java

@@ -10,6 +10,7 @@ import com.fs.company.service.ICompanyUserService;
 import com.fs.erp.service.IErpOrderService;
 import com.fs.hisStore.service.*;
 import com.fs.huifuPay.domain.HuiFuResult;
+import com.fs.huifuPay.sdk.opps.core.utils.HuiFuUtils;
 import com.fs.ybPay.domain.OrderCallback;
 import com.fs.ybPay.domain.OrderResult;
 import com.fs.pay.pay.dto.OrderQueryDTO;
@@ -77,10 +78,25 @@ public class PayScrmController {
             String[] order=o.getReq_seq_id().split("-");
             switch (order[0]) {
                 case "store":
+                    try {
+                        HuiFuUtils.updateDivItem(order[1]);
+                    } catch (Exception e) {
+                        logger.error("-------分账明细回调错误{}", e.getMessage());
+                    }
                     return orderService.payConfirm(1,null,order[1], o.getHf_seq_id(),o.getOut_trans_id(),o.getParty_order_id());
                 case "store_remain":
+                    try {
+                        HuiFuUtils.updateDivItem(order[1]);
+                    } catch (Exception e) {
+                        logger.error("-------分账明细回调错误{}", e.getMessage());
+                    }
                     return orderService.payRemainConfirm( order[1], o.getHf_seq_id(),o.getOut_trans_id(),o.getParty_order_id());
                 case "payment":
+                    try {
+                        HuiFuUtils.updateDivItem(order[1]);
+                    } catch (Exception e) {
+                        logger.error("-------分账明细回调错误{}", e.getMessage());
+                    }
                     return storePaymentService.payConfirm(order[1],o.getHf_seq_id(),o.getOut_trans_id(),o.getParty_order_id());
             }