From 85fefef6c862c543117ad8d2691817bfeae69f41 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 23 六月 2023 11:11:15 +0800 Subject: [PATCH] 修改bug --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 183 +++++++++++++++++++++++---------------------- 1 files changed, 93 insertions(+), 90 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java index ed9b1de..d9ceaf8 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java @@ -34,7 +34,6 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.math.MathContext; import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -110,8 +109,6 @@ @Value("${callbackPath}") private String callbackPath;//支付回调网关地址 - - private Map<String, Timer> timerMap = new HashMap<>(); @@ -204,6 +201,8 @@ driverService.updateById(driver); //推送状态 if(null != order.getDriverId()){ + //推动订单数据 + redisUtil.addSetValue("orderService", order.getId().toString()); pushUtil.pushOrderStatus(uid, 2, order.getId(), order.getStatus()); }else{ //开始推单 @@ -426,7 +425,6 @@ /** * 订单推送逻辑 - * @param order */ public void pushOrder(Long orderId){ try { @@ -594,11 +592,16 @@ new Timer().schedule(new TimerTask() { @Override public void run() { - driver1.setServerStatus(1); - driverService.updateById(driver1); - Order order1 = OrderServiceImpl.this.selectById(order.getId()); - if(order1.getState() == 101 || order1.getState() == 201){ + if(order1.getState() != 101 && order1.getState() != 201 && order1.getDriverId().compareTo(driver1.getId()) != 0){ + driver1.setServerStatus(1); + driverService.updateById(driver1); + } + + if(order1.getState() == 201 || (order1.getState() == 101 && null == order1.getDriverId())){ + driver1.setServerStatus(1); + driverService.updateById(driver1); + order1.setHallOrder(1); OrderServiceImpl.this.updateById(order1); ExtraPushOrder(order); @@ -805,11 +808,7 @@ driverService.updateById(driver); if(state == 201){//转单的订单 //停止定时任务 - Timer timer = timerMap.get(order.getId().toString()); - if(null != timer){ - timer.cancel(); - timerMap.remove(order.getId().toString()); - } + redisUtil.delSetValue("orderService", order.getId().toString()); //原司机下班 TODO 2023-06-21 客户说取消此功能 Driver oldDriver = driverService.selectById(oldDriverId); oldDriver.setServerStatus(1); @@ -842,7 +841,7 @@ } //推动订单数据 - pushOrderInfo(order.getId(), uid);//开始推送订单数据 + redisUtil.addSetValue("orderService", order.getId().toString()); //发送系统消息 systemMessageService.addSystemMessage(uid, 2, "接单成功", "您已成功接到用户订单,请尽快联系客户!"); pushUtil.pushOrderStatus(order.getDriverId(), 2, order.getId(), order.getState()); @@ -867,7 +866,18 @@ */ @Override public OrderInfoWarpper queryOrderInfo(Integer uid, Long orderId) throws Exception { + Order order = this.selectById(orderId); OrderInfoWarpper orderInfoWarpper = this.baseMapper.queryOrderInfo(orderId); + Integer wait = Integer.valueOf(orderInfoWarpper.getWaitTime()); + if(null != order.getStartWaitTime()){ + wait += Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue(); + } + Integer s = wait % 60; + int m = Double.valueOf(wait / 60).intValue(); + orderInfoWarpper.setWaitTime((m < 10 ? ("0" + m) : m) + ":" + (s < 10 ? ("0" + s) : s)); + Double actualMileage = orderInfoWarpper.getActualMileage(); + orderInfoWarpper.setActualMileage(new BigDecimal(actualMileage).divide(new BigDecimal(1000), 2, RoundingMode.HALF_EVEN).doubleValue()); + if(orderInfoWarpper.getTravelTime() == null){ orderInfoWarpper.setTravelTime(0); } @@ -953,6 +963,7 @@ driver.setServerStatus(1); driverService.updateById(driver); saveIntegral(order); + redisUtil.delSetValue("orderService", order.getId().toString()); break; case 401: order.setStartWaitTime(new Date()); @@ -1031,58 +1042,45 @@ /** * 定时任务推送订单数据 * @param orderId - * @param uid */ - public void pushOrderInfo(Long orderId, Integer uid){ - Timer timer = new Timer(); - timer.schedule(new TimerTask() { - @Override - public void run() { - String value = redisUtil.getValue("DRIVER" + uid); - Order order = OrderServiceImpl.this.selectById(orderId); - if(order.getState() == 106 || order.getState() == 301){ - Timer timer = timerMap.get(order.getId().toString()); - if(null != timer){ - timer.cancel(); - timerMap.remove(order.getId().toString()); - } - } + @Override + public void pushOrderInfo(Long orderId){ + Order order = this.selectById(orderId); + Integer driverId = order.getDriverId(); + String value = redisUtil.getValue("DRIVER" + driverId); + if(order.getState() == 106 || order.getState() == 301){ + redisUtil.delSetValue("orderService", orderId.toString()); + return; + } - PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper(); - pushOrderInfoWarpper.setId(orderId); - if(ToolUtil.isNotEmpty(value)){ - String[] split = value.split(","); - pushOrderInfoWarpper.setDriverLat(split[1]); - pushOrderInfoWarpper.setDriverLng(split[0]); - } - Integer w = 0; - if(null != order.getStartWaitTime()){ - w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue(); - } - Integer wait = order.getWaitTime() + w; - Integer s = wait % 60; - pushOrderInfoWarpper.setWaitTime(Double.valueOf(wait / 60).intValue() + "." + s); - pushOrderInfoWarpper.setState(order.getState()); - pushOrderInfoWarpper.setActualMileage(Double.valueOf(order.getActualMileage() / 1000)); - pushOrderInfoWarpper.setTravelTime("0"); - if(null != order.getStartTime()){ - int travelTime = Double.valueOf((System.currentTimeMillis() - order.getStartTime().getTime()) / 1000).intValue(); - Integer ss = travelTime % 60; - pushOrderInfoWarpper.setTravelTime(Double.valueOf(travelTime / 60).intValue() + "." + ss); - } - if(null != order.getUserId()){ - pushUtil.pushOrderInfo(order.getUserId(), 1, pushOrderInfoWarpper); - } - if(order.getState() == 301){//司机取消不推送给司机 - CancelOrder cancelOrder = cancelOrderService.selectOne(new EntityWrapper<CancelOrder>().eq("orderId", order.getId()).eq("status", 1)); - if(null != cancelOrder && cancelOrder.getUserType() == 2){ - return; - } - } - pushUtil.pushOrderInfo(uid, 2, pushOrderInfoWarpper); + PushOrderInfoWarpper pushOrderInfoWarpper = new PushOrderInfoWarpper(); + pushOrderInfoWarpper.setId(orderId); + if(ToolUtil.isNotEmpty(value)){ + String[] split = value.split(","); + pushOrderInfoWarpper.setDriverLat(split[1]); + pushOrderInfoWarpper.setDriverLng(split[0]); + } + Integer w = 0; + if(null != order.getStartWaitTime()){ + w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 1000).intValue(); + } + Integer wait = order.getWaitTime() + w; + Integer s = wait % 60; + Integer m = wait / 60; + pushOrderInfoWarpper.setWaitTime((m < 10 ? ("0" + m) : m) + ":" + (s < 10 ? ("0" + s) : s)); + pushOrderInfoWarpper.setState(order.getState()); + pushOrderInfoWarpper.setActualMileage(new BigDecimal(order.getActualMileage()).divide(new BigDecimal(1000), 2, RoundingMode.HALF_EVEN).doubleValue()); + pushOrderInfoWarpper.setTravelTime("0"); + if(null != order.getUserId()){ + pushUtil.pushOrderInfo(order.getUserId(), 1, pushOrderInfoWarpper); + } + if(order.getState() == 301){//司机取消不推送给司机 + CancelOrder cancelOrder = cancelOrderService.selectOne(new EntityWrapper<CancelOrder>().eq("orderId", order.getId()).eq("status", 1)); + if(null != cancelOrder && cancelOrder.getUserType() == 2){ + return; } - },0, 5000); - timerMap.put(orderId.toString(), timer); + } + pushUtil.pushOrderInfo(driverId, 2, pushOrderInfoWarpper); } @@ -1207,6 +1205,7 @@ order.setState(301); this.updateById(order); + redisUtil.delSetValue("orderService", orderId.toString()); CancelOrder cancelOrder = new CancelOrder(); cancelOrder.setOrderId(orderId); @@ -1222,7 +1221,9 @@ driverService.updateById(driver); } - pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getStatus()); + if(null != order.getUserId()){ + pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getStatus()); + } return ResultUtil.success(); } @@ -1256,7 +1257,8 @@ } Integer waitTime = order.getWaitTime() + order.getOutWaitTime(); Integer s = waitTime % 60; - orderPriceWarpper.setWaitTime(Double.valueOf(waitTime / 60).intValue() + "." + s); + Integer m = waitTime / 60; + orderPriceWarpper.setWaitTime((m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s)); orderPriceWarpper.setWaitTimePrice(order.getWaitTimePrice() + order.getOutWaitTimePrice()); orderPriceWarpper.setDiscountAmount(order.getDiscountAmount()); orderPriceWarpper.setDiscountedPrice(order.getDiscountedPrice()); @@ -1457,31 +1459,32 @@ Driver driver = driverService.selectById(order.getDriverId()); AppUser appUser = appUserService.selectById(order.getUserId()); - //司机推荐首单收入 - List<Integer> state = Arrays.asList(107, 108, 109); - int count = this.selectCount(new EntityWrapper<Order>().eq("userId", order.getUserId()).eq("status", 1).in("state", state)); - if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){ - Driver driver1 = driverService.selectById(appUser.getInviterId()); - //首单积分奖励 - SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4)); - JSONObject jsonObject2 = JSON.parseObject(systemConfig1.getContent()); - Integer num4 = jsonObject2.getInteger("num4"); - AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); - accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); - accountChangeDetail.setUserType(2); - accountChangeDetail.setUserId(driver1.getId()); - accountChangeDetail.setType(2); - accountChangeDetail.setChangeType(5); - accountChangeDetail.setOrderId(order.getId()); - accountChangeDetail.setOldData(driver1.getIntegral().doubleValue()); - accountChangeDetail.setExplain("邀请用户首单积分奖励"); - accountChangeDetail.setCreateTime(new Date()); - driver1.setIntegral(driver1.getIntegral() + num4); - accountChangeDetail.setNewData(driver1.getIntegral().doubleValue()); - accountChangeDetailService.insert(accountChangeDetail); - driverService.updateById(driver1); + if(null != order.getUserId()){ + //司机推荐首单收入 + List<Integer> state = Arrays.asList(107, 108, 109); + int count = this.selectCount(new EntityWrapper<Order>().eq("userId", order.getUserId()).eq("status", 1).in("state", state)); + if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){ + Driver driver1 = driverService.selectById(appUser.getInviterId()); + //首单积分奖励 + SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4)); + JSONObject jsonObject2 = JSON.parseObject(systemConfig1.getContent()); + Integer num4 = jsonObject2.getInteger("num4"); + AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setUserType(2); + accountChangeDetail.setUserId(driver1.getId()); + accountChangeDetail.setType(2); + accountChangeDetail.setChangeType(5); + accountChangeDetail.setOrderId(order.getId()); + accountChangeDetail.setOldData(driver1.getIntegral().doubleValue()); + accountChangeDetail.setExplain("邀请用户首单积分奖励"); + accountChangeDetail.setCreateTime(new Date()); + driver1.setIntegral(driver1.getIntegral() + num4); + accountChangeDetail.setNewData(driver1.getIntegral().doubleValue()); + accountChangeDetailService.insert(accountChangeDetail); + driverService.updateById(driver1); + } } - SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 3)); @@ -1512,7 +1515,7 @@ if(null != systemConfig1){ JSONObject jsonObject1 = JSON.parseObject(systemConfig1.getContent()); //司机推荐用户收入 - if(null != appUser.getInviterType() && appUser.getInviterType() == 2){ + if(null != appUser && null != appUser.getInviterType() && appUser.getInviterType() == 2){ Double num1 = jsonObject1.getDouble("num1"); num1 = (num3 >= num1 ? num1 : num3); -- Gitblit v1.7.1