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,6 +36,7 @@ public interface ErrorCodeConstants { | ||
| 36 | ErrorCode ORDER_UPDATE_ADDRESS_FAIL_STATUS_NOT_DELIVERED = new ErrorCode(1_011_000_031, "交易订单修改收货地址失败,原因:订单不是【待发货】状态"); | 36 | ErrorCode ORDER_UPDATE_ADDRESS_FAIL_STATUS_NOT_DELIVERED = new ErrorCode(1_011_000_031, "交易订单修改收货地址失败,原因:订单不是【待发货】状态"); |
| 37 | ErrorCode ORDER_CREATE_FAIL_EXIST_UNPAID = new ErrorCode(1_011_000_032, "交易订单创建失败,原因:存在未付款订单"); | 37 | ErrorCode ORDER_CREATE_FAIL_EXIST_UNPAID = new ErrorCode(1_011_000_032, "交易订单创建失败,原因:存在未付款订单"); |
| 38 | ErrorCode ORDER_CANCEL_PAID_FAIL = new ErrorCode(1_011_000_033, "交易订单取消支付失败,原因:订单不是【{}】状态"); | 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 | // ========== After Sale 模块 1-011-000-100 ========== | 41 | // ========== After Sale 模块 1-011-000-100 ========== |
| 41 | ErrorCode AFTER_SALE_NOT_FOUND = new ErrorCode(1_011_000_100, "售后单不存在"); | 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,19 +10,18 @@ import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; | ||
| 10 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | 10 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO; | 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO; |
| 13 | -import cn.iocoder.yudao.module.trade.service.aftersale.AfterSaleService; | ||
| 14 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderLogService; | 13 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderLogService; |
| 15 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; | 14 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; |
| 16 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; | 15 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; |
| 17 | import io.swagger.v3.oas.annotations.Operation; | 16 | import io.swagger.v3.oas.annotations.Operation; |
| 18 | import io.swagger.v3.oas.annotations.Parameter; | 17 | import io.swagger.v3.oas.annotations.Parameter; |
| 19 | import io.swagger.v3.oas.annotations.tags.Tag; | 18 | import io.swagger.v3.oas.annotations.tags.Tag; |
| 19 | +import jakarta.annotation.Resource; | ||
| 20 | import lombok.extern.slf4j.Slf4j; | 20 | import lombok.extern.slf4j.Slf4j; |
| 21 | import org.springframework.security.access.prepost.PreAuthorize; | 21 | import org.springframework.security.access.prepost.PreAuthorize; |
| 22 | import org.springframework.validation.annotation.Validated; | 22 | import org.springframework.validation.annotation.Validated; |
| 23 | import org.springframework.web.bind.annotation.*; | 23 | import org.springframework.web.bind.annotation.*; |
| 24 | 24 | ||
| 25 | -import jakarta.annotation.Resource; | ||
| 26 | import java.util.List; | 25 | import java.util.List; |
| 27 | import java.util.Map; | 26 | import java.util.Map; |
| 28 | import java.util.Objects; | 27 | import java.util.Objects; |
| @@ -31,6 +30,7 @@ import java.util.Set; | @@ -31,6 +30,7 @@ import java.util.Set; | ||
| 31 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 30 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 32 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | 31 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; |
| 33 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | 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 | @Tag(name = "管理后台 - 交易订单") | 35 | @Tag(name = "管理后台 - 交易订单") |
| 36 | @RestController | 36 | @RestController |
| @@ -144,7 +144,7 @@ public class TradeOrderController { | @@ -144,7 +144,7 @@ public class TradeOrderController { | ||
| 144 | @Parameter(name = "id", description = "交易订单编号") | 144 | @Parameter(name = "id", description = "交易订单编号") |
| 145 | @PreAuthorize("@ss.hasPermission('trade:order:pick-up')") | 145 | @PreAuthorize("@ss.hasPermission('trade:order:pick-up')") |
| 146 | public CommonResult<Boolean> pickUpOrderById(@RequestParam("id") Long id) { | 146 | public CommonResult<Boolean> pickUpOrderById(@RequestParam("id") Long id) { |
| 147 | - tradeOrderUpdateService.pickUpOrderByAdmin(id); | 147 | + tradeOrderUpdateService.pickUpOrderByAdmin(getLoginUserId(), id); |
| 148 | return success(true); | 148 | return success(true); |
| 149 | } | 149 | } |
| 150 | 150 | ||
| @@ -153,7 +153,7 @@ public class TradeOrderController { | @@ -153,7 +153,7 @@ public class TradeOrderController { | ||
| 153 | @Parameter(name = "pickUpVerifyCode", description = "自提核销码") | 153 | @Parameter(name = "pickUpVerifyCode", description = "自提核销码") |
| 154 | @PreAuthorize("@ss.hasPermission('trade:order:pick-up')") | 154 | @PreAuthorize("@ss.hasPermission('trade:order:pick-up')") |
| 155 | public CommonResult<Boolean> pickUpOrderByVerifyCode(@RequestParam("pickUpVerifyCode") String pickUpVerifyCode) { | 155 | public CommonResult<Boolean> pickUpOrderByVerifyCode(@RequestParam("pickUpVerifyCode") String pickUpVerifyCode) { |
| 156 | - tradeOrderUpdateService.pickUpOrderByAdmin(pickUpVerifyCode); | 156 | + tradeOrderUpdateService.pickUpOrderByAdmin(getLoginUserId(), pickUpVerifyCode); |
| 157 | return success(true); | 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,16 +129,18 @@ public interface TradeOrderUpdateService { | ||
| 129 | /** | 129 | /** |
| 130 | * 【管理员】核销订单 | 130 | * 【管理员】核销订单 |
| 131 | * | 131 | * |
| 132 | + * @param userId 管理员编号 | ||
| 132 | * @param id 订单编号 | 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 | * @param pickUpVerifyCode 自提核销码 | 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,6 +35,7 @@ import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderI | ||
| 35 | import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; | 35 | import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; |
| 36 | import cn.iocoder.yudao.module.trade.dal.dataobject.cart.CartDO; | 36 | import cn.iocoder.yudao.module.trade.dal.dataobject.cart.CartDO; |
| 37 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | 37 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; |
| 38 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; | ||
| 38 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | 39 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 39 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | 40 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 40 | import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper; | 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,6 +48,7 @@ import cn.iocoder.yudao.module.trade.framework.order.core.annotations.TradeOrder | ||
| 47 | import cn.iocoder.yudao.module.trade.framework.order.core.utils.TradeOrderLogUtils; | 48 | import cn.iocoder.yudao.module.trade.framework.order.core.utils.TradeOrderLogUtils; |
| 48 | import cn.iocoder.yudao.module.trade.service.cart.CartService; | 49 | import cn.iocoder.yudao.module.trade.service.cart.CartService; |
| 49 | import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; | 50 | import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; |
| 51 | +import cn.iocoder.yudao.module.trade.service.delivery.DeliveryPickUpStoreService; | ||
| 50 | import cn.iocoder.yudao.module.trade.service.message.TradeMessageService; | 52 | import cn.iocoder.yudao.module.trade.service.message.TradeMessageService; |
| 51 | import cn.iocoder.yudao.module.trade.service.message.bo.TradeOrderMessageWhenDeliveryOrderReqBO; | 53 | import cn.iocoder.yudao.module.trade.service.message.bo.TradeOrderMessageWhenDeliveryOrderReqBO; |
| 52 | import cn.iocoder.yudao.module.trade.service.order.handler.TradeOrderHandler; | 54 | import cn.iocoder.yudao.module.trade.service.order.handler.TradeOrderHandler; |
| @@ -103,6 +105,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -103,6 +105,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 103 | private DeliveryExpressService deliveryExpressService; | 105 | private DeliveryExpressService deliveryExpressService; |
| 104 | @Resource | 106 | @Resource |
| 105 | private TradeMessageService tradeMessageService; | 107 | private TradeMessageService tradeMessageService; |
| 108 | + @Resource | ||
| 109 | + private DeliveryPickUpStoreService pickUpStoreService; | ||
| 106 | 110 | ||
| 107 | @Resource | 111 | @Resource |
| 108 | private PayOrderApi payOrderApi; | 112 | private PayOrderApi payOrderApi; |
| @@ -717,14 +721,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -717,14 +721,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 717 | 721 | ||
| 718 | @Override | 722 | @Override |
| 719 | @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ADMIN_PICK_UP_RECEIVE) | 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 | @Override | 728 | @Override |
| 725 | @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ADMIN_PICK_UP_RECEIVE) | 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 | @Override | 734 | @Override |
| @@ -733,13 +737,19 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -733,13 +737,19 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 733 | } | 737 | } |
| 734 | 738 | ||
| 735 | @Transactional(rollbackFor = Exception.class) | 739 | @Transactional(rollbackFor = Exception.class) |
| 736 | - public void pickUpOrder(TradeOrderDO order) { | 740 | + public void pickUpOrder(Long userId, TradeOrderDO order) { |
| 737 | if (order == null) { | 741 | if (order == null) { |
| 738 | throw exception(ORDER_NOT_FOUND); | 742 | throw exception(ORDER_NOT_FOUND); |
| 739 | } | 743 | } |
| 740 | if (ObjUtil.notEqual(DeliveryTypeEnum.PICK_UP.getType(), order.getDeliveryType())) { | 744 | if (ObjUtil.notEqual(DeliveryTypeEnum.PICK_UP.getType(), order.getDeliveryType())) { |
| 741 | throw exception(ORDER_RECEIVE_FAIL_DELIVERY_TYPE_NOT_PICK_UP); | 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 | receiveOrder0(order); | 753 | receiveOrder0(order); |
| 744 | } | 754 | } |
| 745 | 755 |