From f3672f3dbcb943bf2d21047bb0c474502bc29930 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 20 六月 2023 17:12:09 +0800 Subject: [PATCH] 修改客户反馈bug --- driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java | 5 + driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/DriverRegisterWarpper.java | 12 ++ driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java | 2 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/BalanceDetailWarpper.java | 2 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/OrderServiceImpl.java | 274 ++++++++++++++++++++++++++++++++---------------------- 5 files changed, 181 insertions(+), 114 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java index bc8a3de..37b1594 100644 --- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java +++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java @@ -614,7 +614,7 @@ @ApiOperation(value = "获取司机钱包明细", tags = {"司机端-个人中心"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "日期", name = "time", required = true, dataType = "string"), - @ApiImplicitParam(value = "类型(1=收入,3=充值,4=支出,7=优惠券,8=保险)", name = "type", required = true, dataType = "int"), + @ApiImplicitParam(value = "类型(1=收入,3=充值,4=支出,7=优惠券,8=保险,9=信息费,10=平台充值)", name = "type", required = true, dataType = "int"), @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), @ApiImplicitParam(value = "页条数", name = "pageSize", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java index a7bd9da..400320c 100644 --- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java @@ -179,13 +179,18 @@ * @return */ public Driver setDriverParamete(Driver driver, DriverRegisterWarpper driverRegisterWarpper) throws Exception{ + driver.setName(driverRegisterWarpper.getName()); + driver.setSex(driverRegisterWarpper.getSex()); driver.setAvatar(driverRegisterWarpper.getAvatar()); driver.setPhone(driverRegisterWarpper.getPhone()); driver.setEmergencyContact(driverRegisterWarpper.getEmergencyContact()); driver.setEmergencyPhone(driverRegisterWarpper.getEmergencyPhone()); + driver.setIdcard(driverRegisterWarpper.getIdcard()); driver.setIdcardBack(driverRegisterWarpper.getIdcardBack()); driver.setIdcardFront(driverRegisterWarpper.getIdcardFront()); + driver.setDriverLicenseNumber(driverRegisterWarpper.getDriverLicenseNumber()); driver.setDriverLicense(driverRegisterWarpper.getDriverLicense()); + driver.setFirstCertificateTime(driverRegisterWarpper.getFirstCertificateTime()); //注册地 String code = driverRegisterWarpper.getCode(); BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("districtCode", code).eq("status", 1)); diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/OrderServiceImpl.java index 12a1394..921fe5f 100644 --- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/OrderServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/OrderServiceImpl.java @@ -471,139 +471,175 @@ * 合适司:积分 > 评分 > 距离 * 3.司机没有接单直接将订单置入大厅 */ - SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); - if(null == systemConfig){ - return; - } - JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); - Double num3 = jsonObject.getDouble("num3");//推单最大范围 - Integer num4 = jsonObject.getInteger("num4");//接单时间 - String startLat = order.getStartLat(); - String startLng = order.getStartLng(); - - //1 - //找到中心点 - GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat)); - Double num = num3 / 1000;//范围公里 - //构造半径 - 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()); - Integer driver = null; - YouTuiDriver youTuiDriver1 = null; - if(driverIds.size() > 0){ - List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds) - .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime")); - Double d = null; - for (YouTuiDriver youTuiDriver : youTuiDrivers) { - String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId()); - if(ToolUtil.isEmpty(value)){ - continue; - } - DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", youTuiDriver.getDriverId()).eq("status", 1)); - if(null == driverWork){ - continue; - } - Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); - Double wgs84 = distance.get("WGS84"); - if(d == null || d.compareTo(wgs84) > 0){ - d = wgs84; - driver = youTuiDriver.getDriverId(); - youTuiDriver1 = youTuiDriver; + try { + boolean lock = redisUtil.lock(5); + if(!lock){ + int num1 = 1; + while (num1 <= 10){ + Thread.sleep(3000);//等待3秒 + lock = redisUtil.lock(5); + if(lock){ + break; + }else{ + num1++; + } } } - } + if(!lock){ + redisUtil.unlock(); + order.setHallOrder(1); + this.updateById(order); + ExtraPushOrder(order); + return; + } + SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1)); + if(null == systemConfig){ + redisUtil.unlock(); + return; + } + JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); + Double num3 = jsonObject.getDouble("num3");//推单最大范围 + Integer num4 = jsonObject.getInteger("num4");//接单时间 + String startLat = order.getStartLat(); + String startLng = order.getStartLng(); - if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){ - youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1); - youTuiDriverService.updateById(youTuiDriver1); - } - - //开始范围查找 - if(null == driver){ - for (int i = 1; i < 4; i++) { - if(null != driver){ - break; - } - num = jsonObject.getDouble("num" + i) / 1000;//范围公里 - //构造半径 - distanceR = new Distance(num, Metrics.KILOMETERS); - //画圆 - circle = new Circle(geoJsonPoint, distanceR); - // 构造query对象 - query = Query.query(Criteria.where("location").withinSphere(circle)); - locations = mongoTemplate.find(query, Location.class); - - driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); - if(driverIds.size() > 0){ - List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("serverStatus", 1).eq("status", 1).in("id", driverIds)); - if(drivers.size() == 0){ + //1 + //找到中心点 + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat)); + Double num = num3 / 1000;//范围公里 + //构造半径 + 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()); + Integer driver = null; + YouTuiDriver youTuiDriver1 = null; + if(driverIds.size() > 0){ + List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds) + .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime")); + Double d = null; + for (YouTuiDriver youTuiDriver : youTuiDrivers) { + String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId()); + if(ToolUtil.isEmpty(value)){ continue; } + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", youTuiDriver.getDriverId()).eq("status", 1)); + if(null == driverWork){ + continue; + } + Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); + Double wgs84 = distance.get("WGS84"); + if(d == null || d.compareTo(wgs84) > 0){ + d = wgs84; + driver = youTuiDriver.getDriverId(); + youTuiDriver1 = youTuiDriver; + } + } + } - Integer integral = null; - Double score = null; - Double d = null; - for (Driver driver1 : drivers) { - DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1)); - if(null == driverWork){ + if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){ + youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1); + youTuiDriverService.updateById(youTuiDriver1); + } + + //开始范围查找 + if(null == driver){ + for (int i = 1; i < 4; i++) { + if(null != driver){ + break; + } + num = jsonObject.getDouble("num" + i) / 1000;//范围公里 + //构造半径 + distanceR = new Distance(num, Metrics.KILOMETERS); + //画圆 + circle = new Circle(geoJsonPoint, distanceR); + // 构造query对象 + query = Query.query(Criteria.where("location").withinSphere(circle)); + locations = mongoTemplate.find(query, Location.class); + + driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList()); + if(driverIds.size() > 0){ + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("serverStatus", 1).eq("status", 1).in("id", driverIds)); + if(drivers.size() == 0){ continue; } - if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大 - integral = driver1.getIntegral(); - score = driver1.getScore(); - driver = driver1.getId(); - continue; - } - if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分 - integral = driver1.getIntegral(); - score = driver1.getScore(); - driver = driver1.getId(); - continue; - } - if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离 + + Integer integral = null; + Double score = null; + Double d = null; + for (Driver driver1 : drivers) { String value = redisUtil.getValue("DRIVER" + driver1.getId()); if(ToolUtil.isEmpty(value)){ continue; } - Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); - Double wgs84 = distance.get("WGS84"); - if(d == null || d.compareTo(wgs84) > 0){ - d = wgs84; + DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1)); + if(null == driverWork){ + continue; + } + if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大 + integral = driver1.getIntegral(); + score = driver1.getScore(); driver = driver1.getId(); continue; } - } - } + if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分 + integral = driver1.getIntegral(); + score = driver1.getScore(); + driver = driver1.getId(); + continue; + } + if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离 + Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat()); + Double wgs84 = distance.get("WGS84"); + if(d == null || d.compareTo(wgs84) > 0){ + d = wgs84; + driver = driver1.getId(); + continue; + } + } + } + + } } } - } - if(null != driver){ - pushUtil.pushGrabOrder(driver, 2, order.getId(), num4); - //创建定时任务处理订单到大厅 - new Timer().schedule(new TimerTask() { - @Override - public void run() { - Order order1 = OrderServiceImpl.this.selectById(order.getId()); - if(order1.getState() == 101 || order1.getState() == 201){ - order1.setHallOrder(1); - OrderServiceImpl.this.updateById(order1); + if(null != driver){ + Driver driver1 = driverService.selectById(driver); + driver1.setServerStatus(2); + driverService.updateById(driver1); - ExtraPushOrder(order1); + pushUtil.pushGrabOrder(driver, 2, order.getId(), num4); + //创建定时任务处理订单到大厅 + 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){ + + order1.setHallOrder(1); + OrderServiceImpl.this.updateById(order1); + + ExtraPushOrder(order1); + } } - } - }, num4 * 1000); - }else{ - order.setHallOrder(1); - this.updateById(order); - ExtraPushOrder(order); + }, num4 * 1000); + }else{ + order.setHallOrder(1); + this.updateById(order); + ExtraPushOrder(order); + } + redisUtil.unlock(); + }catch (Exception e){ + redisUtil.unlock(); + e.printStackTrace(); } + } @@ -696,6 +732,8 @@ orderRefusalService.insert(orderRefusal); Driver driver = driverService.selectById(uid); + driver.setServerStatus(1); + driverService.updateById(driver); //扣除积分 SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4)); if(null != systemConfig) { @@ -741,7 +779,19 @@ if(count > 0){ return ResultUtil.error("还有未完成的订单"); } - boolean lock = redisUtil.lock(); + boolean lock = redisUtil.lock(5); + if(!lock){ + int num1 = 1; + while (num1 <= 10){ + Thread.sleep(3000);//等待3秒 + lock = redisUtil.lock(5); + if(lock){ + break; + }else{ + num1++; + } + } + } if(!lock){ return ResultUtil.error("请重试"); } diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/BalanceDetailWarpper.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/BalanceDetailWarpper.java index 48c3598..78e9534 100644 --- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/BalanceDetailWarpper.java +++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/BalanceDetailWarpper.java @@ -15,7 +15,7 @@ private String code; @ApiModelProperty("时间") private Long createTime; - @ApiModelProperty("类型(1=订单收入,3=充值,4=提现,7=优惠券收入,8=保险支付)") + @ApiModelProperty("类型(1=订单收入,3=充值,4=提现,7=优惠券收入,8=保险支付,9=信息费,10=平台充值)") private Integer type; @ApiModelProperty("金额") private Double amount; diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/DriverRegisterWarpper.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/DriverRegisterWarpper.java index c19907b..2e92c3c 100644 --- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/DriverRegisterWarpper.java +++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/DriverRegisterWarpper.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + /** * 司机注册 * @author pzb @@ -14,6 +16,10 @@ public class DriverRegisterWarpper { @ApiModelProperty(value = "注册区域code", required = true, dataType = "string") private String code; + @ApiModelProperty(value = "姓名", required = true, dataType = "string") + private String name; + @ApiModelProperty(value = "性别(1=男,2=女)", required = true, dataType = "int") + private Integer sex; @ApiModelProperty(value = "头像", required = true, dataType = "string") private String avatar; @ApiModelProperty(value = "手机号码", required = true, dataType = "string") @@ -22,10 +28,16 @@ private String emergencyContact; @ApiModelProperty(value = "紧急联系人电话", required = true, dataType = "string") private String emergencyPhone; + @ApiModelProperty(value = "身份证号码", required = true, dataType = "string") + private String idcard; @ApiModelProperty(value = "身份证正面照", required = true, dataType = "string") private String idcardFront; @ApiModelProperty(value = "身份证背面照", required = true, dataType = "string") private String idcardBack; + @ApiModelProperty(value = "驾驶证号码", required = true, dataType = "string") + private String driverLicenseNumber; + @ApiModelProperty(value = "初领驾驶证时间", required = true, dataType = "string") + private Date firstCertificateTime; @ApiModelProperty(value = "驾驶证照片", required = true, dataType = "string") private String driverLicense; @ApiModelProperty(value = "邀约人类型(1=用户,2=司机)", required = false, dataType = "int") -- Gitblit v1.7.1