From 0a8d28436b2f7229ecdf40c6b003902002c8947f Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 16 十月 2025 17:37:08 +0800
Subject: [PATCH] 修改bug

---
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java |  230 ++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 147 insertions(+), 83 deletions(-)

diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java
index 03cba5a..2a46d13 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java
@@ -13,9 +13,8 @@
 import com.stylefeng.guns.modular.shunfeng.util.OrdersUtil;
 import com.stylefeng.guns.modular.shunfeng.util.SensitiveWordUtil;
 import com.stylefeng.guns.modular.system.dao.SensitiveWordsMapper;
-import com.stylefeng.guns.modular.system.model.SensitiveWords;
-import com.stylefeng.guns.modular.system.model.TCarBrand;
-import com.stylefeng.guns.modular.system.model.UserInfo;
+import com.stylefeng.guns.modular.system.model.*;
+import com.stylefeng.guns.modular.system.service.ICompanyService;
 import com.stylefeng.guns.modular.system.service.ISystemNoticeService;
 import com.stylefeng.guns.modular.system.service.ITCarBrandService;
 import com.stylefeng.guns.modular.system.service.IUserInfoService;
@@ -23,7 +22,9 @@
 import com.stylefeng.guns.modular.system.util.GDMapElectricFenceUtil;
 import com.stylefeng.guns.modular.system.util.PushUtil;
 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.UserUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
 import io.swagger.annotations.*;
 import net.sf.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,6 +36,7 @@
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -88,6 +90,9 @@
         
         @Autowired
         private IFinancialService financialService;
+
+        @Autowired
+        private ICompanyService companyService;
         
 
 
@@ -647,6 +652,7 @@
             driverRide.setBrandId(brandId);
             driverRide.setUserId(userId);
             driverRide.setByInviteCode(inviteCodeRide);
+            driverRide.setCompanyId(1);
             driverRide.setCarType(carType);
             driverRide.setCarNum(carNum);
             driverRide.setLicense(license);
@@ -845,12 +851,34 @@
         }
         return ResultUtil.error("异常");
     }
