Commit 7a15b340b02eaaa43a25134e399c1c308db807a8
1 parent
60ea719b
交易:核销
Showing
7 changed files
with
55 additions
and
1 deletions
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java
| ... | ... | @@ -32,6 +32,7 @@ public interface ErrorCodeConstants { |
| 32 | 32 | ErrorCode ORDER_UPDATE_PRICE_FAIL_ALREADY = new ErrorCode(1_011_000_027, "支付订单调价失败,原因:已经修改过价格"); |
| 33 | 33 | ErrorCode ORDER_UPDATE_PRICE_FAIL_PRICE_ERROR = new ErrorCode(1_011_000_028, "支付订单调价失败,原因:调整后支付价格不能小于 0.01 元"); |
| 34 | 34 | ErrorCode ORDER_DELETE_FAIL_STATUS_NOT_CANCEL = new ErrorCode(1_011_000_029, "交易订单删除失败,订单不是【已取消】状态"); |
| 35 | + ErrorCode ORDER_RECEIVE_FAIL_DELIVERY_TYPE_NOT_PICK_UP = new ErrorCode(1_011_000_030, "交易订单自提失败,收货方式不是【用户自提】"); | |
| 35 | 36 | |
| 36 | 37 | // ========== After Sale 模块 1-011-000-100 ========== |
| 37 | 38 | ErrorCode AFTER_SALE_NOT_FOUND = new ErrorCode(1_011_000_100, "售后单不存在"); | ... | ... |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderOperateTypeEnum.java
| ... | ... | @@ -19,6 +19,7 @@ public enum TradeOrderOperateTypeEnum { |
| 19 | 19 | ADMIN_DELIVERY(20, "已发货,快递公司:{deliveryName},快递单号:{logisticsNo}"), |
| 20 | 20 | MEMBER_RECEIVE(30, "用户已收货"), |
| 21 | 21 | SYSTEM_RECEIVE(31, "到期未收货,系统自动确认收货"), |
| 22 | + PICK_UP_RECEIVE(32, "自提收货"), | |
| 22 | 23 | MEMBER_COMMENT(33, "用户评价"), |
| 23 | 24 | SYSTEM_COMMENT(34, "到期未评价,系统自动评价"), |
| 24 | 25 | MEMBER_CANCEL(40, "取消订单"), | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/TradeOrderController.java
| ... | ... | @@ -126,6 +126,12 @@ public class TradeOrderController { |
| 126 | 126 | return success(true); |
| 127 | 127 | } |
| 128 | 128 | |
| 129 | - // TODO :核销逻辑 | |
| 129 | + @PutMapping("/pick-up") | |
| 130 | + @Operation(summary = "订单核销") | |
| 131 | + @PreAuthorize("@ss.hasPermission('trade:order:pick-up')") | |
| 132 | + public CommonResult<Boolean> pickUpOrder(@RequestParam("id") Long id) { | |
| 133 | + tradeOrderUpdateService.pickUpOrder(id); | |
| 134 | + return success(true); | |
| 135 | + } | |
| 130 | 136 | |
| 131 | 137 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderPageReqVO.java
| ... | ... | @@ -40,6 +40,9 @@ public class TradeOrderPageReqVO extends PageParam { |
| 40 | 40 | @Schema(description = "自提门店编号", example = "[1,2]") |
| 41 | 41 | private List<Long> pickUpStoreIds; |
| 42 | 42 | |
| 43 | + @Schema(description = "自提核销码", example = "12345678") | |
| 44 | + private String pickUpVerifyCode; | |
| 45 | + | |
| 43 | 46 | @Schema(description = "订单类型", example = "1") |
| 44 | 47 | private Integer type; |
| 45 | 48 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/order/TradeOrderMapper.java
| ... | ... | @@ -41,6 +41,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> { |
| 41 | 41 | .eqIfPresent(TradeOrderDO::getTerminal, reqVO.getTerminal()) |
| 42 | 42 | .eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId()) |
| 43 | 43 | .inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds()) |
| 44 | + .likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode()) | |
| 44 | 45 | .betweenIfPresent(TradeOrderDO::getCreateTime, reqVO.getCreateTime()) |
| 45 | 46 | .orderByDesc(TradeOrderDO::getId)); |
| 46 | 47 | } |
| ... | ... | @@ -105,4 +106,8 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> { |
| 105 | 106 | .between(TradeOrderDO::getCreateTime, beginTime, endTime)); |
| 106 | 107 | } |
| 107 | 108 | |
| 109 | + default TradeOrderDO selectOneByPickUpVerifyCode(String pickUpVerifyCode) { | |
| 110 | + return selectOne(TradeOrderDO::getPickUpVerifyCode, pickUpVerifyCode); | |
| 111 | + } | |
| 112 | + | |
| 108 | 113 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateService.java
| ... | ... | @@ -115,6 +115,20 @@ public interface TradeOrderUpdateService { |
| 115 | 115 | */ |
| 116 | 116 | void updateOrderAddress(TradeOrderUpdateAddressReqVO reqVO); |
| 117 | 117 | |
| 118 | + /** | |
| 119 | + * 【管理员】核销订单 | |
| 120 | + * | |
| 121 | + * @param id 订单编号 | |
| 122 | + */ | |
| 123 | + void pickUpOrder(Long id); | |
| 124 | + | |
| 125 | + /** | |
| 126 | + * 【管理员】核销订单 | |
| 127 | + * | |
| 128 | + * @param pickUpVerifyCode 自提核销码 | |
| 129 | + */ | |
| 130 | + void pickUpOrder(String pickUpVerifyCode); | |
| 131 | + | |
| 118 | 132 | // =================== Order Item =================== |
| 119 | 133 | |
| 120 | 134 | /** | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
| ... | ... | @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.trade.service.order; |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 4 | import cn.hutool.core.lang.Assert; |
| 5 | 5 | import cn.hutool.core.map.MapUtil; |
| 6 | +import cn.hutool.core.util.ObjUtil; | |
| 6 | 7 | import cn.hutool.core.util.ObjectUtil; |
| 7 | 8 | import cn.hutool.core.util.RandomUtil; |
| 8 | 9 | import cn.hutool.extra.spring.SpringUtil; |
| ... | ... | @@ -763,6 +764,29 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 763 | 764 | // TODO @puhui999:操作日志 |
| 764 | 765 | } |
| 765 | 766 | |
| 767 | + @Override | |
| 768 | + public void pickUpOrder(Long id) { | |
| 769 | + getSelf().pickUpOrder(tradeOrderMapper.selectById(id)); | |
| 770 | + } | |
| 771 | + | |
| 772 | + @Override | |
| 773 | + public void pickUpOrder(String pickUpVerifyCode) { | |
| 774 | + getSelf().pickUpOrder(tradeOrderMapper.selectOneByPickUpVerifyCode(pickUpVerifyCode)); | |
| 775 | + } | |
| 776 | + | |
| 777 | + @Transactional(rollbackFor = Exception.class) | |
| 778 | + @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.PICK_UP_RECEIVE) | |
| 779 | + public void pickUpOrder(TradeOrderDO order) { | |
| 780 | + if (order == null) { | |
| 781 | + throw exception(ORDER_NOT_FOUND); | |
| 782 | + } | |
| 783 | + if (ObjUtil.notEqual(DeliveryTypeEnum.PICK_UP.getType(), order.getDeliveryType())) { | |
| 784 | + throw exception(ORDER_RECEIVE_FAIL_DELIVERY_TYPE_NOT_PICK_UP); | |
| 785 | + } | |
| 786 | + // todo 校验核销操作人? | |
| 787 | + receiveOrder0(order); | |
| 788 | + } | |
| 789 | + | |
| 766 | 790 | // =================== Order Item =================== |
| 767 | 791 | |
| 768 | 792 | @Override | ... | ... |