From 2e97a0b58cc60cb076843b3a860732f71762cff7 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 16 一月 2025 19:08:15 +0800
Subject: [PATCH] 修改

---
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HistoryVo.java                            |    1 
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java         |   14 ++
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java                   |   23 ++++
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java                            |   46 +++++++++
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java                   |   11 ++
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java |   16 +++
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java            |   87 +++++++++++-----
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ZiOnController.java                                |   62 +++++++++++-
 8 files changed, 225 insertions(+), 35 deletions(-)

diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
index f2d1c20..c507c1e 100644
--- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
@@ -1,6 +1,12 @@
 package com.stylefeng.guns.modular.api;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.modular.system.model.Driver;
+import com.stylefeng.guns.modular.system.model.TransactionDetails;
+import com.stylefeng.guns.modular.system.service.IDriverService;
 import com.stylefeng.guns.modular.system.service.IReassignService;
+import com.stylefeng.guns.modular.system.service.ITransactionDetailsService;
+import com.stylefeng.guns.modular.system.util.PayMoneyUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -9,6 +15,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
 import java.util.Map;
 
 /**
@@ -78,4 +85,43 @@
             e.printStackTrace();
         }
     }
+    @Autowired
+    private ITransactionDetailsService transactionDetailsService;
+    @Autowired
+    private PayMoneyUtil payMoneyUtil;
+    @Autowired
+    private IDriverService driverService;
+    @ResponseBody
+    @PostMapping("/wxRecharge")
+    public void wxRecharge(HttpServletRequest request, HttpServletResponse response){
+        try {
+            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
+            if (null != map) {
+                String out_trade_no = map.get("out_trade_no");
+                String transaction_id = map.get("transaction_id");
+                String result = map.get("result");
+                TransactionDetails transactionDetails = transactionDetailsService.selectOne(new EntityWrapper<TransactionDetails>()
+                        .eq("code", out_trade_no));
+                if (transactionDetails!=null){
+                    if (transactionDetails.getState()==2){
+                        return;
+                    }
+                    Driver driver = driverService.selectById(transactionDetails.getUserId());
+                    if (driver!=null){
+                        driver.setBalance(driver.getBalance() + transactionDetails.getMoney());
+                        driverService.updateById(driver);
+                    }
+                    transactionDetails.setState(2);
+                    transactionDetailsService.updateById(transactionDetails);
+                    PrintWriter out = response.getWriter();
+                    out.write(result);
+                    out.flush();
+                    out.close();
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
 }
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ZiOnController.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ZiOnController.java
index ca02f53..247f866 100644
--- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ZiOnController.java
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/ZiOnController.java
@@ -1,4 +1,5 @@
 package com.stylefeng.guns.modular.api;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -11,8 +12,10 @@
 import com.stylefeng.guns.modular.system.dao.TUseMoneyMapper;
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
+import com.stylefeng.guns.modular.system.util.PayMoneyUtil;
 import com.stylefeng.guns.modular.system.util.PushUtil;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
+import com.stylefeng.guns.modular.system.util.UUIDUtil;
 import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
 import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
 import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
@@ -60,10 +63,10 @@
     private IWithdrawalService withdrawalService;
     @Autowired
     private ITRechargeMoneyService rechargeMoneyService;
-
+    @Autowired
+    private PayMoneyUtil payMoneyUtil;
     @Autowired
     private TUseMoneyMapper useMoneyMapper;
-
     @ResponseBody
     @PostMapping ("/money/get")
     @ApiOperation(value = "拿到后台配置的充值金额")
@@ -80,9 +83,39 @@
     @ResponseBody
     @PostMapping ("/recharge")
     @ApiOperation(value = "微信充值操作")
-    public ResultUtil recharge(BigDecimal money,HttpServletRequest request){
-
-        return ResultUtil.success();
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+            @ApiImplicitParam(value = "充值金额", name = "money", required = true, dataType = "double"),
+    })
+    public ResultUtil recharge(BigDecimal money,HttpServletRequest request) throws Exception {
+        Integer uid = driverService.getUserIdFormRedis(request);
+        if (null == uid) {
+            return ResultUtil.tokenErr();
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+        String s = sdf.format(new Date()) + UUIDUtil.getRandomCode(3);
+        ResultUtil weixinpay = payMoneyUtil.weixinpay("充值",
+                "",
+                s,
+                money.toString(),
+                "/base/wxRecharge",
+                "APP");
+        if (weixinpay.getCode()==200){
+            // 新增扣除使用费记录
+            TransactionDetails transactionDetails = new TransactionDetails();
+            transactionDetails.setCode(s);
+            transactionDetails.setUserId(uid);
+            transactionDetails.setInsertTime(new Date());
+            transactionDetails.setRemark("充值");
+            // 将money转化为double类型
+            transactionDetails.setMoney(money.doubleValue());
+            transactionDetails.setState(1);
+            transactionDetails.setType(1);
+            transactionDetails.setUserType(2);
+            transactionDetails.setOrderType(5);
+            iTransactionDetailsService.insert(transactionDetails);
+        }
+        return weixinpay;
     }
 
 
@@ -231,13 +264,21 @@
             if (state!=null&&state==2){
                 eq.eq("state",2);
             }
+            eq.orderBy("insertTime",false);
             List<TransactionDetails> transactionDetails = iTransactionDetailsService.selectList(eq);
             if ((state!=null&&state==1)||(state!=null&&state==2)){
                 List<HistoryVo> historyVos = new ArrayList<>();
                 for (TransactionDetails transactionDetail : transactionDetails) {
                     HistoryVo historyVo  = new HistoryVo();
                     if (transactionDetail.getState()==1){
-                        historyVo.setState("充值");
+                        switch (transactionDetail.getOrderType()){
+                            case 2:
+                                historyVo.setState("订单收入");
+                                break;
+                            default:
+                                historyVo.setState("充值");
+                                break;
+                        }
                         historyVo.setAddordown(1);
                     }else {
                         historyVo.setState("扣除");
@@ -262,7 +303,14 @@
             for (TransactionDetails transactionDetail : transactionDetails) {
                 HistoryVo historyVo  = new HistoryVo();
                 if (transactionDetail.getState()==1){
-                    historyVo.setState("充值");
+                    switch (transactionDetail.getOrderType()){
+                        case 2:
+                            historyVo.setState("订单收入");
+                            break;
+                        default:
+                            historyVo.setState("充值");
+                            break;
+                    }
                     historyVo.setAddordown(1);
                 }else {
                     historyVo.setState("扣除");
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HistoryVo.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HistoryVo.java
index 2cf9c0d..8fab41b 100644
--- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HistoryVo.java
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HistoryVo.java
@@ -9,6 +9,7 @@
 public class HistoryVo {
     Date createTime;
     String state;
+    // 0减少 1增加
     Integer addordown;
     Double money;
 
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java
index de0e512..9c28459 100644
--- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TransactionDetails.java
@@ -23,6 +23,8 @@
      */
     @TableField("userId")
     private Integer userId;
