无论是司机端,还是乘客端,遇到页面切换,重新登录小程序等,只要回到首页面,查看当前是否有正在执行订单,如果有跳转到当前订单执行页面
之前这个接口已经开发,为了测试,临时跳过去,默认没有当前订单的
@Operation(summary = "乘客端查找当前订单") @GetMapping("/searchCustomerCurrentOrder/{customerId}") public Result searchCustomerCurrentOrder(@PathVariable Long customerId) { return Result.ok(orderInfoService.searchCustomerCurrentOrder(customerId)); } //乘客端查找当前订单 @Override public CurrentOrderInfoVo searchCustomerCurrentOrder(Long customerId) { //封装条件 //乘客id LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(OrderInfo::getCustomerId,customerId); //各种状态 // 这些状态都表明该订单在执行中,所以要所有状态都查询 Integer[] statusArray = { OrderStatus.ACCEPTED.getStatus(), OrderStatus.DRIVER_ARRIVED.getStatus(), OrderStatus.UPDATE_CART_INFO.getStatus(), OrderStatus.START_SERVICE.getStatus(), OrderStatus.END_SERVICE.getStatus(), OrderStatus.UNPAID.getStatus() }; wrapper.in(OrderInfo::getStatus,statusArray); //获取最新一条记录 wrapper.orderByDesc(OrderInfo::getId); wrapper.last(" limit 1"); //调用方法 OrderInfo orderInfo = orderInfoMapper.selectOne(wrapper); //封装到CurrentOrderInfoVo CurrentOrderInfoVo currentOrderInfoVo = new CurrentOrderInfoVo(); if(orderInfo != null) { currentOrderInfoVo.setOrderId(orderInfo.getId()); currentOrderInfoVo.setStatus(orderInfo.getStatus()); currentOrderInfoVo.setIsHasCurrentOrder(true); } else { currentOrderInfoVo.setIsHasCurrentOrder(false); } return currentOrderInfoVo; } /** * 乘客端查找当前订单 * @param customerId * @return */ @GetMapping("/order/info/searchCustomerCurrentOrder/{customerId}") Result searchCustomerCurrentOrder(@PathVariable("customerId") Long customerId); @Operation(summary = "乘客端查找当前订单") @GuiguLogin @GetMapping("/searchCustomerCurrentOrder") public Result searchCustomerCurrentOrder() { Long customerId = AuthContextHolder.getUserId(); return Result.ok(orderService.searchCustomerCurrentOrder(customerId)); } //乘客查找当前订单 @Override public CurrentOrderInfoVo searchCustomerCurrentOrder(Long customerId) { return orderInfoFeignClient.searchCustomerCurrentOrder(customerId).getData(); }
@Operation(summary = "司机端查找当前订单") @GetMapping("/searchDriverCurrentOrder/{driverId}") public Result searchDriverCurrentOrder(@PathVariable Long driverId) { return Result.ok(orderInfoService.searchDriverCurrentOrder(driverId)); } //司机端查找当前订单 @Override public CurrentOrderInfoVo searchDriverCurrentOrder(Long driverId) { //封装条件 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(OrderInfo::getDriverId,driverId); Integer[] statusArray = { OrderStatus.ACCEPTED.getStatus(), OrderStatus.DRIVER_ARRIVED.getStatus(), OrderStatus.UPDATE_CART_INFO.getStatus(), OrderStatus.START_SERVICE.getStatus(), OrderStatus.END_SERVICE.getStatus() }; wrapper.in(OrderInfo::getStatus,statusArray); wrapper.orderByDesc(OrderInfo::getId); wrapper.last(" limit 1"); OrderInfo orderInfo = orderInfoMapper.selectOne(wrapper); //封装到vo CurrentOrderInfoVo currentOrderInfoVo = new CurrentOrderInfoVo(); if(null != orderInfo) { currentOrderInfoVo.setStatus(orderInfo.getStatus()); currentOrderInfoVo.setOrderId(orderInfo.getId()); currentOrderInfoVo.setIsHasCurrentOrder(true); } else { currentOrderInfoVo.setIsHasCurrentOrder(false); } return currentOrderInfoVo; } /** * 司机端查找当前订单 * @param driverId * @return */ @GetMapping("/order/info/searchDriverCurrentOrder/{driverId}") Result searchDriverCurrentOrder(@PathVariable("driverId") Long driverId); @Operation(summary = "司机端查找当前订单") @GuiguLogin @GetMapping("/searchDriverCurrentOrder") public Result searchDriverCurrentOrder() { Long driverId = AuthContextHolder.getUserId(); return Result.ok(orderService.searchDriverCurrentOrder(driverId)); } @Override public CurrentOrderInfoVo searchDriverCurrentOrder(Long driverId) { return orderInfoFeignClient.searchDriverCurrentOrder(driverId).getData(); }
进入首页,在有执行中订单的情况下,我们需要获取订单信息,才能知道页面跳转到那里去,因此现在把这个接口给实现了。
@Operation(summary = "根据订单id获取订单信息") @GetMapping("/getOrderInfo/{orderId}") public Result getOrderInfo(@PathVariable Long orderId) { return Result.ok(orderInfoService.getById(orderId)); } /** * 远程调用 * 根据订单id获取订单信息 * @param orderId * @return */ @GetMapping("/order/info/getOrderInfo/{orderId}") Result getOrderInfo(@PathVariable("orderId") Long orderId); // 乘客端web接口 @Operation(summary = "获取订单信息") @GuiguLogin @GetMapping("/getOrderInfo/{orderId}") public Result getOrderInfo(@PathVariable Long orderId) { Long customerId = AuthContextHolder.getUserId(); return Result.ok(orderService.getOrderInfo(orderId, customerId)); } @Override public OrderInfoVo getOrderInfo(Long orderId, Long customerId) { OrderInfo orderInfo = orderInfoFeignClient.getOrderInfo(orderId).getData(); //判断 if(orderInfo.getCustomerId() != customerId) { throw new GuiguException(ResultCodeEnum.ILLEGAL_REQUEST); } OrderInfoVo orderInfoVo = new OrderInfoVo(); orderInfoVo.setOrderId(orderId); BeanUtils.copyProperties(orderInfo,orderInfoVo); return orderInfoVo; } // 司机端web接口 @Operation(summary = "获取订单账单详细信息") @GuiguLogin @GetMapping("/getOrderInfo/{orderId}") public Result getOrderInfo(@PathVariable Long orderId) { Long driverId = AuthContextHolder.getUserId(); return Result.ok(orderService.getOrderInfo(orderId, driverId)); } @Override public OrderInfoVo getOrderInfo(Long orderId, Long driverId) { OrderInfo orderInfo = orderInfoFeignClient.getOrderInfo(orderId).getData(); if(orderInfo.getDriverId() != driverId) { throw new GuiguException(ResultCodeEnum.ILLEGAL_REQUEST); } OrderInfoVo orderInfoVo = new OrderInfoVo(); orderInfoVo.setOrderId(orderId); BeanUtils.copyProperties(orderInfo,orderInfoVo); return orderInfoVo; }
@Operation(summary = "计算最佳驾驶线路") @GuiguLogin @PostMapping("/calculateDrivingLine") public Result calculateDrivingLine(@RequestBody CalculateDrivingLineForm calculateDrivingLineForm) { return Result.ok(orderService.calculateDrivingLine(calculateDrivingLineForm)); } //计算最佳驾驶线路 @Override public DrivingLineVo calculateDrivingLine(CalculateDrivingLineForm calculateDrivingLineForm) { return mapFeignClient.calculateDrivingLine(calculateDrivingLineForm).getData(); }
@Operation(summary = "司机赶往代驾起始点:更新订单地址到缓存") @PostMapping("/updateOrderLocationToCache") public Result updateOrderLocationToCache(@RequestBody UpdateOrderLocationForm updateOrderLocationForm) { return Result.ok(locationService.updateOrderLocationToCache(updateOrderLocationForm)); } //司机赶往代驾起始点:更新订单地址到缓存 @Override public Boolean updateOrderLocationToCache(UpdateOrderLocationForm updateOrderLocationForm) { OrderLocationVo orderLocationVo = new OrderLocationVo(); orderLocationVo.setLongitude(updateOrderLocationForm.getLongitude()); orderLocationVo.setLatitude(updateOrderLocationForm.getLatitude()); String key = RedisConstant.UPDATE_ORDER_LOCATION + updateOrderLocationForm.getOrderId(); redisTemplate.opsForValue().set(key,orderLocationVo); return true; } /** * 司机赶往代驾起始点:更新订单地址到缓存 * @param updateOrderLocationForm * @return */ @PostMapping("/map/location/updateOrderLocationToCache") Result updateOrderLocationToCache(@RequestBody UpdateOrderLocationForm updateOrderLocationForm); @Operation(summary = "司机赶往代驾起始点:更新订单位置到Redis缓存") @GuiguLogin @PostMapping("/updateOrderLocationToCache") public Result updateOrderLocationToCache(@RequestBody UpdateOrderLocationForm updateOrderLocationForm) { return Result.ok(locationService.updateOrderLocationToCache(updateOrderLocationForm)); } @Override public Boolean updateOrderLocationToCache(UpdateOrderLocationForm updateOrderLocationForm) { return locationFeignClient.updateOrderLocationToCache(updateOrderLocationForm).getData(); }
@Operation(summary = "获取司机基本信息") @GetMapping("/getDriverInfo/{driverId}") public Result getDriverInfoOrder(@PathVariable Long driverId) { return Result.ok(driverInfoService.getDriverInfoOrder(driverId)); } //获取司机基本信息 @Override public DriverInfoVo getDriverInfoOrder(Long driverId) { //司机id获取基本信息 DriverInfo driverInfo = driverInfoMapper.selectById(driverId); //封装DriverInfoVo DriverInfoVo driverInfoVo = new DriverInfoVo(); BeanUtils.copyProperties(driverInfo,driverInfoVo); //计算驾龄 //获取当前年 int currentYear = new DateTime().getYear(); //获取驾驶证初次领证日期 //driver_license_issue_date int firstYear = new DateTime(driverInfo.getDriverLicenseIssueDate()).getYear(); int driverLicenseAge = currentYear - firstYear; driverInfoVo.setDriverLicenseAge(driverLicenseAge); return driverInfoVo; } /** * 获取司机基本信息 * @param driverId * @return */ @GetMapping("/driver/info/getDriverInfo/{driverId}") Result getDriverInfo(@PathVariable("driverId") Long driverId); @Operation(summary = "根据订单id获取司机基本信息") @GuiguLogin @GetMapping("/getDriverInfo/{orderId}") public Result getDriverInfo(@PathVariable Long orderId) { Long customerId = AuthContextHolder.getUserId(); return Result.ok(orderService.getDriverInfo(orderId, customerId)); } @Override public DriverInfoVo getDriverInfo(Long orderId, Long customerId) { //根据订单id获取订单信息 OrderInfo orderInfo = orderInfoFeignClient.getOrderInfo(orderId).getData(); if(orderInfo.getCustomerId() != customerId) { throw new GuiguException(ResultCodeEnum.DATA_ERROR); } return driverInfoFeignClient.getDriverInfo(orderInfo.getDriverId()).getData(); }
@Operation(summary = "司机赶往代驾起始点:获取订单经纬度位置") @GetMapping("/getCacheOrderLocation/{orderId}") public Result getCacheOrderLocation(@PathVariable Long orderId) { return Result.ok(locationService.getCacheOrderLocation(orderId)); } @Override public OrderLocationVo getCacheOrderLocation(Long orderId) { String key = RedisConstant.UPDATE_ORDER_LOCATION + orderId; OrderLocationVo orderLocationVo = (OrderLocationVo)redisTemplate.opsForValue().get(key); return orderLocationVo; } /** * 司机赶往代驾起始点:获取订单经纬度位置 * @param orderId * @return */ @GetMapping("/map/location/getCacheOrderLocation/{orderId}") Result getCacheOrderLocation(@PathVariable("orderId") Long orderId); @Operation(summary = "司机赶往代驾起始点:获取订单经纬度位置") @GetMapping("/getCacheOrderLocation/{orderId}") public Result getCacheOrderLocation(@PathVariable Long orderId) { return Result.ok(locationService.getCacheOrderLocation(orderId)); } @Override public OrderLocationVo getCacheOrderLocation(Long orderId) { return locationFeignClient.getCacheOrderLocation(orderId).getData(); } @Operation(summary = "计算最佳驾驶线路") @GuiguLogin @PostMapping("/calculateDrivingLine") public Result calculateDrivingLine(@RequestBody CalculateDrivingLineForm calculateDrivingLineForm) { return Result.ok(orderService.calculateDrivingLine(calculateDrivingLineForm)); } @Override public DrivingLineVo calculateDrivingLine(CalculateDrivingLineForm calculateDrivingLineForm) { return mapFeignClient.calculateDrivingLine(calculateDrivingLineForm).getData(); }
@Operation(summary = "司机到达起始点") @GetMapping("/driverArriveStartLocation/{orderId}/{driverId}") public Result driverArriveStartLocation(@PathVariable Long orderId, @PathVariable Long driverId) { return Result.ok(orderInfoService.driverArriveStartLocation(orderId, driverId)); } //司机到达起始点 @Override public Boolean driverArriveStartLocation(Long orderId, Long driverId) { // 更新订单状态和到达时间,条件:orderId + driverId LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(OrderInfo::getId,orderId); wrapper.eq(OrderInfo::getDriverId,driverId); OrderInfo orderInfo = new OrderInfo(); orderInfo.setStatus(OrderStatus.DRIVER_ARRIVED.getStatus()); orderInfo.setArriveTime(new Date()); int rows = orderInfoMapper.update(orderInfo, wrapper); if(rows == 1) { return true; } else { throw new GuiguException(ResultCodeEnum.UPDATE_ERROR); } } /** * 司机到达起始点 * @param orderId * @param driverId * @return */ @GetMapping("/order/info/driverArriveStartLocation/{orderId}/{driverId}") Result driverArriveStartLocation(@PathVariable("orderId") Long orderId, @PathVariable("driverId") Long driverId); @Operation(summary = "司机到达代驾起始地点") @GuiguLogin @GetMapping("/driverArriveStartLocation/{orderId}") public Result driverArriveStartLocation(@PathVariable Long orderId) { Long driverId = AuthContextHolder.getUserId(); return Result.ok(orderService.driverArriveStartLocation(orderId, driverId)); } //司机到达代驾起始地点 @Override public Boolean driverArriveStartLocation(Long orderId, Long driverId) { return orderInfoFeignClient.driverArriveStartLocation(orderId,driverId).getData(); }
司机到达代驾起始点,联系了乘客,见到了代驾车辆,要拍照与录入车辆信息
@Operation(summary = "更新代驾车辆信息") @PostMapping("/updateOrderCart") public Result updateOrderCart(@RequestBody UpdateOrderCartForm updateOrderCartForm) { return Result.ok(orderInfoService.updateOrderCart(updateOrderCartForm)); } Boolean updateOrderCart(UpdateOrderCartForm updateOrderCartForm); @Transactional(rollbackFor = Exception.class) @Override public Boolean updateOrderCart(UpdateOrderCartForm updateOrderCartForm) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(OrderInfo::getId, updateOrderCartForm.getOrderId()); queryWrapper.eq(OrderInfo::getDriverId, updateOrderCartForm.getDriverId()); OrderInfo updateOrderInfo = new OrderInfo(); BeanUtils.copyProperties(updateOrderCartForm, updateOrderInfo); updateOrderInfo.setStatus(OrderStatus.UPDATE_CART_INFO.getStatus()); //只能更新自己的订单 int row = orderInfoMapper.update(updateOrderInfo, queryWrapper); if(row == 1) { //记录日志 this.log(updateOrderCartForm.getOrderId(), OrderStatus.UPDATE_CART_INFO.getStatus()); } else { throw new GuiguException(ResultCodeEnum.UPDATE_ERROR); } return true; } /** * 更新代驾车辆信息 * @param updateOrderCartForm * @return */ @PostMapping("/order/info//updateOrderCart") Result updateOrderCart(@RequestBody UpdateOrderCartForm updateOrderCartForm); @Operation(summary = "更新代驾车辆信息") @GuiguLogin @PostMapping("/updateOrderCart") public Result updateOrderCart(@RequestBody UpdateOrderCartForm updateOrderCartForm) { Long driverId = AuthContextHolder.getUserId(); updateOrderCartForm.setDriverId(driverId); return Result.ok(orderService.updateOrderCart(updateOrderCartForm)); } @Override public Boolean updateOrderCart(UpdateOrderCartForm updateOrderCartForm) { return orderInfoFeignClient.updateOrderCart(updateOrderCartForm).getData(); }
公司只有一个总的理想,员工不能要求公司去实现你的理想,你必须适应这个总的理想,参加主力部队作战,发挥你的作用。我们的主航道不会变化,你们与大学合作的面宽一点,到2012实验室的时候窄一点,到产品研发更是窄窄的,要有长期性的清晰指标。
https://baijiahao.baidu.com/s?id=1760664270073856317&wfr=spider&for=pc
擦亮花火、共创未来——任正非在“难题揭榜”花火奖座谈会上的讲话
任正非
下一篇:游戏手柄震动有什么用