司机开始接单,乘客填写出发地——目的地,开始下单
service-order模块
@Operation(summary="司机抢单")
@GetMapping("/robNewOrder/{driverId}/{orderId}")
public Result<Boolean> robNewOrder(@PathVariable Long driverId,@PathVariable Long orderId){
return Result.ok(orderInfoServcie.robNewOrder(driverId,orderId));
}
@Override
public Boolean robNewOrder(Long driverId,Long orderId){
/**
为了防止数据库压力过大,在saveOrderInfo添加订单的时候
需要向redis添加,redisTemplate.opsForValue().set(RedisConstant.ORDER_ACCEPT_MARK,
"0",RedisConstant.ORDER_ACCEPT_MARK_EXPIRES_TIME,
TimeUnit.MINUTES);
*/
if(redisTemplate.hasKey(RedisConstant.ORDER_ACCEPT_MARK)){
throw new GuiguException(ResultCodeEnum.COB_NEW_ORDER_FAIL);
}
//如果订单存在Redis,则修改订单状态"已经接单"
//修改条件:根据订单id+司机id
LambdaQueryWrapper<OrderInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(orderInfo::getId,orderId);
OrderInfo orderInfo = orderInfoMapper.selectOne(wrapper);
orderInfo.setStatus(OrderStatus.ACCEPTED.getStats());
orderInfo.setDriverId(driverId);
orderInfo.setAccpetTime(new Date());
int rows = orderInfoMapper.updateById(orderInfo);
if(rows != 1){
throw new GuiguException(ResultCodeEnum.COB_NEW_ORDER_FAIL);
}
redisTemplate.delete(RedisConstant.ORDER_ACCEPT_MARK);
return true;
}
server-order-client远程定义模块
@GetMapping("/order/info/robNewOrder/{driverId}/{orderId}")
Result<Boolean> robNewOrder(@PathVariable("driverId") Long driverId,@PathVariable("orderId") Long orderId);
web调用模块
@Operation(summary = "司机抢单")
@GuiguLogin()
@GetMapping("/robNewOrder/{orderId}")
public Result<Boolean> robNewOrder(@PathVariable Long orderId){
Long driverId = AuthContextHolder.getUserId();
return Result.ok(orderService.robNewOrder(driverId,orderId));
}
@Override
public Boolean