From 4fd8e9902b92b2a1f78c9550b274cb4e1e191e08 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 20 一月 2025 18:55:47 +0800
Subject: [PATCH] 线下支付

---
 DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java |   61 +++++++++++++++++++++++-------
 1 files changed, 47 insertions(+), 14 deletions(-)

diff --git a/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java b/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java
index 3338036..bf69919 100644
--- a/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java
+++ b/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java
@@ -8,11 +8,10 @@
 import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
 import com.stylefeng.guns.modular.system.dao.SystemPriceMapper;
 import com.stylefeng.guns.modular.system.dao.TOrderTransferMapper;
+import com.stylefeng.guns.modular.system.model.Company;
 import com.stylefeng.guns.modular.system.model.Driver;
 import com.stylefeng.guns.modular.system.model.TOrderTransfer;
-import com.stylefeng.guns.modular.system.service.IDriverService;
-import com.stylefeng.guns.modular.system.service.ISystemNoticeService;
-import com.stylefeng.guns.modular.system.service.ITOrderTransferService;
+import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.GDFalconUtil;
 import com.stylefeng.guns.modular.system.util.PushMinistryOfTransportUtil;
 import com.stylefeng.guns.modular.system.util.PushUtil;
@@ -24,6 +23,8 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
 import java.util.*;
 
 /**
@@ -41,6 +42,8 @@
     @Autowired
     private IDriverService driverService;
     @Autowired
+    private IIncomeService incomeService;
+    @Autowired
     private GDFalconUtil gdFalconUtil;
     @Autowired
     private PushUtil pushUtil;
@@ -51,6 +54,10 @@
     private ISystemNoticeService systemNoticeService;
     @Value("${pushMinistryOfTransport}")
     private boolean pushMinistryOfTransport;
+    @Autowired
+    private ICompanyService companyService;
+    @Autowired
+    private ITransactionDetailsService transactionDetailsService;
     @Override
     public Map<String, Object> queryPushOrder(Integer orderId) throws Exception {
         return orderTransferMapper.queryPushOrder(orderId);
@@ -213,17 +220,47 @@
     @Override
     public ResultUtil confirmFees(Integer orderId, Integer type, Double parkingFee, Double crossingFee) throws Exception {
         TOrderTransfer orderPrivateCar = this.selectById(orderId);
+        orderPrivateCar = this.setMoney(orderPrivateCar, 0D, 0D);//计算费用
+        orderPrivateCar.setPayManner(type);
+        orderPrivateCar.setParkMoney(null == parkingFee ? 0D : parkingFee);
+        orderPrivateCar.setRoadTollMoney(null == crossingFee ? 0D : crossingFee);
+        orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney() + orderPrivateCar.getParkMoney() + orderPrivateCar.getRoadTollMoney());
         if(type == 3){
+            Double orderMoney = orderPrivateCar.getOrderMoney();
+            //添加交易明细
+            transactionDetailsService.saveData(orderPrivateCar.getDriverId(), "完成订单", orderMoney, 2, 1, 1, 1, orderId);
+
+            orderPrivateCar.setState(8);
+            // 线下支付
+            orderPrivateCar.setPayType(4);
+            orderPrivateCar.setPayMoney(orderMoney);
+
+            //添加已收入明细
+            Company company = companyService.selectById(orderPrivateCar.getCompanyId());
+            Double speMoney = company.getSpeMoney();
+            BigDecimal d = null;//企业收入
+            BigDecimal c = null;//司机收入
+            if(company.getIsSpeFixedOrProportional() == 2){//固定
+                d = new BigDecimal(speMoney);
+                c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机
+            }
+            if(company.getIsSpeFixedOrProportional() == 1){//比例
+                Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney();
+                d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+                c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+            }
+            incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
+            incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
+            Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
+            driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+            driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+            driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+            driverService.updateById(driver);
             orderPrivateCar.setState(8);
         }else {
-            orderPrivateCar = this.setMoney(orderPrivateCar, 0D, 0D);//计算费用
-            orderPrivateCar.setPayManner(type);
-            orderPrivateCar.setParkMoney(null == parkingFee ? 0D : parkingFee);
-            orderPrivateCar.setRoadTollMoney(null == crossingFee ? 0D : crossingFee);
-            orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney() + orderPrivateCar.getParkMoney() + orderPrivateCar.getRoadTollMoney());
             orderPrivateCar.setState(7);
-            this.updateById(orderPrivateCar);
         }
+        this.updateById(orderPrivateCar);
 
         pushUtil.removeTask(orderId, 7);//删除定时任务,结束推送数据
         systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderPrivateCar.getUserId());
@@ -286,7 +323,7 @@
         return map;
     }
     @Override
-    public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address,Integer payManner) throws Exception {
+    public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address) throws Exception {
         TOrderTransfer orderPrivateCar = this.selectById(orderId);
         switch (state){
             case 3://出发前往预约点
@@ -316,10 +353,6 @@
                 orderPrivateCar.setGetoffTime(new Date());
                 orderPrivateCar.setEndServiceTime(new Date());
 
-                orderPrivateCar.setPayManner(payManner);
-                if(payManner == 2){
-                    orderPrivateCar.setState(8);
-                }
 
 //                //设置结束的时候的经纬度
 //                if (orderPrivateCar.getEndLat()!=null){

--
Gitblit v1.7.1