zyp vor 17 Stunden
Ursprung
Commit
b042c11176

+ 71 - 0
fs-admin/src/main/java/com/fs/task/ErpTask.java

@@ -0,0 +1,71 @@
+package com.fs.task;
+
+import com.fs.erp.domain.ErpOrder;
+import com.fs.erp.domain.FsErpFinishPush;
+import com.fs.erp.dto.ErpOrderResponse;
+import com.fs.erp.mapper.FsErpFinishPushMapper;
+import com.fs.erp.service.IErpOrderService;
+import com.fs.store.domain.FsStoreOrder;
+import com.fs.store.service.IFsStoreOrderService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.exception.ExceptionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+@Service("erpTask")
+@Slf4j
+public class ErpTask {
+
+    @Autowired
+    private FsErpFinishPushMapper fsErpFinishPushMapper;
+    @Autowired
+    private IErpOrderService erpOrderService;
+
+    @Autowired
+    private IFsStoreOrderService fsStoreOrderService;
+
+
+    /**
+     * 推送完成订单到ERP
+     */
+    public void pushFinishOrderToErp(){
+        List<FsErpFinishPush> fsErpFinishPushes = fsErpFinishPushMapper.queryPenddingOrder();
+        for (FsErpFinishPush fsErpFinishPush : fsErpFinishPushes) {
+            FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderById(fsErpFinishPush.getOrderId());
+
+            try {
+
+                ErpOrder erpOrder = fsStoreOrderService.getErpOrder(fsStoreOrder);
+
+                ErpOrderResponse erpOrderResponse = erpOrderService.finishOrder(erpOrder);
+
+                fsErpFinishPush.setParams(erpOrderResponse.getRequestRawData());
+                fsErpFinishPush.setResult(erpOrderResponse.getResponseRawData());
+                fsErpFinishPush.setUpdateTime(new Date());
+
+                if(erpOrderResponse.getSuccess()!= null && erpOrderResponse.getSuccess()){
+                    fsErpFinishPush.setTaskStatus(1);
+
+                    log.error("推送完成订单到ERP成功! 订单号: {}",fsErpFinishPush.getOrderId());
+                } else {
+                    fsErpFinishPush.setTaskStatus(2);
+                    fsErpFinishPush.setRetryCount(fsErpFinishPush.getRetryCount()+1);
+                    log.error("推送完成订单到ERP失败! 订单号: {}",fsErpFinishPush.getOrderId());
+                }
+            } catch (Throwable e) {
+                fsErpFinishPush.setRetryCount(fsErpFinishPush.getRetryCount()+1);
+                fsErpFinishPush.setErrorMessage(ExceptionUtils.getStackTrace(e));
+                fsErpFinishPush.setTaskStatus(2);
+                log.error("订单推送失败!原因: {}", ExceptionUtils.getStackTrace(e),e);
+            }
+
+
+            fsErpFinishPushMapper.updateById(fsErpFinishPush);
+        }
+
+    }
+
+}

+ 16 - 0
fs-company/src/main/java/com/fs/store/controller/FsStoreOrderController.java

@@ -37,6 +37,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
 import java.util.List;
 
 /**
@@ -412,4 +413,19 @@ public class FsStoreOrderController extends BaseController
         fsStoreOrderService.uploadCredentials(order);
         return R.ok();
     }
+
+    @Log(title = "修改地址", businessType = BusinessType.UPDATE)
+    @PreAuthorize("@ss.hasPermi('store:storeOrder:editAddress')")
+    @PostMapping("/editAddress")
+    public R editAddress(@RequestBody FsStoreOrder order) throws ParseException
+    {
+        FsStoreOrder storeOrder = fsStoreOrderService.selectFsStoreOrderById(order.getId());
+
+        int a = fsStoreOrderService.updateFsStoreOrder(order);
+        if (storeOrder.getExtendOrderId()!=null && a>0){
+            fsStoreOrderService.createOmsOrder(storeOrder.getId());
+        }
+
+        return R.ok();
+    }
 }

+ 2 - 1
fs-service-system/src/main/java/com/fs/erp/dto/ErpOrderResponse.java

@@ -7,6 +7,7 @@ import java.util.List;
 
 @Data
 public class ErpOrderResponse extends BaseResponse {
-
+    private String requestRawData;
+    private String responseRawData;
 
 }

+ 100 - 0
fs-service-system/src/main/java/com/fs/erp/mapper/FsErpFinishPushMapper.java

@@ -0,0 +1,100 @@
+package com.fs.erp.mapper;
+
+import com.fs.erp.domain.FsErpFinishPush;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+/**
+ * erp订单完成状态推送 Mapper 接口
+ *
+ * @author AutoGenerated
+ * @date CurrentDateTime // 这里通常会是生成日期
+ */
+@Mapper
+public interface FsErpFinishPushMapper {
+
+    /**
+     * 根据主键查询
+     *
+     * @param id 主键
+     * @return FsErpFinishPush 实体对象
+     */
+    @Select("SELECT id, order_id, task_status, retry_count, last_execute_time, create_time, update_time, params, result, error_message FROM fs_erp_finish_push WHERE id = #{id}")
+    FsErpFinishPush selectById(Long id);
+
+    /**
+     * 根据订单号查询
+     *
+     * @param orderId 订单号
+     * @return FsErpFinishPush 实体对象
+     */
+    @Select("SELECT id, order_id, task_status, retry_count, last_execute_time, create_time, update_time, params, result, error_message FROM fs_erp_finish_push WHERE order_id = #{orderId}")
+    FsErpFinishPush selectByOrderId(String orderId);
+
+    /**
+     * 插入记录
+     *
+     * @param push 实体对象
+     * @return 影响行数
+     */
+    @Insert("INSERT INTO fs_erp_finish_push (order_id, task_status, retry_count, last_execute_time, params, result, error_message) " +
+            "VALUES(#{orderId}, #{taskStatus}, #{retryCount}, #{lastExecuteTime}, #{params}, #{result}, #{errorMessage})")
+    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") // 获取自增主键
+    int insert(FsErpFinishPush push);
+
+    /**
+     * 根据主键更新记录 (更新所有字段,除了创建时间)
+     *
+     * @param push 实体对象
+     * @return 影响行数
+     */
+    @Update("UPDATE fs_erp_finish_push SET " +
+            "order_id = #{orderId}, " +
+            "task_status = #{taskStatus}, " +
+            "retry_count = #{retryCount}, " +
+            "last_execute_time = #{lastExecuteTime}, " +
+            // update_time 会自动更新, create_time 一般不更新
+            "params = #{params}, " +
+            "result = #{result}, " +
+            "error_message = #{errorMessage} " +
+            "WHERE id = #{id}")
+    int updateById(FsErpFinishPush push);
+
+    /**
+     * 根据状态和重试次数查询 (示例)
+     *
+     * @param taskStatus 任务状态
+     * @param maxRetryCount 最大重试次数 (查询小于该值的记录)
+     * @return FsErpFinishPush 实体对象列表
+     */
+    @Select("SELECT id, order_id, task_status, retry_count, last_execute_time, create_time, update_time, params, result, error_message FROM fs_erp_finish_push WHERE task_status = #{taskStatus} AND retry_count < #{maxRetryCount}")
+    List<FsErpFinishPush> selectByStatusAndRetryCount(@Param("taskStatus") Integer taskStatus, @Param("maxRetryCount") Integer maxRetryCount);
+
+
+    /**
+     * 查询所有待处理的订单
+     *
+     * @return FsErpFinishPush 实体对象列表
+     */
+    @Select("select * from fs_erp_finish_push where task_status in (0,2) and retry_count<3")
+    List<FsErpFinishPush> queryPenddingOrder();
+
+    @Update("<script> " +
+            " <foreach collection=\"list\" item=\"item\" separator=\";\"> " +
+            "            UPDATE fs_erp_finish_push " +
+            "            SET " +
+            "                order_id = #{item.orderId}, " +
+            "                task_status = #{item.taskStatus}, " +
+            "                retry_count = #{item.retryCount}, " +
+            "                last_execute_time = #{item.lastExecuteTime}, " +
+            "                params = #{item.params}, " +
+            "                result = #{item.result}, " +
+            "                error_message = #{item.errorMessage}, " +
+            "                update_time = NOW() " +
+            "            WHERE " +
+            "                id = #{item.id} " +
+            "        </foreach>" +
+            "</script>")
+    void batchUpdate(List<FsErpFinishPush> fsErpFinishPushes);
+}

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

