虚拟订单核验
This commit is contained in:
parent
e5d4207839
commit
3639ed731b
@ -118,10 +118,16 @@ public interface OrderService extends IService<Order> {
|
|||||||
/**
|
/**
|
||||||
* 订单核验
|
* 订单核验
|
||||||
*
|
*
|
||||||
* @param orderSn 订单编号
|
* @param verificationCode 验证码
|
||||||
* @param qrCode 提货码
|
|
||||||
*/
|
*/
|
||||||
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
|
@Override
|
||||||
public Order getBySn(String orderSn) {
|
public Order getBySn(String orderSn) {
|
||||||
QueryWrapper<Order> orderWrapper = new QueryWrapper<>();
|
return this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getSn, orderSn));
|
||||||
orderWrapper.eq("sn", orderSn);
|
|
||||||
return this.getOne(orderWrapper);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -357,30 +355,29 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@OrderLogPoint(description = "'订单['+#orderSn+']核销,核销码['+#verificationCode+']'", orderSn = "#orderSn")
|
public Order take(String orderSn,String verificationCode) {
|
||||||
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.setOrderStatus(OrderStatusEnum.COMPLETED.name());
|
|
||||||
|
|
||||||
this.updateById(order);
|
//获取订单信息
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
OrderMessage orderMessage = new OrderMessage();
|
@Override
|
||||||
orderMessage.setNewStatus(OrderStatusEnum.COMPLETED);
|
public Order getOrderByVerificationCode(String verificationCode) {
|
||||||
orderMessage.setOrderSn(order.getSn());
|
return this.getOne(new LambdaQueryWrapper<Order>()
|
||||||
this.sendUpdateStatusMessage(orderMessage);
|
.eq(Order::getOrderStatus, OrderStatusEnum.TAKE.name())
|
||||||
}
|
.eq(Order::getStoreId,UserContext.getCurrentUser().getStoreId())
|
||||||
return order;
|
.eq(Order::getVerificationCode, verificationCode));
|
||||||
}
|
|
||||||
throw new ServiceException(ResultCode.ORDER_TAKE_ERROR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -818,4 +815,28 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
orderMessage.setOrderSn(orderSn);
|
orderMessage.setOrderSn(orderSn);
|
||||||
this.sendUpdateStatusMessage(orderMessage);
|
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));
|
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 = "订单核验")
|
@ApiOperation(value = "订单核验")
|
||||||
@ApiImplicitParams({
|
@ApiImplicitParam(name = "verificationCode", value = "核验码", required = true, paramType = "path")
|
||||||
@ApiImplicitParam(name = "orderSn", value = "订单sn", required = true, dataType = "String", paramType = "path"),
|
@PutMapping(value = "/take/${order}/{verificationCode}")
|
||||||
@ApiImplicitParam(name = "qrCode", value = "发货单号", required = true, dataType = "String", paramType = "query")
|
public ResultMessage<Object> take(@PathVariable String orderSn,@PathVariable String verificationCode) {
|
||||||
})
|
return ResultUtil.data(orderService.take(orderSn,verificationCode));
|
||||||
@PostMapping(value = "/{orderSn}/take")
|
|
||||||
public ResultMessage<Object> take(@NotNull(message = "参数非法") @PathVariable String orderSn,
|
|
||||||
@NotNull(message = "核验码") String qrCode) {
|
|
||||||
return ResultUtil.data(orderService.take(orderSn, qrCode));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "查询物流踪迹")
|
@ApiOperation(value = "查询物流踪迹")
|
||||||
@ApiImplicitParams({
|
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
|
||||||
@ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path")
|
@GetMapping(value = "/getTraces/{orderSn}")
|
||||||
})
|
|
||||||
@PostMapping(value = "/getTraces/{orderSn}")
|
|
||||||
public ResultMessage<Object> getTraces(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) {
|
public ResultMessage<Object> getTraces(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) {
|
||||||
return ResultUtil.data(orderService.getTraces(orderSn));
|
return ResultUtil.data(orderService.getTraces(orderSn));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user