+    @TableField("code")
+    private String code;
     /**
      * 添加时间
      */
@@ -68,6 +70,27 @@
      */
     @TableField("placeOrderWay")
     private Integer placeOrderWay;
+    /**
+     * 公司id
+     */
+    @TableField("companyId")
+    private Integer companyId;
+
+    public Integer getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Integer companyId) {
+        this.companyId = companyId;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
 
     public Integer getPlaceOrderWay() {
         return placeOrderWay;
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java
index 04ed3d9..f337983 100644
--- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITransactionDetailsService.java
@@ -20,4 +20,18 @@
      */
     void saveData(Integer userId, String remark, Double money, Integer state,
                   Integer type, Integer userType, Integer orderType, Integer orderId) throws Exception;
+    /**
+     * 添加数据
+     * @param userId    对象id
+     * @param remark    备注
+     * @param money     金额
+     * @param state     状态(1=添加,2=减少)
+     * @param type      类型(1=金额,2=积分)
+     * @param userType  用户类型(1=用户,2=司机)
+     * @param orderType 订单类型(1=专车,2=出租车,3=城际,4=小件物流,5=余额充值,6=余额提现)
+     * @param orderId
+     * @throws Exception
+     */
+    void saveData(Integer userId, String remark, Double money, Integer state,
+                  Integer type, Integer userType, Integer orderType, Integer orderId,Integer companyId) throws Exception;
 }
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java
index e6a7781..b55130c 100644
--- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TransactionDetailsServiceImpl.java
@@ -41,4 +41,20 @@
         transactionDetails.setUserType(userType);
         this.insert(transactionDetails);
     }