@@ -9,10 +9,22 @@ public interface IErpOrderService
 {
 
     ErpOrderResponse addOrder(ErpOrder order);
+
     //用户发起退款,然后后台审核通过后,提交退款单
     ErpOrderResponse refundOrder(ErpRefundOrder order);
+
     ErpDeliverysResponse getDeliver(ErpDeliverysRequest param);
+
     ErpOrderQueryResponse getOrder(ErpOrderQueryRequert param);
+
     BaseResponse refundUpdate(ErpRefundUpdateRequest param);
+
+    /**
+     * erp订单确认收货
+     *
+     * @param order 订单
+     * @return 确定
+     */
+    ErpOrderResponse finishOrder(ErpOrder order);
 }
 

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

@@ -129,4 +129,9 @@ public class ErpOrderServiceImpl implements IErpOrderService
         ErpOrderResponse response=JSONUtil.toBean(result, ErpOrderResponse.class);
         return response;
     }
+
+    @Override
+    public ErpOrderResponse finishOrder(ErpOrder order) {
+        return null;
+    }
 }

+ 6 - 0
fs-service-system/src/main/java/com/fs/erp/service/impl/K9OrderServiceImpl.java

@@ -403,4 +403,10 @@ public class K9OrderServiceImpl implements IErpOrderService {
         KingbosOrderResponse response = JSONUtil.toBean(result, KingbosOrderResponse.class);
         return response;
     }
+
+
+    @Override
+    public ErpOrderResponse finishOrder(ErpOrder order) {
+        return null;
+    }
 }

+ 560 - 38
fs-service-system/src/main/java/com/fs/erp/service/impl/WdtErpOrderServiceImpl.java

@@ -10,15 +10,13 @@ import com.alibaba.fastjson.serializer.SerializeConfig;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fs.erp.converter.ErpWdtToErpOrderMapper;
 import com.fs.erp.domain.ErpOrder;
+import com.fs.erp.domain.ErpOrderQuery;
 import com.fs.erp.domain.ErpRefundOrder;
 import com.fs.erp.dto.*;
 import com.fs.erp.dto.sdk.wangdian.api.WdtClient;
 import com.fs.erp.dto.sdk.wangdian.enums.*;
 import com.fs.erp.dto.wdt.*;
 import com.fs.erp.service.IErpOrderService;
-import com.fs.his.config.FsErpConfig;
-import com.fs.his.config.FsSysConfig;
-import com.fs.his.utils.ConfigUtil;
 import com.fs.store.domain.FsStoreOrder;
 import com.fs.store.domain.FsStoreProduct;
 import com.fs.store.service.IFsStoreOrderItemService;
@@ -56,11 +54,11 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
     @Autowired
     private IFsStoreProductService fsStoreProductService;
 
-//    @Value("${fsConfig.erpWdShopCode}")
-//    private String shopCode;
+    @Value("${fsConfig.erpWdShopCode}")
+    private String shopCode;
 
     @Autowired
-    ConfigUtil configUtil;
+    private WdtClient client;
 
     /**
      * 普通推送
@@ -72,20 +70,369 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
     private static final Integer REFUND_TYPE = 2;
     @Override
     public ErpOrderResponse addOrder(ErpOrder order) {
-        return getErpOrderResponse(order,NORMAL_TYPE);
+//        if(order.getIsPackage()!=null && order.getIsPackage() == 1){
+//            return getErpPackageOrderResponse(order);
+//        }
+        return getErpOrderResponse(order);
     }
 
     /**
-     *
+     * 获取erp推送参数
      * @param order 订单参数
-     * @param type 1正常 2退款
      * @return
      */
