From 6a2f36da3be81b5a290ebfb480b15c8cee811369 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:27:32 +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 --- .../bean/app/dto/ChooseDiscountItemDto.java | 75 ++++++++++++++ .../bean/app/param/ChangeShopCartParam.java | 97 +++++++++++++++++++ .../yami/shop/bean/model/CategoryProp.java | 53 ++++++++++ 3 files changed, 225 insertions(+) create mode 100644 yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ChooseDiscountItemDto.java create mode 100644 yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/ChangeShopCartParam.java create mode 100644 yami-shop-bean/src/main/java/com/yami/shop/bean/model/CategoryProp.java diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ChooseDiscountItemDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ChooseDiscountItemDto.java new file mode 100644 index 0000000..ba6d586 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ChooseDiscountItemDto.java @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.app.dto; + +import lombok.Data; +import java.io.Serializable; + +/** + * `ChooseDiscountItemDto`类是一个数据传输对象(DTO),用于封装购物车中被选中的满减活动项相关信息, + * 在电商系统的业务逻辑处理中,起着在不同组件或模块之间传递相关数据的重要作用。 + * 当用户在购物车页面选择参与某些满减活动时,每个被选中的满减活动项具体细节都会被整理并封装到此类的实例对象中, + * 以便后续进行如计算优惠金额、展示活动详情给用户、更新购物车总价等一系列业务操作时使用, + * 确保了数据传递的规范性和完整性,避免了在各业务层之间直接传递零散且复杂的数据结构。 + + * @author lanhai + */ +@Data +public class ChooseDiscountItemDto implements Serializable { + + /** + * 满减活动项的唯一标识符,用于在整个系统中精确地定位该满减活动项对应的详细信息。 + * 例如,在数据库中可以通过这个 `discountItemId` 去查询该项活动的具体规则(如满多少金额减多少金额、 + * 满减的条件限制等)、活动的有效期限、适用的商品范围以及与其他业务模块相关联的信息等, + * 为后续围绕该满减活动项进行准确的业务逻辑处理(如判断是否满足满减条件、计算优惠额度等)提供关键依据。 + */ + private Long discountItemId; + + /** + * 关联的满减活动的整体唯一标识符,即 `discountActivityId`,它指向整个满减活动的总体定义信息。 + * 通常一个满减活动可能会包含多个不同的活动项,通过这个ID能够获取到该满减活动的通用属性, + * 比如活动的名称、活动发起方(是平台发起还是店铺发起等)、活动覆盖的商品分类范围等基础信息, + * 有助于从整体上把握该满减活动的全貌,并且在涉及多个活动项协同处理或者统计分析整个满减活动相关数据时发挥作用。 + */ + private Long discountActivityId; + + /** + * 该满减活动项在当前购物车选中场景下能够为用户减免的具体金额数值,即 `discountAmount`。 + * 它明确了选择这个满减活动项后,用户可以实际节省多少钱,是计算购物车最终总价、 + * 向用户清晰展示优惠明细等操作中不可或缺的数据要素,在涉及金额计算和展示优惠情况的业务逻辑中会频繁被使用。 + */ + private Double discountAmount; + + /** + * 用于标识该满减活动项当前是否已经生效的布尔类型属性,例如可以用 `isActive` 来表示。 + * 其取值通常为 `true` 或 `false`,当满足了该活动项预先设定的生效条件(比如购物车商品总价达到规定金额、 + * 所选商品符合活动要求的品类等)时,这个标识会被设置为 `true`,意味着此活动项开始生效,相应的优惠金额可以进行扣除等操作; + * 反之,若不满足条件则为 `false`,通过这个属性方便在业务逻辑中准确判断活动项的执行状态, + * 确保优惠计算的准确性以及整个购物流程中满减活动应用的正确性。 + */ + private boolean isActive; + + /** + * 满减活动项适用的商品集合相关信息,可以用合适的数据结构来存储(例如 `List` 类型的列表, + * 里面存放符合该活动项的商品ID等,具体根据业务实际情况确定),用 `applicableProdIds` 表示。 + * 它明确了该满减活动项具体适用于哪些商品,在判断购物车中的商品是否能参与此满减活动、 + * 以及在计算优惠金额时分摊到各个商品上的情况等业务逻辑中会起到关键作用,有助于更精细地处理满减优惠与商品的关联关系。 + */ + private Object applicableProdIds; + + /** + * 满减活动项剩余的可使用次数,用 `remainingUseTimes` 表示,通常可以是整数类型。 + * 在一些有限次使用的满减活动场景中,这个属性用于记录该活动项还能被使用的次数, + * 例如,某个满减活动项规定用户总共可以使用3次,每使用一次就会相应地减少该次数, + * 通过这个属性可以在业务逻辑中控制活动项的使用频率,避免超次数使用,确保活动规则的正确执行。 + */ + private Integer remainingUseTimes; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/ChangeShopCartParam.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/ChangeShopCartParam.java new file mode 100644 index 0000000..7a08e7d --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/ChangeShopCartParam.java @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.app.param; + +import jakarta.validation.constraints.NotNull; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * `ChangeShopCartParam`类是一个用于接收修改购物车相关操作参数的数据对象,在电商应用的业务逻辑处理中起着关键作用。 + * 它主要用于在前端与后端进行交互时,承载用户发起的修改购物车操作所需的各项数据信息,以便后端能够依据这些参数准确地执行相应的业务逻辑, + * 比如更新购物车中商品的数量、更换商品的规格、处理与分销相关的业务逻辑等操作。 + + * @author LGH + */ +@Data +public class ChangeShopCartParam { + + /** + * `basketId`属性代表购物车中某条商品记录的唯一标识符,也就是购物车ID。 + * 在购物车的业务场景中,购物车可以包含多条不同的商品记录,每条记录都有其独立的 `basketId`, + * 通过这个ID,后端服务能够精准地定位到用户想要修改的具体是哪一项商品记录, + * 无论是对商品数量进行调整、删除该商品,还是进行其他与该商品在购物车中相关的操作,都依赖这个唯一标识来确定操作对象。 + * 同时,通过 `@Schema` 注解,在生成API文档(例如使用Swagger等工具时)时,为该属性添加“购物车ID”的描述信息, + * 并明确标记其为必填项(`required = true`),告知接口调用者在发起修改购物车操作时必须提供这个参数值, + * 以此保证后端接收到的数据完整性,便于准确执行后续业务逻辑。 + */ + @Schema(description = "购物车ID", required = true) + private Long basketId; + + /** + * `prodId`属性是商品的唯一标识符,即商品ID。 + * 在整个电商系统中,每个商品都被赋予了一个唯一的 `prodId`,用于精确地指代该商品, + * 通过这个ID,后端可以关联到商品的详细信息,如商品名称、价格、规格详情、库存信息等, + * 进而在修改购物车操作中,准确知晓当前操作涉及的是哪个具体商品。 + * 这里使用了 `@NotNull` 注解,并设置了相应的提示消息“商品ID不能为空”, + * 用于在数据校验阶段确保前端传递过来的参数中该商品ID不能为空值,若为空则会触发验证错误提示, + * 同时通过 `@Schema` 注解在API文档中表明其描述为“商品ID”且为必填项,确保接口调用时数据的规范性和完整性。 + */ + @NotNull(message = "商品ID不能为空") + @Schema(description = "商品ID", required = true) + private Long prodId; + + /** + * `skuId`属性表示商品库存保有单位(Stock Keeping Unit,简称SKU)的ID,即具体商品规格的唯一标识符。 + * 在电商业务中,同一款商品往往会有多种不同的规格组合,例如一款手机可能有不同的颜色、内存容量等配置, + * 每个不同的规格组合就对应一个独特的SKU,通过这个 `skuId`,能够精准地定位到具体是哪一种规格的商品, + * 以便在修改购物车操作中准确处理与该商品规格相关的业务逻辑,比如更新对应规格商品的数量等。 + * 同样,借助 `@NotNull` 注解保证该参数不能为空,若为空会给出“skuId不能为空”的错误提示, + * 且通过 `@Schema` 注解在API文档里明确其描述为“skuId”并标记为必填项,便于接口调用者正确传递参数。 + */ + @NotNull(message = "skuId不能为空") + @Schema(description = "skuId", required = true) + private Long skuId; + + /** + * `shopId`属性为店铺的唯一标识符,也就是店铺ID。 + * 在多店铺的电商平台模式下,不同店铺可能会售卖相同的商品,但商品的库存数量、价格、优惠活动等信息可能各不相同, + * 所以需要通过这个 `shopId` 来明确当前修改购物车操作所涉及商品所属的具体店铺, + * 确保后端能够依据准确的店铺信息来处理诸如库存扣减、价格计算、店铺相关优惠应用等业务逻辑。 + * 利用 `@NotNull` 注解强制要求该参数必须提供有效的店铺ID值,若缺失会触发验证错误, + * 并且通过 `@Schema` 注解在API文档中展示其描述为“店铺ID”以及必填属性,保证接口调用的准确性。 + */ + @NotNull(message = "店铺ID不能为空") + @Schema(description = "店铺ID", required = true) + private Long shopId; + + /** + * `count`属性代表商品的数量,即用户期望在购物车中设置的该商品的个数。 + * 在修改购物车操作里,用户常常会调整商品的购买数量,比如从原来购买1个增加到购买2个等情况, + * 这个属性就用于记录用户想要修改后的商品数量值,后端依据该值来更新购物车中对应商品的数量信息, + * 并进一步基于新的数量进行诸如总价重新计算、库存更新等相关业务逻辑处理。 + * 通过 `@NotNull` 注解确保该参数不能为空,必须传递有效的数量数值, + * 同时借助 `@Schema` 注解在API文档中明确其描述为“商品个数”且为必填项,方便接口调用者知晓参数要求并正确传递数据。 + */ + @NotNull(message = "商品个数不能为空") + @Schema(description = "商品个数", required = true) + private Integer count; + + /** + * `distributionCardNo`属性用于存放分销推广人卡号相关信息。 + * 在电商平台的分销业务模式下,当用户通过某个分销推广人的链接进入购物并产生购买行为时, + * 这个卡号可以用于追踪该商品销售与推广人的关联关系,以便后续进行相应的分销收益计算、记录等业务操作。 + * 该属性并非必填项,其描述信息通过 `@Schema` 注解在API文档中体现为“分销推广人卡号”, + * 告知接口调用者该参数的含义以及在有分销相关业务场景时可以选择性地提供相应卡号信息。 + */ + @Schema(description = "分销推广人卡号") + private String distributionCardNo; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/CategoryProp.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/CategoryProp.java new file mode 100644 index 0000000..e3b9fc6 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/CategoryProp.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.model; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import java.io.Serializable; + +/** + * `CategoryProp`类是一个实体类,用于表示商品分类与商品属性之间的关联关系,在电商系统等业务场景中有着重要作用。 + * 它主要负责在数据库层面记录每个商品分类下具体关联了哪些商品属性,方便后续基于分类进行商品属性相关的操作, + * 例如在展示商品详情、进行商品筛选以及查询符合特定属性要求的商品时,依据这种关联关系获取相应的数据。 + * + * @author lanhai + */ +@Data +@TableName("tz_category_prop") +public class CategoryProp implements Serializable { + + /** + * `id`属性作为该类的主键,是每条分类与属性关联记录在数据库中的唯一标识符。 + * 它具有唯一性,通过这个 `id`,系统能够在数据库中精准地定位、操作某一条具体的分类属性关联记录, + * 比如在更新、删除特定的关联关系或者根据关联记录查询相关信息时,都要依赖这个唯一标识来确保操作的准确性和针对性, + * 是整个关联关系数据管理中的关键标识字段。 + */ + @TableId + private Long id; + + /** + * `categoryId`属性用于标识关联的商品分类的ID,它与系统中定义的商品分类体系相连接。 + * 通过这个ID可以明确当前这条关联记录所属的具体商品分类,例如在电商系统中,它可能对应着诸如“服装”分类、 + * “数码产品”分类等具体分类的唯一标识,借助该ID还能进一步获取该分类的其他详细信息, + * 像分类名称、分类的层级结构以及与之关联的其他相关数据等,为基于分类的各种业务逻辑处理提供基础依据。 + */ + private Long categoryId; + + /** + * `propId`属性代表商品属性的ID,它对应着系统中另外一个用于定义商品属性的相关数据表(如 `tz_prod_prop` 表)里的 `prop_id` 字段。 + * 此属性的作用是确定具体是哪个商品属性与当前分类进行了关联,例如在“数码产品”分类下, + * 这个 `propId` 可能指向“屏幕尺寸”这个具体属性的标识,通过该ID可以获取到该属性更详细的内容, + * 比如属性的名称、可选的值范围等信息,从而在商品展示、筛选等业务操作中准确地呈现相应的属性详情, + * 方便用户根据属性来挑选商品。 + */ + private Long propId; +} \ No newline at end of file