+
+    @Override
+    public void saveData(Integer userId, String remark, Double money, Integer state, Integer type, Integer userType, Integer orderType, Integer orderId, Integer companyId) throws Exception {
+        TransactionDetails transactionDetails = new TransactionDetails();
+        transactionDetails.setInsertTime(new Date());
+        transactionDetails.setMoney(money);
+        transactionDetails.setOrderId(orderId);
+        transactionDetails.setOrderType(orderType);
+        transactionDetails.setRemark(remark);
+        transactionDetails.setState(state);
+        transactionDetails.setType(type);
+        transactionDetails.setUserId(userId);
+        transactionDetails.setUserType(userType);
+        transactionDetails.setCompanyId(companyId);
+        this.insert(transactionDetails);
+    }
 }
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java
index 0d2618f..f12ff2a 100644
--- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java
@@ -44,6 +44,16 @@
     private Double discountMoney;
     @ApiModelProperty("折扣")
     private Double discount;
+    @ApiModelProperty("平台服务费")
+    private Double platformFee;
+
+    public Double getPlatformFee() {
+        return platformFee;
+    }
+
+    public void setPlatformFee(Double platformFee) {
+        this.platformFee = platformFee;
+    }
 
     public Double getOrderMoney() {
         return orderMoney;
@@ -223,6 +233,7 @@
             moneyInfoWarpper.setCouponMoney(null != map.get("couponMoney") ? Double.valueOf(map.get("couponMoney").toString()) : 0D);
             moneyInfoWarpper.setDiscountMoney(null != map.get("discountMoney") ? Double.valueOf(map.get("discountMoney").toString()) : 0D);
             moneyInfoWarpper.setDiscount(null != map.get("discount") ? Double.valueOf(map.get("discount").toString()) : 0D);
+            moneyInfoWarpper.setPlatformFee(null != map.get("platformFee") ? Double.valueOf(map.get("platformFee").toString()) : 0D);
         }
         return moneyInfoWarpper;
     }
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
index 9ab6a9c..fd3556f 100644
--- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -46,7 +46,8 @@
 
     @Autowired
     private GDMapElectricFenceUtil gdMapElectricFenceUtil;
-
+    @Autowired
+    private ITransactionDetailsService transactionDetailsService;
     @Autowired
     private GDFalconUtil gdFalconUtil;
 
@@ -208,7 +209,22 @@
             Company company = companyService.selectById(driver.getCompanyId());
             orderTaxi.setState(9);
             driver.setState(2);
-            driver.setBalance(driver.getBalance() - company.getFixedDeduction());
+//            driver.setBalance(driver.getBalance() - company.getFixedDeduction());
+
+            if(Objects.isNull(company)){
+                company = companyService.selectById(driver.getCompanyId());
+            }
+            // 平台收入
+            double money;
+            if(orderTaxi.getOrderSource() == 2 || orderTaxi.getOrderSource() == 3){
+                double v = company.getPercentageDeduction() / 100;
+                money = v * orderTaxi.getOrderMoney();
+            }else {
+                money = company.getFixedDeduction();
+            }
+            driver.setBalance(driver.getBalance() - money);
+            // 新增扣除使用费记录
+            transactionDetailsService.saveData(driver.getId(), "软件使用费", money, 2, 1, 2, 6, orderTaxi.getId(),company.getId());
 
             driverService.updateById(driver);
             Car car = carService.selectById(driver.getCarId());
@@ -438,33 +454,37 @@
                 orderTaxi.setGetoffLat(lat);
                 orderTaxi.setGetoffAddress(address);
                 orderTaxi.setGetoffTime(new Date());
-                orderTaxi.setState(6);
+                if(orderTaxi.getPayManner()==3){
+                    orderTaxi.setState(9);
+                }else {
+                    orderTaxi.setState(6);
+                }
                 orderTaxi.setEndServiceTime(new Date());
 
 //                List<TUseMoney> money = useMoneyMapper.selectList(null);
