Commit c2b6c0d72a0520ff7b8b14920796db10c1539034

Authored by puhui999
1 parent a159a983

fix: 订单列表重构 ①

Showing 13 changed files with 132 additions and 36 deletions
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/bargain/vo/BargainActivityBaseVO.java
@@ -18,7 +18,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -18,7 +18,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
18 @Data 18 @Data
19 public class BargainActivityBaseVO { 19 public class BargainActivityBaseVO {
20 20
21 - @Schema(description = "砍价活动名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "越拼越省钱") 21 + @Schema(description = "砍价活动名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "砍得越多省得越多,是兄弟就来砍我")
22 @NotNull(message = "砍价名称不能为空") 22 @NotNull(message = "砍价名称不能为空")
23 private String name; 23 private String name;
24 24
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressController.java
1 package cn.iocoder.yudao.module.trade.controller.admin.delivery; 1 package cn.iocoder.yudao.module.trade.controller.admin.delivery;
2 2
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; 6 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; 7 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.*; 8 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.*;
8 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressUpdateReqVO;  
9 import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryExpressConvert; 9 import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryExpressConvert;
10 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; 10 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
11 import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; 11 import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService;
@@ -67,6 +67,15 @@ public class DeliveryExpressController { @@ -67,6 +67,15 @@ public class DeliveryExpressController {
67 return success(DeliveryExpressConvert.INSTANCE.convert(deliveryExpress)); 67 return success(DeliveryExpressConvert.INSTANCE.convert(deliveryExpress));
68 } 68 }
69 69
  70 + @GetMapping("/list-all-simple")
  71 + @Operation(summary = "获取快递公司精简信息列表", description = "主要用于前端的下拉选项")
  72 + public CommonResult<List<DeliveryExpressSimpleRespVO>> getSimpleBrandList() {
  73 + // 获取品牌列表,只要开启状态的
  74 + List<DeliveryExpressDO> list = deliveryExpressService.getDeliveryExpressListByStatus(CommonStatusEnum.ENABLE.getStatus());
  75 + // 排序后,返回给前端
  76 + return success(DeliveryExpressConvert.INSTANCE.convertList1(list));
  77 + }
  78 +
70 @GetMapping("/page") 79 @GetMapping("/page")
71 @Operation(summary = "获得快递公司分页") 80 @Operation(summary = "获得快递公司分页")
72 @PreAuthorize("@ss.hasPermission('trade:delivery:express:query')") 81 @PreAuthorize("@ss.hasPermission('trade:delivery:express:query')")
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/express/DeliveryExpressSimpleRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.AllArgsConstructor;
  5 +import lombok.Data;
  6 +import lombok.NoArgsConstructor;
  7 +
  8 +import javax.validation.constraints.NotNull;
  9 +
  10 +@Schema(description = "管理后台 - 快递公司精简信息 Response VO")
  11 +@Data
  12 +@NoArgsConstructor
  13 +@AllArgsConstructor
  14 +public class DeliveryExpressSimpleRespVO {
  15 +
  16 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "6592")
  17 + @NotNull(message = "编号不能为空")
  18 + private Long id;
  19 +
  20 + @Schema(description = "快递公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "顺丰速运")
  21 + @NotNull(message = "快递公司名称不能为空")
  22 + private String name;
  23 +
  24 +}
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/TradeOrderController.java
@@ -7,10 +7,7 @@ import cn.iocoder.yudao.module.member.api.user.MemberUserApi; @@ -7,10 +7,7 @@ import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
7 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; 7 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
8 import cn.iocoder.yudao.module.product.api.property.ProductPropertyValueApi; 8 import cn.iocoder.yudao.module.product.api.property.ProductPropertyValueApi;
9 import cn.iocoder.yudao.module.product.api.property.dto.ProductPropertyValueDetailRespDTO; 9 import cn.iocoder.yudao.module.product.api.property.dto.ProductPropertyValueDetailRespDTO;
10 -import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;  
11 -import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDetailRespVO;  
12 -import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageItemRespVO;  
13 -import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; 10 +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.*;
14 import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; 11 import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert;
15 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; 12 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
16 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; 13 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
@@ -97,4 +94,19 @@ public class TradeOrderController { @@ -97,4 +94,19 @@ public class TradeOrderController {
97 return success(true); 94 return success(true);
98 } 95 }
99 96
  97 + @PostMapping("/remark")
  98 + @Operation(summary = "发货订单")
  99 + @PreAuthorize("@ss.hasPermission('trade:order:remark')")
  100 + public CommonResult<Boolean> remarkOrder(@RequestBody TradeOrderRemarkReqVO remarkReqVO) {
  101 + tradeOrderUpdateService.remarkOrder(getLoginUserId(), remarkReqVO);
  102 + return success(true);
  103 + }
  104 +
  105 + // TODO @puhui999 订单物流详情
  106 + // TODO @puhui999 【前台】订单取消
  107 + // TODO @puhui999 【后台】订单取消
  108 + // TODO @puhui999 【前台】订单核销
  109 + // TODO @puhui999 【前台】订单删除
  110 + // TODO @puhui999 【后台】订单统计
  111 +
100 } 112 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderDeliveryReqVO.java
1 package cn.iocoder.yudao.module.trade.controller.admin.order.vo; 1 package cn.iocoder.yudao.module.trade.controller.admin.order.vo;
2 2
3 -import cn.iocoder.yudao.framework.common.validation.InEnum;  
4 -import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum;  
5 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
6 import lombok.Data; 4 import lombok.Data;
7 5
@@ -16,12 +14,6 @@ public class TradeOrderDeliveryReqVO { @@ -16,12 +14,6 @@ public class TradeOrderDeliveryReqVO {
16 @NotNull(message = "订单编号不能为空") 14 @NotNull(message = "订单编号不能为空")
17 private Long id; 15 private Long id;
18 16
19 - // TODO @puhui999:可以去掉 type;如果无需发货,则 logisticsId 传递 0;logisticsNo 传递空串  
20 - @Schema(description = "发货类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")  
21 - @InEnum(DeliveryTypeEnum.class)  
22 - @NotNull(message = "发货类型不能为空")  
23 - private Integer type;  
24 -  
25 @Schema(description = "发货物流公司编号", example = "1") 17 @Schema(description = "发货物流公司编号", example = "1")
26 @NotNull(message = "发货物流公司不能为空") 18 @NotNull(message = "发货物流公司不能为空")
27 private Long logisticsId; 19 private Long logisticsId;
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderRemarkReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.controller.admin.order.vo;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +import javax.validation.constraints.NotEmpty;
  7 +import javax.validation.constraints.NotNull;
  8 +
  9 +@Schema(description = "管理后台 - 订单备注 Request VO")
  10 +@Data
  11 +public class TradeOrderRemarkReqVO {
  12 +
  13 + @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  14 + @NotNull(message = "订单编号不能为空")
  15 + private Long id;
  16 +
  17 + @Schema(description = "商家备注", example = "你猜一下")
  18 + @NotEmpty(message = "订单备注不能为空")
  19 + private String remark;
  20 +
  21 +}
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/delivery/DeliveryExpressConvert.java
1 package cn.iocoder.yudao.module.trade.convert.delivery; 1 package cn.iocoder.yudao.module.trade.convert.delivery;
2 2
3 -import java.util.*;  
4 -  
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 -  
7 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressCreateReqVO;  
8 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressExcelVO;  
9 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressRespVO;  
10 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressUpdateReqVO; 4 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.*;
11 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; 5 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
12 import org.mapstruct.Mapper; 6 import org.mapstruct.Mapper;
13 import org.mapstruct.factory.Mappers; 7 import org.mapstruct.factory.Mappers;
14 8
  9 +import java.util.List;
  10 +
15 @Mapper 11 @Mapper
16 public interface DeliveryExpressConvert { 12 public interface DeliveryExpressConvert {
17 13
@@ -29,4 +25,5 @@ public interface DeliveryExpressConvert { @@ -29,4 +25,5 @@ public interface DeliveryExpressConvert {
29 25
30 List<DeliveryExpressExcelVO> convertList02(List<DeliveryExpressDO> list); 26 List<DeliveryExpressExcelVO> convertList02(List<DeliveryExpressDO> list);
31 27
  28 + List<DeliveryExpressSimpleRespVO> convertList1(List<DeliveryExpressDO> list);
32 } 29 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryExpressMapper.java
@@ -36,6 +36,11 @@ public interface DeliveryExpressMapper extends BaseMapperX&lt;DeliveryExpressDO&gt; { @@ -36,6 +36,11 @@ public interface DeliveryExpressMapper extends BaseMapperX&lt;DeliveryExpressDO&gt; {
36 return selectOne(new LambdaQueryWrapper<DeliveryExpressDO>() 36 return selectOne(new LambdaQueryWrapper<DeliveryExpressDO>()
37 .eq(DeliveryExpressDO::getCode, code)); 37 .eq(DeliveryExpressDO::getCode, code));
38 } 38 }
  39 +
  40 + default List<DeliveryExpressDO> selectListByStatus(Integer status) {
  41 + return selectList(DeliveryExpressDO::getStatus, status);
  42 + }
  43 +
39 } 44 }
40 45
41 46
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressService.java
1 package cn.iocoder.yudao.module.trade.service.delivery; 1 package cn.iocoder.yudao.module.trade.service.delivery;
2 2
3 -import java.util.*;  
4 -import javax.validation.*;  
5 -  
6 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressCreateReqVO; 4 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressCreateReqVO;
8 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressExportReqVO; 5 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressExportReqVO;
@@ -10,6 +7,10 @@ import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.Delive @@ -10,6 +7,10 @@ import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.Delive
10 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressUpdateReqVO; 7 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressUpdateReqVO;
11 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; 8 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
12 9
  10 +import javax.validation.Valid;
  11 +import java.util.Collection;
  12 +import java.util.List;
  13 +
13 /** 14 /**
14 * 快递公司 Service 接口 15 * 快递公司 Service 接口
15 * 16 *
@@ -71,4 +72,11 @@ public interface DeliveryExpressService { @@ -71,4 +72,11 @@ public interface DeliveryExpressService {
71 */ 72 */
72 List<DeliveryExpressDO> getDeliveryExpressList(DeliveryExpressExportReqVO exportReqVO); 73 List<DeliveryExpressDO> getDeliveryExpressList(DeliveryExpressExportReqVO exportReqVO);
73 74
  75 + /**
  76 + * 获取指定状态的快递公司列表
  77 + *
  78 + * @param status 状态
  79 + * @return 返回快递公司列表
  80 + */
  81 + List<DeliveryExpressDO> getDeliveryExpressListByStatus(Integer status);
74 } 82 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressServiceImpl.java
@@ -9,14 +9,15 @@ import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryExpressConvert; @@ -9,14 +9,15 @@ import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryExpressConvert;
9 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; 9 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
10 import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryExpressMapper; 10 import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryExpressMapper;
11 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
12 -import javax.annotation.Resource;  
13 import org.springframework.validation.annotation.Validated; 12 import org.springframework.validation.annotation.Validated;
14 13
15 -import java.util.*;  
16 - 14 +import javax.annotation.Resource;
  15 +import java.util.Collection;
  16 +import java.util.List;
17 17
18 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 18 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
19 -import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; 19 +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.EXPRESS_CODE_DUPLICATE;
  20 +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.EXPRESS_NOT_EXISTS;
20 21
21 /** 22 /**
22 * 快递公司 Service 实现类 23 * 快递公司 Service 实现类
@@ -99,4 +100,9 @@ public class DeliveryExpressServiceImpl implements DeliveryExpressService { @@ -99,4 +100,9 @@ public class DeliveryExpressServiceImpl implements DeliveryExpressService {
99 return deliveryExpressMapper.selectList(exportReqVO); 100 return deliveryExpressMapper.selectList(exportReqVO);
100 } 101 }
101 102
  103 + @Override
  104 + public List<DeliveryExpressDO> getDeliveryExpressListByStatus(Integer status) {
  105 + return deliveryExpressMapper.selectListByStatus(status);
  106 + }
  107 +
102 } 108 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateService.java
1 package cn.iocoder.yudao.module.trade.service.order; 1 package cn.iocoder.yudao.module.trade.service.order;
2 2
3 import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; 3 import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
  4 +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO;
4 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; 5 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
5 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO; 6 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO;
6 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO; 7 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO;
@@ -60,6 +61,14 @@ public interface TradeOrderUpdateService { @@ -60,6 +61,14 @@ public interface TradeOrderUpdateService {
60 */ 61 */
61 void receiveOrder(Long userId, Long id); 62 void receiveOrder(Long userId, Long id);
62 63
  64 + /**
  65 + * 【管理员】交易订单备注
  66 + *
  67 + * @param loginUserId 管理员编号
  68 + * @param remarkReqVO 备注请求
  69 + */
  70 + void remarkOrder(Long loginUserId, TradeOrderRemarkReqVO remarkReqVO);
  71 +
63 // =================== Order Item =================== 72 // =================== Order Item ===================
64 73
65 /** 74 /**
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
@@ -30,6 +30,7 @@ import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi; @@ -30,6 +30,7 @@ import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi;
30 import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO; 30 import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO;
31 import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum; 31 import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum;
32 import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; 32 import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
  33 +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO;
33 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; 34 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
34 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO; 35 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO;
35 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO; 36 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO;
@@ -398,7 +399,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -398,7 +399,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
398 TradeOrderDO updateOrderObj = new TradeOrderDO(); 399 TradeOrderDO updateOrderObj = new TradeOrderDO();
399 // 判断发货类型 400 // 判断发货类型
400 // 2.1 快递发货 401 // 2.1 快递发货
401 - if (Objects.equals(deliveryReqVO.getType(), DeliveryTypeEnum.EXPRESS.getMode())) { 402 + if (ObjectUtil.notEqual(deliveryReqVO.getLogisticsId(), 0L)) {
402 // 校验快递公司 403 // 校验快递公司
403 DeliveryExpressDO deliveryExpress = deliveryExpressService.getDeliveryExpress(deliveryReqVO.getLogisticsId()); 404 DeliveryExpressDO deliveryExpress = deliveryExpressService.getDeliveryExpress(deliveryReqVO.getLogisticsId());
404 if (deliveryExpress == null) { 405 if (deliveryExpress == null) {
@@ -408,11 +409,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -408,11 +409,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
408 throw exception(EXPRESS_STATUS_NOT_ENABLE); 409 throw exception(EXPRESS_STATUS_NOT_ENABLE);
409 } 410 }
410 updateOrderObj.setLogisticsId(deliveryReqVO.getLogisticsId()).setLogisticsNo(deliveryReqVO.getLogisticsNo()).setDeliveryType(DeliveryTypeEnum.EXPRESS.getMode()); 411 updateOrderObj.setLogisticsId(deliveryReqVO.getLogisticsId()).setLogisticsNo(deliveryReqVO.getLogisticsNo()).setDeliveryType(DeliveryTypeEnum.EXPRESS.getMode());
411 - }  
412 - // TODO @puhui999:无需发货时,更新 logisticsId 为 0;  
413 - // 2.2 无需发货  
414 - if (Objects.equals(deliveryReqVO.getType(), DeliveryTypeEnum.NULL.getMode())) {  
415 - updateOrderObj.setLogisticsId(null).setLogisticsNo("").setDeliveryType(DeliveryTypeEnum.NULL.getMode()); 412 + } else {
  413 + // 2.2 无需发货
  414 + updateOrderObj.setLogisticsId(0L).setLogisticsNo("").setDeliveryType(DeliveryTypeEnum.NULL.getMode());
416 } 415 }
417 416
418 // 更新 TradeOrderDO 状态为已发货,等待收货 417 // 更新 TradeOrderDO 状态为已发货,等待收货
@@ -489,6 +488,17 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -489,6 +488,17 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
489 // TODO 芋艿:lili 发送商品被购买完成的数据 488 // TODO 芋艿:lili 发送商品被购买完成的数据
490 } 489 }
491 490
  491 + @Override
  492 + public void remarkOrder(Long loginUserId, TradeOrderRemarkReqVO remarkReqVO) {
  493 + // 校验并获得交易订单
  494 + validateOrderDeliverable(remarkReqVO.getId());
  495 +
  496 + TradeOrderDO updateOrderObj = new TradeOrderDO();
  497 + updateOrderObj.setId(remarkReqVO.getId());
  498 + updateOrderObj.setRemark(remarkReqVO.getRemark());
  499 + tradeOrderMapper.updateById(updateOrderObj);
  500 + }
  501 +
492 /** 502 /**
493 * 校验交易订单满足可售货的条件 503 * 校验交易订单满足可售货的条件
494 * 504 *
yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/aftersale/TradeAfterSaleServiceTest.java
@@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.trade.enums.aftersale.TradeAfterSaleWayEnum; @@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.trade.enums.aftersale.TradeAfterSaleWayEnum;
18 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum; 18 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum;
19 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; 19 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
20 import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; 20 import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
  21 +import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService;
21 import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; 22 import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService;
22 import org.junit.jupiter.api.Test; 23 import org.junit.jupiter.api.Test;
23 import org.springframework.boot.test.mock.mockito.MockBean; 24 import org.springframework.boot.test.mock.mockito.MockBean;
@@ -54,6 +55,8 @@ public class TradeAfterSaleServiceTest extends BaseDbUnitTest { @@ -54,6 +55,8 @@ public class TradeAfterSaleServiceTest extends BaseDbUnitTest {
54 @MockBean 55 @MockBean
55 private TradeOrderUpdateService tradeOrderService; 56 private TradeOrderUpdateService tradeOrderService;
56 @MockBean 57 @MockBean
  58 + private TradeOrderQueryService tradeOrderQueryService;
  59 + @MockBean
57 private PayRefundApi payRefundApi; 60 private PayRefundApi payRefundApi;
58 61
59 @MockBean 62 @MockBean
@@ -72,12 +75,12 @@ public class TradeAfterSaleServiceTest extends BaseDbUnitTest { @@ -72,12 +75,12 @@ public class TradeAfterSaleServiceTest extends BaseDbUnitTest {
72 o.setOrderId(111L).setUserId(userId).setPayPrice(200); 75 o.setOrderId(111L).setUserId(userId).setPayPrice(200);
73 o.setAfterSaleStatus(TradeOrderItemAfterSaleStatusEnum.NONE.getStatus()); 76 o.setAfterSaleStatus(TradeOrderItemAfterSaleStatusEnum.NONE.getStatus());
74 }); 77 });
75 - when(tradeOrderService.getOrderItem(eq(1024L), eq(1L))) 78 + when(tradeOrderQueryService.getOrderItem(eq(1024L), eq(1L)))
76 .thenReturn(orderItem); 79 .thenReturn(orderItem);
77 // mock 方法(交易订单) 80 // mock 方法(交易订单)
78 TradeOrderDO order = randomPojo(TradeOrderDO.class, o -> o.setStatus(TradeOrderStatusEnum.DELIVERED.getStatus()) 81 TradeOrderDO order = randomPojo(TradeOrderDO.class, o -> o.setStatus(TradeOrderStatusEnum.DELIVERED.getStatus())
79 .setNo("202211301234")); 82 .setNo("202211301234"));
80 - when(tradeOrderService.getOrder(eq(1024L), eq(111L))).thenReturn(order); 83 + when(tradeOrderQueryService.getOrder(eq(1024L), eq(111L))).thenReturn(order);
81 84
82 // 调用 85 // 调用
83 Long afterSaleId = tradeAfterSaleService.createAfterSale(userId, createReqVO); 86 Long afterSaleId = tradeAfterSaleService.createAfterSale(userId, createReqVO);