From 9b230057d5941c4ec0d29cda2c8163f9a6d7a1e9 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 02 六月 2023 15:51:38 +0800 Subject: [PATCH] 修改bug --- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java | 69 +++++++++++++++++++++++++++++++--- 1 files changed, 62 insertions(+), 7 deletions(-) diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java index ff310a5..f42654e 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java @@ -90,6 +90,9 @@ @Autowired private PushUtil pushUtil; + @Autowired + private ITDriverWorkService driverWorkService; + @@ -151,13 +154,20 @@ // 查询用户 TAppUser tAppUser = tAppUserMapper.selectById(tOrder.getUserId()); - model.addAttribute("userName",tAppUser.getNickname()); - model.addAttribute("userPhone",tAppUser.getPhone()); - model.addAttribute("havDiscount",tAppUser.getHavDiscount()); - if(1 == tAppUser.getHavDiscount()){ - // 计算9折优惠金额 - BigDecimal multiply = tOrder.getOrderMoney().multiply(new BigDecimal("0.1")).setScale(2); - model.addAttribute("multiply",multiply); + if(null != tAppUser){ + model.addAttribute("userName",tAppUser.getNickname()); + model.addAttribute("userPhone",tAppUser.getPhone()); + model.addAttribute("havDiscount",tAppUser.getHavDiscount()); + if(1 == tAppUser.getHavDiscount()){ + // 计算9折优惠金额 + BigDecimal multiply = tOrder.getOrderMoney().multiply(new BigDecimal("0.1")).setScale(2); + model.addAttribute("multiply",multiply); + } + }else{ + model.addAttribute("userName",tOrder.getUserName()); + model.addAttribute("userPhone",tOrder.getUserPhone()); + model.addAttribute("havDiscount", 0); + model.addAttribute("multiply",0D); } // 查询司机 @@ -428,9 +438,16 @@ tOrder.setEndLat(jsonObject.getString("lat")); tOrder.setEndLng(jsonObject.getString("lon")); } + if(ToolUtil.isEmpty(tOrder.getStartLng()) || ToolUtil.isEmpty(tOrder.getStartLat())){ + return ResultUtil.error("请输入有效的起点"); + } + tOrder.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3)); Double d = 0D; if(ToolUtil.isNotEmpty(endAddress)){ + if(ToolUtil.isEmpty(tOrder.getEndLng()) || ToolUtil.isEmpty(tOrder.getEndLat())){ + return ResultUtil.error("请输入有效的终点"); + } Map<String, String> distance = MapUtil.getDistance(tOrder.getStartLng() + "," + tOrder.getStartLat(), tOrder.getEndLng() + "," + tOrder.getEndLat(), 1); if(null == distance){ return ResultUtil.error("获取预估距离出错", ""); @@ -816,12 +833,50 @@ if(order1.getState() == 101 || order1.getState() == 201){ order1.setHallOrder(1); TOrderServiceImpl.this.updateById(order1); + + ExtraPushOrder(order1); } } }, num4 * 1000); }else{ order.setHallOrder(1); this.updateById(order); + ExtraPushOrder(order); } } + + public void ExtraPushOrder(TOrder order){ + String startLat = order.getStartLat(); + String startLng = order.getStartLng(); + + //找到中心点 + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat)); + Double num = 5D;//范围公里 + //构造半径 + Distance distanceR = new Distance(num, Metrics.KILOMETERS); + //画圆 + Circle circle = new Circle(geoJsonPoint, distanceR); + // 构造query对象 + Query query = Query.query(Criteria.where("location").withinSphere(circle)); + List<Location> locations = mongoTemplate.find(query, Location.class); + List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); + if(driverIds.size() == 0){ + return; + } + List<TDriverWork> tDriverWorks = driverWorkService.selectList(new EntityWrapper<TDriverWork>().in("driverId", driverIds).eq("status", 1)); + driverIds = tDriverWorks.stream().map(TDriverWork::getDriverId).collect(Collectors.toList()); + List<TDriver> drivers = tDriverMapper.selectList(new EntityWrapper<TDriver>().eq("approvalStatus", 2) + .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds)); + if(drivers.size() == 0){ + return; + } + for (TDriver driver1 : drivers) { + String value = redisUtil.getValue("DRIVER" + driver1.getId()); + if (ToolUtil.isEmpty(value)) { + return; + } + pushUtil.pushGrabOrderExtras(driver1.getId(), 2); + } + } + } -- Gitblit v1.7.1