From 9dfd9506d0743a22d404046ffe7cda6081404a8a Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 30 Jun 2026 17:09:36 +0800
Subject: [PATCH] feat(order): 添加XT支付功能和确认收款功能

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java |   67 +++++++++++++++++++++++++++++++--
 1 files changed, 62 insertions(+), 5 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
index 2f6a777..900fa2d 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
@@ -3,7 +3,9 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.enumerates.*;
+import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.ValidateEntityUtils;
+import cc.mrbird.febs.mall.controller.dependentStation.constant.OrderConstants;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
@@ -15,6 +17,7 @@
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.best.javaSdk.ClientParamEnum;
@@ -30,6 +33,7 @@
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 @Slf4j
@@ -535,9 +539,13 @@
         List<MallOrderItem> mallOrderItemList = ValidateEntityUtils
                 .ensureColumnReturnEntityList(id, MallOrderItem::getOrderId, mallOrderItemMapper::selectList, "订单不存在");
         StringBuffer itemName = new StringBuffer();
-        itemName.append("商品:");
+        itemName.append("商品-");
         mallOrderItemList.forEach(mallOrderItem -> {
-            itemName.append(mallOrderItem.getGoodsName()+"-"+mallOrderItem.getSkuName());
+            itemName.append(mallOrderItem.getGoodsName());
+            itemName.append("-");
+            itemName.append(mallOrderItem.getSkuName());
+            itemName.append("-");
+            itemName.append(mallOrderItem.getCnt());
         });
         Item item = new Item();
         item.setItemName(itemName.toString());
@@ -546,8 +554,18 @@
         kdCreateWaybillOrderPdfNotifyReq.setItems(items);
 
         kdCreateWaybillOrderPdfNotifyReq.setPiece(1);
-        KdCreateWaybillOrderPdfNotifyRsp pdfOrder = ClientParamService.getInstance(ClientParamEnum.TEST.name()).createPdfOrder(kdCreateWaybillOrderPdfNotifyReq);
-
+        String state = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.SENDER_STATE.getType(),
+                DataDictionaryEnum.SENDER_STATE.getCode()
+        ).getValue();
+        KdCreateWaybillOrderPdfNotifyRsp pdfOrder;
+        if(state.equals("0")){
+            pdfOrder = ClientParamService.getInstance(ClientParamEnum.TEST.name()).createPdfOrder(kdCreateWaybillOrderPdfNotifyReq);
+        }else if(state.equals("1")){
+            pdfOrder = ClientParamService.getInstance(ClientParamEnum.PRD.name()).createPdfOrder(kdCreateWaybillOrderPdfNotifyReq);
+        }else{
+            throw new FebsException("一键发货失败,系统配置异常");
+        }
         ValidateEntityUtils.ensureEqual(pdfOrder.getResult(), true, "一键发货失败,创建PDF电子面单异常");
         //更新发货状态
         mallOrderInfoMapper.updateOrderStateAndDeliveryState(
@@ -575,7 +593,19 @@
         KdCancelOrderNotifyReq kdCancelOrderNotifyReq = new KdCancelOrderNotifyReq();
         kdCancelOrderNotifyReq.setTxLogisticId(mallOrderInfo.getOrderNo());
         kdCancelOrderNotifyReq.setReason("Don't want to buy");
-        KdCancelOrderNotifyRsp kdCancelOrderNotifyRsp = ClientParamService.getInstance(ClientParamEnum.TEST.name()).cancelOrder(kdCancelOrderNotifyReq);
+
+        String state = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.SENDER_STATE.getType(),
+                DataDictionaryEnum.SENDER_STATE.getCode()
+        ).getValue();
+        KdCancelOrderNotifyRsp kdCancelOrderNotifyRsp;
+        if(state.equals("0")){
+            kdCancelOrderNotifyRsp = ClientParamService.getInstance(ClientParamEnum.TEST.name()).cancelOrder(kdCancelOrderNotifyReq);
+        }else if(state.equals("1")){
+            kdCancelOrderNotifyRsp = ClientParamService.getInstance(ClientParamEnum.PRD.name()).cancelOrder(kdCancelOrderNotifyReq);
+        }else{
+            throw new FebsException("取消发货失败,系统配置异常");
+        }
         ValidateEntityUtils.ensureEqual(kdCancelOrderNotifyRsp.getResult(), true, "取消发货失败");
 
         //更新发货状态
@@ -590,6 +620,33 @@
     }
 
     @Override
+    public FebsResponse insurePay(Long id) {
+        // 1. 查询订单
+        MallOrderInfo order = mallOrderInfoMapper.selectById(id);
+        if (order == null) {
+            return new FebsResponse().fail().message("订单不存在,刷新后重试");
+        }
+
+        // 2. 幂等检查(避免重复回调)
+        if (OrderStatusEnum.WAIT_PAY.getValue() != order.getStatus()) {
+            return new FebsResponse().fail().message("订单不是代付款状态");
+        }
+
+        // 3. 更新订单状态为待发货
+        mallOrderInfoMapper.update(
+                null,
+                Wrappers.lambdaUpdate(MallOrderInfo.class)
+                        .set(MallOrderInfo::getStatus, OrderStatusEnum.WAIT_SHIPPING.getValue())
+                        .set(MallOrderInfo::getPayTime, new Date())
+                        .set(MallOrderInfo::getPayMethod, "XT支付")
+                        .set(MallOrderInfo::getPayResult, "1")
+                        .eq(MallOrderInfo::getId, order.getId())
+        );
+
+        return new FebsResponse().success();
+    }
+
+    @Override
     public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) {
         MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo());
         if (mallOrderInfo == null) {

--
Gitblit v1.9.1