From 2103c9676bf98087aee3032c3f6cc15ed2837d0c Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 13 六月 2025 10:51:20 +0800
Subject: [PATCH] 价格计算修改

---
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java |   57 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 43 insertions(+), 14 deletions(-)

diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
index ee538fd..588d8d9 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -48,6 +48,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.MathContext;
 import java.math.RoundingMode;
 import java.util.*;
 
@@ -353,13 +354,13 @@
             if(null == query){
                 return ResultUtil.error("获取企业失败");
             }
-            Map<String, String> distance = gdMapElectricFenceUtil.getDistance(warpper.getStartLon() + "," + warpper.getStartLat(),
-                    warpper.getEndLon() + "," + warpper.getEndLat(), 1);
+            Map<String, String> distance = gdMapElectricFenceUtil.getDistance(warpper.getStartLat() + "," + warpper.getStartLon() ,
+                    warpper.getEndLat() + "," + warpper.getEndLon(), 1);
             if(null == distance){
                 return ResultUtil.error("计算行驶距离失败");
             }
             double d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
-            double t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+            double t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
             double amount = setMoney2(query.getId(), d, t);
             if(warpper.getPayManner() == 2){//其他支付,不需要操作,直接完成订单
                 amount = amount + (new BigDecimal(Math.random()).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
@@ -410,7 +411,7 @@
         
         if(date.getTime() > s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){
             if(d > rule.getDouble("num6") && d < rule.getDouble("num7")){
-                yt1 = rule.getDouble("num18") * d;
+                yt1 = rule.getDouble("num18") * (d-rule.getDouble("num6"));
             }
             if(d >  rule.getDouble("num9") && d < rule.getDouble("num10")){
                 yt1 = rule.getDouble("num18") * rule.getDouble("num7");
@@ -449,7 +450,7 @@
             //高峰时段处理逻辑
             if((date.getTime() > s1.getTimeInMillis() && date.getTime() < e1.getTimeInMillis()) || (date.getTime() > s2.getTimeInMillis() && date.getTime() < e2.getTimeInMillis())){
                 if(d > rule.getDouble("num6") && d < rule.getDouble("num7")){
-                    yt1 = rule.getDouble("num26") * d;
+                    yt1 = rule.getDouble("num26") * (d-rule.getDouble("num6"));
                 }
                 if(d >  rule.getDouble("num9") && d < rule.getDouble("num10")){
                     yt1 = rule.getDouble("num26") * rule.getDouble("num7");
@@ -468,7 +469,7 @@
             }else{
                 //其他时间段的计算
                 if(d > rule.getDouble("num6") && d < rule.getDouble("num7")){
-                    yt1 = rule.getDouble("num8") * d;
+                    yt1 = rule.getDouble("num8") * (d-rule.getDouble("num6"));
                 }
                 if(d >  rule.getDouble("num9") && d < rule.getDouble("num10")){
                     yt1 = rule.getDouble("num8") * rule.getDouble("num7");
@@ -809,9 +810,29 @@
         UserInfo userInfo = userInfoService.selectById(uid);
         map.put("balance", userInfo.getBalance());
         OrderTaxi orderTaxi = this.selectById(orderId);
-        int i = userCouponRecordService.queryAvailable(uid, null, 1, 2, orderTaxi.getOrderMoney());
-        i = i + userCouponRecordService.queryAvailable(uid, null, 1, 0, orderTaxi.getOrderMoney());
-        map.put("coupon", i);
+        Driver driver = driverService.selectById(orderTaxi.getDriverId());
+        Integer companyId = driver.getCompanyId();
+        List<CompanyCity> companyCityList = companyCityService.selectList(new EntityWrapper<CompanyCity>().eq("companyId", companyId));
+        List<Map<String, Object>> cityCode = new ArrayList<>();
+        List<Region> regions = regionMapper.selectList(null);
+        for (CompanyCity companyCity : companyCityList) {
+            Map<String, Object> city = new HashMap<>();
+            if(ToolUtil.isNotEmpty(companyCity.getAreaCode())){
+                city.put("code", Integer.valueOf(companyCity.getAreaCode()));
+                city.put("name", regions.stream().filter(s->s.getCode().equals(companyCity.getAreaCode())).findFirst().get().getName());
+            }else if(ToolUtil.isEmpty(companyCity.getAreaCode()) && ToolUtil.isNotEmpty(companyCity.getCityCode())){
+                city.put("code", Integer.valueOf(companyCity.getCityCode()));
+                city.put("name", regions.stream().filter(s->s.getCode().equals(companyCity.getCityCode())).findFirst().get().getName());
+            }else if(ToolUtil.isEmpty(companyCity.getCityCode()) && ToolUtil.isNotEmpty(companyCity.getProvinceCode())){
+                city.put("code", Integer.valueOf(companyCity.getProvinceCode()));
+                city.put("name", regions.stream().filter(s->s.getCode().equals(companyCity.getProvinceCode())).findFirst().get().getName());
+            }
+            cityCode.add(city);
+        }
+        List<Map<String, Object>> list = userCouponRecordService.queryCoupon1(uid, JSON.toJSONString(cityCode), 1, 2, orderTaxi.getOrderMoney(), null, null);
+        List<Map<String, Object>> list1 = userCouponRecordService.queryCoupon1(uid, JSON.toJSONString(cityCode), 1, 0, orderTaxi.getOrderMoney(), null, null);
+        list.addAll(list1);
+        map.put("coupon", list.size());
         return map;
     }
 
@@ -828,16 +849,21 @@
         Driver driver = driverService.selectById(orderTaxi.getDriverId());
         Integer companyId = driver.getCompanyId();
         List<CompanyCity> companyCityList = companyCityService.selectList(new EntityWrapper<CompanyCity>().eq("companyId", companyId));
-        List<Map<String, Integer>> cityCode = new ArrayList<>();
+        List<Map<String, Object>> cityCode = new ArrayList<>();
+        List<Region> regions = regionMapper.selectList(null);
         for (CompanyCity companyCity : companyCityList) {
-            Map<String, Integer> city = new HashMap<>();
+            Map<String, Object> city = new HashMap<>();
             if(ToolUtil.isNotEmpty(companyCity.getAreaCode())){
                 city.put("code", Integer.valueOf(companyCity.getAreaCode()));
+                city.put("name", regions.stream().filter(s->s.getCode().equals(companyCity.getAreaCode())).findFirst().get().getName());
             }else if(ToolUtil.isEmpty(companyCity.getAreaCode()) && ToolUtil.isNotEmpty(companyCity.getCityCode())){
                 city.put("code", Integer.valueOf(companyCity.getCityCode()));
+                city.put("name", regions.stream().filter(s->s.getCode().equals(companyCity.getCityCode())).findFirst().get().getName());
             }else if(ToolUtil.isEmpty(companyCity.getCityCode()) && ToolUtil.isNotEmpty(companyCity.getProvinceCode())){
                 city.put("code", Integer.valueOf(companyCity.getProvinceCode()));
+                city.put("name", regions.stream().filter(s->s.getCode().equals(companyCity.getProvinceCode())).findFirst().get().getName());
             }
+            cityCode.add(city);
         }
         List<Map<String, Object>> list = userCouponRecordService.queryCoupon1(uid, JSON.toJSONString(cityCode), 1, 2, orderTaxi.getOrderMoney(), pageNum, size);
         List<Map<String, Object>> list1 = userCouponRecordService.queryCoupon1(uid, JSON.toJSONString(cityCode), 1, 0, orderTaxi.getOrderMoney(), pageNum, size);
@@ -923,7 +949,7 @@
             }else{
                 appletsOpenId = userInfo.getAppletsOpenId();
             }
-            Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",2", 9, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/wxPayOrderTaxi", "", type, appletsOpenId);
+//            Map<String, String> map = icbcPayUtil.placeAnOrder(orderId + ",2", 9, 5, uid.toString(), "完成订单", orderMoney, callbackPath + "/base/wxPayOrderTaxi", "", type, appletsOpenId);
             String app = type == 1 ? "APP" : "JSAPI";
             resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_2_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
             paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderId, 2, 1, orderMoney, "", 1);//添加预支付数据
@@ -1039,6 +1065,7 @@
                 public void run() {
                     pushUtil.pushOrderState(1, orderTaxi.getUserId(), orderTaxi.getId(), 2, orderTaxi.getState(), 0);
                     pushUtil.pushOrderState(2, orderTaxi.getDriverId(), orderTaxi.getId(), 2, orderTaxi.getState(), 0);
+                    pushUtil.pushSystemMessage(2, orderTaxi.getDriverId(), "用户已线上完成支付");
                 }
             }).start();
 
@@ -1055,6 +1082,8 @@
                 redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString());
             }
             systemNoticeService.addSystemNotice(1, "您已使用余额成功完成出行订单支付,谢谢使用!", uid, 1);
