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

---
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java |  153 ++++++++++++++++++++++++++-------------------------
 1 files changed, 78 insertions(+), 75 deletions(-)

diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
index b159b28..8a325fd 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
@@ -9,6 +9,7 @@
 import com.stylefeng.guns.core.shiro.ShiroUser;
 import com.stylefeng.guns.core.util.ExcelUtil;
 import com.stylefeng.guns.core.util.SinataUtil;
+import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.system.dao.LineShiftDriverMapper;
 import com.stylefeng.guns.modular.system.dao.OrderCancelMapper;
 import com.stylefeng.guns.modular.system.model.*;
@@ -16,6 +17,9 @@
 import com.stylefeng.guns.modular.system.util.HttpRequestUtil;
 import com.stylefeng.guns.modular.system.util.PushURL;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,10 +36,7 @@
 import java.math.BigDecimal;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 快车改派管理控制器
@@ -43,6 +44,7 @@
  * @author fengshuonan
  * @Date 2020-09-03 14:20:27
  */
+@Slf4j
 @Controller
 @RequestMapping("/tReassign")
 public class TReassignController extends BaseController {
@@ -89,8 +91,12 @@
     private ITOrderTaxiService orderTaxiService;
     @Autowired
     private ShiroExtUtil shiroExtUtil;
-    
-    
+    @Autowired
+    private ITCompanyService iTCompanyService;
+    @Autowired
+    private IUserService sysUserService;
+
+
     /**
      * 跳转到快车改派管理首页
      */
@@ -807,6 +813,7 @@
     @ResponseBody
     public Object optCross(@RequestParam Integer tReassignId,@RequestParam Integer optType) {
         try {
+
             TReassign tReassign = tReassignService.selectById(tReassignId);
             ShiroUser user = shiroExtUtil.getUser();
             if (1 == optType) {
@@ -828,6 +835,23 @@
                 TOrderCrossCity tOrderCrossCity = itOrderCrossCityService.selectById(tReassign.getOrderId());
                 tOrderCrossCity.setState(tOrderCrossCity.getOldState());
                 itOrderCrossCityService.updateById(tOrderCrossCity);
+
+                //中台修改订单状态
+                if(ToolUtil.isNotEmpty(tOrderCrossCity.getTravelId())){
+                    TCompany company = iTCompanyService.selectById(driver.getCompanyId());
+                    //中台修改订单状态
+                    ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+                    request.setOrderId(tOrderCrossCity.getTravelId());
+                    request.setStatus(tOrderCrossCity.getState());
+                    request.setDriverId(driver.getEmpId().toString());
+                    if (2 == tOrderCrossCity.getPromotion()) {
+                        TDriver driver1 = itDriverService.selectById(tOrderCrossCity.getPromotionDriverId());
+                        request.setPromoterId(driver1.getEmpId().toString());
+                    }
+                    request.setSupplierShopId(company.getEnterCode());
+                    OrderUtil.modifyTravelItinerary(request);
+                }
+
             }else if (2 == optType){
                 tReassign.setState(4);
                 tReassign.setReviewer(user.getId());
@@ -885,45 +909,40 @@
                         //添加交易明细
                         transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", orderCrossCity.getPayMoney().doubleValue(), 1, 1, 1, 3, tReassign.getOrderId());
                     }else{
-//                        PaymentRecord query = paymentRecordService.query(1, null, null, tReassign.getOrderId(), 3, null, 2).get(0);
-//                        if(null == query){
-//                            return ResultUtil.error("订单还未进行支付");
-//                        }
-//                        Map<String, Object> merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), tReassign.getOrderId() + "_3", orderCrossCity.getOrderNum());
-//                        if(Integer.valueOf(merrefund.get("code").toString()) == 0){
-//                            boolean b = true;
-//                            while (b){
-//                                Map<String, Object> refundqry = icbcPayUtil.refundqry("", query.getCode(), orderCrossCity.getOrderNum());
-//                                if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0){//成功
-//                                    //添加交易明细
-//                                    transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, tReassign.getOrderId());
-//                                }
-//                                if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1){//失败
-//                                    return ResultUtil.error("订单取消失败(退款不成功)");
-//                                }
-//                                if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2){//未知
-//                                    return ResultUtil.error("退款返回未知异常");
-//                                }
-//                            }
-//                        }
-                    }
+                        //中台订单退款操作
+                        if(ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){
+                            User user1 = sysUserService.selectById(user.getId());
+                            List<PaymentRecord> list = paymentRecordService.query(1, orderCrossCity.getUserId(), 1, orderCrossCity.getId(), 3, 1, 2);
+                            PaymentRecord query = list.get(0);
+                            TradeOrderRefundRequest request = new TradeOrderRefundRequest();
+                            request.setPartnerPayId(orderCrossCity.getTravelId());
+                            request.setPayId(query.getCode());
+                            request.setRefundTotalFee(orderCrossCity.getPayMoney().multiply(new BigDecimal(100)).intValue() + "");
+                            request.setRemark("服务商取消订单退款");
+                            request.setRefundType("RF");
 
-                    //添加负的收入明细
-                    List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", tReassign.getOrderId()).eq("orderType", 3));
-                    for(Income income : incomes){
-                        if(income.getUserType() == 2){//处理司机的收入
-                            TDriver driver = itDriverService.selectById(income.getObjectId());
-                            driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney())));
-                            driver.setLaveBusinessMoney(new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue());
-                            driver.setBusinessMoney(new BigDecimal(driver.getBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue());
-                            itDriverService.updateById(driver);
+                            RefundInfoRequest refundInfo = new RefundInfoRequest();
+                            refundInfo.setPayItemId(orderCrossCity.getTravelId());
+                            refundInfo.setPayId(query.getCode());
+                            refundInfo.setTradeFee(orderCrossCity.getPayMoney().multiply(new BigDecimal(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(orderCrossCity.getPayMoney());
+                            request1.setActualRefundCharge(orderCrossCity.getPayMoney());
+                            request1.setRefundAccount(user1.getEmpId().toString());
+                            request1.setRemark("服务商取消订单退款");
+                            OrderUtil.orderRefundNotice(request1);
+
+                            //添加交易明细
+                            transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, tReassign.getOrderId());
                         }
-                        Income income1 = new Income();
-                        BeanUtils.copyProperties(income, income1);
-                        income1.setMoney(income.getMoney() * -1);
-                        income1.setId(null);
-                        income1.setInsertTime(new Date());
-                        incomeService.insert(income1);
                     }
                 }
 
@@ -939,22 +958,6 @@
                 orderCancel.setUserId(user.getId());
                 orderCancelMapper.insert(orderCancel);
             }
-
-            //返回驾驶员处罚金
-            TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
-
-            //增加交易明细
-            TPubTransactionDetails details = new TPubTransactionDetails();
-            details.setUserId(originalDriver.getId());
-            details.setInsertTime(new Date());
-            details.setRemark("【跨城改派】:改派失败或订单取消");
-            details.setMoney(new BigDecimal(tReassign.getMoney()));
-            details.setState(1);
-            details.setType(1);
-            details.setUserType(2);
-            details.setOrderType(3);
-            details.setOrderId(tReassign.getOrderId());
-            itPubTransactionDetailsService.insert(details);
         }catch (Exception e){
             e.printStackTrace();
         }
@@ -1276,6 +1279,7 @@
         }
         if(driver.getState() == 2){
             driver.setState(3);
+            itDriverService.updateById(driver);
         }
 
         //修改订单数据
