diff --git a/FangJianJun_branch b/FangJianJun_branch new file mode 100644 index 0000000..66dc905 --- /dev/null +++ b/FangJianJun_branch @@ -0,0 +1 @@ +undefined \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/BasketItemDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/BasketItemDto.java new file mode 100644 index 0000000..b44c42d --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/BasketItemDto.java @@ -0,0 +1,75 @@ +package com.yami.shop.bean.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * Basket类用于表示购物车相关的实体信息。 + * 它对应数据库中的"tz_basket"表,通过MyBatis Plus的注解来映射表结构与实体类的关系。 + * 此类实现了Serializable接口,方便进行对象的序列化操作,例如在网络传输或持久化存储时使用。 + * + * @author lanhai + */ +@Data +@TableName("tz_basket") +public class Basket implements Serializable { + /** + * 主键,用于唯一标识购物车中的每一条记录。 + * 在数据库表"tz_basket"中对应的字段为主键字段,通常由数据库自动生成或者按照特定规则赋值。 + */ + @TableId + private Long basketId; + + /** + * 店铺ID,用于标识商品所属的店铺。 + * 通过该ID可以关联到对应的店铺信息,比如查询店铺的名称、地址等其他相关属性。 + */ + private Long shopId; + + /** + * 产品ID,用于确定购物车中具体是哪个产品。 + * 可以依据此ID去获取产品的详细信息,如产品名称、价格、描述等内容。 + */ + private Long prodId; + + /** + * SkuID,代表具体的库存保有单位(Stock Keeping Unit)的编号。 + * 不同的Sku可能对应产品的不同规格、颜色、尺寸等变体,通过该ID能准确区分同一产品下的不同库存单元。 + */ + private Long skuId; + + /** + * 用户ID,用于标识该购物车记录所属的用户。 + * 可以通过该ID关联到用户的其他信息,比如用户名、联系方式等,以确定是哪位用户添加的商品到购物车。 + * 这里是用字符串类型,可能是根据具体业务系统中用户ID的格式设定(比如可能包含字母等复杂格式)。 + */ + private String userId; + + /** + * 购物车产品个数,记录了当前购物车中对应商品的数量。 + * 用于在计算购物车总价、库存校验等业务场景中发挥作用。 + */ + private Integer basketCount; + + /** + * 购物时间,记录了用户将商品添加到购物车的具体时间。 + * 可以用于分析用户行为,例如统计不同时间段的购物车添加频率等业务需求。 + */ + private Date basketDate; + + /** + * 满减活动ID,用于关联对应的满减活动。 + * 如果商品参与了某个满减活动,通过该ID可以获取活动的详细规则,如满多少金额减多少等信息,以在结算等环节应用相应优惠。 + */ + private Long discountId; + + /** + * 分销推广人卡号,用于标识在分销业务场景下,将该商品推荐给用户的推广人员的卡号信息。 + * 通过这个卡号可以进行分销相关的业绩统计、佣金计算等操作。 + */ + private String distributionCardNo; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/CategoryDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/CategoryDto.java new file mode 100644 index 0000000..45e4fa9 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/CategoryDto.java @@ -0,0 +1,82 @@ +/* + * 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; + +/** + * `CategoryDto`类是一个数据传输对象(DTO),用于在应用层不同组件或模块之间传递商品分类相关的信息。 + * 它的主要作用是将与商品分类有关的数据进行整合封装,使得在接口调用、页面展示等业务场景下, + * 数据的传递更加清晰、规范且符合业务需求,避免了直接传递复杂的底层实体对象或者分散的单个数据, + * 提高了代码的可读性以及不同模块间交互的便利性。 + * + * @author lanhai + */ +@Data +public class CategoryDto { + + /** + * 此属性代表商品分类的唯一标识符,用于在整个系统中精确地指代某一个具体的商品分类。 + * 无论是在数据库查询操作中,还是在不同业务逻辑模块间传递分类相关信息时, + * 都通过这个 `categoryId` 来准确地定位对应的分类实体。例如,当需要获取某个分类下的商品列表, + * 或者查找该分类的详细属性(如分类描述、关联的其他数据等)时,都会依赖这个唯一标识进行操作。 + * + * 在接口交互方面,通过 `@Schema` 注解明确标记该属性在 API 文档生成(例如使用 Swagger 等工具时) + * 中的描述信息为“分类id”,并且表明它是接口调用时必须提供的参数(`required = true`), + * 以此告知接口使用者该参数的重要性及必要性。 + */ + @Schema(description = "分类id", required = true) + private Long categoryId; + + /** + * `parentId` 属性用于记录当前商品分类的父级分类的唯一标识符,它构建了商品分类之间的层级关系。 + * 在电商系统或者其他存在分类层级结构的业务场景中,通过这个属性可以追溯到该分类所属的上级分类, + * 进而形成一个类似树状的分类体系。比如,在电商的商品分类里,“智能手机”分类可能隶属于“数码产品”分类, + * 那么“数码产品”分类的 `id` 就会存储在此处作为 `parentId`。 + * + * 同样,借助 `@Schema` 注解,在 API 文档中明确该属性的描述为“分类父id”,且为必填项, + * 方便接口调用者理解其含义以及在传递数据时按要求提供相应的值,有助于系统准确构建和展示分类层级结构。 + */ + @Schema(description = "分类父id", required = true) + private Long parentId; + + /** + * `categoryName` 是用于直观展示给用户或者在系统内部区分不同商品分类的名称属性。 + * 它以字符串的形式呈现了商品分类的具体称谓,例如“服装”“电子产品”“食品”等常见的分类名称, + * 是用户在前端界面看到的用于识别不同分类的文字标识,也是在业务逻辑处理中进行分类筛选、 + * 统计等操作时便于理解和操作的重要信息。 + * + * 通过 `@Schema` 注解,为该属性在 API 文档里添加“分类名称”的描述,并标记为必填项, + * 确保接口返回的数据包含清晰准确的分类名称信息,同时要求调用方在传递分类相关数据时必须提供有效的名称。 + */ + @Schema(description = "分类名称", required = true) + private String categoryName; + + /** + * `pic` 属性用于存放商品分类对应的图片资源相关信息,通常可能是图片在系统中的存储路径、 + * 唯一标识名称或者完整的 URL 地址等形式,具体取决于系统的图片存储和管理方式。 + * 其目的是在前端界面展示分类时能够配上相应的图片,增强视觉效果,帮助用户更直观地识别不同分类, + * 比如在展示“服装”分类时,可以显示一张服装展示图片,让用户更快速地定位到感兴趣的分类。 + * + * 这里使用了 `@JsonSerialize(using = ImgJsonSerializer.class)` 注解组合, + * 意味着在将该 `CategoryDto` 对象转换为 JSON 格式数据(例如在接口返回数据给前端时), + * 会使用自定义的 `ImgJsonSerializer` 序列化器对这个 `pic` 属性进行特殊处理, + * 可能是对图片路径进行格式调整、添加域名等操作,使其符合前端展示或者与其他系统交互时的要求, + * 保证图片资源信息能够被正确解析和使用。同时,通过 `@Schema` 注解标记该属性描述为“分类图片”且为必填项, + * 确保分类图片信息的完整性和准确性,以便在前端展示等业务场景中正常使用。 + */ + @Schema(description = "分类图片", required = true) + @JsonSerialize(using = ImgJsonSerializer.class) + private String pic; +} \ No newline at end of file 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/dto/CouponOrderDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/CouponOrderDto.java new file mode 100644 index 0000000..4ecee59 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/CouponOrderDto.java @@ -0,0 +1,66 @@ +/* + * 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; + +/** + * `CouponOrderDto`类是一个数据传输对象(DTO),用于在电商系统应用层的不同组件或模块之间传递与优惠券和订单相关的信息。 + * 其主要目的是将涉及优惠券在订单场景下的相关数据进行整合封装,方便在诸如订单创建、订单金额计算(包含优惠券优惠计算)、 + * 订单详情展示等业务操作中进行数据传递,使得数据交互更加清晰、规范,避免直接传递复杂或分散的底层数据结构, + * 提高不同业务层之间协作的效率以及代码的整体可读性。 + + * @author lanhai + */ +@Data +public class CouponOrderDto implements Serializable { + + /** + * 优惠券的唯一标识符,用于在系统中精准定位某一张具体的优惠券。 + * 通过这个 `couponId`,可以关联到优惠券的详细信息,例如优惠券的名称、类型(满减券、折扣券等)、 + * 优惠金额或折扣比例、使用条件(如满多少金额可用、适用的商品范围等)以及有效期等关键属性, + * 在订单处理过程中,判断该优惠券是否可用于当前订单以及计算具体优惠金额时,都需要依赖这个唯一标识来获取相应信息。 + */ + private Long couponId; + + /** + * 关联的订单的唯一标识符,即 `orderId`,用于明确该优惠券是应用于哪一个具体的订单上。 + * 在电商系统中,一个优惠券可能可以在多个订单中使用(前提是满足使用条件),同样,一个订单也可能会使用多张优惠券, + * 通过这个 `orderId` 能够清晰地建立起优惠券与订单之间的对应关系,便于后续业务逻辑围绕该订单进行优惠券相关的处理, + * 比如统计该订单使用了哪些优惠券、计算因优惠券使用而减免的总金额等操作。 + */ + private Long orderId; + + /** + * 该优惠券在当前订单中实际减免的金额数值,用 `discountAmount` 表示。 + * 在订单处理流程中,当确定某张优惠券可应用于当前订单后,需要根据优惠券的规则(如满减券的满减金额设定等) + * 来计算出它在这个订单里具体能减免多少钱,这个属性就用于记录该实际减免的金额, + * 是计算订单最终应付金额、展示订单优惠明细等操作中重要的数据依据,能直观体现优惠券给订单带来的优惠效果。 + */ + private Double discountAmount; + + /** + * 表示优惠券在当前订单中的使用状态的标识,例如可以用布尔类型的 `isUsed` 属性来表示(`true` 表示已使用,`false` 表示未使用)。 + * 在整个订单生命周期内,优惠券的使用状态可能会发生变化,例如用户最初选择使用某张优惠券,但后续又取消了选择, + * 或者由于某些条件不满足导致优惠券无法使用等情况,通过这个属性可以清晰地反映出优惠券当前是否已在该订单中被实际应用, + * 方便在业务逻辑中进行相应的判断和处理,确保订单与优惠券之间的关联状态准确无误。 + */ + private boolean isUsed; + + /** + * 优惠券的剩余可用次数(如果优惠券有使用次数限制的话),用 `remainingUseTimes` 表示,通常为整数类型。 + * 对于一些有限次使用的优惠券,每次在订单中成功使用后,剩余可用次数会相应减少, + * 这个属性用于记录当前优惠券针对后续订单还能被使用的次数,在判断优惠券是否还能继续在其他订单中使用等业务逻辑中起着关键作用, + * 有助于合理控制优惠券的使用频率,遵循其预先设定的使用规则。 + */ + private Integer remainingUseTimes; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/DeliveryDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/DeliveryDto.java new file mode 100644 index 0000000..160bbf2 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/DeliveryDto.java @@ -0,0 +1,110 @@ +/* + * 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; + +/** + * @author lanhai + *//* + * * 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; + * + * /** + * * `DeliveryDto`类是一个数据传输对象(DTO),主要用于在电商系统应用层不同组件或模块之间传递与物流配送相关的综合信息。 + * * 它将涉及物流公司、物流订单以及对应的详细物流信息等多方面的数据进行整合封装,以便在诸如订单物流查询结果展示、 + * * 向用户反馈物流状态等业务场景下进行规范、清晰的数据传递,使得各业务环节能基于这些完整的物流数据进行相应操作, + * * 提升用户体验以及保障物流相关业务流程的顺畅进行。 + * + * * @author lanhai + * */ + *@Data + * + +public class DeliveryDto { + * + * /** + * * `companyName`属性用于存储物流公司的名称,它明确指出了负责当前物流配送的公司具体称谓, + * * 例如“顺丰速运”“申通快递”“京东物流”等常见的物流公司名称。在向用户展示物流信息或者在系统内部区分不同物流服务提供商时, + * * 这个属性起着关键的标识作用,并且通过 `@Schema` 注解标记其描述为“物流公司名称”且为必填项(`required = true`), + * * 确保在数据传递过程中该重要信息不会缺失,保证物流信息展示的完整性和准确性。 + * */ + * + @Schema(description = "物流公司名称", required = true) + * + private String companyName; + * + * /** + * * `companyHomeUrl`属性存放的是物流公司的官方网站网址,即用户可以通过访问这个网址获取该物流公司更详细全面的信息, + * * 比如公司的服务介绍、业务范围、客服联系方式以及快递查询入口等内容。在电商系统中,有时候可能会为用户提供链接跳转功能, + * * 方便用户直接从订单物流界面跳转到物流公司官网进一步了解相关情况,通过 `@Schema` 注解将其描述为“物流公司官网”且设为必填项, + * * 保证了在传递物流相关数据时该网址信息的完整性,有助于完善物流信息服务。 + * */ + * + @Schema(description = "物流公司官网", required = true) + * + private String companyHomeUrl; + * + * /** + * * `dvyFlowId`属性代表物流订单号,它是每个物流包裹在相应物流公司系统中的唯一标识符, + * * 通过这个订单号,物流公司可以准确查询到该包裹的具体运输情况、轨迹信息等,在电商系统中, + * * 用户查询自己订单的物流状态时,就是依靠这个订单号向物流公司的查询接口发起请求来获取物流详情的, + * * 借助 `@Schema` 注解标记其为“物流订单号”并设为必填项,确保在物流数据传递及后续查询操作中有准确的订单号依据。 + * */ + * + @Schema(description = "物流订单号", required = true) + * + private String dvyFlowId; + * + * /** + * * `data`属性是一个列表类型,其中的元素为 `DeliveryInfoDto` 类型,用于存放查询出的详细物流信息。 + * * 它包含了诸如快递包裹的当前状态(已揽收、运输中、派送中、已签收等)、所在区域、更新时间等具体的物流动态数据, + * * 通过将这些详细信息整合在一个列表中,可以完整地展示物流的整个过程以及当前状态,方便用户全面了解自己包裹的运输情况。 + * * 利用 `@Schema` 注解将其描述为“查询出的物流信息”并设为必填项,保证了在向用户或其他业务模块传递物流数据时, + * * 有完整且准确的详细物流内容可供使用,提升物流信息展示的质量和实用性。 + * */ + * + @Schema(description = "查询出的物流信息", required = true) + * + private List data; + * +} +@Data +public class DeliveryDto { + + @Schema(description = "物流公司名称" ,required=true) + private String companyName; + + @Schema(description = "物流公司官网" ,required=true) + private String companyHomeUrl; + + @Schema(description = "物流订单号" ,required=true) + private String dvyFlowId; + + @Schema(description = "查询出的物流信息" ,required=true) + private List data; + +} diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/DeliveryInfoDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/DeliveryInfoDto.java new file mode 100644 index 0000000..8991d36 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/DeliveryInfoDto.java @@ -0,0 +1,68 @@ +/* + * 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; + +/** + * `DeliveryInfoDto`类是一个数据传输对象(DTO),在电商系统的物流相关业务场景中发挥着重要作用, + * 主要用于在不同的业务组件或模块之间传递快递物流过程中的具体信息,以便实现诸如向用户展示物流详情、 + * 系统内部记录物流轨迹等功能,确保物流信息的传递清晰、规范且完整。 + + * @author lanhai + */ +@Data +public class DeliveryInfoDto { + + /** + * `context`属性用于承载快递物流的详细描述信息,这是一个非常关键的属性,涵盖了包裹运输过程中的诸多重要情况。 + * 例如,它可能包含包裹当前所处的具体状态,像“已揽收”表示快递员已经接收了包裹开始运输流程,“运输中”说明包裹正在运往目的地的途中, + * “派送中”意味着快递即将送到收件人手中,“已签收”则代表收件人已成功接收包裹等;同时还可能包含一些额外的详细说明, + * 比如“因恶劣天气原因,派送可能延迟”或者“包裹在中转站点进行分拣”之类的特殊情况备注。无论是在前端页面展示给用户查看, + * 还是在系统后台用于记录和分析物流状态,这个属性都提供了最为核心的文字描述内容。 + * 通过 `@Schema` 注解明确其描述为“详细信息”且标记为必填项(`required = true`),以此确保在物流信息传递过程中, + * 该关键的详细情况能够完整无误地传达,使得各方都能准确知晓快递的具体进展和相关特殊情况。 + */ + @Schema(description = "详细信息", required = true) + private String context; + + /** + * `ftime`属性用于存放快递预计送达时间相关的信息,其具体的表现形式和含义通常会依据系统的业务设定有所不同。 + * 它有可能是一个遵循特定日期时间格式(比如常见的 `yyyy-MM-dd HH:mm:ss`)的精确时间,表示预计包裹将会在这个时间点送达收件人处; + * 也可能是一种相对模糊但通俗易懂的时间范围描述,例如“明天上午”“后天下午”等,目的是为用户提供一个大致的心理预期, + * 方便用户提前安排好接收包裹的相关事宜。不过,与其他必填属性不同,该属性并非强制要求每次都必须提供具体值, + * 因为在某些情况下,物流信息可能暂时无法准确预估送达时间,所以可根据实际掌握的物流数据完整性来决定是否填充该属性内容。 + */ + private String ftime; + + /** + * `location`属性主要记录快递包裹当前所在的区域信息,这对于用户追踪包裹位置以及了解其运输路线具有重要意义。 + * 具体而言,它可以精确到城市、区县等地理范围,比如“北京市朝阳区”“上海市浦东新区”;也有可能进一步细化到具体的快递站点名称, + * 像“XX快递XX街道营业点”,或者是更宽泛一点的配送区域划分,例如“XX小区配送范围”等。通过明确快递所在的区域, + * 用户能够对包裹的大致地理位置有较为直观清晰的了解,从而更好地预估包裹到达自己手中的时间等情况。 + * 借助 `@Schema` 注解将其描述为“快递所在区域”并设定为必填项,确保在物流数据传递过程中, + * 始终能准确传达包裹的所在位置信息,方便展示给用户知晓其运输轨迹。 + */ + @Schema(description = "快递所在区域", required = true) + private String location; + + /** + * `time`属性用于记录物流信息的更新时间,通常采用标准的日期时间格式(如 `yyyy-MM-dd HH:mm:ss`)来准确表示。 + * 这个时间点明确了当前这条物流信息是在何时被记录或者更新的,其重要性体现在多个方面。对于用户来说, + * 可以依据更新时间判断所看到的物流信息是否是最新的,从而了解包裹运输状态的时效性;而在系统内部, + * 开发人员可以基于更新时间对物流数据进行排序、筛选等操作,以便更有序地管理和展示物流信息,或者进行数据分析等工作。 + * 通过 `@Schema` 注解标记为“物流更新时间”且设为必填项,保证了物流数据的及时性和准确性能够在各个业务环节得以准确体现, + * 维持整个物流信息管理的有序性和可靠性。 + */ + @Schema(description = "物流更新时间", required = true) + private String time; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/DiscountDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/DiscountDto.java new file mode 100644 index 0000000..a2f4b00 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/DiscountDto.java @@ -0,0 +1,67 @@ +/* + * 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; + +/** + * `DiscountDto`类是一个数据传输对象(DTO),用于在电商系统应用层的不同组件或模块之间传递与折扣(优惠)相关的信息。 + * 其主要目的是将涉及商品折扣、满减等优惠活动的各项数据进行整合封装,方便在诸如订单创建、订单金额计算(包含优惠金额计算)、 + * 优惠活动展示等业务操作中进行数据传递,使得数据交互更加清晰、规范,避免直接传递复杂或分散的底层数据结构, + * 提高不同业务层之间协作的效率以及代码的整体可读性。 + + * @author lanhai + */ +@Data +public class DiscountDto implements Serializable { + + /** + * 优惠活动的唯一标识符,用于在系统中精准定位某一个具体的优惠活动。 + * 通过这个 `discountId`,可以关联到优惠活动的详细信息,例如优惠活动的名称(如“满200减50”“8折优惠”等)、 + * 优惠活动的类型(是满减活动、折扣活动还是其他类型)、适用的商品范围(哪些商品可以参与该优惠)、 + * 活动的有效期限(开始时间和结束时间)以及其他相关的规则设定等关键属性, + * 在订单处理过程中,判断该优惠活动是否可用于当前订单以及计算具体优惠金额时,都需要依赖这个唯一标识来获取相应信息。 + */ + private Long discountId; + + /** + * 关联的订单的唯一标识符,即 `orderId`,用于明确该优惠活动是应用于哪一个具体的订单上。 + * 在电商系统中,一个优惠活动可能可以在多个订单中使用(前提是满足活动使用条件),同样,一个订单也可能会使用多个优惠活动, + * 通过这个 `orderId` 能够清晰地建立起优惠活动与订单之间的对应关系,便于后续业务逻辑围绕该订单进行优惠相关的处理, + * 比如统计该订单使用了哪些优惠活动、计算因优惠活动使用而减免的总金额等操作。 + */ + private Long orderId; + + /** + * 该优惠活动在当前订单中实际减免的金额数值,用 `discountAmount` 表示。 + * 在订单处理流程中,当确定某优惠活动可应用于当前订单后,需要根据活动的规则(如满减活动的满减金额设定、折扣活动的折扣比例等) + * 来计算出它在这个订单里具体能减免多少钱,这个属性就用于记录该实际减免的金额, + * 是计算订单最终应付金额、展示订单优惠明细等操作中重要的数据依据,能直观体现优惠活动给订单带来的优惠效果。 + */ + private Double discountAmount; + + /** + * 表示优惠活动在当前订单中的使用状态的标识,例如可以用布尔类型的 `isUsed` 属性来表示(`true` 表示已使用,`false` 表示未使用)。 + * 在整个订单生命周期内,优惠活动的使用状态可能会发生变化,例如用户最初选择参与某优惠活动,但后续又取消了选择, + * 或者由于某些条件不满足导致优惠活动无法使用等情况,通过这个属性可以清晰地反映出优惠活动当前是否已在该订单中被实际应用, + * 方便在业务逻辑中进行相应的判断和处理,确保订单与优惠活动之间的关联状态准确无误。 + */ + private boolean isUsed; + + /** + * 优惠活动的剩余可用次数(如果优惠活动有使用次数限制的话),用 `remainingUseTimes` 表示,通常为整数类型。 + * 对于一些有限次使用的优惠活动,每次在订单中成功使用后,剩余可用次数会相应减少, + * 这个属性用于记录当前优惠活动针对后续订单还能被使用的次数,在判断优惠活动是否还能继续在其他订单中使用等业务逻辑中起着关键作用, + * 有助于合理控制优惠活动的使用频率,遵循其预先设定的使用规则。 + */ + private Integer remainingUseTimes; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/IndexImgDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/IndexImgDto.java new file mode 100644 index 0000000..106280b --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/IndexImgDto.java @@ -0,0 +1,81 @@ +/* + * 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; +import java.util.Date; + +/** + * `IndexImgDto`类是一个数据传输对象(DTO),主要用于在电商系统应用层不同组件或模块之间传递首页图片相关的信息。 + * 其作用是将首页图片的关键数据进行整合封装,使得在诸如首页图片展示配置、图片数据获取与传递等业务场景下, + * 数据的交互更加清晰、规范且符合业务需求,便于不同业务部分基于这些信息进行相应的操作,例如按照指定顺序展示图片、 + * 根据类型筛选图片、依据关联ID查找相关联的其他业务对象等。 + + * @author lanhai + */ +@Schema(description = "首页图片对象") +@Data +public class IndexImgDto { + + /** + * `imgUrl`属性用于存放首页图片的网络地址或者在系统中的存储路径等信息,具体取决于系统的图片存储和访问方式。 + * 例如在使用云存储服务时,可能是该图片在云存储中的完整URL地址;若是本地存储,则可能是相对系统根目录的文件路径。 + * 这个属性是展示首页图片的关键数据,前端页面通过获取该 `imgUrl` 来准确显示对应的图片内容。 + * 同时,借助 `@JsonSerialize(using = ImgJsonSerializer.class)` 注解,在将该类对象转换为JSON格式数据(如接口返回数据给前端时), + * 会使用自定义的序列化器对这个属性进行特殊处理,可能是对图片路径进行格式调整、添加域名等操作,使其符合前端展示或者与其他系统交互的要求。 + * 通过 `@Schema` 注解明确其描述为“图片Url”且标记为必填项(`required = true`),确保在数据传递过程中该图片地址信息的完整性, + * 以便顺利实现图片展示功能。 + */ + @JsonSerialize(using = ImgJsonSerializer.class) + @Schema(description = "图片Url", required = true) + private String imgUrl; + + /** + * `seq`属性代表首页图片的展示顺序,通常为整数类型,用于确定在首页展示图片时各个图片的先后排列次序。 + * 可以按照业务需求设定相应的排序规则,比如较小的数值在前、较大的数值在后等,通过调整不同图片的 `seq` 值, + * 能够灵活地改变首页图片的展示顺序,实现对首页展示效果的个性化定制和优化。 + * 通过 `@Schema` 注解将其描述为“图片顺序”并设定为必填项,保证在传递首页图片相关数据时,展示顺序信息不会缺失, + * 便于前端或其他业务模块按照正确的顺序展示图片。 + */ + @Schema(description = "图片顺序", required = true) + private Integer seq; + + /** + * `uploadTime`属性记录的是首页图片的上传时间,以 `Date` 类型存储,格式一般遵循系统默认的时间格式(例如 `yyyy-MM-dd HH:mm:ss`)。 + * 它在业务中有多方面的作用,比如可以用于数据的溯源,方便查看不同时间段内首页图片的更新情况;也能用于统计分析, + * 了解图片的上传频率等信息。通过 `@Schema` 注解标记其描述为“上传时间”且设为必填项,确保在图片数据传递过程中, + * 上传时间信息能够准确传达,有助于进行相关的数据管理和业务操作。 + */ + @Schema(description = "上传时间", required = true) + private Date uploadTime; + + /** + * `type`属性用于区分首页图片的类型,一般通过不同的整数值来对应不同的图片分类。 + * 例如,可以设定 `1` 表示商品推荐图片,`2` 表示活动宣传图片,`3` 表示店铺形象展示图片等。 + * 通过这种分类方式,在业务逻辑中能够针对不同类型的图片进行差异化的处理和展示,比如不同类型图片展示在首页的不同位置、 + * 采用不同的展示样式等,也便于进行分类管理和统计分析等操作。 + * 通过 `@Schema` 注解明确其描述为“类型”且设为必填项,保证传递图片数据时类型信息的完整性,便于后续根据类型进行相应的业务处理。 + */ + @Schema(description = "类型", required = true) + private int type; + + /** + * `relation`属性用于存放与首页图片相关联的其他数据的唯一标识符,比如可能关联到某个商品的 `id`、某个活动的 `id` 等, + * 其具体含义取决于业务场景中图片与其他实体的关联关系设定。通过这个属性可以建立起图片与其他业务对象之间的联系, + * 在进行相关业务操作时,例如根据图片查找关联商品、获取关联活动详情等,就可以依据这个 `relation` 值来获取对应的关联数据。 + * 通过 `@Schema` 注解将其描述为“关联id”并设为必填项,确保在传递图片信息时,关联ID信息准确无误,方便后续基于关联关系开展业务操作。 + */ + @Schema(description = "关联id", required = true) + private Long relation; +} \ No newline at end of file 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 diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/NoticeDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/NoticeDto.java new file mode 100644 index 0000000..8f6c00e --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/NoticeDto.java @@ -0,0 +1,71 @@ +/* + * 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.Date; + +/** + * `NoticeDto`类是一个数据传输对象(DTO),主要用于在电商系统应用层不同组件或模块之间传递公告相关的信息。 + * 其作用是将公告的关键数据进行整合封装,方便在诸如公告发布、公告查询、公告展示等业务场景下进行数据传递, + * 使得数据交互更加清晰、规范且符合业务需求,便于不同业务部分基于这些信息进行相应的操作,例如向用户展示具体公告内容、 + * 后台管理系统对公告进行分类管理等。 + + * @author lanhai + */ +@Schema(description = "公告对象") +@Data +public class NoticeDto { + + /** + * `id`属性用于存放公告的唯一标识符,也就是公告在系统中的ID值,通常为一个Long类型的数字。 + * 这个ID能够在整个系统中精准地定位到某一条具体的公告记录,方便进行数据的管理操作,比如对公告进行更新、删除、 + * 查询其详细属性等操作时,都依赖这个唯一标识来确保操作的准确性和针对性。通过 `@Schema` 注解明确其描述为“公告id”, + * 虽然它在当前设定下并非必填项,但在系统数据管理以及后续可能的功能扩展中,这个ID有着重要的标识作用, + * 有助于区分不同的公告内容,保证数据的唯一性和可追溯性。 + */ + @Schema(description = "公告id") + private Long id; + + /** + * `shopId`属性用于标识该公告所属的店铺ID,在多店铺的电商平台模式下,不同店铺可能会发布各自的公告信息, + * 通过这个属性可以明确公告是与哪个店铺相关联,进而在展示公告时能够按照店铺进行区分和筛选, + * 同时在涉及店铺相关的公告管理操作(如店铺自行发布、修改、删除自己的公告等)时,也依靠这个ID来确定操作对象。 + */ + @Schema(description = "店铺id") + private Long shopId; + + /** + * `title`属性代表公告的标题,通常是一个简短且能够直观体现公告主题的字符串。 + * 例如在电商系统中,可能是“店铺周年庆活动公告”“商品上新通知”等类似的文字表述,它是用户在查看公告列表或者页面展示公告时, + * 首先看到的关键内容,用于吸引用户的注意力,让用户快速了解公告大致的主题,进而决定是否进一步查看公告的详细内容。 + */ + @Schema(description = "标题") + private String title; + + /** + * `content`属性用于存储公告的具体内容信息,它包含了要传达给用户或者相关人员的详细文字描述, + * 比如对于“店铺周年庆活动公告”这个标题,内容里可能会详细介绍活动的时间、参与方式、优惠内容等具体情况; + * 对于“商品上新通知”的公告,内容中则可能会列出上新的商品名称、特点、价格等信息,是公告的核心组成部分, + * 承载着实际要传递的消息,方便用户全面了解公告所涉及的相关事宜。 + */ + @Schema(description = "公告内容") + private String content; + + /** + * `publishTime`属性记录的是公告的发布时间,以 `Date` 类型存储,格式一般遵循系统默认的时间格式(例如 `yyyy-MM-dd HH:mm:ss`)。 + * 它可以用于数据的溯源、统计分析等操作,比如查看不同时间段内店铺发布了哪些公告、了解公告的发布频率等业务场景中会用到该时间信息, + * 同时也能让用户知晓公告的时效性,判断公告内容是否还在有效期内或者是否是最新发布的内容等。 + */ + @Schema(description = "公告发布时间") + private Date publishTime; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/AddrParam.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/AddrParam.java new file mode 100644 index 0000000..8b3bb5b --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/AddrParam.java @@ -0,0 +1,189 @@ +package com.yami.shop.bean.app.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; + +/** + * AddrParam类用于封装与地址相关的参数信息,在应用层(app)传递地址相关的数据时使用。 + * 此类中的各个属性对应地址的不同组成部分,并且通过相关注解进行了验证约束和描述说明,方便数据的校验与接口文档生成。 + * + * @author lanhai + */ +@Schema(description = "地址参数") +public class AddrParam { + + /** + * 地址的唯一标识符,用于在系统中区分不同的地址记录。 + * 通过 @Schema 注解描述该属性在接口文档中的相关信息,设置为必填项(required=true)。 + */ + @Schema(description = "地址ID", required = true) + private Long addrId; + + /** + * 收货人的姓名,是地址信息中重要的一部分,不能为空,通过 @NotNull 注解进行验证约束, + * 同时使用 @Schema 注解在接口文档中进行相应描述,且设置为必填项。 + */ + @NotNull(message = "收货人不能为空") + @Schema(description = "收货人", required = true) + private String receiver; + + /** + * 详细的地址内容,例如街道名称、门牌号等具体的收货地址信息,不能为空, + * 利用 @NotNull 约束验证,通过 @Schema 注解在接口文档中说明,设置为必填项。 + */ + @NotNull(message = "地址不能为空") + @Schema(description = "地址", required = true) + private String addr; + + /** + * 地址对应的邮编信息,该属性为可选填项(required=false),通过 @Schema 注解在接口文档中体现其属性描述。 + */ + @Schema(description = "邮编", required = false) + private String postCode; + + /** + * 收货人联系用的手机号码,是确保能联系到收货人的关键信息,不能为空, + * 使用 @NotNull 进行约束,借助 @Schema 注解在接口文档里标记为必填项并描述。 + */ + @NotNull(message = "手机不能为空") + @Schema(description = "手机", required = true) + private String mobile; + + /** + * 省份的唯一标识符,用于关联对应的省份信息,不能为空, + * 以 @NotNull 做验证,通过 @Schema 注解在接口文档中表明为必填项并描述其用途。 + */ + @NotNull(message = "省ID不能为空") + @Schema(description = "省ID", required = true) + private Long provinceId; + + /** + * 城市的唯一标识符,用于准确关联到具体的城市信息,不能为空, + * 借助 @NotNull 约束验证,利用 @Schema 注解在接口文档里设置为必填项并描述相关情况。 + */ + @NotNull(message = "城市ID不能为空") + @Schema(description = "城市ID", required = true) + private Long cityId; + + /** + * 区(县等)的唯一标识符,用于精确到具体的区(县等)级别的地域信息,不能为空, + * 通过 @NotNull 进行验证,使用 @Schema 注解在接口文档中标记为必填项并给出相应说明。 + */ + @NotNull(message = "区ID不能为空") + @Schema(description = "区ID", required = true) + private Long areaId; + + /** + * 省份的名称,以字符串形式表示具体的省份,不能为空, + * 通过 @NotNull 约束,配合 @Schema 注解在接口文档里设置为必填项并描述其含义。 + */ + @NotNull(message = "省不能为空") + @Schema(description = "省", required = true) + private String province; + + /** + * 城市的名称,用于明确具体的城市称呼,不能为空, + * 以 @NotNull 进行验证,通过 @Schema 注解在接口文档中设置为必填项并说明情况。 + */ + @NotNull(message = "城市不能为空") + @Schema(description = "城市", required = true) + private String city; + + /** + * 区(县等)的名称,具体指出所在的区(县等)的名称,不能为空, + * 通过 @NotNull 约束验证,利用 @Schema 注解在接口文档里标记为必填项并加以说明。 + */ + @NotNull(message = "区不能为空") + @Schema(description = "区", required = true) + private String area; + + // 以下是各个属性的Getter和Setter方法,用于获取和设置对应属性的值 + + public Long getAddrId() { + return addrId; + } + + public void setAddrId(Long addrId) { + this.addrId = addrId; + } + + public String getReceiver() { + return receiver; + } + + public void setReceiver(String receiver) { + this.receiver = receiver; + } + + public String getAddr() { + return addr; + } + + public void setAddr(String addr) { + this.addr = addr; + } + + public String getPostCode() { + return postCode; + } + + public void setPostCode(String postCode) { + this.postCode = postCode; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public Long getProvinceId() { + return provinceId; + } + + public void setProvinceId(Long provinceId) { + this.provinceId = provinceId; + } + + public Long getCityId() { + return cityId; + } + + public void setCityId(Long cityId) { + this.cityId = cityId; + } + + public Long getAreaId() { + return areaId; + } + + public void setAreaId(Long areaId) { + this.areaId = areaId; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } +} \ 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/app/param/LoginParam.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/LoginParam.java new file mode 100644 index 0000000..14f2dda --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/app/param/LoginParam.java @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.app.param; + +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * `LoginParam`类是一个用于接收用户登录相关操作参数的数据对象,在电商系统用户登录的业务逻辑处理中起着关键作用。 + * 它主要用于在前端与后端进行交互时,承载用户发起登录操作时所需的各项必要数据信息,以便后端能够依据这些参数准确地执行相应的业务逻辑, + * 比如验证登录信息的合法性、根据不同的登录方式(小程序登录或账号密码登录)进行对应的身份验证等操作。 + + * @author lanhai + */ +@Schema(description = "登陆参数") +public class LoginParam { + + /** + * `code`属性用于存储小程序登录时返回的 `code` 值。在小程序登录的流程中,用户授权登录后,小程序会向微信等平台获取一个临时的 `code`, + * 这个 `code` 会被传递到后端服务器,后端再凭借该 `code` 向对应的平台(如微信开放平台)发起请求,换取用户的相关信息(如唯一标识等), + * 进而完成登录验证操作。通过 `@Schema` 注解明确其描述为“小程序登陆时返回的 `code`(使用 `code` 登陆必填)”, + * 并标记为必填项(`required = true`),以此确保在用户选择小程序登录方式时,前端必须传递这个关键的 `code` 参数给后端, + * 保证登录流程能够顺利进行,避免因缺少必要参数而导致登录失败。 + */ + @Schema(description = "小程序登陆时返回的code(使用code登陆必填)", required = true) + private String code; + + /** + * `mobile`属性用于存放用户登录时的用户名信息,在采用账号密码登录方式时,这里通常指的是用户的手机号码。 + * 手机号码作为常见的账号形式,方便用户记忆且具有唯一性,后端系统会依据这个手机号码去数据库等存储介质中查找对应的用户记录, + * 并与后续传入的密码进行匹配验证,以确认用户身份的合法性。通过 `@Schema` 注解将其描述为“登陆时的用户名(账号密码登陆必填)”, + * 同时设为必填项,告知接口调用者在使用账号密码登录时必须提供有效的手机号码作为用户名,保障登录验证过程有准确的账号依据。 + */ + @Schema(description = "登陆时的用户名(账号密码登陆必填)", required = true) + private String mobile; + + /** + * `password`属性用于存储用户登录时输入的密码信息,在账号密码登录模式下,它与前面的 `mobile` 属性一同作为验证用户身份的关键要素。 + * 用户输入的密码会与后端存储的已加密的密码(出于安全考虑,通常会对密码进行加密存储)进行比对,只有两者匹配时, + * 才会认定用户登录成功。借助 `@Schema` 注解明确其描述为“登陆时的密码(账号密码登陆必填)”,并标记为必填项, + * 强制要求接口调用者在使用账号密码登录方式时必须提供正确的密码,确保登录操作的安全性和准确性。 + */ + @Schema(description = "登陆时的密码(账号密码登陆必填)", required = true) + private String password; + + /** + * `getCode`方法是一个标准的JavaBean风格的访问器方法(Getter方法),用于获取 `code` 属性的值。 + * 在其他类需要访问本类中存储的小程序登录 `code` 参数信息时,可以通过调用这个方法来获取相应的值,遵循了面向对象编程中封装的原则, + * 对属性的访问进行了一定的控制,保证数据获取的规范性和安全性。 + */ + public String getCode() { + return code; + } + + /** + * `setCode`方法是与 `getCode` 对应的修改器方法(Setter方法),用于设置 `code` 属性的值。 + * 当外部需要更新本类中存储的小程序登录 `code` 信息时,可以通过调用这个方法并传入新的字符串值来实现属性值的修改, + * 同样也是遵循JavaBean规范,方便对属性进行赋值操作,同时在方法内部可以添加一些额外的逻辑(如数据验证等)来保障数据的合法性。 + */ + public void setCode(String code) { + this.code = code; + } + + /** + * `getMobile`方法是用于获取 `mobile` 属性值的Getter方法,其作用与 `getCode` 类似, + * 为外部类提供了获取用户名(手机号码)信息的途径,使得其他部分的代码可以按照规范的方式获取该属性存储的内容,便于后续基于用户名进行相关操作。 + */ + public String getMobile() { + return mobile; + } + + /** + * `setMobile`方法是对应 `getMobile` 的Setter方法,用于设置 `mobile` 属性的值, + * 当需要更新用户名(手机号码)信息时,外部代码可以调用这个方法传入新的字符串值来改变属性的存储内容, + * 并且可以在方法内部根据业务需求添加必要的数据校验等逻辑,确保设置的手机号码符合要求。 + */ + public void setMobile(String mobile) { + this.mobile = mobile; + } + + /** + * `getPassword`方法是获取 `password` 属性值的Getter方法,通过调用它, + * 其他类能够获取到本类中存储的密码信息,方便在后续的业务逻辑中,例如密码验证等操作中使用该密码作为关键的比对依据, + * 确保业务操作围绕准确的登录密码展开。 + */ + public String getPassword() { + return password; + } + + /** + * `setPassword`方法是用于设置 `password` 属性值的Setter方法,当需要更新密码信息时(例如用户修改密码等情况), + * 外部代码可以调用这个方法传入新的字符串值来改变其存储内容,同样也可以在方法内部添加适当的数据验证逻辑,保障密码的合法性和安全性。 + */ + public void setPassword(String password) { + this.password = password; + } +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/dto/HotSearchDto.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/dto/HotSearchDto.java new file mode 100644 index 0000000..8f5d2d1 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/dto/HotSearchDto.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import java.io.Serializable; + +/** + * `HotSearchDto`类是一个数据传输对象(DTO),主要用于在电商系统应用层不同组件或模块之间传递热搜相关的数据信息。 + * 其作用是将与热搜有关的关键数据进行整合封装,方便在诸如搜索功能模块、页面展示等业务场景下进行数据传递, + * 使得数据的交互更加清晰、规范且符合业务需求,便于不同业务部分基于这些信息进行相应的操作,例如展示热门搜索词条、 + * 根据热搜进行相关商品推荐等。 + + * @author lanhai + */ +@Schema(description = "热搜数据") +@Data +public class HotSearchDto implements Serializable { + + /** + * `hotSearchId`属性用于存放热搜的唯一标识符,也就是热搜在系统中的ID值,通常为一个Long类型的数字。 + * 这个ID能够在整个系统中精准地定位到某一条具体的热搜记录,方便进行数据的管理操作,比如对热搜词条进行更新、删除、 + * 查询其详细属性等操作时,都依赖这个唯一标识来确保操作的准确性和针对性。通过 `@Schema` 注解明确其描述为“热搜id”, + * 虽然它在当前设定下并非必填项,但在系统数据管理以及后续可能的功能扩展中,这个ID有着重要的标识作用, + * 有助于区分不同的热搜内容,保证数据的唯一性和可追溯性。 + */ + @Schema(description = "热搜id") + private Long hotSearchId; + + /** + * `title`属性代表热搜的标题,通常是一个简短且能够直观体现用户搜索意图或者热门搜索主题的字符串。 + * 例如在电商系统中,可能是“夏季连衣裙”“智能手机推荐”等类似的文字表述,它是用户在搜索界面看到的热搜词条的主要展示内容, + * 用于吸引用户点击并进行相应的搜索操作,进而查看与该标题相关的商品、内容等信息。通过 `@Schema` 注解将其描述为“标题”, + * 方便在API文档(如使用Swagger等工具生成时)或者代码注释中清晰地表明该属性的含义,便于开发人员理解和使用。 + */ + @Schema(description = "标题") + private String title; + + /** + * `content`属性用于存储与热搜相关的具体内容信息,其具体形式和含义可以根据业务场景有所不同。 + * 在一些情况下,它可能是对热搜标题更详细的补充说明,比如对于“夏季连衣裙”这个热搜标题,内容里可能会包含一些流行款式、 + * 热门颜色等相关介绍;也有可能是关联到该热搜词条下的一些关键商品信息、推荐理由等内容,方便在用户点击热搜词条后, + * 展示更丰富、有价值的信息供用户参考。通过 `@Schema` 注解标记其为“内容”,明确该属性在整个 `HotSearchDto` 类中所承载的数据含义, + * 便于在不同业务环节准确运用该属性所存储的信息。 + */ + @Schema(description = "内容") + private String content; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/enums/AreaLevelEnum.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/enums/AreaLevelEnum.java new file mode 100644 index 0000000..971d261 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/enums/AreaLevelEnum.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.enums; + +/** + * AreaLevelEnum 是一个枚举类,用于定义地区层级相关的常量值,方便在系统中统一表示和区分不同层级的地区, + * 例如省级、市级、区(县)级等不同层级可以对应此枚举中的不同常量,使得代码在处理地区层级相关逻辑时更加清晰和规范。 + * + * @author cl + */ +public enum AreaLevelEnum { + + /** + * FIRST_LEVEL 代表地区层级中的第一层,通常可以用于表示最高层级的地区,比如省级地区, + * 其对应的整数值为 1,在数据库存储或者业务逻辑判断地区层级时可以依据此值进行相关操作。 + */ + FIRST_LEVEL(1), + + /** + * SECOND_LEVEL 表示地区层级中的第二层,一般可以对应市级地区, + * 其整数值为 2,方便在构建地区层级关系以及相关业务处理中识别和区分该层级的地区。 + */ + SECOND_LEVEL(2), + + /** + * THIRD_LEVEL 指代地区层级中的第三层,常见用于表示区(县)级等更细化的地区层级, + * 对应的数值是 3,有助于在涉及地区层级相关的查询、展示等功能中准确判断和处理相应层级的地区信息。 + */ + THIRD_LEVEL(3) + + ; + + /** + * 用于存储每个枚举常量对应的整数值,该值可以用于在业务逻辑中与数据库中的地区层级字段值进行对比等操作, + * 以此来确定地区所处的具体层级情况。 + */ + private Integer num; + + /** + * 获取当前枚举常量对应的整数值的方法,外部代码可以通过调用此方法获取具体的数值, + * 便于在各种业务场景下(如数据存储、层级判断等)使用该数值进行后续操作。 + * + * @return 当前枚举常量对应的整数值 + */ + public Integer value() { + return num; + } + + /** + * 枚举类的构造方法,用于初始化每个枚举常量对应的整数值,在定义枚举常量时传入相应的整数值进行赋值, + * 确保每个枚举常量都有与之对应的表示地区层级的数值。 + * + * @param num 用于表示地区层级的整数值 + */ + AreaLevelEnum(Integer num) { + this.num = num; + } + + /** + * 根据传入的整数值查找对应的 AreaLevelEnum 枚举常量的静态方法, + * 在业务逻辑中如果已知地区层级的数值表示,可通过调用此方法获取对应的枚举常量, + * 方便进行基于枚举的后续操作,比如根据层级进行不同的业务处理逻辑分支等。 + * 如果传入的数值没有对应的枚举常量匹配,则返回 null。 + * + * @param value 表示地区层级的整数值 + * @return 对应的 AreaLevelEnum 枚举常量,如果不存在匹配则返回 null + */ + public static AreaLevelEnum instance(Integer value) { + AreaLevelEnum[] enums = values(); + for (AreaLevelEnum statusEnum : enums) { + if (statusEnum.value().equals(value)) { + return statusEnum; + } + } + return null; + } +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/enums/MessageStatus.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/enums/MessageStatus.java new file mode 100644 index 0000000..019daeb --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/enums/MessageStatus.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.enums; + +/** + * `MessageStatus`枚举类用于定义消息状态相关的常量值,在电商系统或者其他涉及消息处理的业务场景中, + * 可以通过这些明确的枚举值来清晰地表示消息所处的不同状态,方便在业务逻辑中进行判断、处理以及数据存储等操作, + * 使得代码对于消息状态的处理更加规范、易读且不容易出现歧义。 + + * @author lanhai + */ +public enum MessageStatus { + + /** + * `CANCEL`枚举值表示消息被取消的状态,对应的整数值为 `0`。 + * 在实际业务场景中,例如用户手动取消了某个消息提醒,或者系统根据一定规则判定某个消息不再需要展示、处理时, + * 可以将消息的状态设置为 `CANCEL`,通过这个枚举值来清晰地传达消息已经处于取消状态这一信息, + * 方便后续业务逻辑根据此状态进行相应的操作,比如不再推送该消息、在消息列表中隐藏该条消息等。 + */ + CANCEL(0), + + /** + * `RELEASE`枚举值代表消息已发布的状态,其对应整数值为 `1`。 + * 当一条消息经过相关流程创建完成并且可以对外展示、推送或者供用户查看时, + * 其状态就可以设置为 `RELEASE`,意味着该消息处于正常有效的发布状态,在业务逻辑里, + * 例如消息推送服务会根据这个状态来决定是否将消息发送给对应的用户,前端页面也会依据此状态来展示相应的消息内容等。 + */ + RELEASE(1); + + /** + * `num`属性用于存储每个枚举值对应的整数值,通过这种方式建立起枚举值与具体数值的映射关系, + * 在需要将枚举值转换为对应的数字进行存储(比如存储到数据库中)或者在不同模块间传递以数字形式表示的状态信息时会用到, + * 使得可以用统一的数字规则来表示不同的消息状态,便于系统进行数据处理和交互。 + */ + private Integer num; + + /** + * `value`方法用于获取当前枚举值对应的整数值,它提供了一种外部访问 `num` 属性的途径, + * 在其他类需要知晓某个 `MessageStatus` 枚举值具体对应的数字时,可以通过调用这个方法来获取相应的值, + * 遵循了面向对象编程中对数据访问进行封装控制的原则,保证了数据获取的规范性和安全性。 + */ + public Integer value() { + return num; + } + + /** + * 构造方法用于初始化每个枚举值对应的整数值,在定义枚举常量(如 `CANCEL(0)` 和 `RELEASE(1)`)时会调用此构造方法, + * 将传入的整数值赋给 `num` 属性,建立起枚举常量和对应数值之间的关联,确保每个枚举值都有正确的数值与之对应, + * 以便后续通过 `value` 方法等进行准确的数值获取操作。 + */ + MessageStatus(Integer num) { + this.num = num; + } +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/event/CancelOrderEvent.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/event/CancelOrderEvent.java new file mode 100644 index 0000000..f404be6 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/event/CancelOrderEvent.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +// 包声明,表明该类所在的包名,这里定义在com.yami.shop.bean.event包下, +// 按照Java的包结构规范,通常用于对相关类进行组织和分类管理,方便代码的模块化开发和维护。 +package com.yami.shop.bean.event; + +// 导入Order类,因为在本类中会使用到Order类型的变量,通过导入对应的类, +// 才能在代码中正确地引用和操作该类型,此处表示从com.yami.shop.bean.model包中引入Order类。 +import com.yami.shop.bean.model.Order; +// Lombok注解,用于自动生成包含所有参数的构造函数, +// 这样在创建CancelOrderEvent类的实例时,可以方便地通过传入相应参数来初始化对象。 +import lombok.AllArgsConstructor; +// Lombok注解,用于自动生成类的getter、setter方法以及其他一些常用的方法(如toString等), +// 减少了手动编写这些重复代码的工作量,提高代码的简洁性和开发效率。 +import lombok.Data; + +// 类的文档注释,简要描述了该类的作用,即表示取消订单的事件。 +// 这种注释有助于其他开发人员快速理解该类在整个业务逻辑中的用途。 +/** + * 取消订单的事件 + * @author + */ +// 使用@Data注解,让Lombok自动为该类生成相关的方法,如getter、setter等。 +// 使用@AllArgsConstructor注解,让Lombok自动生成包含所有参数的构造函数。 +@Data +@AllArgsConstructor +// 定义CancelOrderEvent类,用于表示取消订单这一业务事件相关的信息, +// 通常在基于事件驱动的架构中,此类可以作为事件对象在不同组件之间传递相关的业务数据。 +public class CancelOrderEvent { + + // 定义一个私有成员变量order,类型为Order,用于存储被取消的订单相关的详细信息, + // 比如订单编号、下单用户、商品明细、订单金额等内容,方便在事件传递过程中获取和处理订单相关的数据。 + private Order order; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/event/ConfirmOrderEvent.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/event/ConfirmOrderEvent.java new file mode 100644 index 0000000..6d17771 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/event/ConfirmOrderEvent.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.event; + +import com.yami.shop.bean.app.dto.ShopCartDto; +import com.yami.shop.bean.app.dto.ShopCartItemDto; +import com.yami.shop.bean.app.dto.ShopCartOrderDto; +import com.yami.shop.bean.app.dto.ShopCartOrderMergerDto; +import com.yami.shop.bean.app.param.OrderParam; +import lombok.AllArgsConstructor; +import lombok.Data; +import java.util.List; + +/** + * `ConfirmOrderEvent`类是一个用于封装确认订单相关业务信息的事件类,它遵循领域驱动设计(DDD)中领域事件的概念, + * 在电商系统等涉及订单处理的业务场景中发挥着重要作用。当用户进行确认订单操作时,会触发该事件, + * 该类的实例对象会承载确认订单这一时刻所涉及的关键数据信息,并在不同的业务组件或模块之间传递, + * 使得其他关注确认订单事件的部分能够基于这些数据进行相应的业务逻辑处理,比如订单金额计算、库存扣减、 + * 订单记录保存等后续操作,确保整个订单确认流程的准确与完整。 + + * @author LGH + */ +@Data +@AllArgsConstructor +public class ConfirmOrderEvent { + + /** + * `shopCartOrderDto`属性用于存放购物车已经组装好的店铺订单信息。 + * 在电商购物流程中,用户将商品加入购物车后,当准备确认订单时,系统会根据购物车中的商品、店铺等信息, + * 按照一定规则(例如按照不同店铺进行订单拆分、合并等)组装出每个店铺对应的订单信息, + * 这个 `ShopCartOrderDto` 对象就包含了诸如店铺的基本信息(店铺名称、店铺ID等)、 + * 该店铺下所有商品的汇总信息(商品总价、商品总数量等)以及其他与店铺订单相关的必要数据, + * 方便后续在确认订单阶段基于店铺维度进行进一步的业务处理,比如计算店铺优惠、生成店铺订单详情等操作。 + */ + private ShopCartOrderDto shopCartOrderDto; + + /** + * `orderParam`属性承载了下单请求的各项参数信息。 + * 这些参数通常是由用户在前端界面填写或者系统根据默认规则生成的,例如用户的收货地址、联系人姓名、 + * 联系电话、选择的支付方式等关键信息,它们对于生成完整准确的订单记录至关重要, + * 后续的订单创建、保存以及与第三方支付平台交互(如果涉及)等业务逻辑都会依赖这些参数进行相应操作, + * 确保订单能够按照用户期望的方式被处理和执行。 + */ + private OrderParam orderParam; + + /** + * `shopCartItems`属性是一个列表,用于存储店铺中的所有商品项信息,每个元素是 `ShopCartItemDto` 类型。 + * 在确认订单阶段,需要详细了解购物车中每个具体商品的详细情况,包括商品的具体规格(通过对应的SKU信息体现)、 + * 商品单价、购买数量以及商品在购物车中的唯一标识等信息,这个列表就完整地记录了这些商品项的详细数据, + * 方便在后续业务逻辑中,例如计算每个商品的实际金额、更新商品库存、生成订单商品明细等操作时使用, + * 确保订单中商品相关信息的准确性和完整性。 + */ + private List shopCartItems; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Area.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Area.java new file mode 100644 index 0000000..6a2a9bc --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Area.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * Area类用于表示地区相关的实体信息,对应数据库中的"tz_area"表结构, + * 通过使用MyBatis Plus的相关注解来映射数据库表字段,同时利用Lombok的 @Data 注解简化了实体类的Getter、Setter等方法的编写。 + * 此类主要用于在系统中传递、操作和存储地区相关的数据,比如地区的基本信息以及其下级地区列表等情况。 + * + * @author lanhai + */ +@Data +@TableName("tz_area") // 表明该实体类对应的数据库表名称为"tz_area",方便MyBatis Plus进行数据库操作时的表关联映射 +public class Area implements Serializable { + private static final long serialVersionUID = -6013320537436191451L; + + /** + * 地区的唯一标识符,通过 @TableId 注解标记其为数据库表中的主键字段, + * 利用 @Schema 注解描述该属性在接口文档中的相关信息,设置为必填项(required=true),用于在系统中唯一标识一个地区记录。 + */ + @TableId + @Schema(description = "地区id", required = true) + private Long areaId; + + /** + * 地区的名称,用于直观展示地区的称呼,通过 @Schema 注解在接口文档中进行相应描述,且设置为必填项, + * 比如可以是省份名称、城市名称或者区(县)名称等具体的地区称谓。 + */ + @Schema(description = "地区名称", required = true) + private String areaName; + + /** + * 地区的上级地区的唯一标识符,用于构建地区之间的层级关系,即指明当前地区隶属于哪个上级地区, + * 通过 @Schema 注解在接口文档中表明其为必填项,方便在查询地区层级结构等操作时进行关联查找。 + */ + @Schema(description = "地区上级id", required = true) + private Long parentId; + + /** + * 地区所处的层级,例如省级可以是1级,市级可以是2级,区(县)级可以是3级等, + * 通过 @Schema 注解在接口文档里设置为必填项并描述其用途,用于清晰地体现地区在整个地域层级体系中的位置。 + */ + @Schema(description = "地区层级", required = true) + private Integer level; + + /** + * 该字段用于存储当前地区的下级地区列表,通过 @TableField(exist=false) 注解表示此属性并非数据库表中的实际字段, + * 而是在业务逻辑处理过程中,用于临时存放其下级地区信息,比如在构建地区树形结构等操作时会使用到,方便进行层级关联展示等功能。 + */ + @TableField(exist = false) + private List areas; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/AttachFile.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/AttachFile.java new file mode 100644 index 0000000..f1852d0 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/AttachFile.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2018 - 2999 广州市蓝海创新科技有限公司 All rights reserved. + * 版权声明部分,表明该代码文件的版权归属为广州市蓝海创新科技有限公司,版权有效期从2018年至2999年。 + * + * https://www.mall4j.com/ + * 给出了公司相关的网址,可能用于更多信息查询等用途。 + * + * 未经允许,不可做商业用途! + * 强调此代码未经公司许可,不能用于商业方面的使用场景,旨在保护版权所有者的权益。 + * + * 版权所有,侵权必究! + * 明确声明若存在侵犯该代码版权的行为,公司将依法追究责任。 + */ + +package com.yami.shop.bean.model; +// 声明该类所属的包名,用于在项目的代码组织结构中对类进行分类管理,方便代码的组织、查找以及不同模块间的引用。 + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +// 引入MyBatis Plus相关注解和Lombok的Data注解,用于简化代码编写以及实现实体类与数据库表的映射等功能。 + +import java.io.Serializable; +import java.util.Date; +// 引入Java标准库中的接口和类,Serializable接口用于标记该类对象可以被序列化,方便在网络传输、存储等场景下进行对象状态的保存和恢复;Date类用于处理日期相关的数据。 + +/** + * @author lanhai + * 类的作者信息,此处表明该类是由名为lanhai的开发者编写。 + */ +@Data +// Lombok的@Data注解,它会自动为类生成常用的方法,包括所有成员变量的getter和setter方法、toString方法、equals方法以及hashCode方法等,极大地减少了手动编写这些重复代码的工作量,使代码更加简洁。 +@TableName("tz_attach_file") +// MyBatis Plus的@TableName注解,用于将当前的实体类与数据库中的具体表进行映射关联,这里表明AttachFile类对应数据库中的"tz_attach_file"表,方便后续进行数据库操作时框架能够准确地知道操作的数据来源和目标表。 +public class AttachFile implements Serializable { + // 定义一个名为AttachFile的公共类,它实现了Serializable接口,意味着该类的实例对象能够进行序列化操作,比如可以保存到文件、在网络间传输等场景中使用。 + + @TableId + // MyBatis Plus的@TableId注解,用于标识该成员变量对应的是数据库表中的主键字段,在数据库操作(如查询、更新、删除等)中,主键是用于唯一标识每条记录的关键属性。 + private Long fileId; + // 定义一个名为fileId的私有成员变量,类型为Long,用于存储文件在系统中的唯一标识符,通常对应数据库表中主键列的值,通过它可以准确地定位和操作某一条具体的文件相关记录。 + + /** + * 文件路径 + * 对成员变量filePath的功能描述,说明该变量用于存储文件在存储系统中的具体路径信息,例如在文件系统中的绝对路径或者相对路径等,通过这个路径可以找到对应的物理文件进行读取、写入等操作。 + */ + private String filePath; + // 定义一个名为filePath的私有成员变量,类型为String,用于记录文件的存储路径。 + + /** + * 文件类型 + * 此注释说明该成员变量fileType的用途是保存文件的类型信息,常见的文件类型如"txt"(文本文件)、"jpg"(图片文件)、"pdf"(PDF文档)等,通过该变量可以方便地识别文件的格式,进而进行相应格式特定的处理操作。 + */ + private String fileType; + // 定义一个名为fileType的私有成员变量,类型为String,用于存储文件的类型标识。 + + /** + * 文件大小 + * 表明fileSize变量用于记录文件所占用的字节数大小,在文件管理场景中,比如判断文件是否超出存储限制、统计存储资源使用情况等方面,该变量起着重要作用。 + */ + private Integer fileSize; + // 定义一个名为fileSize的私有成员变量,类型为Integer,用于存储文件的大小数值,通常以字节为单位来衡量。 + + /** + * 上传时间 + * 解释uploadTime变量的作用是记录文件被上传到当前系统的具体时间,可用于文件操作历史记录、按照时间顺序对文件进行排序、统计不同时间段内的文件上传情况等功能实现。 + */ + private Date uploadTime; + // 定义一个名为uploadTime的私有成员变量,类型为Date,用于保存文件上传的时间信息。 + + /** + * 文件关联的表主键id + * 说明fileJoinId变量的功能是存储与该文件相关联的其他数据表中记录的主键标识符,通过这个关联主键,可以建立起文件与其他业务数据表之间的联系,实现数据的关联查询、整合等操作。 + */ + private Long fileJoinId; + // 定义一个名为fileJoinId的私有成员变量,类型为Long,用于记录与文件相关联的其他表的主键值。 + + /** + * 文件关联表类型:1 商品表 @see FileJoinType + * 对fileJoinType变量的详细说明,它用于表示文件所关联的表的类型,当前示例中值为1时表示关联的是商品表(更完整的关联类型可能通过FileJoinType枚举类等方式进一步定义规范,通过@see注解提示查看相关定义),通过该变量可以区分文件在不同业务场景下与不同数据表之间的关联关系。 + */ + private Integer fileJoinType; + // 定义一个名为fileJoinType的私有成员变量,类型为Integer,用于标识文件关联表的类型信息。 +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Basket.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Basket.java new file mode 100644 index 0000000..b44c42d --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Basket.java @@ -0,0 +1,75 @@ +package com.yami.shop.bean.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * Basket类用于表示购物车相关的实体信息。 + * 它对应数据库中的"tz_basket"表,通过MyBatis Plus的注解来映射表结构与实体类的关系。 + * 此类实现了Serializable接口,方便进行对象的序列化操作,例如在网络传输或持久化存储时使用。 + * + * @author lanhai + */ +@Data +@TableName("tz_basket") +public class Basket implements Serializable { + /** + * 主键,用于唯一标识购物车中的每一条记录。 + * 在数据库表"tz_basket"中对应的字段为主键字段,通常由数据库自动生成或者按照特定规则赋值。 + */ + @TableId + private Long basketId; + + /** + * 店铺ID,用于标识商品所属的店铺。 + * 通过该ID可以关联到对应的店铺信息,比如查询店铺的名称、地址等其他相关属性。 + */ + private Long shopId; + + /** + * 产品ID,用于确定购物车中具体是哪个产品。 + * 可以依据此ID去获取产品的详细信息,如产品名称、价格、描述等内容。 + */ + private Long prodId; + + /** + * SkuID,代表具体的库存保有单位(Stock Keeping Unit)的编号。 + * 不同的Sku可能对应产品的不同规格、颜色、尺寸等变体,通过该ID能准确区分同一产品下的不同库存单元。 + */ + private Long skuId; + + /** + * 用户ID,用于标识该购物车记录所属的用户。 + * 可以通过该ID关联到用户的其他信息,比如用户名、联系方式等,以确定是哪位用户添加的商品到购物车。 + * 这里是用字符串类型,可能是根据具体业务系统中用户ID的格式设定(比如可能包含字母等复杂格式)。 + */ + private String userId; + + /** + * 购物车产品个数,记录了当前购物车中对应商品的数量。 + * 用于在计算购物车总价、库存校验等业务场景中发挥作用。 + */ + private Integer basketCount; + + /** + * 购物时间,记录了用户将商品添加到购物车的具体时间。 + * 可以用于分析用户行为,例如统计不同时间段的购物车添加频率等业务需求。 + */ + private Date basketDate; + + /** + * 满减活动ID,用于关联对应的满减活动。 + * 如果商品参与了某个满减活动,通过该ID可以获取活动的详细规则,如满多少金额减多少等信息,以在结算等环节应用相应优惠。 + */ + private Long discountId; + + /** + * 分销推广人卡号,用于标识在分销业务场景下,将该商品推荐给用户的推广人员的卡号信息。 + * 通过这个卡号可以进行分销相关的业绩统计、佣金计算等操作。 + */ + private String distributionCardNo; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Brand.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Brand.java new file mode 100644 index 0000000..8e26872 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Brand.java @@ -0,0 +1,96 @@ +package com.yami.shop.bean.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * Brand类用于表示品牌相关的实体信息,对应数据库中的"tz_brand"表, + * 通过MyBatis Plus的注解(如@TableName)来建立实体类与数据库表之间的映射关系, + * 同时实现了Serializable接口,便于对象在诸如网络传输、持久化存储等场景下进行序列化操作。 + * + * @author lanhai + */ +@Data +@TableName("tz_brand") +public class Brand implements Serializable { + /** + * 主键,用于在数据库中唯一标识每一个品牌记录。 + * 在数据库表"tz_brand"中对应的字段是主键字段,是区分不同品牌实体的关键标识, + * 通常在数据插入等操作时由数据库按照一定规则(如自增)来生成或者进行合理赋值。 + */ + @TableId + private Long brandId; + + /** + * 品牌名称,用于展示给用户或者在业务逻辑中区分不同品牌的关键属性。 + * 例如在前端界面的品牌列表展示、商品筛选等场景中,都会依据这个名称来呈现品牌相关信息。 + */ + private String brandName; + + /** + * 图片路径,指向存储品牌相关图片的具体位置。 + * 可以是本地文件系统的路径,也可能是网络存储的URL等形式,通过这个路径能够获取品牌对应的展示图片, + * 比如在品牌详情页面展示品牌logo或者宣传图片等场景会用到该图片。 + */ + private String brandPic; + + /** + * 用户ID,用于标识与该品牌相关操作的用户主体。 + * 例如可能是创建这个品牌的用户、最后更新品牌信息的用户等,通过该ID可以关联到用户的详细信息, + * 像用户名、所属部门等,方便进行权限管理、操作记录追溯等业务处理。 + */ + private String userId; + + /** + * 备注,用于记录一些关于品牌的额外说明信息。 + * 比如品牌的特殊背景、历史沿革、适用场景等补充性的描述内容,便于内部人员更好地了解品牌相关情况。 + */ + private String memo; + + /** + * 顺序,用于定义品牌在某些特定展示或排序场景下的先后次序。 + * 例如在品牌列表页面按照一定规则排序展示时,依据这个顺序字段来排列品牌的先后顺序,方便用户查看。 + */ + private Integer seq; + + /** + * 默认是1,表示正常状态,0为下线状态,用于标记品牌当前所处的业务状态。 + * 在业务流程中,根据品牌是否还在正常运营、是否需要对外展示等情况来设置该状态值, + * 比如对已停止合作的品牌可以将其状态设为0使其下线,不再出现在常规的品牌展示列表中。 + */ + private Integer status; + + /** + * 简要描述,提供品牌的一个简短概括性的介绍内容。 + * 相比于备注信息可能更精炼,常用于在一些列表页面等有限空间内快速展示品牌的关键特点或定位等信息。 + */ + private String brief; + + /** + * 记录时间,记录品牌相关信息首次被创建或者录入系统的时间点。 + * 可用于数据统计分析,比如统计不同时间段新品牌的创建数量等业务需求,也有助于了解品牌数据的历史情况。 + */ + private Date recTime; + + /** + * 更新时间,标记品牌信息最后一次被修改的时间。 + * 有助于判断数据的时效性,以及在一些需要基于更新时间来进行同步、版本控制等业务场景中发挥作用。 + */ + private Date updateTime; + + /** + * 品牌首字母,通常用于一些快速索引、分类筛选的场景。 + * 比如在按照首字母排序的品牌导航栏中,依据这个首字母来对品牌进行归类展示,方便用户查找特定品牌。 + */ + private String firstChar; + + /** + * 内容,可用于存储更详细、更丰富的关于品牌的文本描述内容。 + * 可以包含品牌故事、品牌文化、产品特色等综合性的信息,具体的使用场景和格式可根据业务实际需求确定。 + */ + private String content; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Category.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Category.java new file mode 100644 index 0000000..01bc664 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Category.java @@ -0,0 +1,170 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +// 声明该类所在的包名,按照Java的包结构组织方式,将相关的类放在同一个包下方便管理和区分不同功能模块的代码, +// 这里表示该类属于com.yami.shop.bean.model包。 +package com.yami.shop.bean.model; + +// 导入MyBatis Plus的注解TableField,用于定义实体类中字段与数据库表字段之间的一些额外映射关系, +// 比如指定字段是否在数据库表中有对应列等情况。 +import com.baomidou.mybatisplus.annotation.TableField; +// 导入MyBatis Plus的注解TableId,用于标记实体类中的主键字段,使得MyBatis Plus能正确识别与数据库表主键的对应关系。 +import com.baomidou.mybatisplus.annotation.TableId; +// 导入MyBatis Plus的注解TableName,用于将实体类与数据库中的具体表进行映射,表明该实体类对应哪个数据库表。 +import com.baomidou.myatisplus.annotation.TableName; +// 导入Jackson的注解JsonSerialize,用于指定在将对象转换为JSON格式时,对特定字段使用自定义的序列化方式。 +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +// 导入自定义的ImgJsonSerializer类,它应该是用于处理图片相关字段序列化的类, +// 在这里配合@JsonSerialize注解来对特定的图片字段进行定制化的JSON序列化操作。 +import com.yami.shop.common.serializer.json.ImgJsonSerializer; +// 导入Lombok的Data注解,使用该注解后,Lombok会自动为类生成常用的方法,比如getter、setter、toString等方法, +// 减少了手动编写这些重复代码的工作量,提高代码的简洁性和开发效率。 +import lombok.Data; + +// 导入Java的相关接口和类,用于实现对象的序列化功能(Serializable接口)以及处理日期相关操作(Date类), +// 还有用于操作列表数据结构(List接口),使得该类能更好地满足常见的业务需求,比如数据存储、传输等场景。 +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 该类的文档注释,简单说明了类的作者信息,这里作者是lanhai, + * 一般可以在此处更详细地描述类的功能和用途,方便其他开发人员快速理解该类在整个项目中的角色。 + * @author lanhai + */ +// 使用@Data注解,让Lombok自动生成类的getter、setter等常用方法,简化代码编写。 +// 使用@TableName注解,将该Category类与数据库中的"tz_category"表进行映射关联,意味着该类的实例可以与数据库表中的记录相互转换操作。 +@Data +@TableName("tz_category") +public class Category implements Serializable { + + /** + * 类目ID的成员变量声明及注释,用于唯一标识每个类目, + * 在数据库表"tz_category"中对应的是主键字段,是区分不同类目记录的关键标识, + * 其值的生成方式可能由数据库按照既定规则(如自增等)来确定,以保证每条类目记录都有唯一的ID。 + */ + @TableId + private Long categoryId; + + /** + * 店铺id的成员变量声明及注释,用于关联对应的店铺信息, + * 通过该店铺id可以获取店铺的详细情况,例如店铺名称、主营类目等,明确该类目是属于哪个具体店铺的, + * 有助于在多店铺的应用场景下进行类目数据的分类管理和相关业务操作。 + */ + private Long shopId; + + /** + * 父节点的成员变量声明及注释,用于表示当前类目的上级类目ID, + * 这里默认初始化为0L,表示如果没有明确的父类目(比如顶级类目)时的默认值, + * 通过这个字段可以构建类目之间的层级关系,方便进行类目树的展示、查询等操作。 + */ + private Long parentId = 0L; + + /** + * 产品类目名称的成员变量声明及注释,用于展示给用户或者在业务逻辑中区分不同类目的关键属性, + * 例如在前端界面的类目列表展示、商品筛选等场景中,都会依据这个名称来呈现类目相关信息,帮助用户快速定位和选择感兴趣的商品类目。 + */ + private String categoryName; + + /** + * 类目图标的成员变量声明及注释,用于指向存储类目相关图标文件的具体位置, + * 可以是本地文件系统的路径,也可能是网络存储的URL等形式,通过这个路径能够获取类目对应的图标, + * 比如在前端界面展示类目时,使用该图标来直观地表示类目,提升用户体验。 + */ + private String icon; + + /** + * 类目的显示图片的成员变量声明及注释,通过@JsonSerialize注解指定使用ImgJsonSerializer自定义类来进行序列化, + * 意味着在将该类的对象转换为JSON格式(比如用于接口返回数据等场景)时,对这个图片字段会按照自定义的序列化逻辑进行处理, + * 可能涉及到图片路径格式的调整、图片加载相关逻辑等,方便前端正确获取和展示类目对应的显示图片。 + */ + @JsonSerialize(using = ImgJsonSerializer.class) + private String pic; + + /** + * 排序的成员变量声明及注释,用于定义类目在某些特定展示或排序场景下的先后次序, + * 例如在类目列表页面按照一定规则排序展示时,依据这个顺序字段来排列类目的先后顺序,方便用户查看, + * 也有助于在后台管理类目时按照期望的顺序进行管理操作。 + */ + private Integer seq; + + /** + * 默认是1,表示正常状态,0为下线状态的成员变量声明及注释,用于标记类目当前所处的业务状态, + * 在业务流程中,根据类目是否还在正常使用、是否需要对外展示等情况来设置该状态值, + * 比如对已停止运营或不再需要展示的类目可以将其状态设为0使其下线,不再出现在常规的类目展示列表中。 + */ + private Integer status; + + /** + * 记录时间的成员变量声明及注释,用于记录类目相关信息首次被创建或者录入系统的时间点, + * 可用于数据统计分析,比如统计不同时间段新类目的创建数量等业务需求,也有助于了解类目数据的历史情况。 + */ + private Date recTime; + + /** + * 分类层级的成员变量声明及注释,用于表示当前类目所处的层级深度, + * 通过该字段可以更清晰地构建和了解类目树的结构,例如一级类目层级值可能为1,二级类目层级值为2等,方便进行层级相关的业务操作和查询。 + */ + private Integer grade; + + /** + * 更新时间的成员变量声明及注释,用于标记类目信息最后一次被修改的时间, + * 有助于判断数据的时效性,以及在一些需要基于更新时间来进行同步、版本控制等业务场景中发挥作用, + * 比如在缓存类目数据时,根据更新时间来判断是否需要重新获取最新的类目数据。 + */ + private Date updateTime; + + /** + * 品牌id的成员变量声明及注释,使用@TableField(exist=false)注解表示该字段在数据库表"tz_category"中不存在对应列, + * 它用于存储与该类目关联的品牌的ID列表,方便在业务逻辑中查询和处理与该类目相关的品牌信息,比如获取该类目下有哪些品牌的商品等。 + */ + @TableField(exist=false) + private List brandIds; + + /** + * 参数id的成员变量声明及注释,同样使用@TableField(exist=false)注解表明在数据库表中无对应列, + * 用于存储与该类目相关的参数的ID列表,在业务中可以依据这些参数来进一步描述类目下商品的特性、属性等信息, + * 例如商品的尺寸、颜色等参数与类目进行关联管理。 + */ + @TableField(exist=false) + private List attributeIds; + + /** + * 品牌列表的成员变量声明及注释,通过@TableField(exist=false)注解说明在数据库表中没有对应物理列, + * 用于存储与该类目相关的具体品牌对象列表,相比于只存储品牌ID,这里可以更方便地获取和操作品牌的详细信息, + * 比如品牌名称、品牌图片等,在涉及类目与品牌关联展示、查询等业务场景中使用。 + */ + @TableField(exist=false) + private List brands; + + /** + * 参数列表的成员变量声明及注释,借助@TableField(exist=false)注解指出在数据库表中不存在相应列, + * 用于存放与该类目相关的具体参数对象列表,方便在业务逻辑中详细了解类目下商品所涉及的各种属性参数情况, + * 比如对商品进行筛选、展示详细规格等操作时会用到这些参数对象。 + */ + @TableField(exist=false) + private List prodProps; + + /** + * 商品列表的成员变量声明及注释,使用@TableField(exist=false)注解表明其不在数据库表中有对应列, + * 用于存储属于该类目的商品对象列表,便于在业务操作中查询和获取该类目下包含哪些具体的商品, + * 比如在类目详情页面展示类目下的商品列表、进行类目商品统计等场景会用到该列表。 + */ + @TableField(exist=false) + private List products; + + /** + * 类目列表的成员变量声明及注释,通过@TableField(exist=false)注解说明在数据库表中没有对应的列, + * 用于存储当前类目下的子类目对象列表,通过这个字段可以构建和遍历类目树结构,方便进行类目层级相关的展示、查询等业务操作, + * 例如展示类目树的展开和收起效果时需要用到子类目列表信息。 + */ + @TableField(exist=false) + private List categories; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/CategoryBrand.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/CategoryBrand.java new file mode 100644 index 0000000..5814b4b --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/CategoryBrand.java @@ -0,0 +1,59 @@ +/* + * 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; + +/** + * 该类用于封装购物车中被选中的满减活动项的相关信息,作为数据传输对象(DTO)在应用层各组件或模块间传递相应数据。 + * 在电商系统等涉及购物车与促销活动交互的业务场景中,当用户在购物车页面选择参与某些满减活动时, + * 每个被选中的满减活动项具体信息就会被整理封装到此类的实例对象中,以便后续进行诸如计算优惠金额、 + * 展示活动详情、更新购物车总价等业务操作时使用,同时保证了数据传递的规范性和完整性, + * 避免了直接传递零散、复杂的数据结构,方便不同业务层之间进行交互协作。 + * + * @author lanhai + */ +@Data +public class ChooseDiscountItemDto implements Serializable { + + // 此处可根据实际业务需求添加相应的属性及对应的注释,以下为示例,可按需调整替换 + + /** + * 满减活动项的唯一标识符,用于在系统中精准定位该满减活动项的详细信息。 + * 例如在数据库中可以通过该ID查询到活动项对应的满减规则(如满多少金额减多少金额等具体规则)、 + * 活动的有效期限、适用的商品范围等相关内容,方便后续业务逻辑围绕该活动项进行准确处理。 + */ + private Long discountItemId; + + /** + * 关联的满减活动的ID,指向整个满减活动的总体定义信息。 + * 一个满减活动可能包含多个不同的活动项,通过这个ID可以获取到该满减活动的通用属性, + * 像活动名称、活动发起方(是平台发起还是店铺发起等)等基础信息,便于从整体上把握该满减活动的全貌。 + */ + private Long discountActivityId; + + /** + * 该满减活动项在本次购物车选中场景下可减免的金额数值。 + * 用于明确当前所选的这个满减活动项具体能为用户节省多少钱,是计算购物车最终总价、 + * 展示优惠明细等操作中重要的数据依据,在向用户展示优惠情况或者进行金额相关业务逻辑处理时会频繁用到。 + */ + private Double discountAmount; + + /** + * 表示该满减活动项是否已经生效的标识,通常可以用布尔类型(true或false)来表示。 + * 例如当满足了活动项设定的前置条件(如购物车商品总价达到规定金额等)时,该标识会被设置为true, + * 意味着此活动项开始生效,相应的优惠金额可以进行扣除等操作;反之则为false, + * 方便在业务逻辑中判断活动项的执行状态,确保优惠计算的准确性。 + */ + private boolean isActive; + +} \ 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 diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Delivery.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Delivery.java new file mode 100644 index 0000000..63b2d32 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Delivery.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.io.Serializable; +import java.util.Date; + +/** + * `Delivery`类是一个实体类,用于表示物流公司相关的信息,在电商系统等业务场景中有着重要的作用, + * 主要负责在数据库层面记录物流公司的各项关键数据,方便后续进行与物流相关的业务操作, + * 例如查询物流信息、展示可用的物流公司列表、根据物流公司配置进行快递单号查询等操作。 + + * @author lanhai + */ +@Data +@TableName("tz_delivery") +public class Delivery implements Serializable { + + /** + * `dvyId`属性作为该类的主键,是每条物流公司记录在数据库中的唯一标识符。 + * 它具有唯一性,通过这个 `dvyId`,系统能够在数据库中精准地定位、操作某一条具体的物流公司相关记录, + * 比如在更新、删除特定物流公司信息或者根据该ID查询其详细属性时,都要依赖这个唯一标识来确保操作的准确性和针对性, + * 是整个物流公司数据管理中的关键标识字段。 + */ + @TableId + private Long dvyId; + + /** + * `dvyName`属性用于存储物流公司的名称,例如“顺丰速运”“中通快递”“圆通速递”等常见的物流公司称谓。 + * 在电商系统中,用户在选择快递配送方式或者查看订单物流信息时,会看到这个名称展示出来, + * 便于直观地识别是哪家物流公司负责包裹的运输,同时也是关联到具体物流服务的重要标识信息。 + */ + private String dvyName; + + /** + * `companyHomeUrl`属性存放物流公司的公司主页网址,即用户可以通过访问这个网址了解该物流公司的更多详细信息, + * 比如公司的服务范围、业务介绍、客服联系方式等内容,在电商系统中,可能会为用户提供链接跳转功能, + * 使其能够方便地访问物流公司官网获取相关资讯,不过该属性也可能存在部分物流公司未提供网址而为空值的情况。 + */ + private String companyHomeUrl; + + /** + * `recTime`属性代表物流公司相关信息的建立时间,通常记录的是这条物流公司记录首次被创建并录入系统的日期和时间, + * 以 `Date` 类型存储,格式一般遵循系统默认的时间格式(例如 `yyyy-MM-dd HH:mm:ss`), + * 它可以用于数据的溯源、统计分析等操作,比如查看不同时间段内新增了哪些物流公司等业务场景中会用到该时间信息。 + */ + private Date recTime; + + /** + * `modifyTime`属性用于记录物流公司信息的最后修改时间,同样是以 `Date` 类型呈现具体的时间点, + * 每次对该物流公司的相关属性(如名称、网址、物流查询接口等)进行更新操作后,这个时间会随之更新, + * 方便在数据管理中知晓该条记录最近一次的变动情况,也有助于进行数据版本控制、审计等相关业务处理。 + */ + private Date modifyTime; + + /** + * `queryUrl`属性存放的是物流公司的物流查询接口网址,在电商系统需要获取某个订单的物流实时状态时, + * 可以通过调用该网址对应的接口(按照接口规定的请求参数、方式等)来获取相应的物流信息, + * 例如快递包裹的当前位置、运输状态等关键数据,是实现物流信息查询功能的重要配置信息。 + */ + private String queryUrl; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/HotSearch.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/HotSearch.java new file mode 100644 index 0000000..f937227 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/HotSearch.java @@ -0,0 +1,68 @@ +package com.yami.shop.bean.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * HotSearch类用于表示热门搜索相关的实体信息,对应数据库中的"tz_hot_search"表。 + * 通过MyBatis Plus的相关注解(如@TableName)来建立实体类与数据库表之间的映射关系, + * 同时实现了Serializable接口,便于在需要的场景(如网络传输、持久化存储等)下对该对象进行序列化操作。 + * + * @author lanhai + */ +@Data +@TableName("tz_hot_search") +public class HotSearch implements Serializable { + /** + * 主键,用于在数据库中唯一标识每一条热门搜索记录。 + * 在"tz_hot_search"表中,此主键字段是区分不同热门搜索项的关键标识, + * 其值的生成方式可能由数据库按照既定规则(比如自增等)来确定,以保证每条记录都有唯一的标识。 + */ + @TableId + private Long hotSearchId; + + /** + * 店铺id,用于关联对应的店铺信息。 + * 通过该店铺id可以获取店铺的详细情况,例如店铺名称、主营类目等,明确该热门搜索内容是属于哪个具体店铺的, + * 有助于在多店铺的应用场景下进行针对性的搜索展示和管理。 + */ + private Long shopId; + + /** + * 标题,作为热门搜索项呈现给用户的主要文字描述内容。 + * 它通常简洁明了地概括了用户可能感兴趣的搜索主题,比如商品类别名称、热门促销活动主题等,方便用户快速识别和点击搜索。 + */ + private String title; + + /** + * 内容,用于进一步详细阐述热门搜索项相关的信息。 + * 相较于标题更为详细,可能包含具体的商品推荐、活动详情、搜索关键词的具体解释等内容,辅助用户更好地理解搜索项所涉及的内容。 + */ + private String content; + + /** + * 录入时间,记录该热门搜索项被添加到系统中的具体时间点。 + * 可以用于数据统计分析,比如统计不同时间段新增的热门搜索项数量,也有助于按照时间顺序对搜索项进行展示或管理等操作。 + * 此处通过@DateTimeFormat注解指定了日期时间的格式化模式为"yyyy-MM-dd HH:mm:ss",方便在数据绑定等操作时进行正确的格式转换。 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date recDate; + + /** + * 顺序,用于确定热门搜索项在展示列表中的先后排列次序。 + * 在前端页面展示热门搜索列表时,可依据这个顺序字段来合理安排各项的展示顺序,使得重要或热门程度高的搜索项优先展示给用户,提升用户体验。 + */ + private Integer seq; + + /** + * 状态,默认是1,表示正常状态,0为下线状态,用于标记热门搜索项当前所处的业务状态。 + * 在实际业务中,根据搜索项是否还符合当前业务需求、是否需要继续展示给用户等情况来设置该状态值, + * 例如某些季节性的搜索主题结束后,可将其状态设为0使其下线,不在热门搜索列表中呈现给用户了。 + */ + private Integer status; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/IndexImg.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/IndexImg.java new file mode 100644 index 0000000..151b71b --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/IndexImg.java @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.yami.shop.common.serializer.json.ImgJsonSerializer; +import lombok.Data; +import java.io.Serializable; +import java.util.Date; + +/** + * `IndexImg`类是一个实体类,用于表示电商系统首页图片相关的信息,在首页展示、图片管理等业务场景中有着重要作用, + * 它主要负责在数据库层面记录首页图片的各项关键数据,方便后续进行诸如图片展示顺序调整、图片关联商品设置、 + * 图片状态管理等操作。 + + * @author lanhai + */ +@Data +@TableName("tz_index_img") +public class IndexImg implements Serializable { + private static final long serialVersionUID = -3468251351681518798L; + + /** + * `imgId`属性作为该类的主键,是每条首页图片记录在数据库中的唯一标识符。 + * 它具有唯一性,通过这个 `imgId`,系统能够在数据库中精准地定位、操作某一条具体的首页图片相关记录, + * 比如在更新、删除特定首页图片信息或者根据该ID查询其详细属性时,都要依赖这个唯一标识来确保操作的准确性和针对性, + * 是整个首页图片数据管理中的关键标识字段。 + */ + @TableId + private Long imgId; + + /** + * `shopId`属性用于标识该图片所属的店铺ID,在多店铺的电商平台模式下,不同店铺可能有各自独立的首页图片展示需求, + * 通过这个属性可以明确图片是与哪个店铺相关联,进而在展示首页图片时能够按照店铺进行区分和筛选, + * 同时在涉及店铺相关的图片管理操作(如店铺自行上传、修改、删除自己的首页图片等)时,也依靠这个ID来确定操作对象。 + */ + private Long shopId; + + /** + * `imgUrl`属性存放的是图片的网络地址或者在系统中的存储路径等信息,具体取决于系统的图片存储和访问方式。 + * 例如在使用云存储服务时,可能是该图片在云存储中的完整URL地址;若是本地存储,则可能是相对系统根目录的文件路径, + * 这个属性用于在前端页面展示首页图片时,准确获取并显示对应的图片内容,是实现图片展示功能的关键数据之一。 + */ + private String imgUrl; + + /** + * `des`属性用于存储图片的说明文字或者描述信息,它可以对图片展示的内容、目的等进行简要介绍, + * 比如对于一张展示某款商品的图片,这里的描述可能是“新款夏季连衣裙,时尚优雅”之类的文字,帮助用户更好地理解图片所传达的信息, + * 同时在一些图片管理操作或者页面排版时,也可以参考这些描述来进行合理的布局和安排。 + */ + private String des; + + /** + * `title`属性代表图片的标题,通常是一个简洁且能概括图片核心内容的字符串, + * 例如“热门商品推荐”“限时优惠活动”等,在前端展示图片时,标题可能会以一定的样式显示在图片上方或附近位置, + * 起到突出主题、吸引用户关注的作用,也是图片相关信息展示的重要组成部分。 + */ + private String title; + + /** + * `link`属性存放的是图片所关联的链接地址,当用户点击首页图片时,会跳转到这个链接指向的页面, + * 链接的目标页面可以是商品详情页、活动专题页、店铺主页等不同类型的页面,具体根据业务需求和图片的用途来设定, + * 以此实现通过图片引导用户进行相应的浏览和操作,提升用户在平台内的交互体验。 + */ + private String link; + + /** + * `status`属性用于表示图片的状态,一般用整数类型来表示不同的状态值,例如可以设定 `0` 表示图片未启用(暂不展示), + * `1` 表示图片已启用(正常展示)等状态定义,通过这个属性可以方便地对首页图片进行展示与否的控制, + * 比如在后台管理系统中,管理员可以根据业务情况随时更改图片的状态,从而调整首页图片的展示效果。 + */ + private Integer status; + + /** + * `seq`属性代表图片的展示顺序,同样是整数类型,用于确定在首页展示图片时各个图片的先后排列次序, + * 可以按照业务需求设定较小的数值在前、较大的数值在后等排序规则,通过调整不同图片的 `seq` 值, + * 能够灵活地改变首页图片的展示顺序,实现对首页展示效果的个性化定制和优化。 + */ + private Integer seq; + + /** + * `uploadTime`属性记录的是图片的上传时间,以 `Date` 类型存储,格式一般遵循系统默认的时间格式(例如 `yyyy-MM-dd HH:mm:ss`), + * 它可以用于数据的溯源、统计分析等操作,比如查看不同时间段内店铺上传了哪些首页图片、了解图片的更新频率等业务场景中会用到该时间信息。 + */ + private Date uploadTime; + + /** + * `type`属性用于区分图片的类型,不同的整数值可以对应不同的图片分类,例如 `1` 表示商品推荐图片,`2` 表示活动宣传图片, + * `3` 表示店铺形象展示图片等,通过这种分类方式,可以在业务逻辑中针对不同类型的图片进行差异化的处理和展示, + * 也便于进行分类管理和统计分析等操作。 + */ + private int type; + + /** + * `relation`属性用于存放与图片相关联的其他数据的唯一标识符,比如可能关联到某个商品的 `id`、某个活动的 `id` 等, + * 其具体含义取决于业务场景中图片与其他实体的关联关系设定,通过这个属性可以建立起图片与其他业务对象之间的联系, + * 方便在进行相关业务操作时(如根据图片查找关联商品、获取关联活动详情等)获取对应的关联数据。 + */ + private Long relation; + + /** + * `pic`属性用于存放商品图片相关信息,它与数据库表字段的映射有所不同,通过 `@TableField(exist = false)` 注解表明该属性 + * 在数据库表中并不实际存在对应的字段,但在业务逻辑处理或者数据传输过程中可能会用到。同时使用 `@JsonSerialize(using = ImgJsonSerializer.class)` + * 注解意味着在将该类对象转换为JSON格式(例如在接口返回数据给前端时)会使用自定义的序列化器对这个属性进行特殊处理, + * 可能是对图片路径进行格式调整、添加域名等操作,使其符合前端展示或者与其他系统交互的要求,便于展示商品图片的相关信息。 + */ + @TableField(exist = false) + @JsonSerialize(using = ImgJsonSerializer.class) + private String pic; + + /** + * `prodName`属性用于存储商品名称,同样是通过 `@TableField(exist = false)` 注解表示其在数据库表中无对应字段, + * 但在涉及与商品相关的业务逻辑以及数据展示时会用到该属性,比如在首页图片关联商品展示时,除了显示图片本身, + * 还可以同时展示对应的商品名称,让用户更直观地了解图片所涉及的商品信息,提升用户体验。 + */ + @TableField(exist = false) + private String prodName; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Message.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Message.java new file mode 100644 index 0000000..c2f4328 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Message.java @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.app.param; + +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * `LoginParam`类是一个用于接收用户登录相关操作参数的数据对象,在电商系统用户登录的业务逻辑处理中起着关键作用。 + * 它主要用于在前端与后端进行交互时,承载用户发起登录操作时所需的各项必要数据信息,以便后端能够依据这些参数准确地执行相应的业务逻辑, + * 比如验证登录信息的合法性、根据不同的登录方式(小程序登录或账号密码登录)进行对应的身份验证等操作。 + + * @author lanhai + */ +@Schema(description = "登陆参数") +public class LoginParam { + + /** + * `code`属性用于存储小程序登录时返回的 `code` 值。在小程序登录的流程中,用户授权登录后,小程序会向微信等平台获取一个临时的 `code`, + * 这个 `code` 会被传递到后端服务器,后端再凭借该 `code` 向对应的平台(如微信开放平台)发起请求,换取用户的相关信息(如唯一标识等), + * 进而完成登录验证操作。通过 `@Schema` 注解明确其描述为“小程序登陆时返回的 `code`(使用 `code` 登陆必填)”, + * 并标记为必填项(`required = true`),以此确保在用户选择小程序登录方式时,前端必须传递这个关键的 `code` 参数给后端, + * 保证登录流程能够顺利进行,避免因缺少必要参数而导致登录失败。 + */ + @Schema(description = "小程序登陆时返回的code(使用code登陆必填)", required = true) + private String code; + + /** + * `mobile`属性用于存放用户登录时的用户名信息,在采用账号密码登录方式时,这里通常指的是用户的手机号码。 + * 手机号码作为常见的账号形式,方便用户记忆且具有唯一性,后端系统会依据这个手机号码去数据库等存储介质中查找对应的用户记录, + * 并与后续传入的密码进行匹配验证,以确认用户身份的合法性。通过 `@Schema` 注解将其描述为“登陆时的用户名(账号密码登陆必填)”, + * 同时设为必填项,告知接口调用者在使用账号密码登录时必须提供有效的手机号码作为用户名,保障登录验证过程有准确的账号依据。 + */ + @Schema(description = "登陆时的用户名(账号密码登陆必填)", required = true) + private String mobile; + + /** + * `password`属性用于存储用户登录时输入的密码信息,在账号密码登录模式下,它与前面的 `mobile` 属性一同作为验证用户身份的关键要素。 + * 用户输入的密码会与后端存储的已加密的密码(出于安全考虑,通常会对密码进行加密存储)进行比对,只有两者匹配时, + * 才会认定用户登录成功。借助 `@Schema` 注解明确其描述为“登陆时的密码(账号密码登陆必填)”,并标记为必填项, + * 强制要求接口调用者在使用账号密码登录方式时必须提供正确的密码,确保登录操作的安全性和准确性。 + */ + @Schema(description = "登陆时的密码(账号密码登陆必填)", required = true) + private String password; + + /** + * `getCode`方法是一个标准的JavaBean风格的访问器方法(Getter方法),用于获取 `code` 属性的值。 + * 在其他类需要访问本类中存储的小程序登录 `code` 参数信息时,可以通过调用这个方法来获取相应的值,遵循了面向对象编程中封装的原则, + * 对属性的访问进行了一定的控制,保证数据获取的规范性和安全性。 + */ + public String getCode() { + return code; + } + + /** + * `setCode`方法是与 `getCode` 对应的修改器方法(Setter方法),用于设置 `code` 属性的值。 + * 当外部需要更新本类中存储的小程序登录 `code` 信息时,可以通过调用这个方法并传入新的字符串值来实现属性值的修改, + * 同样也是遵循JavaBean规范,方便对属性进行赋值操作,同时在方法内部可以添加一些额外的逻辑(如数据验证等)来保障数据的合法性。 + */ + public void setCode(String code) { + this.code = code; + } + + /** + * `getMobile`方法是用于获取 `mobile` 属性值的Getter方法,其作用与 `getCode` 类似, + * 为外部类提供了获取用户名(手机号码)信息的途径,使得其他部分的代码可以按照规范的方式获取该属性存储的内容,便于后续基于用户名进行相关操作。 + */ + public String getMobile() { + return mobile; + } + + /** + * `setMobile`方法是对应 `getMobile` 的Setter方法,用于设置 `mobile` 属性的值, + * 当需要更新用户名(手机号码)信息时,外部代码可以调用这个方法传入新的字符串值来改变属性的存储内容, + * 并且可以在方法内部根据业务需求添加必要的数据校验等逻辑,确保设置的手机号码符合要求。 + */ + public void setMobile(String mobile) { + this.mobile = mobile; + } + + /** + * `getPassword`方法是获取 `password` 属性值的Getter方法,通过调用它, + * 其他类能够获取到本类中存储的密码信息,方便在后续的业务逻辑中,例如密码验证等操作中使用该密码作为关键的比对依据, + * 确保业务操作围绕准确的登录密码展开。 + */ + public String getPassword() { + return password; + } + + /** + * `setPassword`方法是用于设置 `password` 属性值的Setter方法,当需要更新密码信息时(例如用户修改密码等情况), + * 外部代码可以调用这个方法传入新的字符串值来改变其存储内容,同样也可以在方法内部添加适当的数据验证逻辑,保障密码的合法性和安全性。 + */ + public void setPassword(String password) { + this.password = password; + } +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Notice.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Notice.java new file mode 100644 index 0000000..dbb4a1a --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Notice.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * 公告管理 + * + * @author hzm + * @date 2019-04-18 21:21:40 + */ +@Data +@TableName("tz_notice") +public class Notice implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 公告id + */ + @TableId + private Long id; + + /** + * 店铺id + */ + private Long shopId; + + /** + * 公告标题 + */ + private String title; + + /** + * 公告内容 + */ + private String content; + + /** + * 状态(1:公布 0:撤回) + */ + private Integer status; + + /** + * 是否置顶(1:是 0:否) + */ + private Integer isTop; + + /** + * 发布时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date publishTime; + + /** + * 更新时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + +} diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java new file mode 100644 index 0000000..312b99e --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java @@ -0,0 +1,217 @@ +package com.yami.shop.bean.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @author lanhai + * @description Order类用于表示电商系统中的订单信息实体,它涵盖了从订单创建到完结整个过程涉及的各类关键数据, + * 并且通过相关注解与数据库表进行映射以及方便地生成常用方法,便于在各业务层对订单数据进行操作处理。 + */ +@Data +// 使用@TableName注解指定该实体类对应的数据库表名为"tz_order",用于MyBatis Plus框架建立实体与表的映射关系 +@TableName("tz_order") +public class Order implements Serializable { + private static final long serialVersionUID = 6222259729062826852L; + + /** + * @description 订单ID,是订单在系统中的唯一标识符,使用@TableId注解表明在数据库表"tz_order"中此字段为表的主键。 + */ + @TableId + private Long orderId; + + /** + * @description 店铺id,用于标识该订单所属的店铺,通过此id可以关联查询店铺的其他相关信息,如店铺名称、店铺配置等。 + */ + private Long shopId; + + /** + * @description 产品名称,当订单包含多个产品时,多个产品名称将会以逗号隔开。 + * 这种方式可以简单呈现订单内商品情况,但对于复杂产品信息处理不够灵活,如需详细产品信息可能需关联其他表。 + */ + private String prodName; + + /** + * @description 订购用户ID,唯一标识下此订单的用户,借助该字段可以关联到用户的各种信息,例如用户基本资料、历史订单等, + * 方便从用户角度对订单进行诸如查询、统计等操作。 + */ + private String userId; + + /** + * @description 订购流水号,一般具有唯一性,常用于在业务系统中作为订单的外部标识, + * 在与外部系统对接(如支付回调、物流查询等场景)或者在内部业务流程中通过流水号快速定位和查询具体订单时会用到。 + */ + private String orderNumber; + + /** + * @description 总值,代表订单中商品在未考虑优惠、运费等因素之前的总价值,是统计订单商品价值的基础数据项。 + */ + private Double total; + + /** + * @description 实际总值,是订单经过各种优惠、折扣以及加上运费等调整之后,用户实际需要支付的总金额, + * 反映了订单最终真实的消费金额情况,对于财务统计等业务操作十分重要。 + */ + private Double actualTotal; + + /** + * @description 支付方式,通过约定的整数值来区分不同支付渠道,例如:1 表示微信支付,2 表示支付宝支付。 + * 方便后续根据支付方式进行支付相关的统计、对账以及不同支付方式下对应的业务逻辑处理(如退款逻辑差异等)。 + */ + private Integer payType; + + /** + * @description 订单备注,是一个文本字段,用于用户或者业务操作人员填写关于订单的一些特殊说明或者备注信息, + * 比如对商品的特殊要求、对配送时间的额外说明等,方便在查看订单详情时了解额外情况。 + */ + private String remarks; + + /** + * @description 订单状态,通过定义的整数值来标识订单目前所处的业务流程阶段,具体含义如下: + * - -1:已取消,表示订单已被取消,可能需要进行相关资源释放、数据清理等操作; + * - 0:待付款,对应订单创建后等待用户付款的阶段,可设置定时提醒用户付款等功能; + * - 1:待发货,意味着订单已付款,等待商家发货,此时可通知仓库进行发货操作; + * - 2:待收货,代表商品已发货,等待用户收货确认; + * - 3:已完成,标志着订单整个业务流程全部结束,例如用户确认收货或者系统自动确认收货等情况后所处的状态。 + * 不同状态用于驱动不同的业务流程流转以及相应的业务逻辑处理。 + */ + private Integer status; + + /** + * @description 配送类型,用于记录订单的配送类型相关信息,不过目前代码中未明确具体约定的取值内容, + * 常见的可能如快递、自提等不同的配送分类方式,方便后续根据配送类型来安排具体的物流配送环节以及在前端展示给用户相应的配送信息提示。 + */ + private String dvyType; + + /** + * @description 配送方式ID,关联具体配送方式的唯一标识,可能对应数据库中存储配送方式详细信息(如快递的具体快递公司、自提的具体门店等信息)的表的主键, + * 通过这个字段可以进一步获取详细的配送相关细节内容。 + */ + private Long dvyId; + + /** + * @description 物流单号,当订单进入发货阶段,物流单号用于跟踪物流运输的进度,用户可以通过这个单号在对应的物流查询平台查询包裹的实时位置等信息, + * 同时系统内部也可以通过对接物流接口,利用物流单号来获取物流状态更新到订单信息中,方便用户查看。 + */ + private String dvyFlowId; + + /** + * @description 订单运费,记录该订单产生的运费金额,如果订单有包邮规则或者运费计算逻辑,这个字段会记录最终计算得出的需要用户支付或者商家承担的运费数值, + * 对于统计订单成本、用户实际支付金额等方面是一个重要的数据项。 + */ + private Double freightAmount; + + /** + * @description 用户订单地址Id,关联用户订单地址的唯一标识,通过这个字段可以从数据库中查询到订单对应的收货地址或者发货地址(如果有不同的地址需求场景)的详细信息, + * 比如地址、联系人、联系电话等,确保货物能准确地送达指定地点。 + */ + private Long addrOrderId; + + /** + * @description 订单商品总数,用于统计该订单中包含的商品总数量,便于快速了解订单的规模大小, + * 也可以在一些业务逻辑中,比如根据商品数量判断是否满足某些优惠条件、统计商品销售总量等方面起到作用。 + */ + private Integer productNums; + + /** + * @description 订购时间,使用@DateTimeFormat注解指定日期格式为"yyyy-MM-dd HH:mm:ss",用于记录订单创建的时间点, + * 在业务中可以根据创建时间进行订单的排序、查询某个时间段内的订单等操作,例如查询当天的新订单、统计每月新增订单数量等都依赖于这个时间字段。 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * @description 订单更新时间,同样使用@DateTimeFormat注解指定日期格式,记录订单信息最后一次更新的时间, + * 比如订单状态改变、地址修改、备注添加等任何对订单数据有修改操作时,都会更新这个时间字段,方便跟踪订单数据的变更历史以及在一些业务场景中判断数据的时效性等。 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * @description 付款时间,使用@DateTimeFormat注解指定日期格式,当用户完成订单支付后,会记录支付操作完成的具体时间, + * 这个时间对于统计支付成功率、分析支付时间段的分布等支付相关的业务分析以及后续涉及到退款等业务逻辑判断支付是否已完成等方面都有重要作用。 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date payTime; + + /** + * @description 发货时间,使用@DateTimeFormat注解指定日期格式,记录订单商品实际发货的时间, + * 通过这个时间可以计算物流运输时长、统计发货效率等,同时也可以作为判断订单状态是否准确(比如是否应该从待发货变为待收货等状态)的依据之一。 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dvyTime; + + /** + * @description 完成时间,使用@DateTimeFormat注解指定日期格式,表示订单整个业务流程全部结束(例如用户确认收货或者系统自动确认收货等情况)后记录的时间, + * 标志着订单的最终完结,对于统计订单完成率、分析订单平均完成时长等业务指标有帮助。 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date finallyTime; + + /** + * @description 取消时间,使用@DateTimeFormat注解指定日期格式,当订单被取消时,会记录取消操作发生的时间, + * 对于后续分析订单取消原因、统计取消订单的时间分布等情况提供数据支持,也有助于确保业务数据的完整性和可追溯性。 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + /** + * @description 是否已经支付,通过整数值来表示,1表示已经支付过,0表示没有支付过。 + * 在很多业务逻辑中,比如判断是否可以发货、是否可以进行退款等都需要先判断这个支付状态,避免出现业务流程上的错误。 + */ + private Integer isPayed; + + /** + * @description 用户订单删除状态,通过整数值来区分不同的删除程度,具体含义如下: + * - 0:没有删除,表示订单正常存在于系统中,未进行删除操作; + * - 1:回收站,意味着订单已被标记为删除,进入回收站状态,此时可能还可以恢复; + * - 2:永久删除,代表订单已被彻底删除,无法再恢复了。 + * 方便对订单数据的管理和数据存储空间的合理利用,同时也符合一般系统中数据删除的逻辑设计习惯。 + */ + private Integer deleteStatus; + + /** + * @description 退款状态,用于记录订单退款相关的状态,具体含义如下: + * - 0:默认,表示退款相关操作未开始或者初始状态; + * - 1:在处理,代表用户发起退款申请后,退款流程正在进行中,例如处于审核等阶段; + * - 2:处理完成,说明退款操作经过相应流程后已完成,便于跟踪退款业务的进展情况以及在不同阶段进行相应的业务处理和提醒等操作。 + */ + private Integer refundSts; + + /** + * @description 优惠总额,记录该订单享受到的各种优惠(如优惠券、满减活动、折扣等)累计的金额总数, + * 通过这个字段可以清晰地了解到用户在该订单上节省了多少钱,同时对于商家统计营销活动成本、分析优惠策略效果等方面也是重要的数据依据。 + */ + private Double reduceAmount; + + /** + * @description 店铺名称,使用@TableField(exist = false)注解表明此字段并不对应数据库表"tz_order"中的实际列, + * 它可能是在业务逻辑处理或者数据查询展示过程中,通过关联查询等方式获取到店铺名称后,临时存储在这个实体类对象中的一个属性, + * 方便在前端展示或者其他业务场景中直接获取店铺名称信息,而不用再次去查询数据库。 + */ + @TableField(exist = false) + private String shopName; + + /** + * @description 订单商品明细列表,使用@TableField(exist = false)注解说明这个字段不对应数据库表中的列, + * 它一般用于存储订单中包含的具体商品明细信息(每个OrderItem可以表示一个商品项的详细情况,如商品ID、商品数量、商品单价等), + * 通常是在查询订单详情等场景下,通过关联查询或者其他业务逻辑组装好商品明细列表后赋值给这个字段,方便一次性获取订单的完整商品信息。 + */ + @TableField(exist = false) + private List orderItems; + + /** + * @description 用户订单地址信息对象,使用@TableField(exist = false)注解表示该字段不对应数据库表列, + * 它用于存储与该订单关联的用户地址详细信息对象(UserAddrOrder类应该包含地址相关的各种详细内容,如地址、联系人、联系电话等), + * 方便在获取订单信息时能同时获取到对应的完整地址信息,减少额外查询数据库获取地址的操作。 + */ + @TableField(exist = false) + private UserAddrOrder userAddrOrder; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/order/ConfirmOrderOrder.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/order/ConfirmOrderOrder.java new file mode 100644 index 0000000..cbae2f9 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/order/ConfirmOrderOrder.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.order; + +/** + * `ConfirmOrderOrder`接口用于定义提交订单事件先后顺序相关的常量,在电商系统的订单处理业务流程中, + * 特别是涉及多种优惠活动、业务规则应用于订单的场景下,起到明确各环节执行顺序的重要作用。 + * 通过定义这些顺序常量,系统可以清晰地知晓在提交订单时,不同优惠、业务逻辑处理的先后顺序, + * 确保订单金额计算、优惠叠加等操作按照合理且符合业务要求的顺序进行,避免出现逻辑混乱或计算错误的情况。 + + * @author LGH + */ +public interface ConfirmOrderOrder { + + /** + * `DEFAULT`常量表示在没有任何活动参与时的默认顺序,其值为0。 + * 当订单不存在如满减、优惠券、分销等特殊优惠活动或业务逻辑时, + * 系统按照这个默认顺序来处理订单相关的基础操作,例如计算商品原价总和、 + * 确定基本的运费(如果有)等,它作为一个基准顺序,其他涉及活动的顺序都基于此进行相对排序。 + */ + int DEFAULT = 0; + + /** + * `DISCOUNT`常量代表满减活动在整个订单处理顺序中的位置,其值为100,排在 `DEFAULT` 后面。 + * 在电商系统中,满减活动是常见的优惠方式之一,当订单满足满减活动的条件(如购物车商品总价达到一定金额可减免部分金额)时, + * 系统会按照这个顺序来处理满减优惠的计算和应用,确保在完成基础的订单金额计算(即 `DEFAULT` 顺序对应的操作)之后, + * 再进行满减金额的扣除等相关操作,保证优惠计算的准确性和顺序性。 + */ + int DISCOUNT = 100; + + /** + * `COUPON`常量用于表示优惠券相关业务在订单处理顺序中的位置,其值为200,排在 `DISCOUNT` 后面。 + * 当用户在下单过程中使用了优惠券来进一步降低订单金额时,系统会依据这个顺序, + * 在完成满减优惠计算(按照 `DISCOUNT` 顺序操作)之后,再进行优惠券优惠金额的扣除等处理, + * 以此来合理叠加不同的优惠方式,使得最终订单金额的计算符合业务设定的先后逻辑顺序。 + */ + int COUPON = 200; + + /** + * `DISTRIBUTION`常量定义了分销相关业务在订单处理顺序中的位置,其值为300,排在 `COUPON` 后面。 + * 在电商的分销模式下,涉及到根据订单情况计算分销收益、记录分销相关信息等业务操作, + * 系统按照这个顺序,在完成优惠券优惠应用(按照 `COUPON` 顺序)之后,再处理分销相关的逻辑, + * 确保整个订单处理流程中各业务环节有序进行,避免优惠计算和业务逻辑执行出现冲突或错误。 + */ + int DISTRIBUTION = 300; +} \ No newline at end of file diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/param/DeliveryOrderParam.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/param/DeliveryOrderParam.java new file mode 100644 index 0000000..f1d5f92 --- /dev/null +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/param/DeliveryOrderParam.java @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.bean.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; + +/** + * `DeliveryOrderParam`类是作为一个参数对象,用于接收在电商系统中与物流订单操作相关的输入参数。 + * 其主要目的是在前端与后端进行交互时,承载那些对于处理物流订单必不可少的数据,以便后端能够依据这些准确的数据来执行对应的业务逻辑, + * 例如在物流单号绑定订单、查询物流状态等具体业务操作场景下,为后端服务提供必要的信息支撑。 + + * @author lanhai + */ +public class DeliveryOrderParam { + + /** + * `orderNumber`属性用于存放具体的订单号信息,它在整个电商系统里是唯一标识每个订单的关键字符串。 + * 每一个订单从生成之时起,就会被赋予这样一个独一无二的订单号,通过这个订单号,后端系统能够精确地关联到该订单对应的所有详细信息, + * 比如下单用户的信息、所购买商品的详情、订单的金额以及其他各种与该订单相关的附属数据等。 + * 在涉及物流相关操作时,这个订单号尤为重要,它能让系统知晓当前的物流业务是针对哪一个具体订单展开的,例如将获取到的物流信息准确匹配到对应的订单上。 + * + * 此处使用了 `@NotBlank` 注解,同时搭配了提示消息“订单号不能为空”,这样在进行数据校验时(例如前端向后端传递参数时), + * 如果该属性值为空字符串,就会触发相应的验证错误提示,以此来保证传递过来的订单号是有效的、非空的。 + * 并且,通过 `@Schema` 注解,在生成 API 文档(像使用 Swagger 等工具展示接口信息时),会为该属性添加明确的“订单号”描述, + * 同时标记其为必填项(`required = true`),清晰地告知接口调用者在发起涉及物流订单的相关操作时,必须提供这个关键的订单号参数, + * 从而确保后端接收到完整且有效的数据,以保障后续业务逻辑能够顺利执行。 + */ + @NotBlank(message = "订单号不能为空") + @Schema(description = "订单号", required = true) + private String orderNumber; + + /** + * `dvyId`属性代表的是快递公司在系统中的唯一标识符,也就是快递公司的 ID,其数据类型通常为 `Long`。 + * 在电商平台运营过程中,会事先录入众多合作的快递公司信息到系统中,并为每家快递公司分配一个独一无二的 ID, + * 通过这个 ID,系统可以进一步获取该快递公司的各种详细信息,例如公司的名称、官方网站地址、对应的物流查询接口等关键数据。 + * 在物流订单相关的业务操作里,明确是由哪家快递公司负责运输当前订单的商品,就完全依赖这个 `dvyId` 参数来确定。 + * + * 同样地,借助 `@NotBlank` 注解来确保该参数不能为空,若为空的话,就会出现“快递公司 id 不能为空”的错误提示, + * 以此来强制要求接口调用者必须提供有效的快递公司 ID 值。并且,通过 `@Schema` 注解在 API 文档中为其添加“快递公司”的描述, + * 同时将其设定为必填项,方便接口调用者清楚知晓该参数的含义以及在调用接口时需要正确传递相应的值, + * 进而保证物流相关业务能够准确关联到对应的快递公司,保障整个物流流程的准确执行。 + */ + @NotBlank(message = "快递公司id不能为空") + @Schema(description = "快递公司", required = true) + private Long dvyId; + + /** + * `dvyFlowId`属性用于存储具体的物流单号,它是快递公司为每一个快递包裹分配的唯一识别编号,一般是一串特定格式的字符串。 + * 在物流业务流程中,无论是用户查询包裹的实时物流状态,还是系统内部跟踪包裹的运输轨迹等操作,都需要依靠这个物流单号来向对应的快递公司查询接口发起请求, + * 进而获取到包裹的详细物流信息,比如包裹当前处于运输的哪个阶段、在哪个城市的哪个站点等情况,所以它是物流查询操作中至关重要的一个参数。 + * + * 通过使用 `@NotBlank` 注解,规定该参数不能为空,若前端传递过来的这个属性值为空字符串,就会触发“物流单号不能为空”的错误提示, + * 以此来保证传递的物流单号是有效的、真实存在的。同时,借助 `@Schema` 注解在 API 文档里为其添加“物流单号”的描述, + * 并将其标记为必填项,告知接口调用者在进行物流相关操作时必须提供准确的物流单号,确保物流查询等业务能够顺利开展。 + */ + @NotBlank(message = "物流单号不能为空") + @Schema(description = "物流单号", required = true) + private String dvyFlowId; + + /** + * `getDvyId`方法是遵循 JavaBean 规范的访问器方法(Getter 方法),其作用是对外提供获取 `dvyId` 属性值的途径。 + * 在其他类需要获取当前 `DeliveryOrderParam` 对象中存储的快递公司 ID 信息时,就可以通过调用这个方法来得到相应的值, + * 这符合面向对象编程中对数据封装和访问控制的原则,通过这种规范的方法调用,能够保证数据获取过程的安全性和规范性, + * 避免外部类直接访问属性可能带来的一些不合理操作,同时也使得代码结构更加清晰、易于维护。 + */ + public Long getDvyId() { + return dvyId; + } + + /** + * `setDvyId`方法是与 `getDvyId` 方法相对应的修改器方法(Setter 方法),它用于为 `dvyId` 属性设置新的值。 + * 当在业务逻辑中需要更新当前对象所存储的快递公司 ID 信息时(虽然在实际情况中这种更新可能相对较少出现), + * 外部代码可以通过调用这个方法,并传入一个新的 `Long` 类型的值,来实现对 `dvyId` 属性值的修改操作。 + * 在这个方法内部,还可以根据具体的业务需求添加一些额外的数据验证逻辑,例如验证传入的 ID 是否符合系统中已有的快递公司 ID 规则等, + * 以此来进一步保障数据的合法性和准确性,确保设置的快递公司 ID 是有效的、符合业务要求的。 + */ + public void setDvyId(Long dvyId) { + this.dvyId = dvyId; + } + + /** + * `getDvyFlowId`方法同样是一个 Getter 方法,它的功能是对外提供获取 `dvyFlowId` 属性值的渠道。 + * 在涉及物流业务操作的其他代码部分,如果需要知晓当前对象中存储的物流单号具体是什么,就可以调用这个方法来获取相应的字符串值, + * 遵循了 JavaBean 的规范,使得对属性的访问更加有序、可控,方便不同模块之间基于统一的方式来获取和使用这个重要的物流单号数据。 + */ + public String getDvyFlowId() { + return dvyFlowId; + } + + /** + * `setDvyFlowId`方法作为 `getDvyFlowId` 的对应 Setter 方法,用于对 `dvyFlowId` 属性进行赋值操作。 + * 当需要更新物流单号信息时(例如可能由于物流单号录入错误需要重新修改等情况),外部代码可以调用这个方法, + * 传入一个新的符合物流单号格式要求的字符串值,来改变 `DeliveryOrderParam` 对象中存储的物流单号内容。 + * 并且,在方法内部也可以根据实际业务情况添加必要的数据校验逻辑,例如检查新传入的物流单号是否符合对应快递公司的单号格式规范等, + * 从而保证设置的物流单号是正确且有效的,避免因错误的物流单号导致后续物流查询等业务出现问题。 + */ + public void setDvyFlowId(String dvyFlowId) { + this.dvyFlowId = dvyFlowId; + } + + /** + * `getOrderNumber`方法是用于获取 `orderNumber` 属性值的 Getter 方法,其作用与前面介绍的其他 Getter 方法类似。 + * 它为外部代码提供了获取当前对象中存储的订单号信息的途径,在后续的业务逻辑中,例如根据订单号去查询订单详情、 + * 将物流信息与对应的订单进行关联匹配等操作时,都需要通过调用这个方法来获取准确的订单号数据, + * 以保证整个业务流程能够围绕正确的订单来展开,同时也遵循了 JavaBean 规范,使得代码在数据访问方面更加清晰、规范。 + */ + public String getOrderNumber() { + return orderNumber; + } + + /** + * `setOrderNumber`方法是对应 `getOrderNumber` 的 Setter 方法,用于对 `orderNumber` 属性进行赋值操作。 + * 尽管在正常的电商业务流程中,订单号一旦生成通常是不允许随意更改的,但在某些特殊情况下(如数据修正等极个别场景), + * 如果确实需要更新订单号信息,外部代码可以调用这个方法,并传入一个新的符合订单号生成规则的字符串值,来改变该属性的存储内容。 + * 同样,在方法内部也可以添加适当的数据验证逻辑,例如检查新的订单号是否满足唯一性等要求,以保障订单号的合法性和整个系统的数据一致性。 + */ + public void setOrderNumber(String orderNumber) { + this.orderNumber = orderNumber; + } +} \ No newline at end of file