From 01fb3942136929b10d1fd704330f9d400b38bfb0 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 23 十月 2025 18:09:19 +0800
Subject: [PATCH] 修改bug

---
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/shunfeng/controller/rideCommentController.java |  146 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 139 insertions(+), 7 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 d1e9ea2..5f1ac22 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,12 @@
         
         @Autowired
         private IFinancialService financialService;
+
+        @Autowired
+        private ICompanyService companyService;
+
+        @Autowired
+        private IOrderInvitationService orderInvitationService;
         
 
 
@@ -647,6 +655,7 @@
             driverRide.setBrandId(brandId);
             driverRide.setUserId(userId);
             driverRide.setByInviteCode(inviteCodeRide);
+            driverRide.setCompanyId(1);
             driverRide.setCarType(carType);
             driverRide.setCarNum(carNum);
             driverRide.setLicense(license);
@@ -847,9 +856,31 @@
     }
 
 
+    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){
+        UserInfo userInfo=userInfoService.selectById(orderRide.getUserId());
+        //查询三方判断订单是否完成支付
+        getPaymentStatus(userInfo, orderRide);
         if(orderRide.getState()==2){//用户已经支付了订单但司机没有接单
             orderRide.setTuiMoney(orderRide.getMoney());
         }
@@ -858,14 +889,44 @@
             String finNum=OrdersUtil.getOrderNoForPrefix("fin");
             //todo 退款金额大于0需要退款
             if(orderRide.getPayType()==1){//余额
-                UserInfo userInfo=userInfoService.selectById(orderRide.getUserId());
                 userInfo.setBalance(userInfo.getBalance()+orderRide.getTuiMoney());
                 userInfoService.updateById(userInfo);
             }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())){
+                    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){
             
             }
@@ -881,6 +942,11 @@
             f.setOrderType(4);
             f.setLx(1);
             financialService.insert(f);
+        }else{
+            //未支付的情况取消订单
+            if(ToolUtil.isNotEmpty(orderRide.getZttravelId())){
+                OrderUtil.tradeOrderCancel(orderRide.getZttravelId());
+            }
         }
         /*添加系统消息*/
         try {
@@ -891,6 +957,51 @@
         orderRide.setState(6);//取消状态
         orderRideService.updateById(orderRide);
     }
+
+
+
+    public void getPaymentStatus(UserInfo userInfo, OrderRide orderRide1){
+        GetTravelItineraryListRequest request1 = new GetTravelItineraryListRequest();
+        request1.setCustomerId(userInfo.getOnconUUID());
+        request1.setOrderNo("SF" + orderRide1.getId());
+        ListPage<List<TravelItinerary>> travelItineraryList = OrderUtil.getTravelItineraryList(request1);
+        TravelItinerary travelItinerary = travelItineraryList.getList().get(0);
+        if(travelItinerary.getStatus() != 7 || Arrays.asList(3, 11).contains(travelItinerary.getOrderStatus())){
+            GetPaymentInfoDataRequest getPaymentInfoDataRequest1 = new GetPaymentInfoDataRequest();
+            getPaymentInfoDataRequest1.setPartnerPayId(orderRide1.getZttravelId());
+            GetPaymentInfo getPaymentInfo1 = OrderUtil.paymentInfo(getPaymentInfoDataRequest1);
+
+            String trade_no = getPaymentInfo1.getPayId();
+            Financial financial = new Financial();
+            financial.setType(1);//类型 1=收入 2=支出
+            financial.setPayType("2");//支付类型 1=余额 2=微信 3=支付宝
+            financial.setMoney(orderRide1.getMoney());//支付金额
+            financial.setOrderNum(orderRide1.getOrderNum());//我们本地的订单号
+            financial.setLsType(trade_no);//流水号
+            financial.setAddTime(new Date());
+            financial.setTradeStatus("success");
+            //顺风车支付
+            //修改订单表中的订单流水和支付方式
+            orderRide1.setOutNum(financial.getLsType());//流水
+            orderRide1.setPayTime(new Date());
+            orderRide1.setPayType(2);
+            orderRide1.setState(2);
+            financial.setPwType(8);//顺风车
+            financial.setUserId(orderRide1.getUserId());
+            financial.setLx(1);//1=用户 2=司机
+            financial.setOrderType(4);//顺风车
+            financialService.insert(financial);
+            orderRideService.updateById(orderRide1);
+            /*添加系统消息*/
+            try {
+                systemNoticeService.addSystemNotice(1, "您成功支付从" + orderRide1.getStartName() + "到" + orderRide1.getEndName() + "的顺风车订单", orderRide1.getUserId(), 1);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+
     /**
      * 司机行程取消
      * @param orderId
@@ -1006,6 +1117,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){
@@ -1026,7 +1138,7 @@
                     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);
@@ -1074,6 +1186,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) {
@@ -1268,6 +1392,11 @@
             OrderRide orderRide=orderRideService.selectOne(new EntityWrapper<OrderRide>().eq("userId",userId)
                     .eq("state",2));
             if(orderRide!=null){
+                OrderInvitation orderInvitation = new OrderInvitation();
+                orderInvitation.setOrderRideId(orderRide.getId());
+                orderInvitation.setOrderTravelId(orderTravel.getId());
+                orderInvitation.setInsertTime(new Date());
+                orderInvitationService.insert(orderInvitation);
                 String message="您发布的"+DateUtil.getDateToString(orderTravel.getStartTime(),"MM月dd日")+"的行程有乘客邀请您同行";
                 /*添加系统消息*/
                 try {
@@ -1282,6 +1411,8 @@
         }
         return ResultUtil.error("异常");
     }
+
+
     /**
      * 用户订单匹配列表页面,用户订单去匹配司机的行程
      * @param  type  搜索条件:1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近
@@ -1316,6 +1447,7 @@
             orderRideVo.setLon(orderRide.getStartLon());
             orderRideVo.setLat(orderRide.getStartLat());
             orderRideVo.setNum(orderRide.getNum());
+            orderRideVo.setId(orderId);
             orderRideVo.setType(type+1);//搜索条件:1默认排序(根据线路、时间,人数综合匹配排序721),2时间最早,3距离最近
             List<OrderRideVo> orderRides=orderTravelService.getOrderTravel(orderRideVo);
             return ResultUtil.success(orderRides);

--
Gitblit v1.7.1