Commit 83aa656bdab848a1792589d66a09152cd15c5439

Authored by YunaiV
1 parent 3da2eb89

mall:增加订单评论字段

Showing 12 changed files with 111 additions and 80 deletions
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderItemBaseVO.java
... ... @@ -40,11 +40,8 @@ public class TradeOrderItemBaseVO {
40 40  
41 41 // ========== 价格 + 支付基本信息 ==========
42 42  
43   - @Schema(description = "商品原价(总)", required = true, example = "100")
44   - private Integer originalPrice;
45   -
46 43 @Schema(description = "商品原价(单)", required = true, example = "100")
47   - private Integer originalUnitPrice;
  44 + private Integer price;
48 45  
49 46 @Schema(description = "商品优惠(总)", required = true, example = "100")
50 47 private Integer discountPrice;
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java
... ... @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.product.api.property.ProductPropertyValueApi;
8 8 import cn.iocoder.yudao.module.product.api.property.dto.ProductPropertyValueDetailRespDTO;
9 9 import cn.iocoder.yudao.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO;
10 10 import cn.iocoder.yudao.module.trade.controller.app.order.vo.*;
  11 +import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO;
11 12 import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert;
12 13 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
13 14 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
... ... @@ -53,7 +54,7 @@ public class AppTradeOrderController {
53 54 AppTradeOrderSettlementRespVO settlement = new AppTradeOrderSettlementRespVO();
54 55  
55 56 AppTradeOrderSettlementRespVO.Price price = new AppTradeOrderSettlementRespVO.Price();
56   - price.setOriginalPrice(1000);
  57 + price.setTotalPrice(1000);
57 58 price.setDeliveryPrice(200);
58 59 price.setCouponPrice(100);
59 60 price.setPointPrice(50);
... ... @@ -184,4 +185,21 @@ public class AppTradeOrderController {
184 185 return success(orderCount);
185 186 }
186 187  
  188 + // ========== 订单项 ==========
  189 +
  190 + @GetMapping("/item/get")
  191 + @Operation(summary = "获得交易订单项")
  192 + @Parameter(name = "id", description = "交易订单项编号")
  193 + public CommonResult<AppTradeOrderItemRespVO> getOrderItem(@RequestParam("id") Long id) {
  194 + TradeOrderItemDO item = tradeOrderService.getOrderItem(getLoginUserId(), id);
  195 + return success(TradeOrderConvert.INSTANCE.convert03(item));
  196 + }
  197 +
  198 + // TODO 芋艿:待实现
  199 + @PostMapping("/item/create-comment")
  200 + @Operation(summary = "创建交易订单项的评价")
  201 + public CommonResult<Long> createOrderItemComment() {
  202 + return success(0L);
  203 + }
  204 +
187 205 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java
... ... @@ -123,29 +123,30 @@ public class AppTradeOrderDetailRespVO {
123 123  
124 124 @Schema(description = "商品 SPU 编号", required = true, example = "1")
125 125 private Long spuId;
126   -
127 126 @Schema(description = "商品 SPU 名称", required = true, example = "芋道源码")
128 127 private String spuName;
129 128  
130 129 @Schema(description = "商品 SKU 编号", required = true, example = "1")
131 130 private Long skuId;
132 131  
  132 + /**
  133 + * 属性数组
  134 + */
  135 + private List<AppProductPropertyValueDetailRespVO> properties;
  136 +
133 137 @Schema(description = "商品图片", required = true, example = "https://www.iocoder.cn/1.png")
134 138 private String picUrl;
135 139  
136 140 @Schema(description = "购买数量", required = true, example = "1")
137 141 private Integer count;
138 142  
139   - @Schema(description = "商品原价(总)", required = true, example = "100")
140   - private Integer originalPrice;
  143 + @Schema(description = "是否评价", required = true, example = "true")
  144 + private Boolean commentStatus;
141 145  
142   - @Schema(description = "商品原价(单)", required = true, example = "100")
143   - private Integer originalUnitPrice;
  146 + // ========== 价格 + 支付基本信息 ==========
144 147  
145   - /**
146   - * 属性数组
147   - */
148   - private List<AppProductPropertyValueDetailRespVO> properties;
  148 + @Schema(description = "商品原价(单)", required = true, example = "100")
  149 + private Integer price;
149 150  
150 151 }
151 152  
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderPageItemRespVO.java
1 1 package cn.iocoder.yudao.module.trade.controller.app.order.vo;
2 2  
3   -import cn.iocoder.yudao.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO;
  3 +import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO;
4 4 import io.swagger.v3.oas.annotations.media.Schema;
5 5 import lombok.Data;
6 6  
... ... @@ -22,6 +22,9 @@ public class AppTradeOrderPageItemRespVO {
22 22 @Schema(description = "购买的商品数量", required = true, example = "10")
23 23 private Integer productCount;
24 24  
  25 + @Schema(description = "是否评价", required = true, example = "true")
  26 + private Boolean commentStatus;
  27 +
25 28 // ========== 价格 + 支付基本信息 ==========
26 29  
27 30 @Schema(description = "应付金额,单位:分", required = true, example = "1000")
... ... @@ -30,41 +33,6 @@ public class AppTradeOrderPageItemRespVO {
30 33 /**
31 34 * 订单项数组
32 35 */
33   - private List<Item> items;
34   -
35   - @Schema(description = "用户 App - 交易订单的明细的订单项目")
36   - @Data
37   - public static class Item {
38   -
39   - @Schema(description = "编号", required = true, example = "1")
40   - private Long id;
41   -
42   - @Schema(description = "商品 SPU 编号", required = true, example = "1")
43   - private Long spuId;
44   -
45   - @Schema(description = "商品 SPU 名称", required = true, example = "芋道源码")
46   - private String spuName;
47   -
48   - @Schema(description = "商品 SKU 编号", required = true, example = "1")
49   - private Long skuId;
50   -
51   - @Schema(description = "商品图片", required = true, example = "https://www.iocoder.cn/1.png")
52   - private String picUrl;
53   -
54   - @Schema(description = "购买数量", required = true, example = "1")
55   - private Integer count;
56   -
57   - @Schema(description = "商品原价(总)", required = true, example = "100")
58   - private Integer originalPrice;
59   -
60   - @Schema(description = "商品原价(单)", required = true, example = "100")
61   - private Integer originalUnitPrice;
62   -
63   - /**
64   - * 属性数组
65   - */
66   - private List<AppProductPropertyValueDetailRespVO> properties;
67   -
68   - }
  36 + private List<AppTradeOrderItemRespVO> items;
69 37  
70 38 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderPageReqVO.java
... ... @@ -6,7 +6,6 @@ import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
6 6 import io.swagger.v3.oas.annotations.media.Schema;
7 7 import lombok.Data;
8 8  
9   -// TODO 芋艿:字段优化
10 9 @Schema(description = "交易订单分页 Request VO")
11 10 @Data
12 11 public class AppTradeOrderPageReqVO extends PageParam {
... ... @@ -15,4 +14,7 @@ public class AppTradeOrderPageReqVO extends PageParam {
15 14 @InEnum(value = TradeOrderStatusEnum.class, message = "订单状态必须是 {value}")
16 15 private Integer status;
17 16  
  17 + @Schema(description = "是否评价", example = "true")
  18 + private Boolean commentStatus;
  19 +
18 20 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderSettlementRespVO.java
... ... @@ -61,7 +61,7 @@ public class AppTradeOrderSettlementRespVO {
61 61 public static class Price {
62 62  
63 63 @Schema(description = "商品原价(总),单位:分", required = true, example = "500")
64   - private Integer originalPrice;
  64 + private Integer totalPrice;
65 65  
66 66 @Schema(description = "运费金额,单位:分", required = true, example = "50")
67 67 private Integer deliveryPrice;
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/item/AppTradeOrderItemRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.controller.app.order.vo.item;
  2 +
  3 +import cn.iocoder.yudao.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +
  7 +import java.util.List;
  8 +
  9 +@Schema(description = "用户 App - 订单交易项 Response VO")
  10 +@Data
  11 +public class AppTradeOrderItemRespVO {
  12 +
  13 + @Schema(description = "编号", required = true, example = "1")
  14 + private Long id;
  15 +
  16 + @Schema(description = "商品 SPU 编号", required = true, example = "1")
  17 + private Long spuId;
  18 +
  19 + @Schema(description = "商品 SPU 名称", required = true, example = "芋道源码")
  20 + private String spuName;
  21 +
  22 + @Schema(description = "商品 SKU 编号", required = true, example = "1")
  23 + private Long skuId;
  24 +
  25 + @Schema(description = "商品图片", required = true, example = "https://www.iocoder.cn/1.png")
  26 + private String picUrl;
  27 +
  28 + @Schema(description = "购买数量", required = true, example = "1")
  29 + private Integer count;
  30 +
  31 + @Schema(description = "商品原价(单)", required = true, example = "100")
  32 + private Integer price;
  33 +
  34 + /**
  35 + * 属性数组
  36 + */
  37 + private List<AppProductPropertyValueDetailRespVO> properties;
  38 +
  39 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java
... ... @@ -21,6 +21,7 @@ import cn.iocoder.yudao.module.trade.controller.app.base.property.AppProductProp
21 21 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
22 22 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderDetailRespVO;
23 23 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageItemRespVO;
  24 +import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO;
24 25 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
25 26 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
26 27 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum;
... ... @@ -191,7 +192,7 @@ public interface TradeOrderConvert {
191 192 if (CollUtil.isEmpty(properties)) {
192 193 continue;
193 194 }
194   - AppTradeOrderPageItemRespVO.Item item = orderVO.getItems().get(i);
  195 + AppTradeOrderItemRespVO item = orderVO.getItems().get(i);
195 196 item.setProperties(new ArrayList<>(properties.size()));
196 197 // 遍历每个 properties,设置到 TradeOrderPageItemRespVO.Item 中
197 198 properties.forEach(property -> {
... ... @@ -237,4 +238,6 @@ public interface TradeOrderConvert {
237 238 }
238 239 AppTradeOrderDetailRespVO convert3(TradeOrderDO order, List<TradeOrderItemDO> items);
239 240  
  241 + AppTradeOrderItemRespVO convert03(TradeOrderItemDO bean);
  242 +
240 243 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java
... ... @@ -94,6 +94,13 @@ public class TradeOrderDO extends BaseDO {
94 94 * 商家备注
95 95 */
96 96 private String remark;
  97 + /**
  98 + * 是否评价
  99 + *
  100 + * true - 已评价
  101 + * false - 未评价
  102 + */
  103 + private Boolean commentStatus;
97 104  
98 105 // ========== 价格 + 支付基本信息 ==========
99 106  
... ... @@ -128,16 +135,17 @@ public class TradeOrderDO extends BaseDO {
128 135 /**
129 136 * 商品原价(总),单位:分
130 137 *
131   - * 基于 {@link TradeOrderItemDO#getOriginalPrice()} 求和
  138 + * totalPrice = {@link TradeOrderItemDO#getPrice()} * {@link TradeOrderItemDO#getCount()} 求和
132 139 *
133 140 * 对应 taobao 的 trade.total_fee 字段
134 141 */
135   - private Integer originalPrice;
  142 + private Integer totalPrice;
  143 + // TODO 芋艿:是不是要删除这个字段?
136 144 /**
137 145 * 订单原价(总),单位:分
138 146 *
139   - * 基于 {@link OrderItem#getPayPrice()} 求和
140   - * 和 {@link #originalPrice} 的差异:去除商品级优惠
  147 + * 1. orderPrice = {@link OrderItem#getPayPrice()} 求和
  148 + * 2. orderPrice = {@link #totalPrice} - 商品级优惠
141 149 */
142 150 private Integer orderPrice;
143 151 /**
... ... @@ -219,7 +227,7 @@ public class TradeOrderDO extends BaseDO {
219 227  
220 228 // ========== 售后基本信息 ==========
221 229 /**
222   - * 收货状态
  230 + * 售后状态
223 231 *
224 232 * 枚举 {@link TradeOrderAfterSaleStatusEnum}
225 233 */
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java
... ... @@ -84,29 +84,23 @@ public class TradeOrderItemDO extends BaseDO {
84 84 * 购买数量
85 85 */
86 86 private Integer count;
87   -// /**
88   -// * 是否评论 TODO
89   -// *
90   -// * false - 未评论
91   -// * true - 已评论
92   -// */
93   -// private Boolean commented;
94   -
95   - // ========== 价格 + 支付基本信息 ==========
96   -
97 87 /**
98   - * 商品原价(总),单位:分
  88 + * 是否评价
99 89 *
100   - * = {@link #originalUnitPrice} * {@link #getCount()}
  90 + * true - 已评价
  91 + * false - 未评价
101 92 */
102   - private Integer originalPrice;
  93 + private Boolean commentStatus;
  94 +
  95 + // ========== 价格 + 支付基本信息 ==========
  96 +
103 97 /**
104 98 * 商品原价(单),单位:分
105 99 *
106 100 * 对应 ProductSkuDO 的 price 字段
107 101 * 对应 taobao 的 order.price 字段
108 102 */
109   - private Integer originalUnitPrice;
  103 + private Integer price;
110 104 /**
111 105 * 商品优惠(总),单位:分
112 106 *
... ... @@ -116,9 +110,9 @@ public class TradeOrderItemDO extends BaseDO {
116 110 */
117 111 private Integer discountPrice;
118 112 /**
119   - * 子订单实付金额,不算主订单分摊金额,单位:分
  113 + * 子订单实付金额(总),不算主订单分摊金额,单位:分
120 114 *
121   - * = {@link #originalPrice}
  115 + * = {@link #price} * {@link #count}
122 116 * - {@link #discountPrice}
123 117 *
124 118 * 对应 taobao 的 order.payment 字段
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/order/TradeOrderMapper.java
... ... @@ -40,6 +40,7 @@ public interface TradeOrderMapper extends BaseMapperX&lt;TradeOrderDO&gt; {
40 40 return selectPage(reqVO, new LambdaQueryWrapperX<TradeOrderDO>()
41 41 .eq(TradeOrderDO::getUserId, userId)
42 42 .eqIfPresent(TradeOrderDO::getStatus, reqVO.getStatus())
  43 + .eqIfPresent(TradeOrderDO::getCommentStatus, reqVO.getCommentStatus())
43 44 .orderByDesc(TradeOrderDO::getId)); // TODO 芋艿:未来不同的 status,不同的排序
44 45 }
45 46  
... ...
yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceTest.java
... ... @@ -169,7 +169,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest {
169 169 assertNull(tradeOrderDO.getRemark());
170 170 assertFalse(tradeOrderDO.getPayed());
171 171 assertNull(tradeOrderDO.getPayTime());
172   - assertEquals(tradeOrderDO.getOriginalPrice(), 230);
  172 + assertEquals(tradeOrderDO.getTotalPrice(), 230);
173 173 assertEquals(tradeOrderDO.getOrderPrice(), 100);
174 174 assertEquals(tradeOrderDO.getDiscountPrice(), 0);
175 175 assertEquals(tradeOrderDO.getAdjustPrice(), 0);
... ... @@ -204,8 +204,8 @@ public class TradeOrderServiceTest extends BaseDbUnitTest {
204 204 //assertEquals(tradeOrderItemDO01.getSpuName(), sku01.getSpuName()); TODO 找不到spuName
205 205 assertEquals(tradeOrderItemDO01.getPicUrl(), sku01.getPicUrl());
206 206 assertEquals(tradeOrderItemDO01.getCount(), 3);
207   - assertEquals(tradeOrderItemDO01.getOriginalPrice(), 150);
208   - assertEquals(tradeOrderItemDO01.getOriginalUnitPrice(), 50);
  207 +// assertEquals(tradeOrderItemDO01.getOriginalPrice(), 150);
  208 + assertEquals(tradeOrderItemDO01.getPrice(), 50);
209 209 assertEquals(tradeOrderItemDO01.getDiscountPrice(), 20);
210 210 assertEquals(tradeOrderItemDO01.getPayPrice(), 130);
211 211 assertEquals(tradeOrderItemDO01.getOrderPartPrice(), 7);
... ... @@ -224,8 +224,8 @@ public class TradeOrderServiceTest extends BaseDbUnitTest {
224 224 //assertEquals(tradeOrderItemDO02.getSpuName(), sku02.getSpuName()); TODO 找不到spuName
225 225 assertEquals(tradeOrderItemDO02.getPicUrl(), sku02.getPicUrl());
226 226 assertEquals(tradeOrderItemDO02.getCount(), 4);
227   - assertEquals(tradeOrderItemDO02.getOriginalPrice(), 80);
228   - assertEquals(tradeOrderItemDO02.getOriginalUnitPrice(), 20);
  227 +// assertEquals(tradeOrderItemDO02.getOriginalPrice(), 80);
  228 + assertEquals(tradeOrderItemDO02.getPrice(), 20);
229 229 assertEquals(tradeOrderItemDO02.getDiscountPrice(), 40);
230 230 assertEquals(tradeOrderItemDO02.getPayPrice(), 40);
231 231 assertEquals(tradeOrderItemDO02.getOrderPartPrice(), 15);
... ...