Commit 7a15b340b02eaaa43a25134e399c1c308db807a8

Authored by owen
1 parent 60ea719b

交易:核销

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&lt;TradeOrderDO&gt; {
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&lt;TradeOrderDO&gt; {
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
... ...