From 3639ed731b9bac8a4b009f53e82c90c083c4424a Mon Sep 17 00:00:00 2001 From: lifenlong Date: Sat, 29 May 2021 12:31:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E8=AE=A2=E5=8D=95=E6=A0=B8?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/order/service/OrderService.java | 12 +++- .../order/serviceimpl/OrderServiceImpl.java | 71 ++++++++++++------- .../trade/OrderStoreController.java | 25 +++---- 3 files changed, 68 insertions(+), 40 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index c89e5e4a..272864d6 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -118,10 +118,16 @@ public interface OrderService extends IService { /** * 订单核验 * - * @param orderSn 订单编号 - * @param qrCode 提货码 + * @param verificationCode 验证码 */ - Order take(String orderSn, String qrCode); + Order take(String orderSn,String verificationCode); + + /** + * 根据核验码获取订单信息 + * + * @param verificationCode 验证码 + */ + Order getOrderByVerificationCode(String verificationCode); /** * 订单完成 diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index b2d76c6a..243e18a0 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -239,9 +239,7 @@ public class OrderServiceImpl extends ServiceImpl implements */ @Override public Order getBySn(String orderSn) { - QueryWrapper orderWrapper = new QueryWrapper<>(); - orderWrapper.eq("sn", orderSn); - return this.getOne(orderWrapper); + return this.getOne(new LambdaQueryWrapper().eq(Order::getSn, orderSn)); } @Override @@ -357,30 +355,29 @@ public class OrderServiceImpl extends ServiceImpl 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.setOrderStatus(OrderStatusEnum.COMPLETED.name()); + public Order take(String orderSn,String verificationCode) { - 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(); - 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() + .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 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); + } + } } \ No newline at end of file diff --git a/seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java b/seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java index 0c034911..76626a4c 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java @@ -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 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 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 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}") + @ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path") + @GetMapping(value = "/getTraces/{orderSn}") public ResultMessage getTraces(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) { return ResultUtil.data(orderService.getTraces(orderSn)); }