+
+
+    private Integer getState(Integer state){
+        switch (state){
+            case 1:
+                return 7;
+            case 2:
+                return 1;
+            case 3:
+                return 4;
+            case 4:
+                return 5;
+            case 5:
+                return 8;
+            case 6:
+                return 10;
+        }
+        return null;
+    }
+
+
+
     //用户取消退款
     public void userCancelTuik(OrderRide orderRide){
         if(orderRide.getState()==2){//用户已经支付了订单但司机没有接单
             orderRide.setTuiMoney(orderRide.getMoney());
         }
-        if(orderRide.getTuiMoney()>0){
+        if(null != orderRide.getTuiMoney() && orderRide.getTuiMoney()>0){
             Financial financial= financialService.selectOne(new EntityWrapper<Financial>().eq("orderNum",orderRide.getOrderNum()));
             String finNum=OrdersUtil.getOrderNoForPrefix("fin");
             //todo 退款金额大于0需要退款
@@ -861,8 +889,40 @@
             }else if(orderRide.getPayType()==2){
                 //微信
                 Integer money = new Double(orderRide.getMoney() * 100).intValue();
-                Integer tMoney_ = new Double(orderRide.getTuiMoney()* 100).intValue();
-                PayUtil.refundForWxpay(1, financial.getLsType(), orderRide.getOrderNum(), finNum, money,tMoney_ , "2");
+//                Integer tMoney_ = new Double(orderRide.getTuiMoney()* 100).intValue();
+//                PayUtil.refundForWxpay(1, financial.getLsType(), orderRide.getOrderNum(), finNum, money,tMoney_ , "2");
+
+                //中台订单退款操作
+                if(ToolUtil.isNotEmpty(orderRide.getZttravelId())){
+                    UserInfo userInfo = userInfoService.selectById(orderRide.getUserId());
+                    TradeOrderRefundRequest request = new TradeOrderRefundRequest();
+                    request.setPartnerPayId(orderRide.getZttravelId());
+                    request.setPayId(financial.getLsType());
+                    request.setRefundTotalFee(money + "");
+                    request.setRemark("顺风车订单取消退款");
+                    request.setRefundType("RF");
+
+                    RefundInfoRequest refundInfo = new RefundInfoRequest();
+                    refundInfo.setPayItemId(orderRide.getZttravelId());
+                    refundInfo.setPayId(financial.getLsType());
+                    refundInfo.setTradeFee(money + "");
+                    request.setRefundInfos(new ArrayList<RefundInfoRequest>(){{
+                        add(refundInfo);
+                    }});
+                    TradeOrderRefund tradeOrderRefund = OrderUtil.tradeOrderRefund(request);
+                    //退款通知
+                    OrderRefundNoticeRequest request2 = new OrderRefundNoticeRequest();
+                    request2.setOrderId(orderRide.getZttravelId());
+                    request2.setRefundPayNum(tradeOrderRefund.getRefundId());
+                    request2.setRefundType("5");
+                    request2.setApplyRefundCharge(BigDecimal.valueOf(orderRide.getMoney()));
+                    request2.setActualRefundCharge(BigDecimal.valueOf(orderRide.getMoney()));
+                    request2.setRefundAccount(userInfo.getOnconUUID());
+                    request2.setRemark("顺风车订单取消退款");
+                    OrderUtil.orderRefundNotice(request2);
+                }
+
+
             }else if(orderRide.getPayType()==3){
             
             }
@@ -878,6 +938,11 @@
             f.setOrderType(4);
             f.setLx(1);
             financialService.insert(f);
+        }else{
+            //未支付的情况取消订单
+            if(ToolUtil.isNotEmpty(orderRide.getZttravelId())){
+                OrderUtil.tradeOrderCancel(orderRide.getZttravelId());
+            }
         }
         /*添加系统消息*/
         try {
@@ -903,57 +968,58 @@
                 return ResultUtil.paranErr("orderId不能为空");
             }
             OrderTravel orderTravel=orderTravelService.selectById(orderId);
-            if(orderTravel!=null){
-                if(orderTravel.getState()==6){
-                    return ResultUtil.error("该订单已取消");
+            if(null == orderTravel){
+                return ResultUtil.error("无效的订单ID");
+            }
+            if(orderTravel.getState()==6){
+                return ResultUtil.error("该订单已取消");
+            }
+            DriverRide driverRide=driverRideService.selectById(orderTravel.getDriverId());
+            if(orderTravel.getServiceMoney()!=null && orderTravel.getServiceMoney()>0){
+                /*todo 更新司机余额*/
+                driverRide.setBalance(driverRide.getBalance()-orderTravel.getServiceMoney());
+                driverRideService.updateById(driverRide);
+                /* 更新司机用户余额(用户和司机用户一个账号余额)*/
+                UserInfo userInfo=userInfoService.selectOne(new EntityWrapper<UserInfo>().eq("driverId",orderTravel.getDriverId()));
+                if(userInfo!=null){
+                    //用户余额可以为负数
+                    userInfo.setBalance(userInfo.getBalance()-orderTravel.getServiceMoney());
+                    userInfoService.updateById(userInfo);
                 }
-                DriverRide driverRide=driverRideService.selectById(orderTravel.getDriverId());
-                if(orderTravel.getServiceMoney()!=null && orderTravel.getServiceMoney()>0){
-                    /*todo 更新司机余额*/
-                    driverRide.setBalance(driverRide.getBalance()-orderTravel.getServiceMoney());
-                    driverRideService.updateById(driverRide);
-                    /* 更新司机用户余额(用户和司机用户一个账号余额)*/
-                    UserInfo userInfo=userInfoService.selectOne(new EntityWrapper<UserInfo>().eq("driverId",orderTravel.getDriverId()));
-                    if(userInfo!=null){
-                        //用户余额可以为负数
-                        userInfo.setBalance(userInfo.getBalance()-orderTravel.getServiceMoney());
-                        userInfoService.updateById(userInfo);
-                    }
-                    /*财务明细*/
-                    Financial f=new Financial();
-                    f.setAddTime(new Date());
-                    f.setType(1);//类型 1=收入 2=支出
-                    f.setMoney(orderTravel.getServiceMoney());
-                    f.setPwType(9);//9=顺风车取消服务费
-                    f.setOrderNum(orderTravel.getOrderNum());
-                    String finNum=OrdersUtil.getOrderNoForPrefix("fin");
-                    f.setLsType(finNum);
-                    f.setUserId(driverRide.getUserId());
-                    f.setOrderType(4);
-                    f.setLx(1);
-                    financialService.insert(f);
-                    //司机取消给用户推送
-                }
-                /*添加系统消息*/
-                try {
-                    systemNoticeService.addSystemNotice(1, "您从"+orderTravel.getStartName()+"到"+orderTravel.getEndName()+"的顺风车行程已取消", driverRide.getUserId(), 1);
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
-                }
-                orderTravel.setState(6);//取消状态
-                orderTravelService.updateById(orderTravel);
-                //todo 推送
-                /*司机接单给用户发送消息*/
-                OrderRide orderRide=orderRideService.selectOne(new EntityWrapper<OrderRide>().eq("travelId",orderId));
-                if(orderRide!=null) {
-                    pushUtil.pushOrderState(1, orderRide.getUserId(), orderRide.getId(), 8, 6, null);
-                }
-                //取消乘客订单
-                if(orderRide!=null && orderRide.getState()!=6){
-                    orderRide.setTuiMoney(orderRide.getMoney());
-                    orderRideService.updateById(orderRide);
-                    userCancelTuik(orderRide);
-                }
+                /*财务明细*/
+                Financial f=new Financial();
+                f.setAddTime(new Date());
+                f.setType(1);//类型 1=收入 2=支出
+                f.setMoney(orderTravel.getServiceMoney());
+                f.setPwType(9);//9=顺风车取消服务费
+                f.setOrderNum(orderTravel.getOrderNum());
+                String finNum=OrdersUtil.getOrderNoForPrefix("fin");
+                f.setLsType(finNum);
+                f.setUserId(driverRide.getUserId());
+                f.setOrderType(4);
+                f.setLx(1);
+                financialService.insert(f);
+                //司机取消给用户推送
+            }
+            /*添加系统消息*/
+            try {
+                systemNoticeService.addSystemNotice(1, "您从"+orderTravel.getStartName()+"到"+orderTravel.getEndName()+"的顺风车行程已取消", driverRide.getUserId(), 1);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+            orderTravel.setState(6);//取消状态
+            orderTravelService.updateById(orderTravel);
+            //todo 推送
+            /*司机接单给用户发送消息*/
+            OrderRide orderRide=orderRideService.selectOne(new EntityWrapper<OrderRide>().eq("travelId",orderId));
+            if(orderRide!=null) {
+                pushUtil.pushOrderState(1, orderRide.getUserId(), orderRide.getId(), 8, 6, null);
+            }
+            //取消乘客订单
+            if(orderRide!=null && orderRide.getState()!=6){
+                orderRide.setTuiMoney(orderRide.getMoney());
+                orderRideService.updateById(orderRide);
+                userCancelTuik(orderRide);
             }
 
             return ResultUtil.success("");
@@ -1002,6 +1068,7 @@
             if(orderRide!=null && orderRide.getState()==6){
                 return  ResultUtil.error("用户已取消该行程");
             }
+            UserInfo userInfo=userInfoService.selectById(driverRide.getUserId());
             if(orderTravel!=null){
                 if(type==1){//1确认同行 一个行程只能匹配一个订单
                     if(orderTravel.getState()==3){
@@ -1022,8 +1089,9 @@
                     driverRide.setTotalOrders(driverRide.getTotalOrders()+1);
                     driverRideService.updateById(driverRide);
                     /*修改用户接单数和司机提成*/
-                    UserInfo userInfo=userInfoService.selectById(driverRide.getUserId());
+
                     userInfo.setBalance(userInfo.getBalance()+(orderRide.getMoney()-orderRide.getPlatformMoney()));
+                    userInfo.setTotalOrders(userInfo.getTotalOrders() + 1);
                     userInfoService.updateById(userInfo);
                     Financial f=new Financial();
                     f.setAddTime(new Date());
@@ -1069,6 +1137,18 @@
                     throw new RuntimeException(e);
                 }
             }
+
+            if(null != orderRide.getZttravelId()){
+                //中台修改订单状态
+                ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+                request.setOrderId(orderRide.getZttravelId());
+                request.setStatus(getState(orderRide.getState()));
+                if (null != orderRide.getDriverId()) {
+                    request.setDriverId(driverRide.getEmpId().toString());
+                }
+                OrderUtil.modifyTravelItinerary(request);
+            }
+
             pushUtil.pushOrderState(1, orderRide.getUserId(), orderRide.getId(), 8, orderRide.getState(), null);
             return ResultUtil.success("");
         } catch (Exception e) {
@@ -1139,8 +1219,8 @@
             DriverRide driverRide=driverRideService.selectById(driverId);
             if(driverRide!=null){
                 /*计算司机的评分*/
-                driverRide.setEvaluateNum(driverRide.getEvaluateNum()+1);
-                driverRide.setEvaluateScore(driverRide.getEvaluateScore()+score);
+                driverRide.setEvaluateNum((null != driverRide.getEvaluateNum() ? driverRide.getEvaluateNum() : 0 )+1);
+                driverRide.setEvaluateScore((null == driverRide.getEvaluateScore() ? 0 : driverRide.getEvaluateScore())+score);
                 driverRideService.updateById(driverRide);
             }
             /*标记订单已评价*/
@@ -1290,23 +1370,15 @@
     @ApiOperation(value = "用户订单匹配列表页面,用户订单去匹配司机的行程", httpMethod = "POST")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "orderId", value = "订单id", dataType = "int"),
-            @ApiImplicitParam(name = "type", value = "1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近", dataType = "int"),
-            @ApiImplicitParam(name = "lon", value = "经度", dataType = "double"),
-            @ApiImplicitParam(name = "lat", value = "纬度", dataType = "double"),
+            @ApiImplicitParam(name = "type", value = "1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近", dataType = "int")
     })
-    public Object userMatchingOrderList(Integer orderId,Integer current,Integer size,Integer type,Double lon,Double lat){
+    public Object userMatchingOrderList(Integer orderId,Integer current,Integer size,Integer type){
         try {
             if(ToolUtil.isEmpty(orderId)){
                 return ResultUtil.paranErr("orderId不能为空");
             }
             if(ToolUtil.isEmpty(type)){
                 return ResultUtil.paranErr("type不能为空");
-            }
-            if(ToolUtil.isEmpty(lon)){
-                return ResultUtil.paranErr("lon不能为空");
-            }
-            if(ToolUtil.isEmpty(lat)){
-                return ResultUtil.paranErr("lat不能为空");
             }
             OrderRide orderRide=orderRideService.selectById(orderId);
             current=current==null?1:current;
@@ -1316,8 +1388,8 @@
             OrderRideVo orderRideVo=new OrderRideVo();
             orderRideVo.setCurrent(current);
             orderRideVo.setSize(size);
-            orderRideVo.setLon(lon);
-            orderRideVo.setLat(lat);
+            orderRideVo.setLon(orderRide.getStartLon());
+            orderRideVo.setLat(orderRide.getStartLat());
             orderRideVo.setNum(orderRide.getNum());
             orderRideVo.setType(type+1);//搜索条件:1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近
             List<OrderRideVo> orderRides=orderTravelService.getOrderTravel(orderRideVo);
@@ -1343,11 +1415,9 @@
     @ApiOperation(value = "司机订单匹配列表页面(司机的订单去匹配乘客订单)", httpMethod = "POST")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "orderId", value = "订单id", dataType = "int"),
-            @ApiImplicitParam(name = "type", value = "1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近,4价格最低", dataType = "int"),
-            @ApiImplicitParam(name = "lon", value = "经度", dataType = "double"),
-            @ApiImplicitParam(name = "lat", value = "纬度", dataType = "double"),
+            @ApiImplicitParam(name = "type", value = "1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近,4价格最低", dataType = "int")
     })
-    public Object driverMatchingOrderList(Integer orderId,Integer current,Integer size,Integer type,Double lon,Double lat){
+    public Object driverMatchingOrderList(Integer orderId,Integer current,Integer size,Integer type){
         try {
             try {
                 if(ToolUtil.isEmpty(orderId)){
@@ -1355,12 +1425,6 @@
                 }
                 if(ToolUtil.isEmpty(type)){
                     return ResultUtil.paranErr("type不能为空");
-                }
-                if(ToolUtil.isEmpty(lon)){
-                    return ResultUtil.paranErr("lon不能为空");
-                }
-                if(ToolUtil.isEmpty(lat)){
-                    return ResultUtil.paranErr("lat不能为空");
                 }
                 OrderTravel orderTravel=orderTravelService.selectById(orderId);
                 current=current==null?1:current;
@@ -1371,8 +1435,8 @@
                 orderRideVo.setCurrent(current);
                 orderRideVo.setSize(size);
                 orderRideVo.setNum(orderTravel.getNum());
-                orderRideVo.setLon(lon);
-                orderRideVo.setLat(lat);
+                orderRideVo.setLon(orderTravel.getStartLon());
+                orderRideVo.setLat(orderTravel.getStartLat());
                 orderRideVo.setType(type+1);//搜索条件:1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近,4价格最低
                 List<OrderRideVo> orderRides=orderRideService.getOrderRide(orderRideVo);
                 return ResultUtil.success(orderRides);

--
Gitblit v1.7.1