From 37ba49430c8c6896020d8d1e8552022d786f31a0 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 26 六月 2025 20:05:06 +0800
Subject: [PATCH] 管理后台二期

---
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java |  198 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 195 insertions(+), 3 deletions(-)

diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
index 909743e..6c44fd3 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
@@ -11,9 +11,7 @@
 import com.stylefeng.guns.modular.system.dao.OrderCancelMapper;
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
-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.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -26,6 +24,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -356,8 +355,201 @@
 
     @Autowired
     private ITPubTransactionDetailsService itPubTransactionDetailsService;
+    @Autowired
+    private PayMoneyUtil payMoneyUtil;
+    /**
+     * 操作跨城改派管理
+     * optType 1=拒绝 2=取消
+     */
+    @RequestMapping(value = "/optCross")
+    @ResponseBody
+    public Object optCross(@RequestParam Integer tReassignId,@RequestParam Integer optType) {
+        try {
+            TReassign tReassign = tReassignService.selectById(tReassignId);
+            if(tReassign.getState() == 3){//已改派
+                return "不能重复操作";
+            }
+            if(tReassign.getState() == 4){//已改派
+                return "不能重复操作";
+            }
+            if(tReassign.getState() == 5){//已改派
+                return "不能重复操作";
+            }
+            Integer state = tReassign.getState();
+            ShiroUser user = ShiroKit.getUser();
+            if (1 == optType){
+                tReassign.setState(5);
+                tReassign.setReviewer(user.getId());
+                tReassign.setReviewerType(2);
+                tReassignService.updateById(tReassign);
+                TOrderCrossCity orderCrossCity = itOrderCrossCityService.selectById(tReassign.getOrderId());
+                orderCrossCity.setState(orderCrossCity.getOldState());
+                itOrderCrossCityService.updateById(orderCrossCity);
+            }else if (2 == optType){
+                tReassign.setState(4);
+                tReassign.setReviewer(user.getId());
+                tReassign.setReviewerType(2);
+                tReassignService.updateById(tReassign);
+
+                TOrderCrossCity orderCrossCity = itOrderCrossCityService.selectById(tReassign.getOrderId());
+                if(orderCrossCity.getState() > 5 && orderCrossCity.getState() != 11){
+                    return ResultUtil.error("订单状态不在可取消范围内");
+                }
+                orderCrossCity.setState(10);
+                itOrderCrossCityService.updateById(orderCrossCity);
+
+                //修改司机信息
+                LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId());
+                lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat() ?
+                        lineShiftDriver.getTotalSeat() : lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber());
+                String seat = "";
+                String[] split = orderCrossCity.getSeatNumber().split(",");
+                for(String s : split){
+                    seat += s + ",";
+                }
+                seat = lineShiftDriver.getLaveSeatNumber() + "," + seat.substring(0, seat.length() - 1);
+
+                //总和大于总座位数的情况
+                if(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat()){
+                    seat = "";
+                    for(int i = 1; i <= lineShiftDriver.getTotalSeat(); i++){
+                        seat += i + ",";
+                    }
+                    seat = seat.substring(0, seat.length() - 1);
+                }
+                lineShiftDriver.setLaveSeatNumber(seat);
+                lineShiftDriverMapper.updateById(lineShiftDriver);
+                if(lineShiftDriver.getLaveSeat() >= lineShiftDriver.getTotalSeat()){
+                    TDriver driver = itDriverService.selectById(tReassign.getOriginalDriverId());
+                    driver.setState(2);
+                    itDriverService.updateById(driver);
+                }
+
+                //调用推送
+                Map<String,String> map = new HashMap<>();
+                map.put("id", orderCrossCity.getId().toString());
+                map.put("orderType", "3");
+                String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map);
+                System.out.println("跨城取消:【orderId="+orderCrossCity.getId().toString()+"】,调用接口:"+result);
 
 
+                //已支付的情况下进行退款操作
+                if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){
+                    if(orderCrossCity.getPayType() == 3){//余额支付
+                        TUser tUser = userService.selectById(orderCrossCity.getUserId());
+                        tUser.setBalance(tUser.getBalance().add(orderCrossCity.getPayMoney()));
+                        userService.updateById(tUser);
+                        //添加交易明细
+                        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("订单还未进行支付");
+                        }
+
+                        if(query.getPayType() == 1){//微信
+                            Map<String, String> map1 = payMoneyUtil.wxRefund(query.getCode(), orderCrossCity.getId() + "_3_" + UUIDUtil.getRandomCode(3), query.getAmount().toString(), query.getAmount().toString(), "/user/base/cancleOrderWXPay");
+                            if(!"SUCCESS".equals(map1.get("return_code"))){
+                                return ResultUtil.error(map1.get("return_msg"));
+                            }
+                            //添加交易明细
+                            transactionDetailsService.saveData(query.getUserId(), "跨城改派取消退款", query.getAmount(), 1, 1, query.getType(), 3, orderCrossCity.getId());
+                        }else{//支付宝
+//                            Map<String, String> map1 = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString());
+//                            if(!"10000".equals(map1.get("code"))){
+//                                return ResultUtil.error(map1.get("msg"));
+//                            }
+//                            //添加交易明细
+//                            transactionDetailsService.saveData(query.getUserId(), "跨城改派取消退款", query.getAmount(), 1, 1, query.getType(), 3, orderCrossCity.getId());
+                        }
+                    }
+
+                    //添加负的收入明细
+                    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());
+                            itDriverService.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);
+                    }
+                }
+
+                //添加取消记录
+                OrderCancel orderCancel = new OrderCancel();
+                orderCancel.setOrderId(tReassign.getOrderId());
+                orderCancel.setOrderType(tReassign.getOrderType());
+                orderCancel.setReason("调度端取消订单");
+                orderCancel.setRemark("调度“" + user.getName() + "-" + user.getId() + "”执行取消操作");
+                orderCancel.setState(2);
+                orderCancel.setInsertTime(new Date());
+                orderCancel.setUserType(3);
+                orderCancel.setUserId(user.getId());
+                orderCancelMapper.insert(orderCancel);
+            }
+
+            if(state == 2){//退款操作
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+                String out_refund_no = sdf.format(new Date()) + "_" + tReassign.getId();
+                Double money = tReassign.getMoney();
+                if(tReassign.getPayType() == 1){//微信
+                    Map<String, String> map = payMoneyUtil.wxRefund(tReassign.getPayOrder(), out_refund_no, money.toString(), money.toString(), "/dispatch/base/order/reassignRefundCallback");
+                    if(null == map || !"SUCCESS".equals(map.get("return_code"))){
+                        System.err.println(map.get("return_msg"));
+                        return ResultUtil.error(map.get("return_msg"));
+                    }
+                    tReassign.setReviewer(ShiroKit.getUser().getId());
+                    tReassign.setReviewerType(2);
+                    tReassignService.updateById(tReassign);
+                    //添加交易明细
+                    transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "跨城改派拒绝退款", money, 1, 1, 2, 3, tReassign.getOrderId());
+                }
+                if(tReassign.getPayType() == 2){//支付宝
+//                    Map<String, String> map = payMoneyUtil.aliRefund(tReassign.getPayOrder(), money.toString());
+//                    if(null != map && "10000".equals(map.get("code"))){
+//                        tReassign.setReviewer(ShiroKit.getUser().getId());
+//                        tReassign.setReviewerType(2);
+//                        tReassignService.updateById(tReassign);
+//                        //添加交易明细
+//                        transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "跨城改派拒绝退款", money, 1, 1, 2, 3, tReassign.getOrderId());
+//                    }
+//                    if(null == map || !"10000".equals(map.get("code"))){
+//                        System.err.println(map.get("msg"));
+//                        return ResultUtil.error(map.get("msg"));
+//                    }
+                }
+                if(tReassign.getPayType() == 3){//余额
+                    TDriver tDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
+                    tDriver.setBalance(tDriver.getBalance().add(new BigDecimal(money)));
+                    itDriverService.updateById(tDriver);
+                }
+            }
+
+
+            //增加交易明细
+            TPubTransactionDetails details = new TPubTransactionDetails();
+            details.setUserId(tReassign.getOriginalDriverId());
+            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();
+        }
+        return SUCCESS_TIP;
+    }
 
 
 

--
Gitblit v1.7.1