From d3c3b84382677bf0c8b703912c19d02b9aa2381a Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 08 八月 2023 11:57:41 +0800 Subject: [PATCH] 修改功能和bug --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 70 +++++++++++++++-------- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java | 4 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java | 5 + driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java | 1 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderInfoWarpper.java | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java | 32 ++++++++++ driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java | 8 ++ 8 files changed, 92 insertions(+), 32 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java index 63b141a..2f51c83 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Driver.java @@ -257,4 +257,9 @@ */ @TableField("merchantIDCode") private String merchantIDCode; + /** + * 司机推荐二维码 + */ + @TableField("referralCode") + private String referralCode; } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java index 99067f6..64a94d7 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java @@ -38,7 +38,7 @@ */ ResultUtil driverAddOrder(Integer uid, AddOrderWarpper addOrderWarpper) throws Exception; - Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city); + Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city) throws Exception; /** * 获取大厅订单列表 * @param uid diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java index e91a032..d8e0521 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java @@ -15,6 +15,7 @@ import com.supersavedriving.driver.modular.system.util.*; import com.supersavedriving.driver.modular.system.util.MallBook.model.*; import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest; +import com.supersavedriving.driver.modular.system.util.huawei.OBSUtil; import com.supersavedriving.driver.modular.system.util.mongodb.model.Location; import com.supersavedriving.driver.modular.system.util.rongyun.RongYunUtil; import com.supersavedriving.driver.modular.system.util.weChat.WeChatUtil; @@ -41,6 +42,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import java.io.InputStream; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.InetAddress; @@ -159,6 +161,10 @@ } driver.setCreateTime(new Date()); this.insert(driver); + String s = wechatMiniProgramORCode(driver.getId()); + driver.setReferralCode(s); + this.updateById(driver); + //司机邀请注册奖励 if(null != driver.getInviterId()){ @@ -187,6 +193,16 @@ } + + //生成小程序二维码 + public String wechatMiniProgramORCode(Integer driverId) throws Exception{ + InputStream release = weChatUtil.getwxacodeunlimit("pages/index/index", "driverId=" + driverId, "release"); + String s = OBSUtil.putObjectToBucket(release, "driver_" + driverId + ".jpg"); + return s; + } + + + /** * 组装个人信息 * @param driver @@ -195,6 +211,7 @@ */ public Driver setDriverParamete(Driver driver, DriverRegisterWarpper driverRegisterWarpper) throws Exception{ driver.setAvatar(driverRegisterWarpper.getAvatar()); + driver.setName(driverRegisterWarpper.getName()); driver.setPhone(driverRegisterWarpper.getPhone()); driver.setEmergencyContact(driverRegisterWarpper.getEmergencyContact()); driver.setEmergencyPhone(driverRegisterWarpper.getEmergencyPhone()); @@ -287,6 +304,11 @@ } } + if(ToolUtil.isEmpty(driver.getReferralCode())){ + String s = wechatMiniProgramORCode(driver.getId()); + driver.setReferralCode(s); + this.updateById(driver); + } return ResultUtil.success(tokenWarpper); } @@ -537,13 +559,19 @@ @Override public PromotionWarpper queryPromotionQRCode(Integer uid) throws Exception { PromotionWarpper promotionWarpper = new PromotionWarpper(); - promotionWarpper.setUrl("https://chaoshengdaijia.com/share/driverShare/index.html?inviterId=" + uid); + Driver driver1 = this.selectById(uid); + if(ToolUtil.isEmpty(driver1.getReferralCode())){ + String s = wechatMiniProgramORCode(driver1.getId()); + driver1.setReferralCode(s); + this.updateById(driver1); + } +// promotionWarpper.setUrl("https://chaoshengdaijia.com/share/driverShare/index.html?inviterId=" + uid); + promotionWarpper.setUrl(driver1.getReferralCode()); int user = appUserService.selectCount(new EntityWrapper<AppUser>().eq("inviterType", 2).eq("inviterId", uid).eq("status", 1)); int driver = this.selectCount(new EntityWrapper<Driver>().eq("inviterType", 2).eq("inviterId", uid).eq("approvalStatus", 2).eq("status", 1)); promotionWarpper.setTotal(user + driver); promotionWarpper.setUser(user); promotionWarpper.setDriver(driver); - Driver driver1 = this.selectById(uid); promotionWarpper.setAvatar(driver1.getAvatar()); promotionWarpper.setName(driver1.getName()); return promotionWarpper; diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java index 8c6a2bd..00b1cd2 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java @@ -48,7 +48,11 @@ @Override public void saveOrderPosition(DriverPositionWarpper driverPositionWarpper) throws Exception { Integer orderId = driverPositionWarpper.getOrderId(); + Integer driverId = driverPositionWarpper.getDriverId(); Order order = orderService.selectById(orderId); + if(null == order.getDriverId() || order.getDriverId().compareTo(driverId) != 0){ + return; + } if(order.getState() != 105 && order.getState() != 401){ return; } @@ -136,7 +140,7 @@ } } - if(50 >= wgs84 && 3 <= (null == num ? 0 : num)){//20秒(5秒上传一次数据) + if(50 >= wgs84 && 6 <= (null == num ? 0 : num)){//30秒(5秒上传一次数据) Integer integer = map.get(order.getId().toString()); map.put(order.getId().toString(), null == integer ? 0 : integer + 1); //进入等待状态 @@ -152,7 +156,7 @@ e.printStackTrace(); } } - if(50 >= wgs84 && 3 > (null == num ? 0 : num)){ + if(50 >= wgs84 && 6 > (null == num ? 0 : num)){ Integer integer = map.get(order.getId().toString()); map.put(order.getId().toString(), null == integer ? 0 : integer + 1); } 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 6443d6d..b40f831 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 @@ -247,7 +247,7 @@ * @param city 查询天气的城市 * @return */ - public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){ + public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city) throws Exception{ order = getOrderInitialPrice(order); SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5)); if(null == systemConfig){ @@ -360,6 +360,9 @@ BigDecimal multiply = new BigDecimal(w).divide(new BigDecimal(60), 0, RoundingMode.UP).multiply(new BigDecimal(num4)); order.setOutWaitTime(w);//等待时长超出分钟 order.setOutWaitTimePrice(multiply.doubleValue());//等待时长超出费用 + }else{ + order.setWaitTime(waitTime);//等待时长 + order.setWaitTimePrice(num2);//等待费用 } //恶劣天气 @@ -456,12 +459,12 @@ * 合适司:积分 > 评分 > 距离 * 3.司机没有接单直接将订单置入大厅 */ - boolean lock = redisUtil.lock(5); + boolean lock = redisUtil.lock(orderId.toString(), 5); if(!lock){ int num1 = 1; while (num1 <= 10){ Thread.sleep(3000);//等待3秒 - lock = redisUtil.lock(5); + lock = redisUtil.lock(orderId.toString(),5); if(lock){ break; }else{ @@ -473,11 +476,12 @@ order.setHallOrder(1); this.updateById(order); ExtraPushOrder(order); - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); + return; } SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); if(null == systemConfig){ - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); return; } JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); @@ -640,10 +644,10 @@ this.updateById(order); ExtraPushOrder(order); } - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); }catch (Exception e){ e.printStackTrace(); - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); } } @@ -796,12 +800,12 @@ if(count > 0){ return ResultUtil.error("还有未完成的订单"); } - boolean lock = redisUtil.lock(5); + boolean lock = redisUtil.lock(orderId.toString(), 5); if(!lock){ int num1 = 1; while (num1 <= 10){ Thread.sleep(3000);//等待3秒 - lock = redisUtil.lock(5); + lock = redisUtil.lock(orderId.toString(),5); if(lock){ break; }else{ @@ -810,17 +814,18 @@ } } if(!lock){ + redisUtil.unlock(orderId.toString()); return ResultUtil.error("请重试"); } Order order = this.selectById(orderId); Integer state = order.getState(); Integer oldDriverId = order.getDriverId(); if(state == 301){ - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); return ResultUtil.error("订单已被取消"); } if(state != 101 && state != 201){ - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); return ResultUtil.error("手速慢了哦"); } order.setDriverId(uid); @@ -829,7 +834,7 @@ order.setState(102); order.setOrderTakingTime(new Date()); this.updateById(order); - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); if(null != order.getUserId()){ AppUser appUser = appUserService.selectById(order.getUserId()); @@ -869,9 +874,10 @@ orderTransfer.setSuccessTime(new Date()); orderTransferService.insert(orderTransfer); } - - pushUtil.pushTransferSuccessful(order.getUserId(), 1, order.getId()); pushUtil.pushTransferSuccessful(oldDriverId, 2, order.getId()); + if(null != order.getUserId()){ + pushUtil.pushTransferSuccessful(order.getUserId(), 1, order.getId()); + } } //推动订单数据 @@ -884,7 +890,7 @@ pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getState()); } }catch (Exception e){ - redisUtil.unlock(); + redisUtil.unlock(orderId.toString()); e.printStackTrace(); throw e; } @@ -933,6 +939,7 @@ Map<String, String> distance1 = MapUtil.getDistance(orderInfoWarpper.getStartLng() + "," + orderInfoWarpper.getStartLat(), value, 0); orderInfoWarpper.setPickUpTime(Integer.valueOf(distance1.get("duration")) / 60); } + orderInfoWarpper.setDriverId(order.getDriverId()); return orderInfoWarpper; } @@ -1000,7 +1007,12 @@ .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); city = null != weatherCity ? weatherCity.getId().toString() : ""; } - order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city); + try { + order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.error("计算费用异常"); + } Coupon coupon = userToCouponService.queryCoupon(order.getUserId(), order.getOrderMoney()); if(null != coupon){ order.setCouponId(coupon.getId()); @@ -1013,10 +1025,6 @@ order.setPayMoney(order.getOrderMoney()); } - //修改司机状态和积分 - Driver driver = driverService.selectById(order.getDriverId()); - driver.setServerStatus(1); - driverService.updateById(driver); saveIntegral(order); redisUtil.delSetValue("orderService", order.getId().toString()); break; @@ -1257,6 +1265,9 @@ @Override public ResultUtil driverCancelOrder(Integer uid, Long orderId, String cause) throws Exception { Order order = this.selectById(orderId); + if(null == order){ + return ResultUtil.error("订单数据异常"); + } if(uid.compareTo(order.getDriverId()) != 0){ return ResultUtil.error("无法取消订单"); } @@ -1310,11 +1321,13 @@ orderPriceWarpper.setOverDriveDistance(order.getOverDriveDistance()); orderPriceWarpper.setMileageFee(order.getOverDrivePrice()); }else{ - String[] split = order.getLongDistance().split("-"); - orderPriceWarpper.setStartPrice(order.getLongDistancePrice()); - orderPriceWarpper.setStartDistance(Double.valueOf(split[1])); - orderPriceWarpper.setOverDriveDistance(order.getOverLongDistance()); - orderPriceWarpper.setMileageFee(order.getOverLongDistancePrice()); + if(order.getLongDistance().indexOf("-") >= 0){ + String[] split = order.getLongDistance().split("-"); + orderPriceWarpper.setStartPrice(order.getLongDistancePrice()); + orderPriceWarpper.setStartDistance(Double.valueOf(split[1])); + orderPriceWarpper.setOverDriveDistance(order.getOverLongDistance()); + orderPriceWarpper.setMileageFee(order.getOverLongDistancePrice()); + } } Integer waitTime = order.getWaitTime() + order.getOutWaitTime(); Integer s = waitTime % 60; @@ -1430,6 +1443,13 @@ } this.updateById(order); + if((payType == 1 && state == 107) || (payType == 2 && state == 108)){ + //修改司机状态和积分 + Driver driver = driverService.selectById(order.getDriverId()); + driver.setServerStatus(1); + driverService.updateById(driver); + } + if(payType == 2 && state == 108){//计算抽成 saveRevenue(order); } diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java index f8d1e38..fd3d1f1 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java @@ -188,7 +188,6 @@ timer.schedule(new TimerTask() { @Override public void run() { - System.err.println("定时任务启动"); Jedis resource = jedisPool.getResource(); resource.setex(finalKey, time, value); resource.close(); diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java index 649f11c..a3f9dbc 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java @@ -14,8 +14,10 @@ public class DriverRegisterWarpper { @ApiModelProperty(value = "注册区域code", required = true, dataType = "string") private String code; - @ApiModelProperty(value = "头像", required = true, dataType = "string") + @ApiModelProperty(value = "头像", required = false, dataType = "string") private String avatar; + @ApiModelProperty(value = "姓名", required = false, dataType = "string") + private String name; @ApiModelProperty(value = "手机号码", required = true, dataType = "string") private String phone; @ApiModelProperty(value = "紧急联系人", required = true, dataType = "string") diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderInfoWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderInfoWarpper.java index d59cc34..13c7880 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderInfoWarpper.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/OrderInfoWarpper.java @@ -17,6 +17,8 @@ private String userName; @ApiModelProperty("用户电话") private String userPhone; + @ApiModelProperty("司机id") + private Integer driverId; @ApiModelProperty("用户余额") private Double balance; @ApiModelProperty("下单次数") -- Gitblit v1.7.1