Commit fd5af249b9a075f86022288fde82f5b07c3fda50
1 parent
6bfe6285
【功能新增】商城:核销订单时,增加校验是否门店核销员的校验
Showing
4 changed files
with
24 additions
and
11 deletions
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java
| ... | ... | @@ -36,6 +36,7 @@ public interface ErrorCodeConstants { |
| 36 | 36 | ErrorCode ORDER_UPDATE_ADDRESS_FAIL_STATUS_NOT_DELIVERED = new ErrorCode(1_011_000_031, "交易订单修改收货地址失败,原因:订单不是【待发货】状态"); |
| 37 | 37 | ErrorCode ORDER_CREATE_FAIL_EXIST_UNPAID = new ErrorCode(1_011_000_032, "交易订单创建失败,原因:存在未付款订单"); |
| 38 | 38 | ErrorCode ORDER_CANCEL_PAID_FAIL = new ErrorCode(1_011_000_033, "交易订单取消支付失败,原因:订单不是【{}】状态"); |
| 39 | + ErrorCode ORDER_PICK_UP_FAIL_NOT_VERIFY_USER = new ErrorCode(1_011_000_034, "交易订单自提失败,原因:你没有核销该门店订单的权限"); | |
| 39 | 40 | |
| 40 | 41 | // ========== After Sale 模块 1-011-000-100 ========== |
| 41 | 42 | ErrorCode AFTER_SALE_NOT_FOUND = new ErrorCode(1_011_000_100, "售后单不存在"); | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/TradeOrderController.java
| ... | ... | @@ -10,19 +10,18 @@ import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; |
| 10 | 10 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 11 | 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 12 | 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO; |
| 13 | -import cn.iocoder.yudao.module.trade.service.aftersale.AfterSaleService; | |
| 14 | 13 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderLogService; |
| 15 | 14 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; |
| 16 | 15 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; |
| 17 | 16 | import io.swagger.v3.oas.annotations.Operation; |
| 18 | 17 | import io.swagger.v3.oas.annotations.Parameter; |
| 19 | 18 | import io.swagger.v3.oas.annotations.tags.Tag; |
| 19 | +import jakarta.annotation.Resource; | |
| 20 | 20 | import lombok.extern.slf4j.Slf4j; |
| 21 | 21 | import org.springframework.security.access.prepost.PreAuthorize; |
| 22 | 22 | import org.springframework.validation.annotation.Validated; |
| 23 | 23 | import org.springframework.web.bind.annotation.*; |
| 24 | 24 | |
| 25 | -import jakarta.annotation.Resource; | |
| 26 | 25 | import java.util.List; |
| 27 | 26 | import java.util.Map; |
| 28 | 27 | import java.util.Objects; |
| ... | ... | @@ -31,6 +30,7 @@ import java.util.Set; |
| 31 | 30 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 32 | 31 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; |
| 33 | 32 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 33 | +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | |
| 34 | 34 | |
| 35 | 35 | @Tag(name = "管理后台 - 交易订单") |
| 36 | 36 | @RestController |
| ... | ... | @@ -144,7 +144,7 @@ public class TradeOrderController { |
| 144 | 144 | @Parameter(name = "id", description = "交易订单编号") |
| 145 | 145 | @PreAuthorize("@ss.hasPermission('trade:order:pick-up')") |
| 146 | 146 | public CommonResult<Boolean> pickUpOrderById(@RequestParam("id") Long id) { |
| 147 | - tradeOrderUpdateService.pickUpOrderByAdmin(id); | |
| 147 | + tradeOrderUpdateService.pickUpOrderByAdmin(getLoginUserId(), id); | |
| 148 | 148 | return success(true); |
| 149 | 149 | } |
| 150 | 150 | |
| ... | ... | @@ -153,7 +153,7 @@ public class TradeOrderController { |
| 153 | 153 | @Parameter(name = "pickUpVerifyCode", description = "自提核销码") |
| 154 | 154 | @PreAuthorize("@ss.hasPermission('trade:order:pick-up')") |
| 155 | 155 | public CommonResult<Boolean> pickUpOrderByVerifyCode(@RequestParam("pickUpVerifyCode") String pickUpVerifyCode) { |
| 156 | - tradeOrderUpdateService.pickUpOrderByAdmin(pickUpVerifyCode); | |
| 156 | + tradeOrderUpdateService.pickUpOrderByAdmin(getLoginUserId(), pickUpVerifyCode); | |
| 157 | 157 | return success(true); |
| 158 | 158 | } |
| 159 | 159 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateService.java
| ... | ... | @@ -129,16 +129,18 @@ public interface TradeOrderUpdateService { |
| 129 | 129 | /** |
| 130 | 130 | * 【管理员】核销订单 |
| 131 | 131 | * |
| 132 | + * @param userId 管理员编号 | |
| 132 | 133 | * @param id 订单编号 |
| 133 | 134 | */ |
| 134 | - void pickUpOrderByAdmin(Long id); | |
| 135 | + void pickUpOrderByAdmin(Long userId, Long id); | |
| 135 | 136 | |
| 136 | 137 | /** |
| 137 | 138 | * 【管理员】核销订单 |
| 138 | 139 | * |
| 140 | + * @param userId 管理员编号 | |
| 139 | 141 | * @param pickUpVerifyCode 自提核销码 |
| 140 | 142 | */ |
| 141 | - void pickUpOrderByAdmin(String pickUpVerifyCode); | |
| 143 | + void pickUpOrderByAdmin(Long userId, String pickUpVerifyCode); | |
| 142 | 144 | |
| 143 | 145 | /** |
| 144 | 146 | * 【管理员】根据自提核销码,查询订单 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
| ... | ... | @@ -35,6 +35,7 @@ import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderI |
| 35 | 35 | import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; |
| 36 | 36 | import cn.iocoder.yudao.module.trade.dal.dataobject.cart.CartDO; |
| 37 | 37 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; |
| 38 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; | |
| 38 | 39 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 39 | 40 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 40 | 41 | import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper; |
| ... | ... | @@ -47,6 +48,7 @@ import cn.iocoder.yudao.module.trade.framework.order.core.annotations.TradeOrder |
| 47 | 48 | import cn.iocoder.yudao.module.trade.framework.order.core.utils.TradeOrderLogUtils; |
| 48 | 49 | import cn.iocoder.yudao.module.trade.service.cart.CartService; |
| 49 | 50 | import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; |
| 51 | +import cn.iocoder.yudao.module.trade.service.delivery.DeliveryPickUpStoreService; | |
| 50 | 52 | import cn.iocoder.yudao.module.trade.service.message.TradeMessageService; |
| 51 | 53 | import cn.iocoder.yudao.module.trade.service.message.bo.TradeOrderMessageWhenDeliveryOrderReqBO; |
| 52 | 54 | import cn.iocoder.yudao.module.trade.service.order.handler.TradeOrderHandler; |
| ... | ... | @@ -103,6 +105,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 103 | 105 | private DeliveryExpressService deliveryExpressService; |
| 104 | 106 | @Resource |
| 105 | 107 | private TradeMessageService tradeMessageService; |
| 108 | + @Resource | |
| 109 | + private DeliveryPickUpStoreService pickUpStoreService; | |
| 106 | 110 | |
| 107 | 111 | @Resource |
| 108 | 112 | private PayOrderApi payOrderApi; |
| ... | ... | @@ -717,14 +721,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 717 | 721 | |
| 718 | 722 | @Override |
| 719 | 723 | @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ADMIN_PICK_UP_RECEIVE) |
| 720 | - public void pickUpOrderByAdmin(Long id) { | |
| 721 | - getSelf().pickUpOrder(tradeOrderMapper.selectById(id)); | |
| 724 | + public void pickUpOrderByAdmin(Long userId, Long id) { | |
| 725 | + getSelf().pickUpOrder(userId, tradeOrderMapper.selectById(id)); | |
| 722 | 726 | } |
| 723 | 727 | |
| 724 | 728 | @Override |
| 725 | 729 | @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ADMIN_PICK_UP_RECEIVE) |
| 726 | - public void pickUpOrderByAdmin(String pickUpVerifyCode) { | |
| 727 | - getSelf().pickUpOrder(tradeOrderMapper.selectOneByPickUpVerifyCode(pickUpVerifyCode)); | |
| 730 | + public void pickUpOrderByAdmin(Long userId, String pickUpVerifyCode) { | |
| 731 | + getSelf().pickUpOrder(userId, tradeOrderMapper.selectOneByPickUpVerifyCode(pickUpVerifyCode)); | |
| 728 | 732 | } |
| 729 | 733 | |
| 730 | 734 | @Override |
| ... | ... | @@ -733,13 +737,19 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 733 | 737 | } |
| 734 | 738 | |
| 735 | 739 | @Transactional(rollbackFor = Exception.class) |
| 736 | - public void pickUpOrder(TradeOrderDO order) { | |
| 740 | + public void pickUpOrder(Long userId, TradeOrderDO order) { | |
| 737 | 741 | if (order == null) { |
| 738 | 742 | throw exception(ORDER_NOT_FOUND); |
| 739 | 743 | } |
| 740 | 744 | if (ObjUtil.notEqual(DeliveryTypeEnum.PICK_UP.getType(), order.getDeliveryType())) { |
| 741 | 745 | throw exception(ORDER_RECEIVE_FAIL_DELIVERY_TYPE_NOT_PICK_UP); |
| 742 | 746 | } |
| 747 | + DeliveryPickUpStoreDO deliveryPickUpStore = pickUpStoreService.getDeliveryPickUpStore(order.getPickUpStoreId()); | |
| 748 | + if (deliveryPickUpStore == null | |
| 749 | + || !CollUtil.contains(deliveryPickUpStore.getVerifyUserIds(), userId)) { | |
| 750 | + throw exception(ORDER_PICK_UP_FAIL_NOT_VERIFY_USER); | |
| 751 | + } | |
| 752 | + | |
| 743 | 753 | receiveOrder0(order); |
| 744 | 754 | } |
| 745 | 755 | ... | ... |