From 83aa656bdab848a1792589d66a09152cd15c5439 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Fri, 19 May 2023 23:55:02 +0800 Subject: [PATCH] =?UTF-8?q?mall=EF=BC=9A=E5=A2=9E=E5=8A=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E8=AF=84=E8=AE=BA=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/order/vo/TradeOrderItemBaseVO.java | 5 +-- .../app/order/AppTradeOrderController.java | 20 ++++++++- .../order/vo/AppTradeOrderDetailRespVO.java | 19 +++++---- .../order/vo/AppTradeOrderPageItemRespVO.java | 42 +++---------------- .../app/order/vo/AppTradeOrderPageReqVO.java | 4 +- .../vo/AppTradeOrderSettlementRespVO.java | 2 +- .../vo/item/AppTradeOrderItemRespVO.java | 39 +++++++++++++++++ .../convert/order/TradeOrderConvert.java | 5 ++- .../dal/dataobject/order/TradeOrderDO.java | 18 +++++--- .../dataobject/order/TradeOrderItemDO.java | 26 +++++------- .../dal/mysql/order/TradeOrderMapper.java | 1 + .../service/order/TradeOrderServiceTest.java | 10 ++--- 12 files changed, 111 insertions(+), 80 deletions(-) create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/item/AppTradeOrderItemRespVO.java diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderItemBaseVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderItemBaseVO.java index b927e5e9e..351d5a787 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderItemBaseVO.java +++ b/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 { // ========== 价格 + 支付基本信息 ========== - @Schema(description = "商品原价(总)", required = true, example = "100") - private Integer originalPrice; - @Schema(description = "商品原价(单)", required = true, example = "100") - private Integer originalUnitPrice; + private Integer price; @Schema(description = "商品优惠(总)", required = true, example = "100") private Integer discountPrice; diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java index 945964b16..d1a2e4733 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java +++ b/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; import cn.iocoder.yudao.module.product.api.property.dto.ProductPropertyValueDetailRespDTO; import cn.iocoder.yudao.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO; import cn.iocoder.yudao.module.trade.controller.app.order.vo.*; +import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO; import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; @@ -53,7 +54,7 @@ public class AppTradeOrderController { AppTradeOrderSettlementRespVO settlement = new AppTradeOrderSettlementRespVO(); AppTradeOrderSettlementRespVO.Price price = new AppTradeOrderSettlementRespVO.Price(); - price.setOriginalPrice(1000); + price.setTotalPrice(1000); price.setDeliveryPrice(200); price.setCouponPrice(100); price.setPointPrice(50); @@ -184,4 +185,21 @@ public class AppTradeOrderController { return success(orderCount); } + // ========== 订单项 ========== + + @GetMapping("/item/get") + @Operation(summary = "获得交易订单项") + @Parameter(name = "id", description = "交易订单项编号") + public CommonResult getOrderItem(@RequestParam("id") Long id) { + TradeOrderItemDO item = tradeOrderService.getOrderItem(getLoginUserId(), id); + return success(TradeOrderConvert.INSTANCE.convert03(item)); + } + + // TODO 芋艿:待实现 + @PostMapping("/item/create-comment") + @Operation(summary = "创建交易订单项的评价") + public CommonResult createOrderItemComment() { + return success(0L); + } + } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java index 54d012fdd..6055a8dbc 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java +++ b/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 { @Schema(description = "商品 SPU 编号", required = true, example = "1") private Long spuId; - @Schema(description = "商品 SPU 名称", required = true, example = "芋道源码") private String spuName; @Schema(description = "商品 SKU 编号", required = true, example = "1") private Long skuId; + /** + * 属性数组 + */ + private List properties; + @Schema(description = "商品图片", required = true, example = "https://www.iocoder.cn/1.png") private String picUrl; @Schema(description = "购买数量", required = true, example = "1") private Integer count; - @Schema(description = "商品原价(总)", required = true, example = "100") - private Integer originalPrice; + @Schema(description = "是否评价", required = true, example = "true") + private Boolean commentStatus; + + // ========== 价格 + 支付基本信息 ========== @Schema(description = "商品原价(单)", required = true, example = "100") - private Integer originalUnitPrice; - - /** - * 属性数组 - */ - private List properties; + private Integer price; } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderPageItemRespVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderPageItemRespVO.java index 75928c946..45a87082a 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderPageItemRespVO.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderPageItemRespVO.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.module.trade.controller.app.order.vo; -import cn.iocoder.yudao.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO; +import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -22,6 +22,9 @@ public class AppTradeOrderPageItemRespVO { @Schema(description = "购买的商品数量", required = true, example = "10") private Integer productCount; + @Schema(description = "是否评价", required = true, example = "true") + private Boolean commentStatus; + // ========== 价格 + 支付基本信息 ========== @Schema(description = "应付金额,单位:分", required = true, example = "1000") @@ -30,41 +33,6 @@ public class AppTradeOrderPageItemRespVO { /** * 订单项数组 */ - private List items; - - @Schema(description = "用户 App - 交易订单的明细的订单项目") - @Data - public static class Item { - - @Schema(description = "编号", required = true, example = "1") - private Long id; - - @Schema(description = "商品 SPU 编号", required = true, example = "1") - private Long spuId; - - @Schema(description = "商品 SPU 名称", required = true, example = "芋道源码") - private String spuName; - - @Schema(description = "商品 SKU 编号", required = true, example = "1") - private Long skuId; - - @Schema(description = "商品图片", required = true, example = "https://www.iocoder.cn/1.png") - private String picUrl; - - @Schema(description = "购买数量", required = true, example = "1") - private Integer count; - - @Schema(description = "商品原价(总)", required = true, example = "100") - private Integer originalPrice; - - @Schema(description = "商品原价(单)", required = true, example = "100") - private Integer originalUnitPrice; - - /** - * 属性数组 - */ - private List properties; - - } + private List items; } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderPageReqVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderPageReqVO.java index 180deadbf..c1e07c176 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderPageReqVO.java +++ b/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; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -// TODO 芋艿:字段优化 @Schema(description = "交易订单分页 Request VO") @Data public class AppTradeOrderPageReqVO extends PageParam { @@ -15,4 +14,7 @@ public class AppTradeOrderPageReqVO extends PageParam { @InEnum(value = TradeOrderStatusEnum.class, message = "订单状态必须是 {value}") private Integer status; + @Schema(description = "是否评价", example = "true") + private Boolean commentStatus; + } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderSettlementRespVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderSettlementRespVO.java index 3e3dc9d08..b76b3733c 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderSettlementRespVO.java +++ b/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 { public static class Price { @Schema(description = "商品原价(总),单位:分", required = true, example = "500") - private Integer originalPrice; + private Integer totalPrice; @Schema(description = "运费金额,单位:分", required = true, example = "50") private Integer deliveryPrice; diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/item/AppTradeOrderItemRespVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/item/AppTradeOrderItemRespVO.java new file mode 100644 index 000000000..f68a9c747 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/item/AppTradeOrderItemRespVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.trade.controller.app.order.vo.item; + +import cn.iocoder.yudao.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "用户 App - 订单交易项 Response VO") +@Data +public class AppTradeOrderItemRespVO { + + @Schema(description = "编号", required = true, example = "1") + private Long id; + + @Schema(description = "商品 SPU 编号", required = true, example = "1") + private Long spuId; + + @Schema(description = "商品 SPU 名称", required = true, example = "芋道源码") + private String spuName; + + @Schema(description = "商品 SKU 编号", required = true, example = "1") + private Long skuId; + + @Schema(description = "商品图片", required = true, example = "https://www.iocoder.cn/1.png") + private String picUrl; + + @Schema(description = "购买数量", required = true, example = "1") + private Integer count; + + @Schema(description = "商品原价(单)", required = true, example = "100") + private Integer price; + + /** + * 属性数组 + */ + private List properties; + +} diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java index db8ea6879..3f5b3e4ed 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java +++ b/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 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderDetailRespVO; import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageItemRespVO; +import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum; @@ -191,7 +192,7 @@ public interface TradeOrderConvert { if (CollUtil.isEmpty(properties)) { continue; } - AppTradeOrderPageItemRespVO.Item item = orderVO.getItems().get(i); + AppTradeOrderItemRespVO item = orderVO.getItems().get(i); item.setProperties(new ArrayList<>(properties.size())); // 遍历每个 properties,设置到 TradeOrderPageItemRespVO.Item 中 properties.forEach(property -> { @@ -237,4 +238,6 @@ public interface TradeOrderConvert { } AppTradeOrderDetailRespVO convert3(TradeOrderDO order, List items); + AppTradeOrderItemRespVO convert03(TradeOrderItemDO bean); + } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java index 9d031a905..f2ba51090 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java +++ b/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 { * 商家备注 */ private String remark; + /** + * 是否评价 + * + * true - 已评价 + * false - 未评价 + */ + private Boolean commentStatus; // ========== 价格 + 支付基本信息 ========== @@ -128,16 +135,17 @@ public class TradeOrderDO extends BaseDO { /** * 商品原价(总),单位:分 * - * 基于 {@link TradeOrderItemDO#getOriginalPrice()} 求和 + * totalPrice = {@link TradeOrderItemDO#getPrice()} * {@link TradeOrderItemDO#getCount()} 求和 * * 对应 taobao 的 trade.total_fee 字段 */ - private Integer originalPrice; + private Integer totalPrice; + // TODO 芋艿:是不是要删除这个字段? /** * 订单原价(总),单位:分 * - * 基于 {@link OrderItem#getPayPrice()} 求和 - * 和 {@link #originalPrice} 的差异:去除商品级优惠 + * 1. orderPrice = {@link OrderItem#getPayPrice()} 求和 + * 2. orderPrice = {@link #totalPrice} - 商品级优惠 */ private Integer orderPrice; /** @@ -219,7 +227,7 @@ public class TradeOrderDO extends BaseDO { // ========== 售后基本信息 ========== /** - * 收货状态 + * 售后状态 * * 枚举 {@link TradeOrderAfterSaleStatusEnum} */ diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java index 0bc403f0e..42fc106f5 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java +++ b/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 { * 购买数量 */ private Integer count; -// /** -// * 是否评论 TODO -// * -// * false - 未评论 -// * true - 已评论 -// */ -// private Boolean commented; + /** + * 是否评价 + * + * true - 已评价 + * false - 未评价 + */ + private Boolean commentStatus; // ========== 价格 + 支付基本信息 ========== - /** - * 商品原价(总),单位:分 - * - * = {@link #originalUnitPrice} * {@link #getCount()} - */ - private Integer originalPrice; /** * 商品原价(单),单位:分 * * 对应 ProductSkuDO 的 price 字段 * 对应 taobao 的 order.price 字段 */ - private Integer originalUnitPrice; + private Integer price; /** * 商品优惠(总),单位:分 * @@ -116,9 +110,9 @@ public class TradeOrderItemDO extends BaseDO { */ private Integer discountPrice; /** - * 子订单实付金额,不算主订单分摊金额,单位:分 + * 子订单实付金额(总),不算主订单分摊金额,单位:分 * - * = {@link #originalPrice} + * = {@link #price} * {@link #count} * - {@link #discountPrice} * * 对应 taobao 的 order.payment 字段 diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/order/TradeOrderMapper.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/order/TradeOrderMapper.java index 7be224744..e6a13eabc 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/order/TradeOrderMapper.java +++ b/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 { return selectPage(reqVO, new LambdaQueryWrapperX() .eq(TradeOrderDO::getUserId, userId) .eqIfPresent(TradeOrderDO::getStatus, reqVO.getStatus()) + .eqIfPresent(TradeOrderDO::getCommentStatus, reqVO.getCommentStatus()) .orderByDesc(TradeOrderDO::getId)); // TODO 芋艿:未来不同的 status,不同的排序 } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceTest.java b/yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceTest.java index 55418d52b..dc7f5bf70 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceTest.java +++ b/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 { assertNull(tradeOrderDO.getRemark()); assertFalse(tradeOrderDO.getPayed()); assertNull(tradeOrderDO.getPayTime()); - assertEquals(tradeOrderDO.getOriginalPrice(), 230); + assertEquals(tradeOrderDO.getTotalPrice(), 230); assertEquals(tradeOrderDO.getOrderPrice(), 100); assertEquals(tradeOrderDO.getDiscountPrice(), 0); assertEquals(tradeOrderDO.getAdjustPrice(), 0); @@ -204,8 +204,8 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { //assertEquals(tradeOrderItemDO01.getSpuName(), sku01.getSpuName()); TODO 找不到spuName assertEquals(tradeOrderItemDO01.getPicUrl(), sku01.getPicUrl()); assertEquals(tradeOrderItemDO01.getCount(), 3); - assertEquals(tradeOrderItemDO01.getOriginalPrice(), 150); - assertEquals(tradeOrderItemDO01.getOriginalUnitPrice(), 50); +// assertEquals(tradeOrderItemDO01.getOriginalPrice(), 150); + assertEquals(tradeOrderItemDO01.getPrice(), 50); assertEquals(tradeOrderItemDO01.getDiscountPrice(), 20); assertEquals(tradeOrderItemDO01.getPayPrice(), 130); assertEquals(tradeOrderItemDO01.getOrderPartPrice(), 7); @@ -224,8 +224,8 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { //assertEquals(tradeOrderItemDO02.getSpuName(), sku02.getSpuName()); TODO 找不到spuName assertEquals(tradeOrderItemDO02.getPicUrl(), sku02.getPicUrl()); assertEquals(tradeOrderItemDO02.getCount(), 4); - assertEquals(tradeOrderItemDO02.getOriginalPrice(), 80); - assertEquals(tradeOrderItemDO02.getOriginalUnitPrice(), 20); +// assertEquals(tradeOrderItemDO02.getOriginalPrice(), 80); + assertEquals(tradeOrderItemDO02.getPrice(), 20); assertEquals(tradeOrderItemDO02.getDiscountPrice(), 40); assertEquals(tradeOrderItemDO02.getPayPrice(), 40); assertEquals(tradeOrderItemDO02.getOrderPartPrice(), 15);