From 388d1eb5f87c50ede6b415950899fe8bb938ee28 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 15 八月 2025 15:05:41 +0800 Subject: [PATCH] 修改bug --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 111 ++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 77 insertions(+), 34 deletions(-) diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java index fe336f4..1fd04c3 100644 --- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java @@ -44,7 +44,7 @@ import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; +import java.time.LocalDate; import java.util.*; import java.util.concurrent.TimeUnit; @@ -156,7 +156,7 @@ List<Driver> drivers = driverMapper.queryIdleDriver(type, companyId); List<Driver> list = new ArrayList<>(); for(Driver driver : drivers){ - String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(driver.getId())); + String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(driver.getId())); if(null != value){ Map<String, Double> distance1 = geodesyUtil.getDistance(lon + "," + lat, value); double d = Double.valueOf(distance1.get("WGS84")).doubleValue(); @@ -173,7 +173,7 @@ List<Driver> drivers = driverMapper.queryIdleDriver_(type, serverCarModelId, companyId); List<Driver> list = new ArrayList<>(); for(Driver driver : drivers){ - String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(driver.getId())); + String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(driver.getId())); if(null != value){ Map<String, Double> distance1 = geodesyUtil.getDistance(lon + "," + lat, value); double d = Double.valueOf(distance1.get("WGS84")).doubleValue(); @@ -401,14 +401,19 @@ driver.setSex(registeredWarpper.getSex()); driver.setIdCard(registeredWarpper.getIdCard()); + driver.setArea(registeredWarpper.getArea()); - driver.setAreaCode(registeredWarpper.getAreaCode()); + driver.setAreaCode(registeredWarpper.getPlaceOfEmployment()); driver.setCity(registeredWarpper.getCity()); driver.setCityCode(registeredWarpper.getCityCode()); driver.setProvince(registeredWarpper.getProvince()); driver.setProvinceCode(registeredWarpper.getProvinceCode()); + driver.setCompanyId(registeredWarpper.getCompanyId()); + if(registeredWarpper.getCompanyId()==null){ + return ResultUtil.error("请选择服务商"); + } - String code = registeredWarpper.getAreaCode(); + String code = registeredWarpper.getPlaceOfEmployment(); Company query = companyCityService.query(code); if(null == query){ return ResultUtil.error("选择从业地暂未开通业务"); @@ -633,6 +638,10 @@ driverWorkMapper.updateById(driverWork); driver.setState(1); + // 更新车辆使用状态 + carService.updateUseState(uid); + + new Thread(new Runnable() { @Override public void run() { @@ -649,6 +658,18 @@ return ResultUtil.error("车辆正在使用中"); } } + + //判断车辆是否正在使用中 + Car car = carService.selectById(driver.getCarId()); + if(car.getUseDriverId() != null && !car.getUseDriverId().equals(uid)){ + return ResultUtil.error("当前绑定车辆正在使用中,请更换车辆"); + }else if(car.getUseDriverId()==null){ + car.setUseDriverId(uid); + carService.updateById(car); + } + + + driverWork = new DriverWork(); driverWork.setState(1); driverWork.setDriverId(uid); @@ -696,6 +717,9 @@ driverWorkMapper.updateById(driverWork); driver.setState(1); + // 更新车辆使用状态 + carService.updateUseState(uid); + new Thread(new Runnable() { @Override public void run() { @@ -705,6 +729,18 @@ } }).start(); }else{ + + //判断车辆是否正在使用中 + Car car = carService.selectById(driver.getCarId()); + if(car.getUseDriverId() != null && !car.getUseDriverId().equals(uid)){ + return ResultUtil.error("当前绑定车辆正在使用中,请更换车辆"); + }else if(car.getUseDriverId()==null){ + car.setUseDriverId(uid); + carService.updateById(car); + } + + + driverWork = new DriverWork(); driverWork.setState(1); driverWork.setDriverId(uid); @@ -896,10 +932,17 @@ if(driver.getState() == 3){ return ResultUtil.error("还在服务中,不能更换"); } - boolean idle = carService.idle(carId); +// boolean idle = carService.idle(carId); + // 修改是否别司机在使用 + boolean idle = carService.useState(carId,uid); if(!idle){ return ResultUtil.error("当前车辆已经有其他司机在使用,请更换车辆"); } + // 将所有绑定他的车 =null + carService.updateUseState(carId,uid); + Car car = carService.selectById(carId); + car.setUseDriverId(uid); + carService.updateById( car); driver.setCarId(carId); this.updateById(driver); return ResultUtil.success(); @@ -1287,7 +1330,7 @@ String s = JwtTokenUtil.generateToken(String.valueOf(driver.getId())); redisTemplate.opsForValue().set(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7, TimeUnit.DAYS); redisTemplate.opsForValue().set(driver.getPhone(), s.substring(s.length() - 32)); - redisTemplate.opsForValue().set("DRIVER_" + driver.getId(), s); + redisTemplate.opsForValue().set("dache:DRIVER_" + driver.getId(), s); LoginWarpper loginWarpper = new LoginWarpper(); @@ -1383,7 +1426,7 @@ String s = JwtTokenUtil.generateToken(String.valueOf(driver.getId())); redisTemplate.opsForValue().set(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7, TimeUnit.DAYS); redisTemplate.opsForValue().set(driver.getPhone(), s.substring(s.length() - 32)); - redisTemplate.opsForValue().set("DRIVER_" + driver.getId(), s); + redisTemplate.opsForValue().set("dache:DRIVER_" + driver.getId(), s); LoginWarpper loginWarpper = new LoginWarpper(); @@ -1469,7 +1512,7 @@ String s = JwtTokenUtil.generateToken(String.valueOf(driver.getId())); redisTemplate.opsForValue().set(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7, TimeUnit.DAYS); redisTemplate.opsForValue().set(driver.getPhone(), s.substring(s.length() - 32)); - redisTemplate.opsForValue().set("DRIVER_" + driver.getId(), s); + redisTemplate.opsForValue().set("dache:DRIVER_" + driver.getId(), s); LoginWarpper loginWarpper = new LoginWarpper(); @@ -1577,9 +1620,9 @@ Driver driver = driverMapper.selectById(id); String key = (String) redisTemplate.opsForValue().get(driver.getPhone()); redisTemplate.delete(key);//删除个人信息数据 - redisTemplate.delete("DRIVER_" + driver.getPhone());//删除后台冻结相关缓存 - redisTemplate.delete("DRIVER_" + id);//清除存储的token - redisTemplate.delete("DEVICE_" + id);//清除车载端登录的标识 + redisTemplate.delete("dache:DRIVER_" + driver.getPhone());//删除后台冻结相关缓存 + redisTemplate.delete("dache:DRIVER_" + id);//清除存储的token + redisTemplate.delete("dache:DEVICE_" + id);//清除车载端登录的标识 return ResultUtil.success(); } @@ -1587,23 +1630,23 @@ public DriverIndexVo queryHomeDataFromDriver(Integer uid) { DriverIndexVo driverIndexVo = new DriverIndexVo(); // 获取快车订单 - List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().ne("state", 10).eq("driverId", uid).like("insertTime", LocalDateTime.now().toString())); + List<OrderPrivateCar> orderPrivateCars = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().in("state", Arrays.asList(7, 8, 9)).eq("driverId", uid).like("insertTime", LocalDate.now().toString())); // 跨城订单 - List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().ne("state", 10).eq("driverId", uid).like("insertTime", LocalDateTime.now().toString())); + List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().in("state", Arrays.asList(7, 8, 9)).eq("driverId", uid).like("insertTime", LocalDate.now().toString())); // 出租车订单 - List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().ne("state", 10).eq("driverId", uid).like("insertTime", LocalDateTime.now().toString())); + List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().in("state", Arrays.asList(7, 8, 9)).eq("driverId", uid).like("insertTime", LocalDate.now().toString())); driverIndexVo.setTodayOrderNum(orderPrivateCars.size() + orderCrossCities.size() + orderTaxis.size()); double sum = orderPrivateCars.stream().mapToDouble(OrderPrivateCar::getOrderMoney).sum(); double sum1 = orderCrossCities.stream().mapToDouble(OrderCrossCity::getOrderMoney).sum(); - double sum2 = orderTaxis.stream().mapToDouble(OrderTaxi::getOrderMoney).sum(); + double sum2 = orderTaxis.stream().filter(e->e.getOrderMoney()!=null).mapToDouble(OrderTaxi::getOrderMoney).sum(); driverIndexVo.setTodayOrderMoney(new BigDecimal(sum +sum1+sum2)); - BigDecimal reduce = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().eq("promotionDriverId", uid).like("insertTime", LocalDateTime.now().toString())).stream().map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal reduce1 = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().eq("promotionDriverId", uid).like("insertTime", LocalDateTime.now().toString())).stream().map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal reduce2 = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().eq("promotionDriverId", uid).like("insertTime", LocalDateTime.now().toString())).stream().map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal reduce = orderPrivateCarMapper.selectList(new EntityWrapper<OrderPrivateCar>().eq("promotionDriverId", uid).like("insertTime", LocalDate.now().toString())).stream().map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal reduce1 = orderCrossCityMapper.selectList(new EntityWrapper<OrderCrossCity>().eq("promotionDriverId", uid).like("insertTime", LocalDate.now().toString())).stream().map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal reduce2 = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().eq("promotionDriverId", uid).like("insertTime", LocalDate.now().toString())).stream().map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); driverIndexVo.setTodayPromotionMoney(reduce.add(reduce1).add(reduce2)); return driverIndexVo; }; @@ -1622,9 +1665,9 @@ List<OrderTaxi> orderTaxis = orderTaxiMapper.selectList(new EntityWrapper<OrderTaxi>().ne("state", 10).eq("driverId", uid)); DriverOrderDataVo driverOrderDataVo = new DriverOrderDataVo(); driverOrderDataVo.setAllOrderNum(orderPrivateCars.size() + orderCrossCities.size() + orderTaxis.size()); - long count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).count(); - long count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).count(); - long count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).count(); + long count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).count(); + long count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).count(); + long count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).count(); driverOrderDataVo.setTodayOrderNum((int) (count+count1+count2)); Date date = new Date(); @@ -1668,9 +1711,9 @@ - double count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).mapToDouble(OrderPrivateCar::getOrderMoney).sum(); - double count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).mapToDouble(OrderCrossCity::getOrderMoney).sum(); - double count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).mapToDouble(OrderTaxi::getOrderMoney).sum(); + double count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).mapToDouble(OrderPrivateCar::getOrderMoney).sum(); + double count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).mapToDouble(OrderCrossCity::getOrderMoney).sum(); + double count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).mapToDouble(OrderTaxi::getOrderMoney).sum(); driverOrderDataVo.setTodayOrderMoney(new BigDecimal(count+count1+count2)); @@ -1715,9 +1758,9 @@ - BigDecimal count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDateTime.now().toString())).map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal count = orderPrivateCars.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).map(OrderPrivateCar::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal count1 = orderCrossCities.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).map(OrderCrossCity::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal count2 = orderTaxis.stream().filter(e -> simpleDateFormat.format(e.getInsertTime()).equals(LocalDate.now().toString())).map(OrderTaxi::getPromotionMoney).reduce(BigDecimal.ZERO, BigDecimal::add); driverOrderDataVo.setTodayOrderMoney(count.add(count1).add(count2)); @@ -1752,16 +1795,16 @@ */ private void singlePointLogin(Integer id) { //开始验证当前账号是否在别处登录 - String value = (String) redisTemplate.opsForValue().get("DRIVER_" + id); + String value = (String) redisTemplate.opsForValue().get("dache:DRIVER_" + id); if (ToolUtil.isNotEmpty(value)) {//将另外设备上的强迫下线(如果是车载端不需要下线) //开始清除redis中无效的数据 Driver driver = driverMapper.selectById(id); - String key = (String) redisTemplate.opsForValue().get("DRIVER_" + driver.getPhone()); + String key = (String) redisTemplate.opsForValue().get("dache:DRIVER_" + driver.getPhone()); if(ToolUtil.isNotEmpty(key)){ redisTemplate.delete(key);//删除个人信息数据 } - redisTemplate.delete("DRIVER_" + driver.getPhone());//删除后台冻结相关缓存 - redisTemplate.delete("DRIVER_" + id);//清除存储的token + redisTemplate.delete("dache:DRIVER_" + driver.getPhone());//删除后台冻结相关缓存 + redisTemplate.delete("dache:DRIVER_" + id);//清除存储的token } } @@ -1788,8 +1831,8 @@ usernamePasswordToken, simpleAuthenticationInfo); String s = JwtTokenUtil.generateToken(String.valueOf(driver.getId())); redisTemplate.opsForValue().set(s.substring(s.length() - 32), String.valueOf(driver.getId()), 7, TimeUnit.DAYS); - redisTemplate.opsForValue().set("DRIVER_" + driver.getPhone(), s.substring(s.length() - 32)); - redisTemplate.opsForValue().set("DRIVER_" + driver.getId(), s); + redisTemplate.opsForValue().set("dache:DRIVER_" + driver.getPhone(), s.substring(s.length() - 32)); + redisTemplate.opsForValue().set("dache:DRIVER_" + driver.getId(), s); return s; } -- Gitblit v1.7.1