@@ -1300,24 +1304,23 @@
         tReassign.setCompleteTime(new Date());
         tReassignService.updateById(tReassign);
 
-        //修改收入明细,转给新司机(因为是先支付金额)
-        List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("userType", 2).eq("objectId", oldDriver.getId()).eq("type", 2).eq("incomeId", tReassign.getOrderId()).eq("orderType", 3));
-        if(incomes.size() > 0){
-            Income income = incomes.get(0);
-            income.setObjectId(driverId);
-            incomeService.updateById(income);
+        TCompany company = iTCompanyService.selectById(driver.getCompanyId());
 
-            oldDriver.setBusinessMoney(oldDriver.getBusinessMoney() - income.getMoney());
-            oldDriver.setLaveBusinessMoney(oldDriver.getLaveBusinessMoney() - income.getMoney());
-            oldDriver.setBalance(oldDriver.getBalance().subtract(new BigDecimal(income.getMoney())));
-
-            driver.setBusinessMoney(driver.getBusinessMoney() + income.getMoney());
-            driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() + income.getMoney());
-            driver.setBalance(driver.getBalance().add(new BigDecimal(income.getMoney())));
-
+        //中台修改订单状态
+        if(ToolUtil.isNotEmpty(tOrderCrossCity.getTravelId())){
+            ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
+            request1.setOrderId(tOrderCrossCity.getTravelId());
+            request1.setStatus(tOrderCrossCity.getState());
+            if (null != tOrderCrossCity.getDriverId()) {
+                request1.setDriverId(driver.getEmpId().toString());
+                request1.setSupplierShopId(company.getEnterCode());
+            }
+            if (2 == tOrderCrossCity.getPromotion()) {
+                TDriver driver2 = itDriverService.selectById(tOrderCrossCity.getPromotionDriverId());
+                request1.setPromoterId(driver2.getEmpId().toString());
+            }
+            OrderUtil.modifyTravelItinerary(request1);
         }
-        itDriverService.updateById(oldDriver);
-        itDriverService.updateById(driver);
         //增加推送
         Map<String,String> map = new HashMap<>();
         map.put("orderId", tOrderCrossCity.getId().toString());

--
Gitblit v1.7.1