From cb7bb59905f6ff335ca24ec6a963d0b17d979d79 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期一, 22 九月 2025 09:08:22 +0800 Subject: [PATCH] 修改 --- UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 124 ++++++++++++++++++++++++++++++----------- 1 files changed, 91 insertions(+), 33 deletions(-) diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 77e3a99..36411db 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -35,6 +35,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; +import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; @@ -171,7 +172,8 @@ private IServerCarModelService serverCarModelService; @Autowired private IAppOpenInfoService appOpenInfoService; - + @Resource + private UserInfoMapper userInfoMapper; @Value("${filePath}") private String filePath; @@ -286,24 +288,24 @@ orderPrivateCar.setTravelTime(travelTime); orderPrivateCar.setOrderType(reservation); orderPrivateCar.setOrderSource(orderSource); + Driver driver2 = driverService.selectById(driverId); if(orderSource == 2){//扫码下单 - Driver driver = driverService.selectById(driverId); - if(null == driver){ + if(null == driver2){ return ResultUtil.error("司机信息有误,无法完成下单"); } - if(driver.getAuthState() == 1){ + if(driver2.getAuthState() == 1){ return ResultUtil.error("司机信息还未完成审核,无法完成下单"); } - if(driver.getAuthState() == 3){ + if(driver2.getAuthState() == 3){ return ResultUtil.error("司机账户已被冻结,无法提供服务"); } - if(driver.getAuthState() == 4){ + if(driver2.getAuthState() == 4){ return ResultUtil.error("司机信息未通过审核,无法提供服务"); } - if(driver.getState() == 1){ + if(driver2.getState() == 1){ return ResultUtil.error("司机还未上线,无法提供服务"); } - if(driver.getState() == 3){ + if(driver2.getState() == 3){ return ResultUtil.error("司机正在服务中,无法提供服务"); } List<DriverService> query = driverServiceService.query(driverId, 1); @@ -312,15 +314,15 @@ } orderPrivateCar.setDriverId(driverId); - orderPrivateCar.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : ( - driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1)); + orderPrivateCar.setCompanyId(driver2.getFranchiseeId() != null && driver2.getFranchiseeId() != 0 ? driver2.getFranchiseeId() : ( + driver2.getCompanyId() != null && driver2.getCompanyId() != 0 ? driver2.getCompanyId() : 1)); orderPrivateCar.setState(2); - orderPrivateCar.setCarId(driver.getCarId()); - CarService query1 = carServiceMapper.query(1, driver.getCarId()); + orderPrivateCar.setCarId(driver2.getCarId()); + CarService query1 = carServiceMapper.query(1, driver2.getCarId()); orderPrivateCar.setServerCarModelId(query1.getServerCarModelId()); orderPrivateCar.setSnatchOrderTime(new Date()); - driver.setState(3); - driverService.updateById(driver); + driver2.setState(3); + driverService.updateById(driver2); } // 查询城市的订单额度 OpenCity openCity = openCityService.selectOne(new EntityWrapper<OpenCity>() @@ -340,7 +342,17 @@ // 查询预估价格 ResultUtil<List<ServerCarModelWarpper>> listResultUtil = serverCarModelService.queryServerCarModel(startLon + "," + startLat, endLon + "," + endLat, 1); List<ServerCarModelWarpper> data = listResultUtil.getData(); - data = data.stream().filter(e -> serverCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList()); + if(Objects.isNull(serverCarModelId)){ + //获取经营业务 + CarService query = new CarService(); + query.setCarId(driver2.getCarId()); + CarService service = carServiceMapper.selectOne(query); + if(Objects.nonNull(service)){ + serverCarModelId = service.getServerCarModelId(); + } + } + Integer finalServerCarModelId = serverCarModelId; + data = data.stream().filter(e -> finalServerCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList()); if(Objects.nonNull(openCity) && !CollectionUtils.isEmpty(data) && BigDecimal.valueOf(data.get(0).getAmount()).compareTo(openCity.getOrderMagnitude()) > 0){ orderPrivateCar.setIsReassign(1); orderPrivateCar.setIsDelete(1); @@ -362,7 +374,9 @@ return ResultUtil.success(baseWarpper); }else { if(orderSource == 2){ - orderPrivateCar.setEstimatedPrice(data.get(0).getAmount()); + if(!CollectionUtils.isEmpty(data)){ + orderPrivateCar.setEstimatedPrice(data.get(0).getAmount()); + } }else { orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount()); } @@ -904,7 +918,10 @@ if(null == orderPrivateCar){ return ResultUtil.error("取消订单失败,订单信息有误"); } - if(orderPrivateCar.getState() > 5 && orderPrivateCar.getState() != 11){ + if(orderPrivateCar.getPayMethod() == 0 && (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney()>0) && orderPrivateCar.getState() > 5 && orderPrivateCar.getState() != 11){ + return ResultUtil.error("取消订单失败,当前状态无法取消"); + } + if(orderPrivateCar.getPayMethod() == 1 && orderPrivateCar.getState() > 5 && orderPrivateCar.getState() != 11){ return ResultUtil.error("取消订单失败,不合法的操作"); } if(null == orderPrivateCar.getDriverId()){//没有接单的情况 @@ -926,6 +943,26 @@ integer = orderCancelService.saveData(id, 1, "无司机接单", "无司机接单", null, null, 2, 1, uid); orderPrivateCar.setState(10); this.updateById(orderPrivateCar); + if (orderPrivateCar.getPayMethod() == 0 && (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney()>0)) { + // 退款 + if (orderPrivateCar.getPayType() == 1 && orderPrivateCar.getOrderMoney() != 0) {//微信退款 + // 微信退款 + payMoneyUtil.wxRefund(orderPrivateCar.getTransactionId(), orderPrivateCar.getOrderNum(), String.valueOf(orderPrivateCar.getPaymentAdvanceMoney()), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney())), "/base/transferWXNotify"); +// orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue()); + } + if (orderPrivateCar.getPayType() == 2 && orderPrivateCar.getOrderMoney() != 0) {//支付宝退款 + // 支付宝退款 + payMoneyUtil.aliRefund(orderPrivateCar.getTransactionId(), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).multiply(new BigDecimal(100)))); +// orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue()); + } + if (orderPrivateCar.getPayType() == 3 && orderPrivateCar.getOrderMoney() != 0) {//余额支付 + BigDecimal refundMoney = new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()); + // 余额退款 + UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId()); + userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(refundMoney).doubleValue()); + userInfoMapper.updateById(userInfo); + } + } } }else { CancleOrder query = cancleOrderService.query(orderPrivateCar.getOrderType(), 1, orderPrivateCar.getCompanyId()); @@ -939,6 +976,26 @@ orderPrivateCar.setState(10); this.updateById(orderPrivateCar); + if (orderPrivateCar.getPayMethod() == 0 && (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney()>0)) { + // 退款 + if (orderPrivateCar.getPayType() == 1 && orderPrivateCar.getOrderMoney() != 0) {//微信退款 + // 微信退款 + payMoneyUtil.wxRefund(orderPrivateCar.getTransactionId(), orderPrivateCar.getOrderNum(), String.valueOf(orderPrivateCar.getPaymentAdvanceMoney()), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney())), "/base/transferWXNotify"); +// orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue()); + } + if (orderPrivateCar.getPayType() == 2 && orderPrivateCar.getOrderMoney() != 0) {//支付宝退款 + // 支付宝退款 + payMoneyUtil.aliRefund(orderPrivateCar.getTransactionId(), String.valueOf(new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()).multiply(new BigDecimal(100)))); +// orderPrivateCar.setPayMoney(new BigDecimal(orderPrivateCar.getOrderMoney()).doubleValue()); + } + if (orderPrivateCar.getPayType() == 3 && orderPrivateCar.getOrderMoney() != 0) {//余额支付 + BigDecimal refundMoney = new BigDecimal(orderPrivateCar.getPaymentAdvanceMoney()); + // 余额退款 + UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId()); + userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(refundMoney).doubleValue()); + userInfoMapper.updateById(userInfo); + } + } } this.deleteTask(id);//删除定时任务 @@ -1126,7 +1183,7 @@ 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(), 3, orderPrivateCar.getId(), 1, c.doubleValue(),driver.getBalance()); + incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue(),driver.getLaveBusinessMoney()); this.deleteTask(id);//删除定时任务 @@ -1187,11 +1244,10 @@ for(Driver driver : list){//开始进行推送 // 判断该司机是否有30分钟内预约单 long count = orderPrivateCars.stream().filter(orderPrivateCar1 -> driver.getId().equals(orderPrivateCar1.getDriverId()) - && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).minusMinutes(query.getLimitationTime()).isBefore(LocalDateTime.now()) - && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).isAfter(LocalDateTime.now())).count(); - if(orderPrivateCar.getOrderType() == 2 && orderPrivateCarDriverIds.contains(driver.getId())){ - continue; - } + && DateUtil.dateToLocalDateTime(orderPrivateCar1.getTravelTime()).minusMinutes(query.getLimitationTime()).isBefore(LocalDateTime.now())).count(); +// if(orderPrivateCar.getOrderType() == 2 && orderPrivateCarDriverIds.contains(driver.getId())){ +// continue; +// } if(count > 0){ continue; } @@ -1594,7 +1650,7 @@ 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.getBalance()); + incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney()); orderPrivateCar.setState(8); }else { if(orderPrivateCar.getOrderSource() == 2){ @@ -1646,7 +1702,7 @@ 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.getBalance()); + incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney()); } @@ -1834,7 +1890,7 @@ 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(), 3, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getBalance()); + incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 3, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney()); this.deleteTask(orderPrivateCar.getId());//删除定时任务 // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 @@ -1881,13 +1937,15 @@ transactionDetailsService.saveData(orderPrivateCar.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, 1, query.getOrderId()); // orderPrivateCar.setState(8); orderPrivateCar.setPayType(type); - orderPrivateCar.setTransactionId(order_id); + if(!StringUtils.hasLength(orderPrivateCar.getTransactionId())){ + orderPrivateCar.setTransactionId(order_id); + } this.updateById(orderPrivateCar); - UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId()); - SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId()); - userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分 - userInfoService.updateById(userInfo); +// UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId()); +// SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId()); +// userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分 +// userInfoService.updateById(userInfo); //处理优惠券和红包 if(null != orderPrivateCar.getCouponId()){ @@ -1937,7 +1995,7 @@ 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.getBalance()); + incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney()); }else { if(orderPrivateCar.getOrderSource() == 2){ orderPrivateCar.setState(2); @@ -1975,7 +2033,7 @@ 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.getBalance()); + incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney()); } } // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 -- Gitblit v1.7.1