虚拟订单核验
This commit is contained in:
parent
e5d4207839
commit
3639ed731b
@ -118,10 +118,16 @@ public interface OrderService extends IService<Order> {
|
||||
/**
|
||||
* 订单核验
|
||||
*
|
||||
* @param orderSn 订单编号
|
||||
* @param qrCode 提货码
|
||||
* @param verificationCode 验证码
|
||||
*/
|
||||
Order take(String orderSn, String qrCode);
|
||||
Order take(String orderSn,String verificationCode);
|
||||
|
||||
/**
|
||||
* 根据核验码获取订单信息
|
||||
*
|
||||
* @param verificationCode 验证码
|
||||
*/
|
||||
Order getOrderByVerificationCode(String verificationCode);
|
||||
|
||||
/**
|
||||
* 订单完成
|
||||
|
@ -239,9 +239,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
*/
|
||||
@Override
|
||||
public Order getBySn(String orderSn) {
|
||||
QueryWrapper<Order> orderWrapper = new QueryWrapper<>();
|
||||
orderWrapper.eq("sn", orderSn);
|
||||
return this.getOne(orderWrapper);
|
||||
return this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getSn, orderSn));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -357,30 +355,29 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrderLogPoint(description = "'订单['+#orderSn+']核销,核销码['+#verificationCode+']'", orderSn = "#orderSn")
|
||||
public Order take(String orderSn,String verificationCode) {
|
||||
//是否可以查询到订单
|
||||
Order order = OperationalJudgment.judgment(this.getBySn(orderSn));
|
||||
//判断是否为虚拟订单
|
||||
if (!order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name())) {
|
||||
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
||||
}
|
||||
//判断虚拟订单状态
|
||||
if (order.getOrderStatus().equals(OrderStatusEnum.TAKE.name())) {
|
||||
//判断提货码是否正确\修改订单状态
|
||||
if (order.getOrderStatus().equals(OrderStatusEnum.TAKE.name()) && verificationCode.equals(order.getVerificationCode())) {
|
||||
|
||||
//获取订单信息
|
||||
Order order = this.getBySn(orderSn);
|
||||
//检测虚拟订单信息
|
||||
checkVerificationOrder(order,verificationCode);
|
||||
order.setOrderStatus(OrderStatusEnum.COMPLETED.name());
|
||||
|
||||
//修改订单信息
|
||||
this.updateById(order);
|
||||
|
||||
//发送订单完成消息
|
||||
OrderMessage orderMessage = new OrderMessage();
|
||||
orderMessage.setNewStatus(OrderStatusEnum.COMPLETED);
|
||||
orderMessage.setOrderSn(order.getSn());
|
||||
this.sendUpdateStatusMessage(orderMessage);
|
||||
}
|
||||
return order;
|
||||
}
|
||||
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
||||
|
||||
@Override
|
||||
public Order getOrderByVerificationCode(String verificationCode) {
|
||||
return this.getOne(new LambdaQueryWrapper<Order>()
|
||||
.eq(Order::getOrderStatus, OrderStatusEnum.TAKE.name())
|
||||
.eq(Order::getStoreId,UserContext.getCurrentUser().getStoreId())
|
||||
.eq(Order::getVerificationCode, verificationCode));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -818,4 +815,28 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
orderMessage.setOrderSn(orderSn);
|
||||
this.sendUpdateStatusMessage(orderMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测虚拟订单信息
|
||||
* @param order 订单
|
||||
* @param verificationCode 验证码
|
||||
*/
|
||||
private void checkVerificationOrder(Order order,String verificationCode){
|
||||
//判断查询是否可以查询到订单
|
||||
if (order==null) {
|
||||
throw new ServiceException(ResultCode.ORDER_NOT_EXIST);
|
||||
}
|
||||
//判断是否为虚拟订单
|
||||
else if (!order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name())) {
|
||||
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
||||
}
|
||||
//判断虚拟订单状态
|
||||
else if (order.getOrderStatus().equals(OrderStatusEnum.TAKE.name())) {
|
||||
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
||||
}
|
||||
//判断验证码是否正确
|
||||
else if(!verificationCode.equals(order.getVerificationCode())){
|
||||
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
||||
}
|
||||
}
|
||||
}
|
@ -117,22 +117,23 @@ public class OrderStoreController {
|
||||
return ResultUtil.data(orderService.cancel(orderSn, reason));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据核验码获取订单信息")
|
||||
@ApiImplicitParam(name = "verificationCode", value = "核验码", required = true, paramType = "path")
|
||||
@GetMapping(value = "/getOrderByVerificationCode/{verificationCode}")
|
||||
public ResultMessage<Object> getOrderByVerificationCode(@PathVariable String verificationCode){
|
||||
return ResultUtil.data(orderService.getOrderByVerificationCode(verificationCode));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "订单核验")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "orderSn", value = "订单sn", required = true, dataType = "String", paramType = "path"),
|
||||
@ApiImplicitParam(name = "qrCode", value = "发货单号", required = true, dataType = "String", paramType = "query")
|
||||
})
|
||||
@PostMapping(value = "/{orderSn}/take")
|
||||
public ResultMessage<Object> take(@NotNull(message = "参数非法") @PathVariable String orderSn,
|
||||
@NotNull(message = "核验码") String qrCode) {
|
||||
return ResultUtil.data(orderService.take(orderSn, qrCode));
|
||||
@ApiImplicitParam(name = "verificationCode", value = "核验码", required = true, paramType = "path")
|
||||
@PutMapping(value = "/take/${order}/{verificationCode}")
|
||||
public ResultMessage<Object> take(@PathVariable String orderSn,@PathVariable String verificationCode) {
|
||||
return ResultUtil.data(orderService.take(orderSn,verificationCode));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询物流踪迹")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
|
||||
})
|
||||
@PostMapping(value = "/getTraces/{orderSn}")
|
||||
@GetMapping(value = "/getTraces/{orderSn}")
|
||||
public ResultMessage<Object> getTraces(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) {
|
||||
return ResultUtil.data(orderService.getTraces(orderSn));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user