From 0d87176a57e39c62d37490d95fb5c5f60a49a808 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 19 八月 2025 11:29:08 +0800 Subject: [PATCH] 合并代码 --- user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java | 217 ++++++++++++++++++++++++++++------------------------- 1 files changed, 114 insertions(+), 103 deletions(-) diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java index 56f597a..c66740c 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java @@ -433,111 +433,122 @@ */ @Override public ResultUtil travelOrder(Integer uid, TravelOrder travelOrder) throws Exception { - List<Integer> state = Arrays.asList(101, 102, 103, 104, 105, 106, 107, 201, 401); - Order order = this.selectOne(new EntityWrapper<Order>().eq("userId", uid).eq("status", 1).in("state", state)); - if(null != order){ - return ResultUtil.error("您还有正在进行的订单"); + boolean lock = redisUtil.lock(uid + "_travelOrder"); + if(!lock){ + return ResultUtil.error("系统繁忙,请稍后重试"); } - AppUser appUser = appUserService.selectById(uid); - order = this.selectOne(new EntityWrapper<Order>().eq("userPhone", appUser.getPhone()).eq("status", 1).in("state", state)); - if(null != order){ - return ResultUtil.error("您还有正在进行的订单"); - } - - String startAddress = travelOrder.getStartAddress(); - startAddress = startAddress.replaceAll("& #40;", "("); - startAddress = startAddress.replaceAll("& #41;", ")"); - travelOrder.setStartAddress(startAddress); - if(ToolUtil.isNotEmpty(travelOrder.getEndAddress())){ - String endAddress = travelOrder.getEndAddress(); - endAddress = endAddress.replaceAll("& #40;", "("); - endAddress = endAddress.replaceAll("& #41;", ")"); - travelOrder.setEndAddress(endAddress); - } - - order = new Order(); - BeanUtils.copyProperties(travelOrder, order); - if(ToolUtil.isEmpty(travelOrder.getUserPhone())){ - order.setUserPhone(appUser.getPhone()); - order.setUserName(appUser.getNickname()); - } - order.setUserId(uid); - order.setSource(1); - order.setHallOrder(0); - order.setStatus(1); - order.setCreateTime(new Date()); - order.setState(null != travelOrder.getDriverId() ? 102 : 101); - Double d = 0D; - if(ToolUtil.isNotEmpty(travelOrder.getEndAddress())){ - Map<String, String> distance = MapUtil.getDistance(order.getStartLng() + "," + order.getStartLat(), order.getEndLng() + "," + order.getEndLat(), 1); - if(null == distance){ - return ResultUtil.error("获取预估距离出错"); + try { + List<Integer> state = Arrays.asList(101, 102, 103, 104, 105, 106, 107, 201, 401); + Order order = this.selectOne(new EntityWrapper<Order>().eq("userId", uid).eq("status", 1).in("state", state)); + if(null != order){ + return ResultUtil.error("您还有正在进行的订单"); } - d = Double.valueOf(distance.get("distance")) / 1000; - order.setEstimatedMileage(d); - order.setEstimatedTime(Integer.valueOf(distance.get("duration")) / 60); - } - String city = ""; - Integer branchOfficeId = null; - District geocode = MapUtil.geocode(order.getStartLng().toString(), order.getStartLat().toString()); - if(null != geocode){ - String districtCode = geocode.getDistrictCode(); - BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode)); - if(null == branchOffice){ - String cityCode = geocode.getCityCode(); - branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode)); + AppUser appUser = appUserService.selectById(uid); + order = this.selectOne(new EntityWrapper<Order>().eq("userPhone", appUser.getPhone()).eq("status", 1).in("state", state)); + if(null != order){ + return ResultUtil.error("您还有正在进行的订单"); + } + + String startAddress = travelOrder.getStartAddress(); + startAddress = startAddress.replaceAll("& #40;", "("); + startAddress = startAddress.replaceAll("& #41;", ")"); + travelOrder.setStartAddress(startAddress); + if(ToolUtil.isNotEmpty(travelOrder.getEndAddress())){ + String endAddress = travelOrder.getEndAddress(); + endAddress = endAddress.replaceAll("& #40;", "("); + endAddress = endAddress.replaceAll("& #41;", ")"); + travelOrder.setEndAddress(endAddress); + } + + order = new Order(); + BeanUtils.copyProperties(travelOrder, order); + if(ToolUtil.isEmpty(travelOrder.getUserPhone())){ + order.setUserPhone(appUser.getPhone()); + order.setUserName(appUser.getNickname()); + } + order.setUserId(uid); + order.setSource(1); + order.setHallOrder(0); + order.setStatus(1); + order.setCreateTime(new Date()); + order.setState(null != travelOrder.getDriverId() ? 102 : 101); + Double d = 0D; + if(ToolUtil.isNotEmpty(travelOrder.getEndAddress())){ + Map<String, String> distance = MapUtil.getDistance(order.getStartLng() + "," + order.getStartLat(), order.getEndLng() + "," + order.getEndLat(), 1); + if(null == distance){ + return ResultUtil.error("获取预估距离出错"); + } + d = Double.valueOf(distance.get("distance")) / 1000; + order.setEstimatedMileage(d); + order.setEstimatedTime(Integer.valueOf(distance.get("duration")) / 60); + } + String city = ""; + Integer branchOfficeId = null; + District geocode = MapUtil.geocode(order.getStartLng().toString(), order.getStartLat().toString()); + if(null != geocode){ + String districtCode = geocode.getDistrictCode(); + BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("districtCode", districtCode)); if(null == branchOffice){ - String provinceCode = geocode.getProvinceCode(); - branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode)); + String cityCode = geocode.getCityCode(); + branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("cityCode", cityCode)); + if(null == branchOffice){ + String provinceCode = geocode.getProvinceCode(); + branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("status", 1).eq("provinceCode", provinceCode)); + } + } + if(null == branchOffice){ + return ResultUtil.error("起点暂无企业服务"); + } + branchOfficeId = branchOffice.getId(); + } + + order.setCreateTime(new Date()); + order = getOrderPrice(1, d, 0, order, city, branchOfficeId); + if(null != travelOrder.getDriverId()){ + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", travelOrder.getDriverId()).eq("status", 1)); + if(null == driverWork){ + return ResultUtil.error("司机还未上班"); + } + Driver driver = driverService.selectById(travelOrder.getDriverId()); + if(driver.getServerStatus() == 2){ + return ResultUtil.error("司机正在服务中"); + } + order.setAgentId(driver.getAgentId()); + order.setBranchOfficeId(driver.getBranchOfficeId()); + order.setOrderTakingTime(new Date()); + driver.setServerStatus(2); + driverService.updateById(driver); + appUser.setCancelCount(0); + appUser.setIsException(1); + appUserService.updateById(appUser); + } + + for (Integer i = 0; i < travelOrder.getDriverNum(); i++) { + order.setId(null); + order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5)); + boolean insert = this.insert(order); + if(insert){ + //推送状态 + pushUtil.pushOrderStatus(uid, 1, order.getId(), order.getState()); + if(null != order.getDriverId()){ + PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper(); + pushOrderInfoWarpper.setId(order.getId()); + pushOrderInfoWarpper.setState(order.getState()); + pushUtil.pushOrderInfo(order.getDriverId(), 2, pushOrderInfoWarpper); + }else{ + //推单 + pushOrder(order.getId()); + } } } - if(null == branchOffice){ - return ResultUtil.error("起点暂无企业服务"); - } - branchOfficeId = branchOffice.getId(); + redisUtil.setStrValue("newOrder", "true"); + return ResultUtil.success(order.getId()); + }catch (Exception e){ + e.printStackTrace(); + }finally { + redisUtil.unlock(uid + "_travelOrder"); } - - order.setCreateTime(new Date()); - order = getOrderPrice(1, d, 0, order, city, branchOfficeId); - if(null != travelOrder.getDriverId()){ - DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", travelOrder.getDriverId()).eq("status", 1)); - if(null == driverWork){ - return ResultUtil.error("司机还未上班"); - } - Driver driver = driverService.selectById(travelOrder.getDriverId()); - if(driver.getServerStatus() == 2){ - return ResultUtil.error("司机正在服务中"); - } - order.setAgentId(driver.getAgentId()); - order.setBranchOfficeId(driver.getBranchOfficeId()); - order.setOrderTakingTime(new Date()); - driver.setServerStatus(2); - driverService.updateById(driver); - appUser.setCancelCount(0); - appUser.setIsException(1); - appUserService.updateById(appUser); - } - - for (Integer i = 0; i < travelOrder.getDriverNum(); i++) { - order.setId(null); - order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5)); - boolean insert = this.insert(order); - if(insert){ - //推送状态 - pushUtil.pushOrderStatus(uid, 1, order.getId(), order.getState()); - if(null != order.getDriverId()){ - PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper(); - pushOrderInfoWarpper.setId(order.getId()); - pushOrderInfoWarpper.setState(order.getState()); - pushUtil.pushOrderInfo(order.getDriverId(), 2, pushOrderInfoWarpper); - }else{ - //推单 - pushOrder(order.getId()); - } - } - } - redisUtil.setStrValue("newOrder", "true"); - return ResultUtil.success(order.getId()); + return ResultUtil.error("系统异常"); } @@ -605,7 +616,7 @@ .eq("state", 2).last(" and surplusQuantity > 0 and now() < failureTime")); Double d = null; for (YouTuiDriver youTuiDriver : youTuiDrivers) { - String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId()); + String value = redisUtil.getValue("daijia:DRIVER" + youTuiDriver.getDriverId()); if(ToolUtil.isEmpty(value)){ continue; } @@ -667,7 +678,7 @@ Double score = null;//评分 Double d = null; for (Driver driver1 : drivers) { - String value = redisUtil.getValue("DRIVER" + driver1.getId()); + String value = redisUtil.getValue("daijia:DRIVER" + driver1.getId()); if(ToolUtil.isEmpty(value)){ continue; } @@ -801,7 +812,7 @@ return; } for (Driver driver1 : drivers) { - String value = redisUtil.getValue("DRIVER" + driver1.getId()); + String value = redisUtil.getValue("daijia:DRIVER" + driver1.getId()); if (ToolUtil.isEmpty(value)) { continue; } @@ -876,7 +887,7 @@ JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); orderInfoWarpper.setServiceCell(jsonObject.getString("num1")); } - String value = redisUtil.getValue("DRIVER" + orderInfoWarpper.getDriverId()); + String value = redisUtil.getValue("daijia:DRIVER" + orderInfoWarpper.getDriverId()); if(ToolUtil.isNotEmpty(value)){ String[] split = value.split(","); orderInfoWarpper.setDriverLon(split[0]); -- Gitblit v1.7.1