-                Driver driver = driverService.selectById(orderTaxi.getDriverId());
-                Company company = companyService.selectById(driver.getCompanyId());
-                TransactionDetails transactionDetails = new TransactionDetails();
-                if(orderTaxi.getOrderSource() == 2 || orderTaxi.getOrderSource() == 3){
-                    double v = company.getPercentageDeduction() / 100;
-                    v = v * orderTaxi.getOrderMoney();
-                    driver.setBalance(driver.getBalance() - v);
-                    transactionDetails.setMoney(v);
-                }else {
-                    driver.setBalance(driver.getBalance() - company.getFixedDeduction());
-                    transactionDetails.setMoney(company.getFixedDeduction());
-                }
-                // 新增扣除使用费记录
-                transactionDetails.setUserId(driver.getId());
-                transactionDetails.setInsertTime(new Date());
-                transactionDetails.setRemark("软件使用费");
-                transactionDetails.setState(2);
-                transactionDetails.setType(1);
-                transactionDetails.setUserType(2);
-                transactionDetails.setOrderType(6);
-                transactionDetails.setOrderId(orderTaxi.getId());
-                transactionDetailsMapper.insert(transactionDetails);
-                driverService.updateById(driver);
+//                Driver driver = driverService.selectById(orderTaxi.getDriverId());
+//                Company company = companyService.selectById(driver.getCompanyId());
+//                TransactionDetails transactionDetails = new TransactionDetails();
+//                if(orderTaxi.getOrderSource() == 2 || orderTaxi.getOrderSource() == 3){
+//                    double v = company.getPercentageDeduction() / 100;
+//                    v = v * orderTaxi.getOrderMoney();
+//                    driver.setBalance(driver.getBalance() - v);
+//                    transactionDetails.setMoney(v);
+//                }else {
+//                    driver.setBalance(driver.getBalance() - company.getFixedDeduction());
+//                    transactionDetails.setMoney(company.getFixedDeduction());
+//                }
+//                // 新增扣除使用费记录
+//                transactionDetails.setUserId(driver.getId());
+//                transactionDetails.setInsertTime(new Date());
+//                transactionDetails.setRemark("软件使用费");
+//                transactionDetails.setState(2);
+//                transactionDetails.setType(1);
+//                transactionDetails.setUserType(2);
+//                transactionDetails.setOrderType(6);
+//                transactionDetails.setOrderId(orderTaxi.getId());
+//                transactionDetailsMapper.insert(transactionDetails);
+//                driverService.updateById(driver);
                 pushUtil.removeTask(orderId, 2);//删除定时任务,结束推送数据
                 systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderTaxi.getUserId());
                 break;
@@ -500,9 +520,11 @@
         if(type == 2){//其他支付,不需要操作,直接完成订单
             orderTaxi = this.setMoney1(orderTaxi, travelFee, parkingFee, crossingFee);
             orderTaxi.setState(7);
-        }else{
+        }else if (type == 1){
             orderTaxi = this.setMoney2(orderTaxi, parkingFee, crossingFee);
             orderTaxi.setState(7);
+        }else {
+            orderTaxi.setState(8);
         }
         this.updateById(orderTaxi);
 
@@ -776,10 +798,18 @@
         if(orderTaxi.getState() == 5 || orderTaxi.getState() == 6){//服务中的时候获取实时费用数据
             if(orderTaxi.getPayManner() == 2){//其他支付,不需要操作,直接完成订单
                 orderTaxi = this.setMoney1(orderTaxi, 0D, 0D, 0D);
-            }else{
+            }else if(orderTaxi.getPayManner() == 1){
                 orderTaxi = this.setMoney2(orderTaxi, 0D, 0D);
+            }else {
+                // 无
             }
         }
+
+        // 查询平台服务费
+        TransactionDetails transactionDetails = transactionDetailsService.selectOne(new EntityWrapper<TransactionDetails>()
+                .eq("orderId", orderId)
+                .eq("orderType", 6)
+                .last("LIMIT 1"));
 
         Map<String, Object> map = new HashMap<>();
         map.put("orderMoney", orderTaxi.getOrderMoney());//订单金额
@@ -799,6 +829,7 @@
         map.put("couponMoney", orderTaxi.getCouponMoney());//优惠券抵扣金额
         map.put("discountMoney", orderTaxi.getDiscountMoney());//折扣抵扣金额
         map.put("discount", orderTaxi.getDiscount());//折扣
+        map.put("platformFee", transactionDetails.getMoney());//折扣
         return map;
     }
 

--
Gitblit v1.7.1