|
|
|
@ -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;
|
|
|
|
|
}
|