-    private ErpOrderResponse getErpOrderResponse(ErpOrder order,Integer type) {
-        FsErpConfig erpConfig = configUtil.getErpConfig();
-        String shopCode = erpConfig.getErpWdShopCode();
+    private ErpOrderResponse getErpOrderResponse(ErpOrder order) {
+        //测试环境sid、appkey、密钥请到旺店通开放平台-自助对接-申请测试环境内查看,测试环境url=https://sandbox.wangdian.cn/openapi2/
+        //调用正式环境时请将sid、appkey、appsecret切换为实际参数,参数在旺店通开放平台-自助对接-应用管理内应用状态为已上线的应用中查看,调用正式环境注意切换正式环境url=https://api.wangdian.cn/openapi2/
+
+        ErpWdtBusinessRequestParams erpWdtBusinessRequestParams = new ErpWdtBusinessRequestParams();
+        erpWdtBusinessRequestParams.setShopNo(shopCode);
+        erpWdtBusinessRequestParams.setSwitchMode(0);
+        ErpWdtTrade erpWdtTrade = new ErpWdtTrade();
+        FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
+        BigDecimal couponPrice = fsStoreOrder.getCouponPrice();
 
-        WdtClient client = WdtClient.getInstance();
+        // 平台状态
+        erpWdtTrade.setTradeStatus(TradeStatus.PAID_WAITING_FOR_SHIPMENT.getValue());
+
+        // 订单id
+        erpWdtTrade.setTid(order.getPlatform_code());
+
+
+        // 如果是货到付款
+        if("2".equals(fsStoreOrder.getPayType())){
+            // 支付状态
+            erpWdtTrade.setPayStatus(PaymentStatus.PARTIALLY_PAID.getValue());
+            // 发货条件
+            erpWdtTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
+            // 货到付款金额 = 物流代收金额-优惠金额
+            erpWdtTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
+
+        } else if("3".equals(fsStoreOrder.getPayType())){
+            // 支付状态
+            erpWdtTrade.setPayStatus(PaymentStatus.UNPAID.getValue());
+            // 发货条件
+            erpWdtTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
+            // 货到付款金额 = 物流代收金额-优惠金额
+            erpWdtTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
+        } else { // 如果是线上付款
+            // 支付状态
+            erpWdtTrade.setPayStatus(PaymentStatus.FULLY_PAID.getValue());
+            // 发货条件
+            erpWdtTrade.setDeliveryTerm(DeliveryTerm.PAYMENT_BEFORE_DELIVERY.getValue());
+        }
+
+        // 下单时间
+        erpWdtTrade.setTradeTime(order.getDeal_datetime());
+        // 支付时间
+        erpWdtTrade.setPayTime(order.getDeal_datetime());
+        // 分销类别
+        erpWdtTrade.setFenxiaoType(FenxiaoType.JINGXIAO.getValue());
+        // 客户网名
+        erpWdtTrade.setBuyerNick(order.getReceiver_name());
+        // 收件人姓名
+        erpWdtTrade.setReceiverName(order.getReceiver_name());
+        // 省份
+        erpWdtTrade.setReceiverProvince(order.getReceiver_province());
+        // 市
+        erpWdtTrade.setReceiverCity(order.getReceiver_city());
+        // 区
+        erpWdtTrade.setReceiverDistrict(order.getReceiver_district());
+        // 详细地址
+        erpWdtTrade.setReceiverAddress(order.getReceiver_address());
+        // 手机
+        erpWdtTrade.setReceiverMobile(order.getReceiver_mobile());
+        // 固定电话
+        erpWdtTrade.setReceiverTelno(order.getReceiver_mobile());
+        // 买家备注
+        erpWdtTrade.setBuyerMessage(order.getBuyer_memo());
+        // 卖家备注
+        erpWdtTrade.setSellerMemo(order.getSeller_memo());
+        erpWdtTrade.setWarehouseNo(order.getWarehouse_code());
+
+        // 运费金额
+        erpWdtTrade.setPostAmount(fsStoreOrder.getFreightPrice());
+        // 已付金额
+        if(ObjectUtils.isNotNull(fsStoreOrder)){
+            erpWdtTrade.setPaid(fsStoreOrder.getPayMoney());
+        }
+
+        List<FsStoreOrderItemVO> fsStoreOrderItemVOS = fsStoreOrderItemService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
+        List<ErpWdtOrder> erpWdtOrderList = new ArrayList<>();
+        // 商品总价
+        BigDecimal totalPrice = fsStoreOrder.getTotalPrice();
+
+        // 总折扣金额 = 优惠券金额 + 折扣金额
+        BigDecimal totalDiscountPrice = BigDecimal.ZERO;
+        // 折扣金额
+        BigDecimal discountPrice = totalPrice.subtract(fsStoreOrder.getPayPrice());
+        totalDiscountPrice = couponPrice.add(discountPrice);
+
+        // 防止除零错误
+        if (totalPrice.compareTo(BigDecimal.ZERO) == 0) {
+            totalPrice = BigDecimal.ONE;
+        }
+
+        for (FsStoreOrderItemVO fsStoreOrderItem : fsStoreOrderItemVOS) {
+            ErpWdtOrder erpWdtOrder = new ErpWdtOrder();
+            //平台订单货品表主键
+            erpWdtOrder.setOid(String.format("%s%s",fsStoreOrderItem.getOrderCode(),fsStoreOrderItem.getItemId()));
+            erpWdtOrder.setNum(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+            FsStoreProduct fsStoreProduct = fsStoreProductService.selectFsStoreProductById(fsStoreOrderItem.getProductId());
+            Asserts.check(ObjectUtils.isNotNull(fsStoreProduct),"该产品不存在! 产品id: {} ",fsStoreOrderItem.getProductId());
+            // 单价
+            erpWdtOrder.setPrice(fsStoreProduct.getPrice());
+            // 状态
+            erpWdtOrder.setStatus(TradeStatus.SHIPPED.getValue());
+            // 退款状态
+            erpWdtOrder.setRefundStatus(RefundStatus.NO_REFUND.getValue());
+
+            // 平台货品ID
+            erpWdtOrder.setGoodsId(String.valueOf(fsStoreProduct.getProductId()));
+            JSONObject jsonObject = JSON.parseObject(fsStoreOrderItem.getJsonInfo());
+            erpWdtOrder.setSpecId(jsonObject.getString("sku"));
+            erpWdtOrder.setGoodsNo(jsonObject.getString("barCode"));
+            erpWdtOrder.setSpecNo(jsonObject.getString("sku"));
+            // 货品名称
+            erpWdtOrder.setGoodsName(fsStoreProduct.getProductName());
+            // 调整
+            erpWdtOrder.setAdjustAmount(BigDecimal.ZERO);
+            // 优惠
+            erpWdtOrder.setDiscount(BigDecimal.ZERO);
+            // 分摊优惠
+            // 分摊比例
+            BigDecimal price = fsStoreProduct.getPrice().multiply(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+            BigDecimal divide = price.divide(totalPrice, RoundingMode.HALF_UP);
+            erpWdtOrder.setShareDiscount(divide.multiply(totalDiscountPrice));
+
+            erpWdtOrderList.add(erpWdtOrder);
+        }
+
+        // 最后一个商品的分摊优惠等于总优惠减去前面分摊优惠之和
+        Asserts.check(CollectionUtils.isNotEmpty(erpWdtOrderList),"订单 {} 商品不能为空!", order.getPlatform_code());
+        long size = erpWdtOrderList.size();
+        if(size > 1) {
+            ErpWdtOrder erpWdtOrder = erpWdtOrderList.get(erpWdtOrderList.size() - 1);
+            erpWdtOrder.setShareDiscount(totalDiscountPrice.subtract(erpWdtOrderList.stream()
+                    .limit(size - 1L)
+                    .map(item -> Optional.ofNullable(item.getShareDiscount()).orElse(BigDecimal.ZERO))
+                    .reduce(BigDecimal.ZERO, BigDecimal::add)));
+        }
+
+        erpWdtTrade.setOrderList(erpWdtOrderList);
+        erpWdtBusinessRequestParams.setTradeList(new ArrayList<>(Arrays.asList(erpWdtTrade)));
+
+        Map<String,String> map = new HashMap<>();
+        map.put("shop_no",erpWdtBusinessRequestParams.getShopNo());
+        map.put("switch_mode", String.valueOf(erpWdtBusinessRequestParams.getSwitchMode()));
+        map.put("trade_list", convertToSnakeCase(erpWdtBusinessRequestParams.getTradeList()));
+
+
+        try {
+            String response = client.execute("trade_push.php", map);
+            ParserConfig config = new ParserConfig();
+            config.propertyNamingStrategy = PropertyNamingStrategy.CamelCase;
+            ErpWdtApiResponse erpWdtApiResponse = JSON.parseObject(response, ErpWdtApiResponse.class,config);
+            if(ObjectUtil.equal(0,erpWdtApiResponse.getCode())){
+                log.info("订单推送成功: {}", response);
+                ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
+                erpOrderResponse.setCode(order.getPlatform_code());
+                erpOrderResponse.setSuccess(true);
+                erpOrderResponse.setRequestRawData(JSON.toJSONString(map));
+                erpOrderResponse.setResponseRawData(response);
+                return erpOrderResponse;
+            } else {
+                throw new RuntimeException(String.format("订单推送失败,原因: %s",erpWdtApiResponse.getMessage()));
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return new ErpOrderResponse();
+    }
+
+    /**
+     * 获取erp推送参数
+     * @param order 订单参数
+     * @return
+     */
+//    private ErpOrderResponse getErpOrderResponse(ErpOrder order) {
+//        //测试环境sid、appkey、密钥请到旺店通开放平台-自助对接-申请测试环境内查看,测试环境url=https://sandbox.wangdian.cn/openapi2/
+//        //调用正式环境时请将sid、appkey、appsecret切换为实际参数,参数在旺店通开放平台-自助对接-应用管理内应用状态为已上线的应用中查看,调用正式环境注意切换正式环境url=https://api.wangdian.cn/openapi2/
+//
+//        ErpWdtBusinessRequestParams erpWdtBusinessRequestParams = new ErpWdtBusinessRequestParams();
+//        erpWdtBusinessRequestParams.setShopNo(shopCode);
+//        erpWdtBusinessRequestParams.setSwitchMode(0);
+//        ErpWdtTrade erpWdtTrade = new ErpWdtTrade();
+//        FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
+//        BigDecimal couponPrice = fsStoreOrder.getCouponPrice();
+//
+//        // 平台状态
+//        erpWdtTrade.setTradeStatus(TradeStatus.PAID_WAITING_FOR_SHIPMENT.getValue());
+//
+//        // 订单id
+//        erpWdtTrade.setTid(order.getPlatform_code());
+//
+//
+//        // 如果是货到付款
+//        if("2".equals(fsStoreOrder.getPayType())){
+//            // 支付状态
+//            erpWdtTrade.setPayStatus(PaymentStatus.PARTIALLY_PAID.getValue());
+//            // 发货条件
+//            erpWdtTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
+//            // 货到付款金额 = 物流代收金额-优惠金额
+//            erpWdtTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
+//
+//        } else if("3".equals(fsStoreOrder.getPayType())){
+//            // 支付状态
+//            erpWdtTrade.setPayStatus(PaymentStatus.UNPAID.getValue());
+//            // 发货条件
+//            erpWdtTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
+//            // 货到付款金额 = 物流代收金额-优惠金额
+//            erpWdtTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
+//        } else { // 如果是线上付款
+//            // 支付状态
+//            erpWdtTrade.setPayStatus(PaymentStatus.FULLY_PAID.getValue());
+//            // 发货条件
+//            erpWdtTrade.setDeliveryTerm(DeliveryTerm.PAYMENT_BEFORE_DELIVERY.getValue());
+//        }
+//
+//        // 下单时间
+//        erpWdtTrade.setTradeTime(order.getDeal_datetime());
+//        // 支付时间
+//        erpWdtTrade.setPayTime(order.getDeal_datetime());
+//        // 分销类别
+//        erpWdtTrade.setFenxiaoType(FenxiaoType.JINGXIAO.getValue());
+//        // 客户网名
+//        erpWdtTrade.setBuyerNick(order.getReceiver_name());
+//        // 收件人姓名
+//        erpWdtTrade.setReceiverName(order.getReceiver_name());
+//        // 省份
+//        erpWdtTrade.setReceiverProvince(order.getReceiver_province());
+//        // 市
+//        erpWdtTrade.setReceiverCity(order.getReceiver_city());
+//        // 区
+//        erpWdtTrade.setReceiverDistrict(order.getReceiver_district());
+//        // 详细地址
+//        erpWdtTrade.setReceiverAddress(order.getReceiver_address());
+//        // 手机
+//        erpWdtTrade.setReceiverMobile(order.getReceiver_mobile());
+//        // 固定电话
+//        erpWdtTrade.setReceiverTelno(order.getReceiver_mobile());
+//        // 买家备注
+//        erpWdtTrade.setBuyerMessage(order.getBuyer_memo());
+//        // 卖家备注
+//        erpWdtTrade.setSellerMemo(order.getSeller_memo());
+//        erpWdtTrade.setWarehouseNo(order.getWarehouse_code());
+//
+//
+//        // 运费金额
+//        erpWdtTrade.setPostAmount(fsStoreOrder.getFreightPrice());
+//        // 已付金额
+//        if(ObjectUtils.isNotNull(fsStoreOrder)){
+//            erpWdtTrade.setPaid(fsStoreOrder.getPayMoney());
+//        }
+//
+//        List<FsStoreOrderItemVO> fsStoreOrderItemVOS = fsStoreOrderItemService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
+//        List<ErpWdtOrder> erpWdtOrderList = new ArrayList<>();
+//        // 商品总价
+//        BigDecimal totalPrice = fsStoreOrder.getTotalPrice();
+//
+//        // 优惠券金额
+//        if (fsStoreOrder.getCouponPrice().compareTo(BigDecimal.ZERO) == 0
+//                && fsStoreOrder.getTotalPrice().compareTo(fsStoreOrder.getPayMoney()) > 0) {
+//            BigDecimal payDelivery = fsStoreOrder.getPayDelivery();
+//            BigDecimal payMoney = fsStoreOrder.getPayMoney();
+//            if(ObjectUtil.isNull(payDelivery)){
+//                payDelivery = BigDecimal.ZERO;
+//            }
+//            if(ObjectUtil.isNull(payMoney)){
+//                payMoney = BigDecimal.ZERO;
+//            }
+//            couponPrice = totalPrice.subtract(payMoney)
+//                    .subtract(payDelivery);
+//        }
+//
+//
+//        for (FsStoreOrderItemVO fsStoreOrderItem : fsStoreOrderItemVOS) {
+//            ErpWdtOrder erpWdtOrder = new ErpWdtOrder();
+//            //平台订单货品表主键
+//            erpWdtOrder.setOid(String.format("%s%s",fsStoreOrderItem.getOrderCode(),fsStoreOrderItem.getItemId()));
+//            erpWdtOrder.setNum(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+//            FsStoreProduct fsStoreProduct = fsStoreProductService.selectFsStoreProductById(fsStoreOrderItem.getProductId());
+//            Asserts.check(ObjectUtils.isNotNull(fsStoreProduct),"该产品不存在! 产品id: {} ",fsStoreOrderItem.getProductId());
+//            // 单价
+//            erpWdtOrder.setPrice(fsStoreProduct.getPrice());
+//            // 状态
+//            erpWdtOrder.setStatus(TradeStatus.SHIPPED.getValue());
+//            // 退款状态
+//            erpWdtOrder.setRefundStatus(RefundStatus.NO_REFUND.getValue());
+//
+//            // 平台货品ID
+//            erpWdtOrder.setGoodsId(String.valueOf(fsStoreProduct.getProductId()));
+//            JSONObject jsonObject = JSON.parseObject(fsStoreOrderItem.getJsonInfo());
+//            erpWdtOrder.setSpecId(jsonObject.getString("sku"));
+//            erpWdtOrder.setGoodsNo(jsonObject.getString("barCode"));
+//            erpWdtOrder.setSpecNo(jsonObject.getString("sku"));
+//            // 货品名称
+//            erpWdtOrder.setGoodsName(fsStoreProduct.getProductName());
+//            // 调整
+//            erpWdtOrder.setAdjustAmount(BigDecimal.ZERO);
+//            // 优惠
+//            erpWdtOrder.setDiscount(BigDecimal.ZERO);
+//            // 分摊优惠
+//            // 分摊比例
+//            BigDecimal price = fsStoreProduct.getPrice().multiply(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+//            BigDecimal divide = price.divide(totalPrice, RoundingMode.HALF_UP);
+//            erpWdtOrder.setShareDiscount(divide.multiply(couponPrice));
+//
+//            erpWdtOrderList.add(erpWdtOrder);
+//        }
+//
+//        // 最后一个商品的分摊优惠等于总优惠减去前面分摊优惠之和
+//        Asserts.check(CollectionUtils.isNotEmpty(erpWdtOrderList),"订单 {} 商品不能为空!", order.getPlatform_code());
+//        long size = erpWdtOrderList.size();
+//        if(size > 1) {
+//            ErpWdtOrder erpWdtOrder = erpWdtOrderList.get(erpWdtOrderList.size() - 1);
+//            erpWdtOrder.setShareDiscount(couponPrice.subtract(erpWdtOrderList.stream()
+//                            .limit(size - 1L)
+//                    .map(item -> Optional.ofNullable(item.getShareDiscount()).orElse(BigDecimal.ZERO))
+//                    .reduce(BigDecimal.ZERO, BigDecimal::add)));
+//        }
+//
+//        erpWdtTrade.setOrderList(erpWdtOrderList);
+//        erpWdtBusinessRequestParams.setTradeList(new ArrayList<>(Arrays.asList(erpWdtTrade)));
+//
+//        Map<String,String> map = new HashMap<>();
+//        map.put("shop_no",erpWdtBusinessRequestParams.getShopNo());
+//        map.put("switch_mode", String.valueOf(erpWdtBusinessRequestParams.getSwitchMode()));
+//        map.put("trade_list", convertToSnakeCase(erpWdtBusinessRequestParams.getTradeList()));
+//
+//
+//        try {
+//            String response = client.execute("trade_push.php", map);
+//            ParserConfig config = new ParserConfig();
+//            config.propertyNamingStrategy = PropertyNamingStrategy.CamelCase;
+//            ErpWdtApiResponse erpWdtApiResponse = JSON.parseObject(response, ErpWdtApiResponse.class,config);
+//            if(ObjectUtil.equal(0,erpWdtApiResponse.getCode())){
+//                log.info("订单推送成功: {}", response);
+//                ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
+//                erpOrderResponse.setCode(order.getPlatform_code());
+//                return erpOrderResponse;
+//            } else {
+//                throw new RuntimeException(String.format("订单推送失败,原因: %s",erpWdtApiResponse.getMessage()));
+//            }
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
+//        return new ErpOrderResponse();
+//    }
+
+    /**
+     * 获取erp退款参数
+     * @param order 订单参数
+     * @return
+     */
+    private ErpOrderResponse getErpOrderRefundResponse(ErpOrder order) {
         //测试环境sid、appkey、密钥请到旺店通开放平台-自助对接-申请测试环境内查看,测试环境url=https://sandbox.wangdian.cn/openapi2/
         //调用正式环境时请将sid、appkey、appsecret切换为实际参数,参数在旺店通开放平台-自助对接-应用管理内应用状态为已上线的应用中查看,调用正式环境注意切换正式环境url=https://api.wangdian.cn/openapi2/
 
@@ -97,11 +444,7 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
         // 订单id
         erpWdtTrade.setTid(order.getPlatform_code());
         // 平台状态
-        if(Objects.equals(type, NORMAL_TYPE)){
-            erpWdtTrade.setTradeStatus(TradeStatus.PAID_WAITING_FOR_SHIPMENT.getValue());
-        }else if(Objects.equals(type, REFUND_TYPE)){
-            erpWdtTrade.setTradeStatus(TradeStatus.REFUNDED.getValue());
-        }
+        erpWdtTrade.setTradeStatus(TradeStatus.REFUNDED.getValue());
 
         // 支付状态
         erpWdtTrade.setPayStatus(PaymentStatus.FULLY_PAID.getValue());
@@ -149,8 +492,13 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
 
         // 优惠券金额
         BigDecimal couponPrice = fsStoreOrder.getCouponPrice();
+        if (fsStoreOrder.getCouponPrice().compareTo(BigDecimal.ZERO) == 0
+                && fsStoreOrder.getTotalPrice().compareTo(fsStoreOrder.getPayMoney()) > 0) {
+            couponPrice = fsStoreOrder.getTotalPrice().subtract(fsStoreOrder.getPayMoney());
+        }
         // 商品总价
         BigDecimal totalPrice = fsStoreOrder.getTotalPrice();
+
         for (FsStoreOrderItemVO fsStoreOrderItem : fsStoreOrderItemVOS) {
             ErpWdtOrder erpWdtOrder = new ErpWdtOrder();
             //平台订单货品表主键
@@ -161,15 +509,10 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
             // 单价
             erpWdtOrder.setPrice(fsStoreProduct.getPrice());
             // 状态
-            if(Objects.equals(type, NORMAL_TYPE)){
-                erpWdtOrder.setStatus(TradeStatus.SHIPPED.getValue());
-                // 退款状态
-                erpWdtOrder.setRefundStatus(RefundStatus.NO_REFUND.getValue());
-            } else {
-                erpWdtOrder.setStatus(TradeStatus.REFUNDED.getValue());
-                // 退款状态
-                erpWdtOrder.setRefundStatus(RefundStatus.REFUND_SUCCESSFUL.getValue());
-            }
+
+            erpWdtOrder.setStatus(TradeStatus.REFUNDED.getValue());
+            // 退款状态
+            erpWdtOrder.setRefundStatus(RefundStatus.REFUND_SUCCESSFUL.getValue());
 
             // 平台货品ID
             erpWdtOrder.setGoodsId(String.valueOf(fsStoreProduct.getProductId()));
@@ -185,7 +528,8 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
             erpWdtOrder.setDiscount(BigDecimal.ZERO);
             // 分摊优惠
             // 分摊比例
-            BigDecimal divide = fsStoreProduct.getPrice().divide(totalPrice, RoundingMode.HALF_UP);
+            BigDecimal price = fsStoreProduct.getPrice().multiply(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+            BigDecimal divide = price.divide(totalPrice, RoundingMode.HALF_UP);
             erpWdtOrder.setShareDiscount(divide.multiply(couponPrice));
 
             erpWdtOrderList.add(erpWdtOrder);
@@ -197,7 +541,7 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
         if(size > 1) {
             ErpWdtOrder erpWdtOrder = erpWdtOrderList.get(erpWdtOrderList.size() - 1);
             erpWdtOrder.setShareDiscount(couponPrice.subtract(erpWdtOrderList.stream()
-                            .limit(size - 1L)
+                    .limit(size - 1L)
                     .map(item -> Optional.ofNullable(item.getShareDiscount()).orElse(BigDecimal.ZERO))
                     .reduce(BigDecimal.ZERO, BigDecimal::add)));
         }
@@ -215,6 +559,7 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
             String response = client.execute("trade_push.php", map);
             ParserConfig config = new ParserConfig();
             config.propertyNamingStrategy = PropertyNamingStrategy.CamelCase;
+            log.info("Erp推送传参: {}", map);
             ErpWdtApiResponse erpWdtApiResponse = JSON.parseObject(response, ErpWdtApiResponse.class,config);
             if(ObjectUtil.equal(0,erpWdtApiResponse.getCode())){
                 log.info("订单推送成功: {}", response);
@@ -222,7 +567,7 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
                 erpOrderResponse.setCode(order.getPlatform_code());
                 return erpOrderResponse;
             } else {
-                throw new RuntimeException(String.format("订单推送失败,原因: %s",erpWdtApiResponse.getMessage()));
+                // throw new RuntimeException(String.format("订单推送失败,原因: %s",erpWdtApiResponse.getMessage()));
             }
         } catch (IOException e) {
             e.printStackTrace();
@@ -242,7 +587,6 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
 
     @Override
     public ErpOrderQueryResponse getOrder(ErpOrderQueryRequert param) {
-        WdtClient client = WdtClient.getInstance();
         Map<String,String> map = new HashMap<>();
         map.put("src_tid",param.getCode());
         try {
@@ -264,21 +608,29 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
 
     @Override
     public BaseResponse refundUpdate(ErpRefundUpdateRequest param) {
-        FsErpConfig erpConfig = configUtil.getErpConfig();
-        String shopCode = erpConfig.getErpWdShopCode();
-
         log.info("退款单更新: {}", param);
         FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(param.getTid());
 
-        // 待发货状态,售前退款
-        if(ObjectUtil.equal(1, fsStoreOrder.getStatus())){
+        ErpOrderQueryRequert request = new ErpOrderQueryRequert();
+        request.setCode(fsStoreOrder.getExtendOrderId());
+
+        Set<Integer> status = new HashSet<>();
+        status.add(95);
+        status.add(105);
+        status.add(110);
+
+        ErpOrderQueryResponse response = getOrder(request);
+        ErpOrderQuery erpOrderQuery = response.getOrders().get(0);
+        Integer deliveryState = erpOrderQuery.getDelivery_state();
+        // 如果是未发货
+        if(!status.contains(deliveryState)){
             log.info("售前退款 参数: {}",param);
             try {
                 ErpOrder order = fsStoreOrderService.getErpOrder(fsStoreOrder);
 
                 Asserts.check(ObjectUtils.isNotNull(order),"该订单不存在!");
 
-                return getErpOrderResponse(order,REFUND_TYPE);
+                return getErpOrderRefundResponse(order);
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }
@@ -286,7 +638,6 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
 
         //--------------售后退款------------
         log.info("售后退款 参数: {}", param);
-        WdtClient client = WdtClient.getInstance();
         Map<String,String> map = new HashMap<>();
 
 
@@ -330,6 +681,177 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
             throw new RuntimeException(e);
         }
     }
+
+    @Override
+    public ErpOrderResponse finishOrder(ErpOrder order) {
+        //测试环境sid、appkey、密钥请到旺店通开放平台-自助对接-申请测试环境内查看,测试环境url=https://sandbox.wangdian.cn/openapi2/
+        //调用正式环境时请将sid、appkey、appsecret切换为实际参数,参数在旺店通开放平台-自助对接-应用管理内应用状态为已上线的应用中查看,调用正式环境注意切换正式环境url=https://api.wangdian.cn/openapi2/
+
+        ErpWdtBusinessRequestParams erpWdtBusinessRequestParams = new ErpWdtBusinessRequestParams();
+        erpWdtBusinessRequestParams.setShopNo(shopCode);
+        erpWdtBusinessRequestParams.setSwitchMode(0);
+        ErpWdtTrade erpWdtTrade = new ErpWdtTrade();
+        FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
+        BigDecimal couponPrice = fsStoreOrder.getCouponPrice();
+
+        // 平台状态
+        erpWdtTrade.setTradeStatus(TradeStatus.COMPLETED.getValue());
+
+        // 订单id
+        erpWdtTrade.setTid(order.getPlatform_code());
+
+
+        // 如果是货到付款
+        if("2".equals(fsStoreOrder.getPayType())){
+            // 支付状态
+            erpWdtTrade.setPayStatus(PaymentStatus.PARTIALLY_PAID.getValue());
+            // 发货条件
+            erpWdtTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
+            // 货到付款金额 = 物流代收金额-优惠金额
+            erpWdtTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
+
+        } else if("3".equals(fsStoreOrder.getPayType())){
+            // 支付状态
+            erpWdtTrade.setPayStatus(PaymentStatus.UNPAID.getValue());
+            // 发货条件
+            erpWdtTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
+            // 货到付款金额 = 物流代收金额-优惠金额
+            erpWdtTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
+        } else { // 如果是线上付款
+            // 支付状态
+            erpWdtTrade.setPayStatus(PaymentStatus.FULLY_PAID.getValue());
+            // 发货条件
+            erpWdtTrade.setDeliveryTerm(DeliveryTerm.PAYMENT_BEFORE_DELIVERY.getValue());
+        }
+
+        // 下单时间
+        erpWdtTrade.setTradeTime(order.getDeal_datetime());
+        // 支付时间
+        erpWdtTrade.setPayTime(order.getDeal_datetime());
+        // 分销类别
+        erpWdtTrade.setFenxiaoType(FenxiaoType.JINGXIAO.getValue());
+        // 客户网名
+        erpWdtTrade.setBuyerNick(order.getReceiver_name());
+        // 收件人姓名
+        erpWdtTrade.setReceiverName(order.getReceiver_name());
+        // 省份
+        erpWdtTrade.setReceiverProvince(order.getReceiver_province());
+        // 市
+        erpWdtTrade.setReceiverCity(order.getReceiver_city());
+        // 区
+        erpWdtTrade.setReceiverDistrict(order.getReceiver_district());
+        // 详细地址
+        erpWdtTrade.setReceiverAddress(order.getReceiver_address());
+        // 手机
+        erpWdtTrade.setReceiverMobile(order.getReceiver_mobile());
+        // 固定电话
+        erpWdtTrade.setReceiverTelno(order.getReceiver_mobile());
+        // 买家备注
+        erpWdtTrade.setBuyerMessage(order.getBuyer_memo());
+        // 卖家备注
+        erpWdtTrade.setSellerMemo(order.getSeller_memo());
+        erpWdtTrade.setWarehouseNo(order.getWarehouse_code());
+
+        // 运费金额
+        erpWdtTrade.setPostAmount(fsStoreOrder.getFreightPrice());
+        // 已付金额
+        if(ObjectUtils.isNotNull(fsStoreOrder)){
+            erpWdtTrade.setPaid(fsStoreOrder.getPayMoney());
+        }
+
+        List<FsStoreOrderItemVO> fsStoreOrderItemVOS = fsStoreOrderItemService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
+        List<ErpWdtOrder> erpWdtOrderList = new ArrayList<>();
+        // 商品总价
+        BigDecimal totalPrice = fsStoreOrder.getTotalPrice();
+
+        // 总折扣金额 = 优惠券金额 + 折扣金额
+        BigDecimal totalDiscountPrice = BigDecimal.ZERO;
+        // 折扣金额
+        BigDecimal discountPrice = totalPrice.subtract(fsStoreOrder.getPayPrice());
+        totalDiscountPrice = couponPrice.add(discountPrice);
+
+        // 防止除零错误
+        if (totalPrice.compareTo(BigDecimal.ZERO) == 0) {
+            totalPrice = BigDecimal.ONE;
+        }
+
+        for (FsStoreOrderItemVO fsStoreOrderItem : fsStoreOrderItemVOS) {
+            ErpWdtOrder erpWdtOrder = new ErpWdtOrder();
+            //平台订单货品表主键
+            erpWdtOrder.setOid(String.format("%s%s",fsStoreOrderItem.getOrderCode(),fsStoreOrderItem.getItemId()));
+            erpWdtOrder.setNum(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+            FsStoreProduct fsStoreProduct = fsStoreProductService.selectFsStoreProductById(fsStoreOrderItem.getProductId());
+            Asserts.check(ObjectUtils.isNotNull(fsStoreProduct),"该产品不存在! 产品id: {} ",fsStoreOrderItem.getProductId());
+            // 单价
+            erpWdtOrder.setPrice(fsStoreProduct.getPrice());
+            // 状态
+            erpWdtOrder.setStatus(TradeStatus.SHIPPED.getValue());
+            // 退款状态
+            erpWdtOrder.setRefundStatus(RefundStatus.NO_REFUND.getValue());
+
+            // 平台货品ID
+            erpWdtOrder.setGoodsId(String.valueOf(fsStoreProduct.getProductId()));
+            JSONObject jsonObject = JSON.parseObject(fsStoreOrderItem.getJsonInfo());
+            erpWdtOrder.setSpecId(jsonObject.getString("sku"));
+            erpWdtOrder.setGoodsNo(jsonObject.getString("barCode"));
+            erpWdtOrder.setSpecNo(jsonObject.getString("sku"));
+            // 货品名称
+            erpWdtOrder.setGoodsName(fsStoreProduct.getProductName());
+            // 调整
+            erpWdtOrder.setAdjustAmount(BigDecimal.ZERO);
+            // 优惠
+            erpWdtOrder.setDiscount(BigDecimal.ZERO);
+            // 分摊优惠
+            // 分摊比例
+            BigDecimal price = fsStoreProduct.getPrice().multiply(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
+            BigDecimal divide = price.divide(totalPrice, RoundingMode.HALF_UP);
+            erpWdtOrder.setShareDiscount(divide.multiply(totalDiscountPrice));
+
+            erpWdtOrderList.add(erpWdtOrder);
+        }
+
+        // 最后一个商品的分摊优惠等于总优惠减去前面分摊优惠之和
+        Asserts.check(CollectionUtils.isNotEmpty(erpWdtOrderList),"订单 {} 商品不能为空!", order.getPlatform_code());
+        long size = erpWdtOrderList.size();
+        if(size > 1) {
+            ErpWdtOrder erpWdtOrder = erpWdtOrderList.get(erpWdtOrderList.size() - 1);
+            erpWdtOrder.setShareDiscount(totalDiscountPrice.subtract(erpWdtOrderList.stream()
+                    .limit(size - 1L)
+                    .map(item -> Optional.ofNullable(item.getShareDiscount()).orElse(BigDecimal.ZERO))
+                    .reduce(BigDecimal.ZERO, BigDecimal::add)));
+        }
+
+        erpWdtTrade.setOrderList(erpWdtOrderList);
+        erpWdtBusinessRequestParams.setTradeList(new ArrayList<>(Arrays.asList(erpWdtTrade)));
+
+        Map<String,String> map = new HashMap<>();
+        map.put("shop_no",erpWdtBusinessRequestParams.getShopNo());
+        map.put("switch_mode", String.valueOf(erpWdtBusinessRequestParams.getSwitchMode()));
+        map.put("trade_list", convertToSnakeCase(erpWdtBusinessRequestParams.getTradeList()));
+
+
+        try {
+            String response = client.execute("trade_push.php", map);
+            ParserConfig config = new ParserConfig();
+            config.propertyNamingStrategy = PropertyNamingStrategy.CamelCase;
+            ErpWdtApiResponse erpWdtApiResponse = JSON.parseObject(response, ErpWdtApiResponse.class,config);
+            if(ObjectUtil.equal(0,erpWdtApiResponse.getCode())){
+                log.info("订单推送成功: {}", response);
+                ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
+                erpOrderResponse.setCode(order.getPlatform_code());
+                erpOrderResponse.setSuccess(true);
+                erpOrderResponse.setRequestRawData(JSON.toJSONString(map));
+                erpOrderResponse.setResponseRawData(response);
+                return erpOrderResponse;
+            } else {
+                throw new RuntimeException(String.format("订单推送失败,原因: %s",erpWdtApiResponse.getMessage()));
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return new ErpOrderResponse();
+    }
+
     public static String convertToSnakeCase(Object obj) {
         SerializeConfig config = new SerializeConfig();
         config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;

+ 1 - 1
fs-service-system/src/main/resources/application-config-fby.yml

@@ -116,7 +116,7 @@ tencent_cloud_config:
   secret_key: u5SuS80342xzx8FRBukza9lVNHKNMSaB
   bucket: fby-1323137866
   app_id: 1323137866
-  region: chongqing
+  region: ap-chongqing
   proxy: fby
 cloud_host:
   company_name: 福本源