From cc0e4b6b637a4588c3a1edce87c0b301f8ce9d42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=BB=BA=E5=86=9B?= <2300486727@qq.com> Date: Mon, 16 Dec 2024 23:52:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yami/shop/bean/app/dto/MyOrderDto.java | 67 ++++++++++++++++ .../shop/bean/app/dto/MyOrderItemDto.java | 76 +++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderDto.java create mode 100644 yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderItemDto.java diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderDto.java new file mode 100644 index 0000000..edb5864 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderDto.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.app.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import java.util.List; + +/** + * `MyOrderDto`类是一个数据传输对象(DTO),主要用于在电商系统应用层不同组件或模块之间传递与用户“我的订单”相关的综合信息。 + * 其作用是将订单中关键的数据进行整合封装,方便在诸如订单查询、订单列表展示、订单详情查看等业务场景下进行数据传递, + * 使得数据交互更加清晰、规范,便于不同业务部分基于这些信息进行相应操作,例如向用户展示订单概览、统计订单相关数据等。 + + * @author lanhai + */ +@Data +@Schema(description = "我的订单") +public class MyOrderDto { + + /** + * `orderItemDtos`属性是一个列表类型,其中元素为 `MyOrderItemDto` 类型,用于存放该订单下的各个订单项信息。 + * 在一个订单中,通常会包含多个购买的商品项,每个商品项都有其独立的详细信息,比如商品的具体规格(通过对应的SKU信息体现)、 + * 商品单价、购买数量等,这个列表就完整地记录了所有订单项的这些详细数据,方便在后续业务逻辑中, + * 例如查看订单商品明细、计算每个商品的实际金额、进行商品退换货操作等时使用,确保订单中商品相关信息的完整性和准确性。 + * 通过 `@Schema` 注解明确其描述为“订单项”且标记为必填项(`required = true`),保证在传递“我的订单”相关数据时, + * 订单项信息不会缺失,便于准确展示订单的具体商品构成情况。 + */ + @Schema(description = "订单项", required = true) + private List orderItemDtos; + + /** + * `orderNumber`属性用于存储订单的唯一编号,也就是订单号,它是在整个电商系统中用于精确标识每个订单的字符串。 + * 通过这个订单号,后端系统可以精准地关联到该订单对应的所有详细信息,包括用户信息、下单时间、支付信息等诸多方面, + * 在业务操作中,用户查询特定订单、进行订单相关的各种处理(如确认收货、申请退款等)都是依靠这个订单号来定位目标订单的。 + * 通过 `@Schema` 注解将其描述为“订单号”并设定为必填项,确保在数据传递过程中订单号信息的完整性,便于后续围绕准确的订单开展业务。 + */ + @Schema(description = "订单号", required = true) + private String orderNumber; + + /** + * `actualTotal`属性代表订单的总价,即用户实际需要支付的金额总数,其数据类型为 `Double`,通常以货币形式体现。 + * 这个总价是经过一系列计算得出的,比如考虑了商品原价、优惠活动减免金额(如满减、优惠券使用等)、运费(如果有)等因素后的最终金额, + * 在向用户展示订单信息时,总价是一个非常关键的数据,用户可以直观地了解到此次订单需要花费多少钱, + * 同时在订单统计、财务相关业务操作中也起着重要作用。通过 `@Schema` 注解标记其描述为“总价”且设为必填项, + * 保证在传递订单数据时总价信息准确无误,方便各方基于该金额进行相应的处理和判断。 + */ + @Schema(description = "总价", required = true) + private Double actualTotal; + + /** + * `status`属性用于表示订单当前所处的状态,一般为整数类型,不同的整数值对应不同的订单状态,例如: + * `0` 可以表示订单已提交但未支付,`1` 表示订单已支付等待发货,`2` 表示订单已发货在运输中,`3` 表示订单已签收等, + * 具体的状态值和含义通常会根据电商系统的业务规则来设定。通过这个属性,系统可以清晰地知晓订单目前处于哪个环节, + * 进而根据不同状态执行相应的业务逻辑,比如对于已支付的订单安排发货,对于已签收的订单进行后续评价等操作。 + * 通过 `@Schema` 注解明确其描述为“订单状态”并设为必填项,确保在传递订单数据时状态信息完整,便于准确把握订单的进展情况。 + */ + @Schema(description = "订单状态", required = true) + private Integer status; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderItemDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderItemDto.java new file mode 100644 index 0000000..6cd1575 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/MyOrderItemDto.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.app.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.yami.shop.common.serializer.json.ImgJsonSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * `MyOrderItemDto`类是一个数据传输对象(DTO),在电商系统应用层用于传递“我的订单”中具体订单项的相关信息, + * 它将单个商品在订单中的关键数据进行整合封装,方便在诸如订单详情展示、订单商品明细查询等业务场景下进行数据传递, + * 使得各业务环节能基于这些详细且规范的数据来进行相应操作,例如向用户清晰呈现所购买商品的各项属性、进行商品金额计算等。 + + * @author lanhai + */ +@Schema(description = "我的订单-订单项") +@Data +public class MyOrderItemDto { + + /** + * `pic`属性用于存放商品图片相关信息,它可以是图片的网络地址或者在系统中的存储路径等,具体取决于系统的图片存储和访问方式。 + * 例如在使用云存储服务时,可能是该商品图片在云存储中的完整URL地址;若是本地存储,则可能是相对系统根目录的文件路径。 + * 这个属性是展示商品外观等信息的关键数据,前端页面通过获取该 `pic` 来准确显示对应的商品图片内容,让用户直观地知晓所购买商品的样子。 + * 同时,借助 `@JsonSerialize(using = ImgJsonSerializer.class)` 注解,在将该类对象转换为JSON格式数据(如接口返回数据给前端时), + * 会使用自定义的序列化器对这个属性进行特殊处理,可能是对图片路径进行格式调整、添加域名等操作,使其符合前端展示或者与其他系统交互的要求。 + * 通过 `@Schema` 注解明确其描述为“商品图片”并标记为必填项(`required = true`),确保在传递订单项数据时该商品图片信息的完整性, + * 以便顺利实现商品图片展示功能,提升用户体验。 + */ + @Schema(description = "商品图片", required = true) + @JsonSerialize(using = ImgJsonSerializer.class) + private String pic; + + /** + * `prodName`属性用于存储商品的名称,它是一个能够清晰标识商品具体是什么的字符串,例如“华为P50手机”“耐克运动鞋”等。 + * 在订单相关业务中,商品名称是用户快速识别所购买商品的重要依据,无论是在订单详情页面展示给用户查看, + * 还是在进行商品数据统计、查询等操作时,都需要准确的商品名称信息,通过 `@Schema` 注解将其描述为“商品名称”并设为必填项, + * 保证在数据传递过程中商品名称不会缺失,便于各方基于该名称进行相应的业务处理。 + */ + @Schema(description = "商品名称", required = true) + private String prodName; + + /** + * `prodCount`属性代表商品的数量,即用户在该订单中购买此商品的具体个数,其数据类型为整数类型。 + * 这个数量信息对于计算商品的总价(通过与商品价格相乘)、库存管理(确认销售后相应扣减库存)以及后续可能的退换货等业务操作都至关重要, + * 通过 `@Schema` 注解明确其描述为“商品数量”并标记为必填项,确保在传递订单项数据时商品数量信息准确无误,便于准确开展相关业务逻辑。 + */ + @Schema(description = "商品数量", required = true) + private Integer prodCount; + + /** + * `price`属性存放的是商品的价格信息,通常以货币形式体现,数据类型为 `Double`,它代表了该商品在本次订单中的单价。 + * 在订单金额计算(单个商品金额为价格乘以数量,进而汇总得到订单总价)、优惠活动应用(基于商品单价来计算优惠后的价格)等业务场景中, + * 商品价格是关键的基础数据,通过 `@Schema` 注解将其描述为“商品价格”并设为必填项,保证在数据传递过程中价格信息的完整性, + * 便于准确进行与商品价格相关的各种业务操作。 + */ + @Schema(description = "商品价格", required = true) + private Double price; + + /** + * `skuName`属性用于表示商品的规格名称,也就是常说的SKU(Stock Keeping Unit)名称,它具体描述了商品的特定规格组合情况, + * 例如对于一款手机,SKU名称可能是“8GB内存 + 256GB存储 + 黑色”,清晰地体现了该商品在颜色、内存容量、存储容量等方面的具体规格配置。 + * 在订单中,SKU名称有助于更精准地确定用户购买的是该商品的哪一种具体规格,方便进行商品管理、库存管理以及向用户展示详细商品规格信息等操作, + * 通过 `@Schema` 注解明确其描述为“skuName”并设为必填项,确保在传递订单项数据时规格名称信息完整,便于准确把握商品的具体规格情况。 + */ + @Schema(description = "skuName", required = true) + private String skuName; +} \ No newline at end of file