From 07f3f658025af654ecdda9005ebbaf9575569207 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 10 十月 2025 15:15:29 +0800 Subject: [PATCH] 添加订单日志记录 --- UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 316 ++++++++++++++++++++++++++++------------------------ 1 files changed, 171 insertions(+), 145 deletions(-) diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index 36411db..9d5fbdb 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -25,6 +25,8 @@ import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService; import com.stylefeng.guns.modular.taxi.service.ITransactionDetailsService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; @@ -55,6 +57,8 @@ @Service public class OrderPrivateCarServiceImpl extends ServiceImpl<OrderPrivateCarMapper, OrderPrivateCar> implements IOrderPrivateCarService { + + Logger logger = LoggerFactory.getLogger(OrderPrivateCarServiceImpl.class); @Resource private OrderPrivateCarMapper orderPrivateCarMapper; @@ -154,6 +158,9 @@ @Autowired private GDMapElectricFenceUtil gdMapElectricFenceUtil; + + @Autowired + private GeodesyUtil geodesyUtil; @Autowired private IOrderPositionService orderPositionService; @@ -188,6 +195,9 @@ @Value("${pushMinistryOfTransport}") private boolean pushMinistryOfTransport; + @Autowired + private IAppOperationLogService appOperationLogService; + /** @@ -208,10 +218,10 @@ * @throws Exception */ @Override - public synchronized ResultUtil<BaseWarpper> saveOrderPrivateCar(Integer serverCarModelId, Date travelTime, Integer reservation, Integer instead, String placementLon, String placementLat, String startLon, String startLat, - String startAddress, String endLon, String endLat, String endAddress, String name, String phone, Integer orderSource, Integer driverId, Integer type, Integer uid, - BigDecimal estimatedPrice,String cityCode,Integer carIndex) throws Exception { - + public ResultUtil<BaseWarpper> saveOrderPrivateCar(Integer serverCarModelId, Date travelTime, Integer reservation, Integer instead, String placementLon, String placementLat, String startLon, String startLat, + String startAddress, String endLon, String endLat, String endAddress, String name, String phone, Integer orderSource, Integer driverId, Integer type, Integer uid, + BigDecimal estimatedPrice, String cityCode, Integer carIndex) throws Exception { + long timeMillis = System.currentTimeMillis(); //如果出行时间大于当前10分钟则默认为预约单 if(travelTime.getTime() > (System.currentTimeMillis() + 600000)){ reservation = 2; @@ -225,10 +235,10 @@ if(orderPrivateCars.size() > 0){ return ResultUtil.error("有未完成的订单"); } - List<OrderTaxi> list = orderTaxiMapper.queryByState_(uid, 1, 1, 1, 2, 3, 4, 5, 6, 11); - if(list.size() > 0){ - return ResultUtil.error("有未完成的订单"); - } +// List<OrderTaxi> list = orderTaxiMapper.queryByState_(uid, 1, 1, 1, 2, 3, 4, 5, 6, 11); +// if(list.size() > 0){ +// return ResultUtil.error("有未完成的订单"); +// } orderPrivateCars = orderPrivateCarMapper.queryByState(uid, 2, 1, 1, 2, 3, 4, 5, 6, 11); if(orderPrivateCars.size() > 0 && reservation == 2){ @@ -244,10 +254,10 @@ } - list = orderTaxiMapper.queryByState_(uid, 2, 1, 1, 2, 3, 4, 5, 6, 11); - if(list.size() > 0 && reservation == 2){ - return ResultUtil.error("有未完成的订单"); - } +// list = orderTaxiMapper.queryByState_(uid, 2, 1, 1, 2, 3, 4, 5, 6, 11); +// if(list.size() > 0 && reservation == 2){ +// return ResultUtil.error("有未完成的订单"); +// } startAddress = startAddress.replaceAll("& #40;", "("); startAddress = startAddress.replaceAll("& #41;", ")"); @@ -323,7 +333,11 @@ orderPrivateCar.setSnatchOrderTime(new Date()); driver2.setState(3); driverService.updateById(driver2); + serverCarModelId = query1.getServerCarModelId(); } + long timeMillis1 = System.currentTimeMillis(); + logger.info("第一段用时:" + (timeMillis1 - timeMillis)); + timeMillis = timeMillis1; // 查询城市的订单额度 OpenCity openCity = openCityService.selectOne(new EntityWrapper<OpenCity>() .eq("code", cityCode) @@ -340,32 +354,22 @@ } // 查询预估价格 - ResultUtil<List<ServerCarModelWarpper>> listResultUtil = serverCarModelService.queryServerCarModel(startLon + "," + startLat, endLon + "," + endLat, 1); - List<ServerCarModelWarpper> data = listResultUtil.getData(); - if(Objects.isNull(serverCarModelId)){ - //获取经营业务 - CarService query = new CarService(); - query.setCarId(driver2.getCarId()); - CarService service = carServiceMapper.selectOne(query); - if(Objects.nonNull(service)){ - serverCarModelId = service.getServerCarModelId(); - } + ResultUtil<ServerCarModelWarpper> listResultUtil = serverCarModelService.queryServerCarModel1(serverCarModelId, startLon + "," + startLat, endLon + "," + endLat, 1); + if(200 != listResultUtil.getCode()){ + return ResultUtil.error(listResultUtil.getMsg()); } - Integer finalServerCarModelId = serverCarModelId; - data = data.stream().filter(e -> finalServerCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList()); - if(Objects.nonNull(openCity) && !CollectionUtils.isEmpty(data) && BigDecimal.valueOf(data.get(0).getAmount()).compareTo(openCity.getOrderMagnitude()) > 0){ + ServerCarModelWarpper data = listResultUtil.getData(); + if(Objects.nonNull(openCity) && BigDecimal.valueOf(data.getAmount()).compareTo(openCity.getOrderMagnitude()) > 0){ orderPrivateCar.setIsReassign(1); orderPrivateCar.setIsDelete(1); orderPrivateCar.setState(7); - if(orderSource == 2){ - orderPrivateCar.setOrderMoney(data.get(0).getAmount()); - orderPrivateCar.setEstimatedPrice(data.get(0).getAmount()); - }else { - orderPrivateCar.setOrderMoney(data.get(carIndex).getAmount()); - orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount()); - } + orderPrivateCar.setOrderMoney(data.getAmount()); + orderPrivateCar.setEstimatedPrice(data.getAmount()); orderPrivateCar.setPayMethod(0); this.insert(orderPrivateCar); + + appOperationLogService.addAppOperationLog(uid, "{\"type\":\"用户下单\",\"orderId\":\"" + orderPrivateCar.getId() + "\",\"orderPrivateCar\":\"" + JSON.toJSONString(orderPrivateCar) + "\"}"); + BaseWarpper baseWarpper = new BaseWarpper(); baseWarpper.setId(orderPrivateCar.getId()); baseWarpper.setState(orderPrivateCar.getState()); @@ -373,18 +377,12 @@ baseWarpper.setAmount(orderPrivateCar.getOrderMoney()); return ResultUtil.success(baseWarpper); }else { - if(orderSource == 2){ - if(!CollectionUtils.isEmpty(data)){ - orderPrivateCar.setEstimatedPrice(data.get(0).getAmount()); - } - }else { - orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount()); - } + orderPrivateCar.setEstimatedPrice(data.getAmount()); orderPrivateCar.setIsReassign(1); orderPrivateCar.setIsDelete(1); orderPrivateCar.setPayMethod(1); this.insert(orderPrivateCar); - + appOperationLogService.addAppOperationLog(uid, "{\"type\":\"用户下单\",\"orderId\":\"" + orderPrivateCar.getId() + "\",\"orderPrivateCar\":\"" + JSON.toJSONString(orderPrivateCar) + "\"}"); if(orderSource == 2){//扫码下单 new Thread(new Runnable() { @Override @@ -395,7 +393,9 @@ } }).start(); } - + long timeMillis2 = System.currentTimeMillis(); + logger.info("第二段用时:" + (timeMillis2 - timeMillis)); + timeMillis = timeMillis2; // TODO: 2021/5/11 修改,根据后台设定的派单范围查询范围内有无司机,将单子指派给距离最近的司机(距离相同随机取),范围内没有司机再进行推单流程 if(orderPrivateCar.getState() == 1){ @@ -405,18 +405,9 @@ } AssignOrder assignOrder = assignOrderService.selectOne(new EntityWrapper<AssignOrder>().eq("companyId", query.getId()).eq("type", 1)); if(null != assignOrder){//配置了指派规则才处理 - boolean lock = redisUtil.lock("order_lock", 10); + boolean lock = redisUtil.lock("order_lock", 10, 30); if(!lock){ - int num1 = 1; - while (num1 <= 10){ - Thread.sleep(3000);//等待3秒 - lock = redisUtil.lock("order_lock", 10); - if(lock){ - break; - }else{ - num1++; - } - } + return ResultUtil.error("系统繁忙,请稍后重试"); } try { //获取空闲司机 @@ -425,61 +416,102 @@ if(drivers.size() > 0) {//有司机,直接指派给司机 Driver dr = null; if (drivers.size() > 1) { - List<Driver> ds = new ArrayList<>();//存储直线距离最近的几个司机 - for (int i = 0; i < assignOrder.getPeople(); i++) { - Driver driver = null; - int m = 0; - int index = 0; - // 查询预约单 - List<OrderPrivateCar> orderPrivateCarss = orderPrivateCarMapper.queryOrderByState(driverIds, 2, 1, 2, 3, 4, 5, 6, 11); - List<Integer> orderPrivateCarDriverIds = orderPrivateCars.stream().map(OrderPrivateCar::getDriverId).collect(Collectors.toList()); - for (int j = 0; j < drivers.size(); j++) { - Driver driver1 = drivers.get(j); - if (orderPrivateCar.getOrderType() == 2 && orderPrivateCarDriverIds.contains(driver.getId())) { - continue; - } - // 判断该司机是否有30分钟内预约单 - long count = orderPrivateCarss.stream().filter(s -> s.getDriverId().equals(driver1.getId()) && - DateUtil.dateToLocalDateTime(s.getTravelTime()).minusMinutes(query.getLimitationTime()).isBefore(LocalDateTime.now())).count(); - if (count > 0) { - continue; - } - String value = redisUtil.getValue("DRIVER" + drivers.get(j).getId()); - if (null != value) { -// Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 0);//计算距离 -// Integer d = Integer.valueOf(distance1.get("distance")); - String[] split = value.split(","); - double distance = GDMapGeocodingUtil.getDistance(orderPrivateCar.getStartLat(), orderPrivateCar.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0])); - int d = Double.valueOf(distance).intValue(); - if ((0 == m && null == driver) || (d < m)) { - driver = drivers.get(j); - m = d; - index = j; - } + List<Driver> ds = new ArrayList<>(); + double dis = assignOrder.getDistance() * 1000; + // 查询预约单 + List<OrderPrivateCar> orderPrivateCarss = orderPrivateCarMapper.queryOrderByState(driverIds, 2, 1, 2, 3, 4, 5, 6, 11); + List<Integer> orderPrivateCarDriverIds = orderPrivateCars.stream().map(OrderPrivateCar::getDriverId).collect(Collectors.toList()); + for (int j = 0; j < drivers.size(); j++) { + Driver driver1 = drivers.get(j); + driver1.setDistance(0D); + if (orderPrivateCar.getOrderType() == 2 && orderPrivateCarDriverIds.contains(driver1.getId())) { + continue; + } + // 判断该司机是否有30分钟内预约单 + long count = orderPrivateCarss.stream().filter(s -> s.getDriverId().equals(driver1.getId()) && + DateUtil.dateToLocalDateTime(s.getTravelTime()).minusMinutes(query.getLimitationTime()).isBefore(LocalDateTime.now())).count(); + if (count > 0) { + continue; + } + String value = redisUtil.getValue("DRIVER" + drivers.get(j).getId()); + if (null != value) { + Map<String, String> distance = gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1); + double d = Double.parseDouble(distance.get("distance")); + if(dis >= d){ + driver1.setDistance(d); + ds.add(driver1); } } - ds.add(driver); - drivers.remove(index); } - //再根据直线距离最短的司机中找出行驶距离最短的司机 - Integer m = 0; - for (Driver driver : ds) { - String value = redisUtil.getValue("DRIVER" + driver.getId()); - if (null != value) { - Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1);//计算距离 - Integer d = Integer.valueOf(distance1.get("distance")); - if ((0 == m && null == dr) || (d.intValue() < m.intValue())) { - dr = driver; - m = d; + if(!ds.isEmpty()){ + ds.sort(new Comparator<Driver>() { + @Override + public int compare(Driver o1, Driver o2) { + return o1.getDistance().compareTo(o2.getDistance()); } - } + }); + appOperationLogService.addAppOperationLog(uid, "{\"type\":\"指派推单,符合条件的司机\",\"orderId\":\"" + orderPrivateCar.getId() + "\",\"driver\":\"" + JSON.toJSONString(ds) + "\"}"); + dr = ds.get(0); } + + + + + + +// for (int i = 0; i < assignOrder.getPeople(); i++) { +// Driver driver = null; +// int m = 0; +// int index = 0; +// // 查询预约单 +// List<OrderPrivateCar> orderPrivateCarss = orderPrivateCarMapper.queryOrderByState(driverIds, 2, 1, 2, 3, 4, 5, 6, 11); +// List<Integer> orderPrivateCarDriverIds = orderPrivateCars.stream().map(OrderPrivateCar::getDriverId).collect(Collectors.toList()); +// for (int j = 0; j < drivers.size(); j++) { +// Driver driver1 = drivers.get(j); +// if (orderPrivateCar.getOrderType() == 2 && orderPrivateCarDriverIds.contains(driver.getId())) { +// continue; +// } +// // 判断该司机是否有30分钟内预约单 +// long count = orderPrivateCarss.stream().filter(s -> s.getDriverId().equals(driver1.getId()) && +// DateUtil.dateToLocalDateTime(s.getTravelTime()).minusMinutes(query.getLimitationTime()).isBefore(LocalDateTime.now())).count(); +// if (count > 0) { +// continue; +// } +// String value = redisUtil.getValue("DRIVER" + drivers.get(j).getId()); +// if (null != value) { +// Map<String, String> distance = gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1); +// int d = Integer.parseInt(distance.get("distance")); +// if ((0 == m && null == driver) || (d < m)) { +// driver = drivers.get(j); +// m = d; +// index = j; +// } +// } +// } +// ds.add(driver); +// drivers.remove(index); +// } +// +// //再根据直线距离最短的司机中找出行驶距离最短的司机 +// Integer m = 0; +// for (Driver driver : ds) { +// String value = redisUtil.getValue("DRIVER" + driver.getId()); +// if (null != value) { +// Map<String, String> distance = gdMapElectricFenceUtil.getDistance(startLon + "," + startLat, value, 1); +// int distance1 = Integer.parseInt(distance.get("distance")); +// if ((0 == m && null == dr) || (distance1 < m.intValue())) { +// dr = driver; +// m = distance1; +// } +// } +// } } else { List<OrderPrivateCar> orderPrivateCarss = orderPrivateCarMapper.queryOrderByState(driverIds, 2, 1, 2, 3, 4, 5, 6, 11); if (orderPrivateCarss.size() == 0) { dr = drivers.get(0); } + appOperationLogService.addAppOperationLog(uid, "{\"type\":\"指派推单,符合条件的司机\",\"orderId\":\"" + orderPrivateCar.getId() + "\",\"driver\":\"" + JSON.toJSONString(dr) + "\"}"); } if (Objects.nonNull(dr)) { @@ -495,6 +527,7 @@ dr.setState(3); } driverService.updateById(dr); + redisUtil.setStrValue("DRIVER_ORDER" + dr.getId(), orderPrivateCar.getId().toString(), 600); new Thread(new Runnable() { @Override public void run() { @@ -516,7 +549,9 @@ } } } - + long timeMillis3 = System.currentTimeMillis(); + logger.info("第三段用时:" + (timeMillis3 - timeMillis)); + timeMillis = timeMillis3; //推单操作 if(orderPrivateCar.getState() == 1){ @@ -528,6 +563,9 @@ baseWarpper.setState(orderPrivateCar.getState()); baseWarpper.setId(orderPrivateCar.getId()); baseWarpper.setPayMethod(1); + long timeMillis4 = System.currentTimeMillis(); + logger.info("第四段用时:" + (timeMillis4 - timeMillis)); + timeMillis = timeMillis4; return ResultUtil.success(baseWarpper); } } @@ -997,6 +1035,7 @@ } } } + appOperationLogService.addAppOperationLog(uid, "{\"type\":\"用户取消订单\",\"orderId\":\"" + orderPrivateCar.getId() + "\",\"orderPrivateCar\":\"" + JSON.toJSONString(orderPrivateCar) + "\"}"); this.deleteTask(id);//删除定时任务 new Thread(new Runnable() { @@ -1043,18 +1082,9 @@ */ @Override public ResultUtil cancleOrderPrivateCar(Integer id, Integer payType, Integer cancleId, Integer type) throws Exception { - boolean lock = redisUtil.lock(id + "_cancleOrder", 10); + boolean lock = redisUtil.lock(id + "_cancleOrder", 10, 30); if(!lock){ - int num1 = 1; - while (num1 <= 10){ - Thread.sleep(3000);//等待3秒 - lock = redisUtil.lock(id + "_cancleOrder", 10); - if(lock){ - break; - }else{ - num1++; - } - } + return ResultUtil.error("系统繁忙,请稍后重试"); } ResultUtil resultUtil = ResultUtil.success(""); try { @@ -1241,6 +1271,8 @@ double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) list = list.subList(0, lastIndex);//获取空闲司机中占比数据 + + appOperationLogService.addAppOperationLog(orderPrivateCar.getUserId(), "{\"type\":\"范围推单,第" + i +"轮,符合条件的司机\",\"orderId\":\"" + orderPrivateCar.getId() + "\",\"driver\":\"" + JSON.toJSONString(list) + "\"}"); for(Driver driver : list){//开始进行推送 // 判断该司机是否有30分钟内预约单 long count = orderPrivateCars.stream().filter(orderPrivateCar1 -> driver.getId().equals(orderPrivateCar1.getDriverId()) @@ -1273,9 +1305,12 @@ pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1); orderIds.remove(orderPrivateCar.getId()); + // 第三轮取消订单 orderPrivateCar.setState(10); orderPrivateCarMapper.updateById(orderPrivateCar); + + appOperationLogService.addAppOperationLog(orderPrivateCar.getUserId(), "{\"type\":\"范围推单结束,无司机接单,自动取消订单\",\"orderId\":\"" + orderPrivateCar.getId() + "\",\"orderInfo\":\"" + JSON.toJSONString(orderPrivateCar) + "\"}"); pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0); // 添加站内信 systemNoticeService.addSystemNotice(1, "当前区域未能及时为您匹配到合适车辆。为避免耽误您的行程,系统已自动取消订单,建议您稍后重新尝试。", orderPrivateCar.getUserId(), 1); @@ -1393,19 +1428,15 @@ @Override public ResultUtil payPrivateCarOrder(Integer payType, Integer orderId, Integer couponId, Integer type) throws Exception { - boolean lock = redisUtil.lock(orderId + "_payment", 10); + boolean lock = redisUtil.lock(orderId + "_payment", 10, 30); if(!lock){ - int num1 = 1; - while (num1 <= 10){ - Thread.sleep(3000);//等待3秒 - lock = redisUtil.lock(orderId + "_payment", 10); - if(lock){ - break; - }else{ - num1++; - } - } + return ResultUtil.error("系统繁忙,请稍后重试"); } + String key = orderId + "_during_payment"; + if(redisUtil.hasKey(key)){ + return ResultUtil.error("支付中,不能重复发起支付"); + } + redisUtil.setStrValue(key, UUIDUtil.getRandomCode(), 10); try { OrderPrivateCar orderPrivateCar = this.selectById(orderId); if(orderPrivateCar.getState() == 8 || orderPrivateCar.getState() == 9){ @@ -1517,16 +1548,13 @@ resultUtil = payMoneyUtil.weixinpay("完成订单",orderId +"", code,orderMoney+"","/base/wxPayOrderTaxi","JSAPI",userInfo.getAppletsOpenId()); if(resultUtil.getCode()==200){ paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 1, orderMoney, null, 1, code);//添加预支付数据 - long millis = System.currentTimeMillis(); + appOperationLogService.addAppOperationLog(orderPrivateCar.getUserId(), "{\"type\":\"用户支付订单\",\"orderId\":\"" + orderPrivateCar.getId() + "\",\"orderInfo\":\"" + JSON.toJSONString(orderPrivateCar) + "\"}"); new Thread(()->{ - long time = millis; - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - //订单创建后15分钟 - while ((System.currentTimeMillis() - time) <= 900000) { + int num = 1; + int wait = 0; + while (num <= 13) { + int min = 5000; + wait += (min * num); OrderPrivateCar orderPrivateCar1 = OrderPrivateCarServiceImpl.this.selectById(orderId); if(orderPrivateCar1.getState() != 7){ break; @@ -1556,12 +1584,17 @@ if ("NOTPAY".equals(s) || "USERPAYING".equals(s)) { } } - Thread.sleep(5000); }catch (Exception e){ e.printStackTrace(); + }finally { + try { + Thread.sleep(wait); + } catch (InterruptedException e) { + e.printStackTrace(); + } + num++; } } - OrderPrivateCar orderPrivateCar1 = OrderPrivateCarServiceImpl.this.selectById(orderId); if(7 == orderPrivateCar1.getState()){ //关闭订单,不允许支付 @@ -1720,7 +1753,8 @@ } this.updateAllColumnById(orderPrivateCar); - + appOperationLogService.addAppOperationLog(orderPrivateCar.getUserId(), "{\"type\":\"用户" + (payType == 1 ? "微信" : payType == 2 ? "支付宝" : "余额") + "支付订单," + (orderPrivateCar.getPayMethod() == 0 ? "先付" : "后付") + "\"" + + ",\"orderId\":\"" + orderPrivateCar.getId() + "\",\"orderInfo\":\"" + JSON.toJSONString(orderPrivateCar) + "\"}"); new Thread(new Runnable() { @Override public void run() { @@ -1911,21 +1945,10 @@ @Override @Transactional(rollbackFor = Exception.class) public synchronized void payOrderPrivateCarCallback(Integer id, String order_id, Integer type) throws Exception { - boolean lock = redisUtil.lock(order_id + "_paymentCallback", 10); + boolean lock = redisUtil.lock(order_id + "_paymentCallback", 10, 30); if(!lock){ - int num1 = 1; - while (num1 <= 10){ - Thread.sleep(3000);//等待3秒 - lock = redisUtil.lock(order_id + "_paymentCallback", 10); - if(lock){ - break; - }else{ - num1++; - } - } + return; } - - try { PaymentRecord query = paymentRecordService.query(1, null, null, Integer.valueOf(id), 1, type, null); if(null != query){ @@ -1967,7 +1990,6 @@ // 判断先付还是后付 if(orderPrivateCar.getPayMethod() == 0){ - if (Objects.nonNull(orderPrivateCar.getPaymentAdvanceMoney()) && orderPrivateCar.getPaymentAdvanceMoney() > 0 ) { orderPrivateCar.setState(8); orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney()+query.getAmount()); @@ -2036,6 +2058,10 @@ incomeService.saveDriverData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue(), driver.getLaveBusinessMoney()); } } + + appOperationLogService.addAppOperationLog(orderPrivateCar.getUserId(), "{\"type\":\"用户" + (type == 1 ? "微信" : "支付宝") + "支付订单," + (orderPrivateCar.getPayMethod() == 0 ? "先付" : "后付") + "\"" + + ",\"orderId\":\"" + orderPrivateCar.getId() + "\",\"orderInfo\":\"" + JSON.toJSONString(orderPrivateCar) + "\"}"); + // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 new Thread(new Runnable() { @Override -- Gitblit v1.7.1