From 016ddc332273c36e437a6f3b5f0a25574d5b7b78 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 05 九月 2025 09:12:43 +0800 Subject: [PATCH] bug修改 --- DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 85 +++++++++++++++++++++++++++++++++++------- 1 files changed, 71 insertions(+), 14 deletions(-) diff --git a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 48e6314..039b892 100644 --- a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -301,6 +301,11 @@ }*/ switch (state){ case 3://出发前往预约点 + // 判断是否有其他未完成的单子 + List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.queryDriverByState(orderPrivateCar.getDriverId(), 1, 1, 3,4, 5,6); + if(!CollectionUtils.isEmpty(orderPrivateCars)){ + return ResultUtil.error("有未完成的服务订单"); + } orderPrivateCar.setState(3); orderPrivateCar.setSetOutTime(new Date()); systemNoticeService.addSystemNotice(1, "司机已出发,请耐心等待", orderPrivateCar.getUserId()); @@ -471,6 +476,9 @@ @Override public ResultUtil confirmFees(Integer orderId, Integer type, Double parkingFee, Double crossingFee) throws Exception { OrderPrivateCar orderPrivateCar = this.selectById(orderId); + if(Objects.nonNull(orderPrivateCar.getPriceAuditState()) && orderPrivateCar.getPriceAuditState() == 1){ + return ResultUtil.error("待平台审核中"); + } if(orderPrivateCar.getState() != 5){ return ResultUtil.error("异常操作,请刷新订单"); } @@ -523,13 +531,14 @@ orderPrivateCar.setParkMoney(null == parkingFee ? 0D : parkingFee); orderPrivateCar.setRoadTollMoney(null == crossingFee ? 0D : crossingFee); orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney() + orderPrivateCar.getParkMoney() + orderPrivateCar.getRoadTollMoney()); + orderPrivateCar.setIsConfirm(1); //判断是否首单免费-免费直接完成 Integer orderNumber = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("userId",orderPrivateCar.getUserId()).last("and (state=8 or state=9)")); if(orderNumber<=0){//判断是否是首单 //判断是否免单 UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId()); - if(userInfo.getFreeMoney().doubleValue()>0d){ + if(Objects.nonNull(userInfo.getFreeMoney()) && userInfo.getFreeMoney().doubleValue()>0d){ if(orderPrivateCar.getOrderMoney()<=userInfo.getFreeMoney().doubleValue()){ orderPrivateCar.setState(8); orderPrivateCar.setIsFree(2); @@ -548,12 +557,12 @@ 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); + incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(),driver.getLaveBusinessMoney()); }else{ orderPrivateCar.setState(7); orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()-userInfo.getFreeMoney().doubleValue()); @@ -569,7 +578,7 @@ orderPrivateCar.setState(7); } - if(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(BigDecimal.ZERO)>0 && new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney()))>-1) { + if(orderPrivateCar.getPayMethod() == 0 && new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(BigDecimal.ZERO)>0 && new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney()))>-1) { orderPrivateCar.setState(8); // 退款情况 if (new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).compareTo(new BigDecimal(orderPrivateCar.getOrderMoney())) > 0) { @@ -614,12 +623,12 @@ 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); + incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney()); }else { orderPrivateCar.setState(7); } @@ -630,12 +639,12 @@ // orderPrivateCar.setBindId(""); // } // 判断预估金额和订单金额差异是否大于3元 - if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(orderPrivateCar.getEstimatedPrice()).abs().doubleValue() > 3){ + if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(new BigDecimal(orderPrivateCar.getEstimatedPrice())).abs().doubleValue() > 3){ orderPrivateCar.setIsException(1); } - if(orderPrivateCar.getIsException() == 1){ - orderPrivateCar.setState(13); - } +// if(orderPrivateCar.getIsException() == 1){ +// orderPrivateCar.setState(13); +// } this.updateById(orderPrivateCar); @@ -685,6 +694,56 @@ this.setMoney(orderPrivateCar, 0D, 0D); } + if(Objects.isNull(orderPrivateCar.getEstimatedPrice())){ + orderPrivateCar.setEstimatedPrice(0D); + } + if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(new BigDecimal(orderPrivateCar.getEstimatedPrice())).abs().doubleValue() > 3){ + orderPrivateCar.setIsException(1); + } + this.updateById(orderPrivateCar); + + if(orderPrivateCar.getIsConfirm() == 0){ + // 查询起点或者终点在特殊区域中 + List<SpecialAreaBilling> specialAreaBillings = specialAreaBillingService.selectList(new EntityWrapper<SpecialAreaBilling>() + .eq("state", 1)); + if(!CollectionUtils.isEmpty(specialAreaBillings)){ + // 判断起点或者终点在特殊区域中 + Iterator<SpecialAreaBilling> iterator = specialAreaBillings.iterator(); + while (iterator.hasNext()) { + SpecialAreaBilling specialAreaBilling = iterator.next(); + // 起点 + Double startLon = orderPrivateCar.getStartLon(); + Double startLat = orderPrivateCar.getStartLat(); + boolean start = ElectricFenceUtil.monitorElectricFenc(specialAreaBilling.getCoordinate(), startLon + "," + startLat); + // 终点 + Double endLon = orderPrivateCar.getEndLon(); + Double endLat = orderPrivateCar.getEndLat(); + boolean end = ElectricFenceUtil.monitorElectricFenc(specialAreaBilling.getCoordinate(), endLon + "," + endLat); + if(!start && !end){ + iterator.remove(); + } + } + if(!CollectionUtils.isEmpty(specialAreaBillings)){ + // 拿到价格系数最高的特殊区域 + specialAreaBillings.sort(new Comparator<SpecialAreaBilling>() { + @Override + public int compare(SpecialAreaBilling o1, SpecialAreaBilling o2) { + return o2.getPriceCoefficient().compareTo(o1.getPriceCoefficient()); + } + }); + BigDecimal priceCoefficient = specialAreaBillings.get(0).getPriceCoefficient(); + orderPrivateCar.setOrderMoney(Objects.nonNull(orderPrivateCar.getOrderMoney())?new BigDecimal(orderPrivateCar.getOrderMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setStartMoney(Objects.nonNull(orderPrivateCar.getStartMoney())?new BigDecimal(orderPrivateCar.getStartMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setMileageMoney(Objects.nonNull(orderPrivateCar.getMileageMoney())?new BigDecimal(orderPrivateCar.getMileageMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setDurationMoney(Objects.nonNull(orderPrivateCar.getDurationMoney())?new BigDecimal(orderPrivateCar.getDurationMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setWaitMoney(Objects.nonNull(orderPrivateCar.getWaitMoney())?new BigDecimal(orderPrivateCar.getWaitMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setLongDistanceMoney(Objects.nonNull(orderPrivateCar.getLongDistanceMoney())?new BigDecimal(orderPrivateCar.getLongDistanceMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setParkMoney(Objects.nonNull(orderPrivateCar.getParkMoney())?new BigDecimal(orderPrivateCar.getParkMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + orderPrivateCar.setRoadTollMoney(Objects.nonNull(orderPrivateCar.getRoadTollMoney())?new BigDecimal(orderPrivateCar.getRoadTollMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D); + } + } + } + Map<String, Object> map = new HashMap<>(); map.put("orderMoney", orderPrivateCar.getOrderMoney());//订单金额 map.put("startMileage", orderPrivateCar.getStartMileage());//起步价 @@ -703,12 +762,6 @@ map.put("couponMoney", orderPrivateCar.getCouponMoney());//优惠券抵扣金额 map.put("discountMoney", orderPrivateCar.getDiscountMoney());//折扣抵扣金额 map.put("discount", orderPrivateCar.getDiscount());//折扣 - if(Objects.isNull(orderPrivateCar.getEstimatedPrice())){ - orderPrivateCar.setEstimatedPrice(BigDecimal.ZERO); - } - if(BigDecimal.valueOf(orderPrivateCar.getOrderMoney()).subtract(orderPrivateCar.getEstimatedPrice()).abs().doubleValue() > 3){ - orderPrivateCar.setIsException(1); - } map.put("estimatedPrice", orderPrivateCar.getEstimatedPrice()); map.put("isException", orderPrivateCar.getIsException());//是否异常 return map; @@ -1000,8 +1053,12 @@ OrderPrivateCar orderPrivateCar = this.selectById(orderId); orderPrivateCar.setPriceType(priceType); orderPrivateCar.setUpdatePrice(updatePrice); + orderPrivateCar.setOrderMoney(updatePrice.doubleValue()); orderPrivateCar.setPriceAuditState(1); orderPrivateCar.setState(6); this.updateById(orderPrivateCar); + // 推送新的价格给用户 + pushUtil.pushOrderMoney(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, updatePrice, 0); + pushUtil.pushOrderMoney(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, updatePrice, 0); } } -- Gitblit v1.7.1