From f4158a513b30107f83e2689bb2de250ba5bf45df Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期三, 16 七月 2025 19:13:10 +0800 Subject: [PATCH] bug修改 --- UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java | 76 +++++++++++++++++++++++++++++-------- 1 files changed, 59 insertions(+), 17 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 4f9bf9f..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.*; @@ -256,11 +257,6 @@ warpper.setStartLon(orderTaxi.getStartLon()); warpper.setEndLat(orderTaxi.getEndLat()); warpper.setEndLon(orderTaxi.getEndLon()); - ResultUtil<Double> forecastPrice = getForecastPrice(warpper); - if(forecastPrice.getCode() != 200){ - return ResultUtil.error(forecastPrice.getMsg()); - } - orderTaxi.setOrderMoney(forecastPrice.getData()); if (!StringUtils.hasLength(orderTaxi.getPassengers()) || StringUtils.hasLength(orderTaxi.getPassengersPhone()) ){ // 如果没有填写乘车人电话或者姓名 那么用用户的 @@ -358,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()); @@ -415,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"); @@ -454,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"); @@ -473,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"); @@ -814,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; } @@ -830,8 +846,27 @@ @Override public List<Map<String, Object>> queryCoupon(Integer orderId, Integer uid, Integer pageNum, Integer size) throws Exception { OrderTaxi orderTaxi = this.selectById(orderId); - List<Map<String, Object>> list = userCouponRecordService.queryCoupon(uid, null, 1, 2, orderTaxi.getOrderMoney(), pageNum, size); - List<Map<String, Object>> list1 = userCouponRecordService.queryCoupon(uid, null, 1, 0, orderTaxi.getOrderMoney(), pageNum, size); + 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(), pageNum, size); + List<Map<String, Object>> list1 = userCouponRecordService.queryCoupon1(uid, JSON.toJSONString(cityCode), 1, 0, orderTaxi.getOrderMoney(), pageNum, size); list.addAll(list1); return list; } @@ -914,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);//添加预支付数据 @@ -1030,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(); @@ -1046,6 +1082,8 @@ redisUtil.setStrValue("VEHICLE", jsonArray.toJSONString()); } systemNoticeService.addSystemNotice(1, "您已使用余额成功完成出行订单支付,谢谢使用!", uid, 1); + //添加司机消息提醒 + systemNoticeService.addSystemNotice(2, "用户已线上完成支付", driver.getId(), 1); } this.updateAllColumnById(orderTaxi); @@ -1248,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"); @@ -1508,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(); @@ -1526,6 +1566,8 @@ systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功完成出行订单支付,谢谢使用!", orderTaxi.getUserId(), 1); + //添加司机消息提醒 + systemNoticeService.addSystemNotice(2, "用户已线上完成支付", driver.getId(), 1); }else{ System.err.println("预支付数据异常(orderId = " + id + ")"); } -- Gitblit v1.7.1