| | |
| | | .put("orderType", OrderType.USER_ORDER) |
| | | .build(); |
| | | |
| | | //如果是异常订单,需要定时创建客服工单 |
| | | if(orderException){ |
| | | XpSystemSetting xpSystemSetting = xpSystemSettingClient.getSystemSettingOne().getData(); |
| | | QuartzManager.addJob( |
| | | OrderExceptionJob.class, |
| | | (OrderExceptionJob.name + xpOrder.getId()).toUpperCase(), |
| | | TimeJobType.ADD_CRUISE_MISSION, |
| | | DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(xpSystemSetting.getOrderExceptionalTimeout())), |
| | | jobMaps |
| | | ); |
| | | } |
| | | |
| | | //判断是否有连环单 |
| | | String json = redisService.getCacheObject(CacheConstants.nextOrder(xpOrder.getId().toString())); |
| | | if (StringUtils.isNotEmpty(json)){ |
| | |
| | | order.setAppUserId(appUserId); |
| | | bootCommonService.setCache_orderStatus(order.getId(),order,null); |
| | | //删除蓝牙秘钥 |
| | | String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + orderId); |
| | | if(StringUtils.isNotBlank(token)){ |
| | | redisService.deleteObject("rt:bluetooth:unlock:" + token); |
| | | redisService.deleteObject("rt:bluetooth:unlock:order:" + orderId); |
| | | XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData(); |
| | | BluetoothDeliverVo vo = new BluetoothDeliverVo(); |
| | | vo.setVim(xpVehicle.getVehicleVin()); |
| | | vo.setPassengerUid(order.getAppUserId()); |
| | | BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo); |
| | | if(null == delete || delete.getCode() != 0){ |
| | | log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber()); |
| | | } |
| | | } |
| | | // String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + orderId); |
| | | // if(StringUtils.isNotBlank(token)){ |
| | | // redisService.deleteObject("rt:bluetooth:unlock:" + token); |
| | | // redisService.deleteObject("rt:bluetooth:unlock:order:" + orderId); |
| | | // XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData(); |
| | | // BluetoothDeliverVo vo = new BluetoothDeliverVo(); |
| | | // vo.setVim(xpVehicle.getVehicleVin()); |
| | | // vo.setPassengerUid(order.getAppUserId()); |
| | | // BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo); |
| | | // if(null == delete || delete.getCode() != 0){ |
| | | // log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber()); |
| | | // } |
| | | // } |
| | | |
| | | // 根据订单所属开通城市id 查询定价 |
| | | XpPricing pricing = bootCommonService.getXpPricing(order.getCityId(),order.getVehicleId()); |
| | |
| | | xpOrderDetail.setType(1); |
| | | xpOrderDetail.setMoney(new BigDecimal(xpPricingCardVo.getDistancePrice()).setScale(2,RoundingMode.HALF_UP)); |
| | | xpOrderDetails.add(xpOrderDetail); |
| | | xpOrderDetail = new XpOrderDetail(); |
| | | xpOrderDetail.setDetailType(3); |
| | | xpOrderDetail.setOrderId(orderId); |
| | | xpOrderDetail.setType(1); |
| | | xpOrderDetail.setMoney(new BigDecimal(xpPricingCardVo.getDurationPrice()).setScale(2, RoundingMode.HALF_UP)); |
| | | xpOrderDetails.add(xpOrderDetail); |
| | | //时长费不是必填项 |
| | | if(null != xpPricingCardVo.getDurationPrice() && xpPricingCardVo.getDurationPrice() > 0){ |
| | | xpOrderDetail = new XpOrderDetail(); |
| | | xpOrderDetail.setDetailType(3); |
| | | xpOrderDetail.setOrderId(orderId); |
| | | xpOrderDetail.setType(1); |
| | | xpOrderDetail.setMoney(new BigDecimal(xpPricingCardVo.getDurationPrice()).setScale(2, RoundingMode.HALF_UP)); |
| | | xpOrderDetails.add(xpOrderDetail); |
| | | } |
| | | |
| | | BigDecimal totalPrice =BigDecimal.ZERO; |
| | | for (XpOrderDetail xpOrderDetail1 : xpOrderDetails) { |
| | |
| | | else { |
| | | //动态计费 |
| | | if (pricing.getPricingType() == 1) { |
| | | |
| | | for (int i = 0; i < startingFareJsonArray.size(); i++) { |
| | | com.alibaba.fastjson2.JSONObject jsonObject = startingFareJsonArray.getJSONObject(i); |
| | | String num1 = jsonObject.getString("num1"); |
| | |
| | | // 触发调价了 |
| | | redisService.setCacheObject("USER_DYNAMIC_PRICE_" + order.getCityId() + "_" + uid, priceRate, time.longValue(), TimeUnit.MINUTES); |
| | | } |
| | | |
| | | //天气预报动态调价 |
| | | |
| | | } |
| | | } |
| | |
| | | .plusMinutes(routeVo1.getDuration()).plusMinutes(endPoint.getParkingTimeLimit()).plusMinutes(30); |
| | | long expirationTime = localDateTime.toEpochSecond(ZoneOffset.of("+8")); |
| | | //生成token |
| | | String token = bluetoothUnlockTokenUtil.generateBluetoothUnlockToken(order.getAppUserId(), |
| | | order.getId(), order.getVehicleId(), expirationTime); |
| | | log.info("生成蓝牙token:{} 有效期:{} 订单号: {}", token, expirationTime, order.getOrderNumber()); |
| | | //存储缓存 |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("userId", order.getAppUserId()); |
| | | jsonObject.put("orderId", order.getId()); |
| | | jsonObject.put("vehicleId", order.getVehicleId()); |
| | | jsonObject.put("expirationTime", expirationTime); |
| | | jsonObject.put("orderNumber", order.getOrderNumber()); |
| | | jsonObject.put("vehicleVin", vehicle.getVehicleVin()); |
| | | jsonObject.put("createTime", System.currentTimeMillis()); |
| | | redisService.setCacheObject("rt:bluetooth:unlock:" + token, jsonObject.toJSONString(), expirationTime, TimeUnit.SECONDS); |
| | | redisService.setCacheObject("rt:bluetooth:unlock:order:" + order.getId(), token, expirationTime, TimeUnit.SECONDS); |
| | | //开始下发蓝牙token |
| | | BluetoothDeliverVo vo = new BluetoothDeliverVo(); |
| | | vo.setCredential(token); |
| | | vo.setVim(vehicle.getVehicleVin()); |
| | | vo.setPassengerUid(order.getAppUserId()); |
| | | BaseVehicleUserDto deliver = bluetoothUnlockClient.deliver(vo); |
| | | if(null == deliver){ |
| | | throw new ServiceException("下发蓝牙token失败"); |
| | | } |
| | | if(deliver.getCode() != 0){ |
| | | log.error("下发蓝牙token失败:{} {}", deliver.getMsg(), order.getOrderNumber()); |
| | | throw new ServiceException(deliver.getMsg()); |
| | | } |
| | | log.info("下发蓝牙token成功:{} {}", deliver.getData(), order.getOrderNumber()); |
| | | // String token = bluetoothUnlockTokenUtil.generateBluetoothUnlockToken(order.getAppUserId(), |
| | | // order.getId(), order.getVehicleId(), expirationTime); |
| | | // log.info("生成蓝牙token:{} 有效期:{} 订单号: {}", token, expirationTime, order.getOrderNumber()); |
| | | // //存储缓存 |
| | | // JSONObject jsonObject = new JSONObject(); |
| | | // jsonObject.put("userId", order.getAppUserId()); |
| | | // jsonObject.put("orderId", order.getId()); |
| | | // jsonObject.put("vehicleId", order.getVehicleId()); |
| | | // jsonObject.put("expirationTime", expirationTime); |
| | | // jsonObject.put("orderNumber", order.getOrderNumber()); |
| | | // jsonObject.put("vehicleVin", vehicle.getVehicleVin()); |
| | | // jsonObject.put("createTime", System.currentTimeMillis()); |
| | | // redisService.setCacheObject("rt:bluetooth:unlock:" + token, jsonObject.toJSONString(), expirationTime, TimeUnit.SECONDS); |
| | | // redisService.setCacheObject("rt:bluetooth:unlock:order:" + order.getId(), token, expirationTime, TimeUnit.SECONDS); |
| | | // //开始下发蓝牙token |
| | | // BluetoothDeliverVo vo = new BluetoothDeliverVo(); |
| | | // vo.setCredential(token); |
| | | // vo.setVim(vehicle.getVehicleVin()); |
| | | // vo.setPassengerUid(order.getAppUserId()); |
| | | // BaseVehicleUserDto deliver = bluetoothUnlockClient.deliver(vo); |
| | | // if(null == deliver){ |
| | | // throw new ServiceException("下发蓝牙token失败"); |
| | | // } |
| | | // if(deliver.getCode() != 0){ |
| | | // log.error("下发蓝牙token失败:{} {}", deliver.getMsg(), order.getOrderNumber()); |
| | | // throw new ServiceException(deliver.getMsg()); |
| | | // } |
| | | // log.info("下发蓝牙token成功:{} {}", deliver.getData(), order.getOrderNumber()); |
| | | } |
| | | |
| | | if(order.getStatus() == 2){ |
| | |
| | | } |
| | | Integer status = xpOrder.getStatus(); |
| | | if(status > 2 && status < 8){ |
| | | Boolean data = xpVehicleClient.getVehicleTrunkOpenStatus(xpOrder.getAppUserId(), xpOrder.getVehicleId()).getData(); |
| | | xpOrder.setOpenTrunk(data ? 1 : 2); |
| | | xpOrderDetailVO.setOpenTrunk(data ? 1 : 2); |
| | | // Boolean data = xpVehicleClient.getVehicleTrunkOpenStatus(xpOrder.getAppUserId(), xpOrder.getVehicleId()).getData(); |
| | | // xpOrder.setOpenTrunk(data ? 1 : 2); |
| | | // xpOrderDetailVO.setOpenTrunk(data ? 1 : 2); |
| | | xpOrder.setOpenTrunk(2); |
| | | xpOrderDetailVO.setOpenTrunk(2); |
| | | xpOrder.setAppUserId(null); |
| | | this.updateById(xpOrder); |
| | | } |