+            //添加司机消息提醒
+            systemNoticeService.addSystemNotice(2, "用户已线上完成支付", driver.getId(), 1);
         }
 
         this.updateAllColumnById(orderTaxi);
@@ -1257,6 +1286,7 @@
         OrderServerWarpper orderServerWarpper = new OrderServerWarpper();
         orderServerWarpper.setOrderId(orderTaxi.getId());
         orderServerWarpper.setOrderType(2);
+        orderServerWarpper.setPayManner(orderTaxi.getPayManner());
         orderServerWarpper.setState(orderTaxi.getState());
         orderServerWarpper.setLon(null != value ? value.split(",")[1] : "0.0");
         orderServerWarpper.setLat(null != value ? value.split(",")[0] : "0.0");
@@ -1517,6 +1547,7 @@
                 public void run() {
                     pushUtil.pushOrderState(1, orderTaxi.getUserId(), orderTaxi.getId(), 2, orderTaxi.getState(), 0);
                     pushUtil.pushOrderState(2, orderTaxi.getDriverId(), orderTaxi.getId(), 2, orderTaxi.getState(), 0);
+                    pushUtil.pushSystemMessage(2, orderTaxi.getDriverId(), "用户已线上完成支付");
                 }
             }).start();
 
@@ -1537,8 +1568,6 @@
             systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功完成出行订单支付,谢谢使用!", orderTaxi.getUserId(), 1);
             //添加司机消息提醒
             systemNoticeService.addSystemNotice(2, "用户已线上完成支付", driver.getId(), 1);
-            //推送状态,让司机端播报语音
-            pushUtil.pushOrderState(2, orderTaxi.getDriverId(), orderTaxi.getId(), 2, orderTaxi.getState(), 0);
         }else{
             System.err.println("预支付数据异常(orderId = "  + id + ")");
         }

--
Gitblit v1.7.1