From c8d8d2b62f6d6fe7359d26bdd28ae13df69b1439 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 08 九月 2025 16:41:48 +0800
Subject: [PATCH] 新增加跨城支付

---
 DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCrossCityServiceImpl.java |   63 ++++++++++++++++++++-----------
 1 files changed, 40 insertions(+), 23 deletions(-)

diff --git a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCrossCityServiceImpl.java b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCrossCityServiceImpl.java
index 0559021..3bccfe7 100644
--- a/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCrossCityServiceImpl.java
+++ b/DispatchQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderCrossCityServiceImpl.java
@@ -10,6 +10,11 @@
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.*;
+import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.OrderRefundNoticeRequest;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.RefundInfoRequest;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.TradeOrderRefund;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.TradeOrderRefundRequest;
 import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
 import com.stylefeng.guns.modular.system.warpper.OrderCrossCityWarpper;
 import org.springframework.beans.BeanUtils;
@@ -154,7 +159,7 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil cancelOrder(Integer orderId) throws Exception {
+    public ResultUtil cancelOrder(Integer orderId, Integer uid) throws Exception {
         OrderCrossCity orderCrossCity = this.selectById(orderId);
         if(orderCrossCity.getState() == 10 || orderCrossCity.getState() == 12){
             return ResultUtil.error("不允许重复取消");
@@ -193,7 +198,10 @@
                 driver.setState(2);
                 driverService.updateById(driver);
             }
-
+            //未支付,调取消订单
+            if(null == orderCrossCity.getPayType() && ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){
+                OrderUtil.tradeOrderCancel(orderCrossCity.getTravelId());
+            }
             //已支付的情况下进行退款操作
             if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){
                 if(orderCrossCity.getPayType() == 3){//余额支付
@@ -214,9 +222,36 @@
                     }
 
                     if(query.getPayType() == 1){//微信
-                        Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), orderId + "_3", query.getAmount().toString(), query.getAmount().toString(), "/base/cancleOrderWXPay");
-                        if(!"SUCCESS".equals(map.get("return_code"))){
-                            return ResultUtil.error(map.get("return_msg"));
+                        //中台订单退款操作
+                        if(ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){
+                            Dispatch dispatch = dispatchService.selectById(uid);
+                            TradeOrderRefundRequest request = new TradeOrderRefundRequest();
+                            request.setPartnerPayId(orderCrossCity.getTravelId());
+                            request.setPayId(query.getCode());
+                            request.setRefundTotalFee(Double.valueOf(orderCrossCity.getPayMoney() * 100).intValue() + "");
+                            request.setRemark("调度取消订单退款");
+                            request.setRefundType("RF");
+
+                            RefundInfoRequest refundInfo = new RefundInfoRequest();
+                            refundInfo.setPayItemId(orderCrossCity.getTravelId());
+                            refundInfo.setPayId(query.getCode());
+                            refundInfo.setTradeFee(Double.valueOf(orderCrossCity.getPayMoney() * 100).intValue() + "");
+                            request.setRefundInfos(new ArrayList<RefundInfoRequest>(){{
+                                add(refundInfo);
+                            }});
+                            TradeOrderRefund tradeOrderRefund = OrderUtil.tradeOrderRefund(request);
+                            //退款通知
+                            OrderRefundNoticeRequest request1 = new OrderRefundNoticeRequest();
+                            request1.setOrderId(orderCrossCity.getTravelId());
+                            request1.setRefundPayNum(tradeOrderRefund.getRefundId());
+                            request1.setRefundType("5");
+                            request1.setApplyRefundCharge(new BigDecimal(orderCrossCity.getPayMoney()));
+                            request1.setActualRefundCharge(new BigDecimal(orderCrossCity.getPayMoney()));
+                            request1.setRefundAccount(dispatch.getEnterId().toString());
+                            request1.setRemark("调度取消订单退款");
+                            OrderUtil.orderRefundNotice(request1);
+                            //添加交易明细
+                            transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, orderId);
                         }
                     }else{//支付宝
                         Map<String, String> map = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString());
@@ -226,24 +261,6 @@
                         //添加交易明细
                         transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, orderId);
                     }
-                }
-
-                //添加负的收入明细
-                List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", orderId).eq("orderType", 3));
-                for(Income income : incomes){
-                    if(income.getUserType() == 2){//处理司机的收入
-                        Driver driver = driverService.selectById(income.getObjectId());
-                        driver.setBalance(driver.getBalance() - income.getMoney());
-                        driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney());
-                        driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney());
-                        driverService.updateById(driver);
-                    }
-                    Income income1 = new Income();
-                    BeanUtils.copyProperties(income, income1);
-                    income1.setMoney(income.getMoney() * -1);
-                    income1.setId(null);
-                    income1.setInsertTime(new Date());
-                    incomeService.insert(income1);
                 }
             }
         }

--
Gitblit v1.7.1