From 34784361a8da3980e0c2a23032db3da86c532f2a Mon Sep 17 00:00:00 2001 From: YOUR_USERNAME <1822377117@qq.com> Date: Tue, 17 Dec 2024 23:51:51 +0800 Subject: [PATCH] zhaoyuyan_pojo --- .../src/main/java/com/sky/dto/DishDTO.java | 67 ++++++ .../com/sky/dto/EmployeePageQueryDTO.java | 33 +++ .../src/main/java/com/sky/dto/OrdersDTO.java | 135 ++++++++++++ .../java/com/sky/dto/OrdersSubmitDTO.java | 75 +++++++ .../java/com/sky/dto/ShoppingCartDTO.java | 33 +++ .../src/main/java/com/sky/entity/Dish.java | 93 ++++++++ .../src/main/java/com/sky/entity/Orders.java | 205 ++++++++++++++++++ .../src/main/java/com/sky/entity/User.java | 72 ++++++ .../src/main/java/com/sky/vo/DishVO.java | 92 ++++++++ .../main/java/com/sky/vo/OrderReportVO.java | 59 +++++ .../java/com/sky/vo/SalesTop10ReportVO.java | 35 +++ .../src/main/java/com/sky/vo/UserLoginVO.java | 41 ++++ 12 files changed, 940 insertions(+) create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/DishDTO.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/EmployeePageQueryDTO.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/OrdersDTO.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/OrdersSubmitDTO.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/ShoppingCartDTO.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/entity/Dish.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/entity/Orders.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/entity/User.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/vo/DishVO.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/vo/OrderReportVO.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/vo/SalesTop10ReportVO.java create mode 100644 sky/sky-pojo/src/main/java/com/sky/vo/UserLoginVO.java diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/DishDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/DishDTO.java new file mode 100644 index 0000000..207285d --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/dto/DishDTO.java @@ -0,0 +1,67 @@ +package com.sky.dto; + +import com.sky.entity.DishFlavor; +import lombok.Data; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * DishDTO类,作为数据传输对象(Data Transfer Object),主要用于在系统不同模块或层次(比如业务逻辑层与展示层之间)传递菜品相关的数据信息, + * 其目的在于简化数据交互流程,将菜品的关键属性整合起来进行传递,遵循关注点分离原则,避免传递过多业务逻辑无关的内容,方便各模块间协同工作,确保数据传输的高效性和准确性。 + * 该类实现了Serializable接口,这意味着它能够被序列化,可应用于网络传输、持久化存储等场景,保障了数据在不同环境下可以完整且正确地流转和保存,满足系统对数据交互的实际需求。 + * 通过使用Lombok的@Data注解,自动为类生成了常用的方法,像Getter、Setter、toString、equals和hashCode等方法,减少了手动编写这些样板代码的工作量,使代码更加简洁明了,易于维护和扩展。 + */ +@Data +public class DishDTO implements Serializable { + + /** + * 菜品的唯一标识符,通常对应数据库中菜品记录的主键值,通过这个id可以在整个系统中精准地定位到具体的某一道菜品, + * 便于进行菜品的查询、修改、删除以及与其他业务逻辑相关的操作,是菜品在系统内的重要标识,对于菜品管理等业务场景起着关键作用。 + */ + private Long id; + + /** + * 菜品名称,是展示给用户看到的、用于区分不同菜品的重要文本信息,用户可以根据菜品名称直观地了解菜品的大致内容或特点, + * 同时也是系统内部进行菜品管理、查询等操作时的重要依据之一,例如在菜单展示、点菜操作等场景中,菜品名称都是必不可少的关键元素。 + */ + private String name; + + /** + * 菜品分类id,用于指明该菜品所属的分类,不同的分类可能有不同的业务规则、展示方式或者营销策略等, + * 通过这个分类id可以关联到对应的分类信息,比如在菜单展示中按照分类来分组显示菜品,方便用户查找和选择,有助于提升用户体验以及系统的菜品管理效率。 + */ + private Long categoryId; + + /** + * 菜品价格,使用BigDecimal类型来精确表示价格数值,因为在涉及金额计算时,需要保证精度和准确性,避免浮点数运算带来的精度丢失问题, + * 该价格是用户购买菜品需要支付的金额,也是进行财务统计、价格比较等业务操作的关键数据,对于餐饮系统等涉及菜品售卖的业务场景十分重要。 + */ + private BigDecimal price; + + /** + * 图片,用于展示菜品的外观、样式等可视化信息,通过图片可以让用户更直观地感受菜品的样子,增强用户购买的欲望, + * 在前端界面展示中,通常会将这个图片显示在菜品相关的位置,提升菜品展示效果以及用户的点菜意愿,是优化用户体验的重要因素之一。 + */ + private String image; + + /** + * 描述信息,用于对菜品进行更详细的介绍,比如菜品的制作工艺、口味特点、食材组成等内容, + * 帮助用户更好地了解菜品详情,以便做出是否购买的决策,同时也便于后台管理人员对菜品进行准确的描述和管理,在菜品展示和管理环节都有着重要意义。 + */ + private String description; + + /** + * 状态字段,以整数形式表示菜品的当前销售状态,其中“0”表示停售,意味着该菜品暂时不可供用户购买,可能是由于原材料短缺、菜品调整等原因; + * “1”表示起售,即菜品处于正常可售卖、可供用户选择的状态,系统可以根据这个状态来决定是否展示该菜品以及是否允许进行相关的下单操作等,方便对菜品的售卖情况进行管控。 + */ + private Integer status; + + /** + * 口味,是一个List集合,用于存放与该菜品相关联的DishFlavor对象,每个DishFlavor对象代表菜品的一种口味以及相关的口味信息(如口味的具体配料、辣度等), + * 通过这个集合可以清晰地知道该菜品具体有哪些口味可供选择,便于进行菜品口味的管理、展示以及在业务流程中涉及口味调整等操作,满足用户对于菜品口味多样化的需求。 + */ + private List flavors = new ArrayList<>(); + +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/EmployeePageQueryDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/EmployeePageQueryDTO.java new file mode 100644 index 0000000..892e1ef --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/dto/EmployeePageQueryDTO.java @@ -0,0 +1,33 @@ +package com.sky.dto; + +import lombok.Data; +import java.io.Serializable; + +/** + * EmployeePageQueryDTO类,作为数据传输对象(Data Transfer Object),主要用于在系统中传递员工信息分页查询相关的数据。 + * 它在涉及员工列表分页展示、按条件分页查找员工等业务场景下,负责将查询所需的关键参数从一层(比如表现层)传递到另一层(如业务逻辑层),以方便进行相应的数据库查询操作,遵循了关注点分离原则,简化了数据交互过程。 + * 该类实现了Serializable接口,这使得它能够被序列化,便于在诸如网络传输(例如从前端页面传递查询参数到后端服务)、持久化存储(虽相对少见,但在特定缓存等场景下可能涉及)等场景下正常使用,确保数据的完整性以及可以顺利地流转和保存。 + * 通过使用Lombok的@Data注解,自动为类生成了常用的方法,像Getter、Setter、toString、equals和hashCode等方法,减少了手动编写这些重复代码的工作量,让代码更加简洁高效,便于开发人员聚焦于核心业务逻辑。 + */ +@Data +public class EmployeePageQueryDTO implements Serializable { + + /** + * 员工姓名,用于指定要查询的员工姓名相关的筛选条件。 + * 可以是完整的员工真实姓名,也可以是部分姓名,业务逻辑层在接收到这个参数后,可根据具体的数据库查询规则(比如模糊查询等方式),查找出符合该姓名条件的员工记录,方便进行精准或模糊的员工查找操作,满足不同的查询需求。 + */ + private String name; + + /** + * 页码,用于表示当前要查询的是第几页的数据。 + * 在分页查询中,数据通常会被分成多个页面进行展示,这个页码参数明确了用户希望查看的具体页面位置,后端根据该页码以及每页显示记录数等信息,计算出要从数据库中提取哪些对应的数据记录,以便准确返回相应页面的员工信息,提升用户查看数据的便捷性和体验感。 + */ + private int page; + + /** + * 每页显示记录数,确定了每个页面中最多显示的员工记录数量。 + * 通过合理设置这个参数,可以控制页面数据的展示密度,避免一次展示过多数据导致页面加载缓慢或用户查看不便等问题,同时也便于后端进行数据库查询时,准确地按照设定的数量提取相应的员工记录来填充每一页的数据内容,优化分页查询的效果。 + */ + private int pageSize; + +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/OrdersDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/OrdersDTO.java new file mode 100644 index 0000000..64ff6b3 --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/dto/OrdersDTO.java @@ -0,0 +1,135 @@ +package com.sky.dto; + +import com.sky.entity.OrderDetail; +import lombok.Data; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + * OrdersDTO类,作为数据传输对象(Data Transfer Object),主要用于在系统不同模块或层次(比如业务逻辑层与展示层之间)传递订单相关的数据信息, + * 其目的在于整合订单相关的关键数据,简化数据交互流程,使得在涉及订单处理、展示等业务场景下,各模块能够方便地传递和使用订单数据,遵循关注点分离原则,避免传递过多不必要的业务逻辑细节,确保系统各部分协同高效工作。 + * 该类实现了Serializable接口,这意味着它能够被序列化,可应用于网络传输、持久化存储等多种场景,保障了订单数据在不同环境下可以完整、准确地流转和保存,满足系统在不同业务环节对订单数据交互的需求。 + * 通过使用Lombok的@Data注解,自动为类生成了常用的方法,像Getter、Setter、toString、equals和hashCode等方法,减少了手动编写这些样板代码的工作量,使代码更加简洁易读,便于后续的维护和扩展。 + */ +@Data +public class OrdersDTO implements Serializable { + + /** + * 订单的唯一标识符,通常对应数据库中订单记录的主键值,通过这个id可以在整个系统中精准地定位到具体的某一笔订单, + * 便于进行订单的查询、修改、删除以及与其他业务逻辑相关的操作,是订单在系统内的重要标识,对于订单管理、订单状态跟踪等业务场景起着关键作用。 + */ + private Long id; + + /** + * 订单号,是用于唯一标识每一笔订单的字符串,在整个系统中通过这个订单号可以快速且准确地找到对应的订单, + * 它在与外部系统交互(如支付平台回调、物流配送对接等)、用户查看订单详情以及内部业务逻辑处理(如订单查询、关联订单相关业务操作等)等场景下,都是非常重要的标识信息,方便各环节准确识别具体的订单。 + */ + private String number; + + /** + * 订单状态,以整数形式表示订单当前所处的不同阶段,其中: + * 1表示待付款,意味着用户已经提交了订单,但尚未完成支付操作,此时订单处于等待用户付款的状态,系统可能会根据业务规则设定一定的付款期限等相关处理; + * 2表示待派送,说明用户已成功付款,订单进入等待商家安排派送的阶段,商家需要准备商品、安排配送人员等相关事宜; + * 3表示已派送,代表商品已经从商家发出,正在送往用户指定地址的过程中,用户可以通过此状态跟踪配送进度等; + * 4表示已完成,即订单的整个交易流程顺利结束,用户已收到商品且无其他后续问题,商家可以进行相应的订单完结处理,如统计销售数据等; + * 5表示已取消,代表订单由于某些原因(如用户主动取消、不符合下单条件等)被终止,系统需要根据具体的取消原因进行相应的后续处理,比如退款、释放库存等操作。 + * 这个状态字段方便系统根据不同状态进行相应的业务流程控制和展示不同状态下的订单信息给用户查看。 + */ + private Integer status; + + /** + * 下单用户id,用于关联到具体下单的用户,通过这个id可以查询出该用户的相关信息(如用户名、联系方式等),也便于进行用户相关的订单统计分析(如查看某个用户的历史订单情况等), + * 在订单处理、用户订单管理等业务场景中,是建立订单与用户之间联系的重要标识,确保订单数据与对应的用户信息准确对应。 + */ + private Long userId; + + /** + * 餐具数量,用于记录用户在下单时所选择的餐具数量,比如在餐饮外卖等业务场景下,用户可以根据实际用餐人数等因素选择需要的餐具份数, + * 该数量信息对于商家准备餐具、配送餐具以及可能涉及的餐具收费等业务操作提供了明确的数据依据,确保满足用户需求同时合理安排相关资源。 + */ + private int tablewareNumber; + + /** + * 餐具数量状态,以整数形式表示餐具数量的选择方式,其中: + * 1表示按餐量提供,意味着餐具数量是根据订单中商品的餐量情况自动匹配提供的,无需用户手动选择具体数量,一般按照一定的业务规则来确定; + * 0表示选择具体数量,即用户自己明确指定了需要的餐具具体份数,系统按照用户所选数量进行相应安排,这个字段便于系统区分不同的餐具数量确定方式并进行相应处理。 + */ + private Integer tablewareStatus; + + /** + * 地址id,用于关联到用户的收货地址信息,通过这个id可以获取到详细的收货地址(如省市区、详细街道地址、收货人等信息), + * 在订单派送、地址管理以及物流配送等业务场景中,是确定商品最终送达位置的关键标识,确保订单能够准确无误地送到用户指定的地点。 + */ + private Long addressBookId; + + /** + * 下单时间,使用LocalDateTime类型精确记录订单创建的时间点,这个时间信息对于统计订单的下单时间分布、分析业务高峰期、查看订单时效性等业务分析操作非常有帮助, + * 同时也可以作为订单处理流程中的时间参考依据,比如判断是否超过了付款期限等情况,有助于系统进行相关的时间敏感型业务处理。 + */ + private LocalDateTime orderTime; + + /** + * 结账时间,同样使用LocalDateTime类型来记录订单完成支付结算的时间,对于财务统计(如统计每日、每月的收款情况等)、订单处理流程跟踪(确定付款环节的具体时间)等业务场景有着重要作用, + * 它与下单时间等其他时间字段结合,可以清晰地展现订单从创建到完成支付这一过程的时间跨度以及具体时间节点。 + */ + private LocalDateTime checkoutTime; + + /** + * 支付方式,以整数形式表示用户选择的用于支付订单的具体途径,其中: + * 1表示微信支付,意味着用户通过微信平台提供的支付功能完成了订单付款; + * 2表示支付宝支付,即用户使用支付宝的支付服务来支付订单金额,这个字段方便系统对接相应的支付平台进行支付处理以及后续的支付记录统计分析等工作。 + */ + private Integer payMethod; + + /** + * 实收金额,使用BigDecimal类型来精确表示订单实际收到的金额数值,因为在涉及金额计算和记录时,需要保证精度和准确性,避免浮点数运算带来的精度丢失问题, + * 该金额是用户最终为订单支付的实际费用,对于财务核算、订单金额统计、与支付平台对账等业务操作是关键的数据依据。 + */ + private BigDecimal amount; + + /** + * 备注,是用户在下单时可以填写的一些额外说明信息,比如对菜品口味的特殊要求(在外卖餐饮订单中)、配送时间的特殊期望、对商品的特殊备注等内容, + * 商家可以根据这些备注信息来尽量满足用户的个性化需求,同时在订单处理和查看过程中,备注信息也有助于更全面地了解订单的具体情况,提升用户体验。 + */ + private String remark; + + /** + * 用户名,用于展示下单用户的名称信息,方便在订单相关的展示界面中让接收方(如商家、配送人员等)快速知晓是哪位用户下的订单, + * 同时也便于用户在查看自己的订单时,能够直观地确认订单归属,增强订单信息的可读性和辨识度。 + */ + private String userName; + + /** + * 手机号,记录下单用户的联系方式,在订单处理过程中,如果遇到问题(如配送地址不清楚、商品有疑问等情况),相关人员(如配送员、客服等)可以通过这个手机号与用户取得联系, + * 它是保障订单顺利完成以及进行用户沟通的重要信息,对于订单的配送、售后服务等环节起着关键作用。 + */ + private String phone; + + /** + * 地址,用于展示用户的详细收货地址信息,将收货地址以字符串形式呈现出来,方便相关人员(如配送员等)直接查看并准确找到送货地点, + * 与地址id关联获取的地址信息相对应,是在订单展示等场景下更直观呈现地址内容的一种方式,确保订单能够准确送达目的地。 + */ + private String address; + + /** + * 收货人,明确记录了接收商品的人员姓名,在配送环节,配送员可以通过这个收货人姓名来确认将商品交付给正确的对象, + * 是收货地址信息中很重要的一部分,对于保证商品准确送达以及避免配送错误等情况有着重要意义,提升订单配送的准确性。 + */ + private String consignee; + + /** + * 订单详情列表,用于存放与该订单相关联的OrderDetail对象,每个OrderDetail对象代表订单中的一项商品详情(如商品名称、数量、单价等信息), + * 通过这个列表可以清晰地知道该订单具体包含了哪些商品以及它们各自的具体情况,便于进行订单商品的管理、展示以及在业务流程中涉及商品调整、统计商品销售数量等操作,是订单数据中不可或缺的重要组成部分。 + */ + private List orderDetails; + + /** + * 配送状态,以整数形式表示商品配送的时间安排情况,其中: + * 1表示立即送出,意味着订单完成支付后,商家会尽快安排商品进行配送,无需用户指定具体的配送时间,按照正常的业务流程尽快发货; + * 0表示选择具体时间,即用户在下单时指定了希望商品在某个特定时间进行配送,商家需要根据用户的要求来安排相应的配送计划,这个字段便于系统区分不同的配送时间安排方式并进行相应处理。 + */ + private Integer deliveryStatus; + +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/OrdersSubmitDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/OrdersSubmitDTO.java new file mode 100644 index 0000000..11836f5 --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/dto/OrdersSubmitDTO.java @@ -0,0 +1,75 @@ +package com.sky.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * OrdersSubmitDTO类,作为数据传输对象(Data Transfer Object),主要用于在系统中传递订单提交相关的数据信息, + * 也就是在用户完成下单操作、即将向系统提交订单时,将涉及订单提交环节的关键数据整合起来进行传递,方便各业务模块间协同处理订单提交的业务逻辑, + * 遵循了关注点分离原则,简化了数据交互过程,使得订单提交这一复杂业务场景中的数据流转更加清晰、高效。 + * 该类实现了Serializable接口,这使得它能够被序列化,便于在诸如网络传输(从前端页面传递订单提交数据到后端服务)、持久化存储(比如可能涉及的临时存储订单提交信息等场景)等场景下正常使用,确保数据的完整性以及可以顺利地流转和保存。 + * 通过使用Lombok的@Data注解,自动为类生成了常用的方法,像Getter、Setter、toString、equals和hashCode等方法,减少了手动编写这些重复代码的工作量,让代码更加简洁高效,便于开发人员聚焦于核心业务逻辑。 + */ +@Data +public class OrdersSubmitDTO implements Serializable { + + /** + * 地址簿id,用于关联到用户预先设置好的地址簿信息,通过这个id可以获取到详细的收货地址(包括收货人姓名、联系电话、省市区地址以及详细街道地址等内容), + * 在订单提交时,明确收货地址是非常关键的,它决定了商品最终要送达的位置,确保订单能够准确无误地送到用户指定的地点,方便后续的配送等业务操作。 + */ + private Long addressBookId; + + /** + * 付款方式,以整数形式表示用户选择的用于支付该订单的具体途径,例如可以约定特定的整数值对应不同的支付渠道,像1可能表示微信支付,2可能表示支付宝支付等等, + * 系统会根据这个字段的值来对接相应的支付平台进行支付处理,确保订单金额能够正确收取,同时也便于后续进行支付记录统计分析以及与支付平台对账等业务操作。 + */ + private int payMethod; + + /** + * 备注,是用户在下单过程中可以填写的一些额外说明信息,比如对商品的特殊要求(如餐饮订单中菜品的口味偏好、特殊包装需求等)、对配送时间的特殊期望(如果配送状态选择了具体时间但还想进一步备注说明等情况)等内容, + * 商家和配送人员可以根据这些备注信息来尽量满足用户的个性化需求,提升用户的购物体验,同时也有助于更全面地了解订单的具体情况,方便后续对订单的处理。 + */ + private String remark; + + /** + * 预计送达时间,使用LocalDateTime类型来记录用户期望商品送达的时间点,通过@JsonFormat注解进行格式化配置,将其格式指定为"yyyy-MM-dd HH:mm:ss", + * 这样在数据传输和展示过程中能够以统一、清晰的时间格式呈现,方便前后端数据交互以及用户查看,在配送安排等业务场景中,这个时间信息可作为重要参考,帮助商家合理规划配送任务,确保尽量满足用户的期望送达时间要求。 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime estimatedDeliveryTime; + + /** + * 配送状态,以整数形式表示商品配送的时间安排情况,其中: + * 1表示立即送出,意味着用户希望订单完成支付后,商家能尽快安排商品进行配送,无需再指定具体的配送时间,按照正常的业务流程尽快发货; + * 0表示选择具体时间,即用户明确指定了希望商品在某个特定时间进行配送,商家需要根据用户的要求来安排相应的配送计划,这个字段便于系统区分不同的配送时间安排方式并进行相应的配送业务处理。 + */ + private Integer deliveryStatus; + + /** + * 餐具数量,用于记录用户在下单时所选择的餐具数量,比如在餐饮外卖等业务场景下,用户可以根据实际用餐人数等因素选择需要的餐具份数, + * 该数量信息对于商家准备餐具、配送餐具以及可能涉及的餐具收费等业务操作提供了明确的数据依据,确保满足用户需求同时合理安排相关资源。 + */ + private Integer tablewareNumber; + + /** + * 餐具数量状态,以整数形式表示餐具数量的选择方式,其中: + * 1表示按餐量提供,意味着餐具数量是根据订单中商品的餐量情况自动匹配提供的,无需用户手动选择具体数量,一般按照一定的业务规则来确定; + * 0表示选择具体数量,即用户自己明确指定了需要的餐具具体份数,系统按照用户所选数量进行相应安排,这个字段便于系统区分不同的餐具数量确定方式并进行相应处理。 + */ + private Integer tablewareStatus; + + /** + * 打包费,以整数形式表示该订单的打包费用,在一些商品需要特殊包装或者商家对打包服务单独收费的业务场景下,这个字段记录了相应的打包费用金额, + * 它是订单总金额的一部分,对于财务统计、费用明细展示以及与用户确认最终费用等业务操作有着重要作用,确保费用计算准确透明。 + */ + private Integer packAmount; + + /** + * 总金额,使用BigDecimal类型来精确表示订单的全部费用金额,因为在涉及金额计算和记录时,需要保证精度和准确性,避免浮点数运算带来的精度丢失问题, + * 这个总金额包含了商品价格、打包费等各项费用的总和,是用户最终需要支付的金额,对于财务核算、订单金额统计以及与用户确认支付金额等业务操作是关键的数据依据。 + */ + private BigDecimal amount; +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/ShoppingCartDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/ShoppingCartDTO.java new file mode 100644 index 0000000..97f0165 --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/dto/ShoppingCartDTO.java @@ -0,0 +1,33 @@ +package com.sky.dto; + +import lombok.Data; +import java.io.Serializable; + +/** + * ShoppingCartDTO类,作为数据传输对象(Data Transfer Object),主要用于在系统不同模块或层次(比如业务逻辑层与展示层之间)传递购物车相关的数据信息, + * 其目的在于简化购物车相关数据的交互流程,将购物车中关键的商品相关数据整合起来进行传递,遵循关注点分离原则,避免传递过多与购物车业务逻辑无关的内容,方便各模块协同完成购物车相关的业务操作,例如添加商品到购物车、查看购物车商品等。 + * 该类实现了Serializable接口,这意味着它能够被序列化,可应用于网络传输、持久化存储等多种场景,保障了购物车数据在不同环境下可以完整且正确地流转和保存,满足系统在购物车功能实现过程中对数据交互的需求。 + * 通过使用Lombok的@Data注解,自动为类生成了常用的方法,像Getter、Setter、toString、equals和hashCode等方法,减少了手动编写这些样板代码的工作量,使代码更加简洁明了,易于维护和扩展。 + */ +@Data +public class ShoppingCartDTO implements Serializable { + + /** + * 菜品id,用于唯一标识购物车中的某一道菜品,通过这个id可以关联到菜品的详细信息(如菜品名称、价格、图片、口味等), + * 在购物车业务场景中,便于准确知晓购物车中具体包含了哪些菜品个体,以及后续进行与该菜品相关的操作,比如修改菜品数量、删除该菜品等,是购物车中菜品管理的重要标识之一。 + */ + private Long dishId; + + /** + * 套餐id,用于标识购物车中添加的套餐,凭借这个id可以获取到套餐的详细信息(如套餐名称、包含的菜品、价格等), + * 当用户将套餐加入购物车后,通过该id能清晰确定是哪个套餐在购物车中,方便进行套餐相关的业务操作,例如查看套餐详情、调整套餐数量等,是对购物车中套餐进行管理的关键标识。 + */ + private Long setmealId; + + /** + * 菜品口味,用于记录购物车中菜品的口味信息,例如对于一道有多种口味可选的菜品(如麻辣、糖醋等口味),这个字段就会记录用户选择的具体口味, + * 使得系统能够准确了解用户对于菜品口味的偏好,在购物车展示、下单处理等业务环节中,根据这个口味信息来准确准备相应口味的菜品,提升用户购物体验。 + */ + private String dishFlavor; + +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/entity/Dish.java b/sky/sky-pojo/src/main/java/com/sky/entity/Dish.java new file mode 100644 index 0000000..3dceb08 --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/entity/Dish.java @@ -0,0 +1,93 @@ +package com.sky.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * Dish类,用于表示菜品相关的实体信息,是餐饮系统等相关项目中对菜品数据进行存储、查询、更新等操作的核心数据载体, + * 涵盖了菜品从基本属性(如名称、价格、分类等)到状态信息以及创建、更新相关的时间与用户记录等多方面的关键内容,方便在菜品管理、售卖等诸多业务场景下使用。 + * 该类实现了Serializable接口,这使得它可以被序列化,从而能够在诸如网络传输(例如不同门店间同步菜品信息)、持久化存储(保存到数据库中供后续查询和操作)等场景下正常流转,保障数据的完整性和可复用性。 + * 通过使用Lombok提供的多个注解,有效简化了代码编写过程中对于构造函数、Getter/Setter方法以及对象构建方式等部分的代码量。 + * @Data注解自动生成常用的Getter、Setter、toString、equals和hashCode等方法; + * @Builder注解便于使用建造者模式来创建该类的对象,使对象创建过程更加清晰灵活; + * @NoArgsConstructor和@AllArgsConstructor注解分别生成无参构造函数和包含所有参数的构造函数,以满足不同业务场景下创建对象的需求。 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Dish implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 菜品的唯一标识符,通常对应数据库中菜品记录的主键,凭借这个id能够在整个系统中精准地定位到具体的某一道菜品, + * 便于进行菜品信息的各种操作,如查询、修改、删除等,是菜品实体在系统内的重要标识依据,对于菜品管理等业务场景起着关键作用。 + */ + private Long id; + + /** + * 菜品名称,是展示给用户看到的、用于区分不同菜品的重要文本信息,用户可以根据菜品名称直观地了解菜品的大致内容或特点, + * 同时也是系统内部进行菜品管理、查询等操作时的重要依据之一,例如在菜单展示、点菜操作等场景中,菜品名称都是必不可少的关键元素,方便用户进行选择以及系统进行菜品相关的管理操作。 + */ + private String name; + + /** + * 菜品分类id,用于指明该菜品所属的分类,不同的分类可能有不同的业务规则、展示方式或者营销策略等, + * 通过这个分类id可以关联到对应的分类信息,比如在菜单展示中按照分类来分组显示菜品,方便用户查找和选择,有助于提升用户体验以及系统的菜品管理效率,是菜品组织与展示的重要关联属性。 + */ + private Long categoryId; + + /** + * 菜品价格,使用BigDecimal类型来精确表示价格数值,因为在涉及金额计算时,需要保证精度和准确性,避免浮点数运算带来的精度丢失问题, + * 该价格是用户购买菜品需要支付的金额,也是进行财务统计、价格比较等业务操作的关键数据,对于餐饮系统等涉及菜品售卖的业务场景十分重要,明确了菜品的价值衡量标准。 + */ + private BigDecimal price; + + /** + * 图片,用于展示菜品的外观、样式等可视化信息,通过图片可以让用户更直观地感受菜品的样子,增强用户购买的欲望, + * 在前端界面展示中,通常会将这个图片显示在菜品相关的位置,提升菜品展示效果以及用户的点菜意愿,是优化用户体验的重要因素之一,从视觉角度辅助菜品的推广与销售。 + */ + private String image; + + /** + * 描述信息,用于对菜品进行更详细的介绍,比如菜品的制作工艺、口味特点、食材组成等内容, + * 帮助用户更好地了解菜品详情,以便做出是否购买的决策,同时也便于后台管理人员对菜品进行准确的描述和管理,在菜品展示和管理环节都有着重要意义,丰富了用户对菜品的认知。 + */ + private String description; + + /** + * 状态字段,以整数形式表示菜品的当前销售状态,其中“0”表示停售,意味着该菜品暂时不可供用户购买,可能是由于原材料短缺、菜品调整等原因; + * “1”表示起售,即菜品处于正常可售卖、可供用户选择的状态,系统可以根据这个状态来决定是否展示该菜品以及是否允许进行相关的下单操作等,方便对菜品的售卖情况进行管控,保障菜品销售管理的有序性。 + */ + private Integer status; + + /** + * 菜品的创建时间,使用LocalDateTime类型来精确记录菜品信息首次被录入系统的时间点, + * 这个时间信息有助于进行数据溯源、统计不同时间段的菜品新增情况等业务分析,例如可以查看每月新推出了哪些菜品等,为菜品管理的历史记录提供了时间维度的参考依据。 + */ + private LocalDateTime createTime; + + /** + * 菜品的更新时间,同样使用LocalDateTime类型来记录菜品信息最近一次被修改的时间, + * 可以用于跟踪菜品信息的变动情况,了解哪些菜品信息在何时进行了更新,对于数据审计、历史记录查询等方面有一定帮助,便于掌握菜品数据的变化轨迹。 + */ + private LocalDateTime updateTime; + + /** + * 创建该菜品信息的用户的唯一标识符,通常对应着操作创建菜品记录的那个用户(可能是系统管理员或者有相应权限的厨师、工作人员等)的id, + * 通过这个关联可以追溯菜品信息最初是由谁录入系统的,便于进行操作记录和责任划分等管理工作,明确菜品创建的责任主体。 + */ + private Long createUser; + + /** + * 更新该菜品信息的用户的唯一标识符,对应着最后一次对菜品信息进行修改操作的用户的id, + * 有助于了解菜品信息的变动是由哪位用户执行的,在需要核对信息修改情况以及权限管理等方面能发挥作用,辅助监控菜品信息的更新情况及对应的操作人。 + */ + private Long updateUser; +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/entity/Orders.java b/sky/sky-pojo/src/main/java/com/sky/entity/Orders.java new file mode 100644 index 0000000..897e6ce --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/entity/Orders.java @@ -0,0 +1,205 @@ +package com.sky.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * Orders类,用于表示订单相关的实体信息,是整个系统中对订单数据进行存储、查询、更新以及业务流程处理等操作的核心数据载体, + * 涵盖了订单从基本属性(如订单号、下单用户、金额等)到不同阶段的状态信息(订单状态、支付状态等)以及与配送、取消、备注等相关的多方面关键内容, + * 在订单管理、交易流程跟踪、配送安排以及售后处理等诸多业务场景下起着至关重要的作用。 + * 该类实现了Serializable接口,这使得它可以被序列化,从而能够在诸如网络传输(例如在客户端与服务器之间传递订单数据、不同系统间同步订单信息等)、 + * 持久化存储(保存到数据库中以便后续查询、统计和操作)等场景下正常流转,保障数据的完整性和可复用性。 + * 通过使用Lombok提供的多个注解,有效简化了代码编写过程中对于构造函数、Getter/Setter方法以及对象构建方式等部分的代码量。 + * @Data注解自动生成常用的Getter、Setter、toString、equals和hashCode等方法; + * @Builder注解便于使用建造者模式来创建该类的对象,使对象创建过程更加清晰灵活; + * @NoArgsConstructor和@AllArgsConstructor注解分别生成无参构造函数和包含所有参数的构造函数,以满足不同业务场景下创建对象的需求。 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Orders implements Serializable { + + /** + * 订单状态相关的常量定义,用于清晰表示订单所处的不同业务阶段,方便在代码中进行状态判断和业务逻辑处理,使代码的可读性更强。 + * 以下是各常量对应的具体含义: + * 1待付款,表示用户已经提交了订单,但尚未完成支付操作,此时订单处于等待用户付款的状态,系统可能会根据业务规则设定一定的付款期限等相关处理; + * 2待接单,意味着订单已生成但商家还未确认接收该订单,通常用于外卖、服务预订等业务场景中商家处理订单的前置阶段; + * 3已接单,代表商家已经确认接收了订单,会开始准备商品或安排相应服务等后续操作,标志着订单进入商家处理流程; + * 4派送中,说明商品或服务已经准备好,正在送往用户指定地址的过程中,用户可以通过此状态跟踪配送进度等; + * 5已完成,即订单的整个交易流程顺利结束,用户已收到商品或服务且无其他后续问题,商家可以进行相应的订单完结处理,如统计销售数据等; + * 6已取消,代表订单由于某些原因(如用户主动取消、不符合下单条件等)被终止,系统需要根据具体的取消原因进行相应的后续处理,比如退款、释放库存等操作; + * 7退款,用于表示订单已经进行了退款操作,可能是因为用户申请退款且符合退款条件,后续涉及财务退款流程以及订单状态更新等相关处理。 + */ + public static final Integer PENDING_PAYMENT = 1; + public static final Integer TO_BE_CONFIRMED = 2; + public static final Integer CONFIRMED = 3; + public static final Integer DELIVERY_IN_PROGRESS = 4; + public static final Integer COMPLETED = 5; + public static final Integer CANCELLED = 6; + + /** + * 支付状态相关的常量定义,用于明确订单在支付方面所处的不同情况,便于在业务逻辑中针对不同支付状态进行相应处理,增强代码的可维护性和可读性。 + * 具体含义如下: + * 0未支付,说明订单虽然已经生成,但用户还未完成支付动作,系统需要提示用户付款或者根据业务规则进行相应的超时等处理; + * 1已支付,代表用户已经成功完成了订单的支付操作,此时订单可以进入后续的商家处理、配送等流程; + * 2退款,意味着订单发生了退款情况,可能是用户申请退款且经过审核通过等原因,后续需要涉及财务相关的退款处理以及更新订单相关状态等操作。 + */ + public static final Integer UN_PAID = 0; + public static final Integer PAID = 1; + public static final Integer REFUND = 2; + + private static final long serialVersionUID = 1L; + + /** + * 订单的唯一标识符,通常对应数据库中订单记录的主键,凭借这个id能够在整个系统中精准地定位到具体的某一笔订单, + * 便于进行订单信息的各种操作,如查询、修改、删除以及与其他业务逻辑相关的操作,是订单实体在系统内的重要标识依据,对于订单管理、订单状态跟踪等业务场景起着关键作用。 + */ + private Long id; + + /** + * 订单号,是用于唯一标识每一笔订单的字符串,在整个系统中通过这个订单号可以快速且准确地找到对应的订单, + * 它在与外部系统交互(如支付平台回调、物流配送对接等)、用户查看订单详情以及内部业务逻辑处理(如订单查询、关联订单相关业务操作等)等场景下,都是非常重要的标识信息,方便各环节准确识别具体的订单。 + */ + private String number; + + /** + * 订单状态,以整数形式表示订单当前所处的不同阶段,取值对应上面定义的订单状态常量(PENDING_PAYMENT、TO_BE_CONFIRMED等), + * 系统根据这个状态值来决定接下来要执行的业务流程,例如对于待付款状态的订单,会提醒用户付款;已接单状态则通知商家准备商品等,方便对订单的整个生命周期进行管理和控制。 + */ + private Integer status; + + /** + * 下单用户id,用于关联到具体下单的用户,通过这个id可以查询出该用户的相关信息(如用户名、联系方式等),也便于进行用户相关的订单统计分析(如查看某个用户的历史订单情况等), + * 在订单处理、用户订单管理等业务场景中,是建立订单与用户之间联系的重要标识,确保订单数据与对应的用户信息准确对应。 + */ + private Long userId; + + /** + * 地址id,用于关联到用户的收货地址信息,通过这个id可以获取到详细的收货地址(如省市区、详细街道地址、收货人等信息), + * 在订单派送、地址管理以及物流配送等业务场景中,是确定商品最终送达位置的关键标识,确保订单能够准确无误地送到用户指定的地点。 + */ + private Long addressBookId; + + /** + * 下单时间,使用LocalDateTime类型精确记录订单创建的时间点,这个时间信息对于统计订单的下单时间分布、分析业务高峰期、查看订单时效性等业务分析操作非常有帮助, + * 同时也可以作为订单处理流程中的时间参考依据,比如判断是否超过了付款期限等情况,有助于系统进行相关的时间敏感型业务处理。 + */ + private LocalDateTime orderTime; + + /** + * 结账时间,同样使用LocalDateTime类型来记录订单完成支付结算的时间,对于财务统计(如统计每日、每月的收款情况等)、订单处理流程跟踪(确定付款环节的具体时间)等业务场景有着重要作用, + * 它与下单时间等其他时间字段结合,可以清晰地展现订单从创建到完成支付这一过程的时间跨度以及具体时间节点。 + */ + private LocalDateTime checkoutTime; + + /** + * 支付方式,以整数形式表示用户选择的用于支付订单的具体途径,其中: + * 1表示微信支付,意味着用户通过微信平台提供的支付功能完成了订单付款; + * 2表示支付宝支付,即用户使用支付宝的支付服务来支付订单金额,这个字段方便系统对接相应的支付平台进行支付处理以及后续的支付记录统计分析等工作。 + */ + private Integer payMethod; + + /** + * 支付状态,以整数形式表示订单在支付方面的当前情况,取值对应上面定义的支付状态常量(UN_PAID、PAID、REFUND), + * 系统根据这个状态来决定是否需要进行支付提醒、是否启动退款流程等与支付相关的业务操作,便于对订单支付情况进行准确把控。 + */ + private Integer payStatus; + + /** + * 实收金额,使用BigDecimal类型来精确表示订单实际收到的金额数值,因为在涉及金额计算和记录时,需要保证精度和准确性,避免浮点数运算带来的精度丢失问题, + * 该金额是用户最终为订单支付的实际费用,对于财务核算、订单金额统计、与支付平台对账等业务操作是关键的数据依据。 + */ + private BigDecimal amount; + + /** + * 备注,是用户在下单时可以填写的一些额外说明信息,比如对商品的特殊要求(在外卖餐饮订单中)、配送时间的特殊期望、对商品的特殊备注等内容, + * 商家和配送人员可以根据这些备注信息来尽量满足用户的个性化需求,同时在订单处理和查看过程中,备注信息也有助于更全面地了解订单的具体情况,提升用户体验。 + */ + private String remark; + + /** + * 用户名,用于展示下单用户的名称信息,方便在订单相关的展示界面中让接收方(如商家、配送人员等)快速知晓是哪位用户下的订单, + * 同时也便于用户在查看自己的订单时,能够直观地确认订单归属,增强订单信息的可读性和辨识度。 + */ + private String userName; + + /** + * 手机号,记录下单用户的联系方式,在订单处理过程中,如果遇到问题(如配送地址不清楚、商品有疑问等情况),相关人员(如配送员、客服等)可以通过这个手机号与用户取得联系, + * 它是保障订单顺利完成以及进行用户沟通的重要信息,对于订单的配送、售后服务等环节起着关键作用。 + */ + private String phone; + + /** + * 地址,用于展示用户的详细收货地址信息,将收货地址以字符串形式呈现出来,方便相关人员(如配送员等)直接查看并准确找到送货地点, + * 与地址id关联获取的地址信息相对应,是在订单展示等场景下更直观呈现地址内容的一种方式,确保订单能够准确送达目的地。 + */ + private String address; + + /** + * 收货人,明确记录了接收商品的人员姓名,在配送环节,配送员可以通过这个收货人姓名来确认将商品交付给正确的对象, + * 是收货地址信息中很重要的一部分,对于保证商品准确送达以及避免配送错误等情况有着重要意义,提升订单配送的准确性。 + */ + private String consignee; + + /** + * 订单取消原因,用于记录订单被取消的具体缘由,比如是用户主动取消(可能因为改变主意、不需要商品了等原因),还是因为系统原因(如库存不足无法发货、不符合下单规则等)导致的取消, + * 这个字段有助于后续进行数据分析、处理退款事宜以及向用户反馈取消原因等业务操作,对于订单取消流程的管理和用户沟通非常重要。 + */ + private String cancelReason; + + /** + * 订单拒绝原因,在一些业务场景下(例如商家拒绝接单等情况),用于记录订单被拒绝的具体原因,可能是因为商家无法提供相应服务、商品缺货等原因, + * 通过记录这个原因,便于系统进行相应的后续处理,如通知用户、调整订单状态以及进行相关业务数据统计分析等操作。 + */ + private String rejectionReason; + + /** + * 订单取消时间,使用LocalDateTime类型精确记录订单被取消的时间点,对于统计订单取消的时间分布、分析取消订单的规律以及涉及退款等业务操作的时间参考等方面有着重要作用, + * 它与下单时间、结账时间等时间字段共同构成了订单时间线的一部分,有助于全面了解订单的整个生命周期情况。 + */ + private LocalDateTime cancelTime; + + /** + * 预计送达时间,使用LocalDateTime类型来记录预估的商品送达用户手中的时间点,在配送安排等业务场景中,这个时间信息可作为重要参考, + * 商家可以根据这个时间来合理规划配送任务,配送员也可以据此安排自己的送货顺序等,同时也方便用户知晓大概何时能收到商品,提升用户体验。 + */ + private LocalDateTime estimatedDeliveryTime; + + /** + * 配送状态,以整数形式表示商品配送的时间安排情况,其中: + * 1表示立即送出,意味着订单完成支付后,商家会尽快安排商品进行配送,无需用户指定具体的配送时间,按照正常的业务流程尽快发货; + * 0表示选择具体时间,即用户在下单时指定了希望商品在某个特定时间进行配送,商家需要根据用户的要求来安排相应的配送计划,这个字段便于系统区分不同的配送时间安排方式并进行相应的配送业务处理。 + */ + private Integer deliveryStatus; + + /** + * 送达时间,使用LocalDateTime类型精确记录商品实际送达用户手中的时间点,对于统计配送时效、分析配送效率以及进行订单完成情况确认等业务操作有着重要作用, + * 它与预计送达时间对比,可以评估配送是否按时完成等情况,是衡量配送服务质量的重要依据之一。 + */ + private LocalDateTime deliveryTime; + + /** + * 打包费,以整数形式表示该订单的打包费用,在一些商品需要特殊包装或者商家对打包服务单独收费的业务场景下,这个字段记录了相应的打包费用金额, + * 它是订单总金额的一部分,对于财务统计、费用明细展示以及与用户确认最终费用等业务操作有着重要作用,确保费用计算准确透明。 + */ + private int packAmount; + + /** + * 餐具数量,用于记录用户在下单时所选择的餐具数量,比如在餐饮外卖等业务场景下,用户可以根据实际用餐人数等因素选择需要的餐具份数, + * 该数量信息对于商家准备餐具、配送餐具以及可能涉及的餐具收费等业务操作提供了明确的数据依据,确保满足用户需求同时合理安排相关资源。 + */ + private int tablewareNumber; + + /** + * 餐具数量状态,以整数形式表示餐具数量的选择方式,其中: + * 1表示按餐量提供,意味着餐具数量是根据订单中商品的餐量情况自动匹配提供的,无需用户手动选择具体数量,一般按照一定的业务规则来确定; + * 0表示选择具体数量,即用户自己明确指定了需要的餐具具体份数,系统按照用户所选数量进行相应安排,这个字段便于系统区分不同的餐具数量确定方式并进行相应处理。 + */ + private Integer tablewareStatus; +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/entity/User.java b/sky/sky-pojo/src/main/java/com/sky/entity/User.java new file mode 100644 index 0000000..aef8c9b --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/entity/User.java @@ -0,0 +1,72 @@ +package com.sky.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * User类,用于表示用户相关的实体信息,是系统中对用户数据进行存储、查询、更新等操作的核心数据载体, + * 涵盖了从用户在平台的唯一标识(如微信用户的openid)到基本个人信息(姓名、手机号、性别等)以及注册相关时间记录等多方面的关键内容, + * 在用户管理、身份验证、个性化服务等诸多业务场景下起着重要作用。 + * 该类实现了Serializable接口,这使得它可以被序列化,从而能够在诸如网络传输(例如不同服务器间同步用户信息、与第三方平台交互用户数据等)、 + * 持久化存储(保存到数据库中供后续查询和操作)等场景下正常流转,保障数据的完整性和可复用性。 + * 通过使用Lombok提供的多个注解,有效简化了代码编写过程中对于构造函数、Getter/Setter方法以及对象构建方式等部分的代码量。 + * @Data注解自动生成常用的Getter、Setter、toString、equals和hashCode等方法; + * @Builder注解便于使用建造者模式来创建该类的对象,使对象创建过程更加清晰灵活; + * @NoArgsConstructor和@AllArgsConstructor注解分别生成无参构造函数和包含所有参数的构造函数,以满足不同业务场景下创建对象的需求。 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class User implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户的唯一标识符,通常对应数据库中用户记录的主键,凭借这个id能够在整个系统中精准地定位到具体的某一位用户, + * 便于进行用户信息的各种操作,如查询、修改、删除等,是用户实体在系统内的重要标识依据,对于用户管理等业务场景起着关键作用。 + */ + private Long id; + + /** + * 微信用户唯一标识,在基于微信生态的应用或者与微信进行关联登录等场景下,这个openid是用于区分不同微信用户的重要标识, + * 系统通过该openid来识别用户身份,与微信平台进行交互(如获取用户信息、验证登录状态等),是实现微信相关用户功能的关键属性。 + */ + private String openid; + + /** + * 姓名,用于展示用户的真实称呼,方便在系统内进行用户展示、交互以及个性化服务等场景中使用,例如在用户信息页面展示、客服沟通等环节,姓名是重要的识别信息。 + */ + private String name; + + /** + * 手机号,作为联系用户的重要方式,可用于发送短信通知(如验证码、订单提醒等)、找回密码等业务操作,同时也是用户在平台进行账号安全验证等方面的重要依据之一。 + */ + private String phone; + + /** + * 性别,以字符串形式表示,其中“0”代表女性,“1”代表男性,虽然性别信息在部分业务场景中并非核心要素,但在一些个性化服务场景(如根据性别推荐不同内容)、 + * 统计分析(如用户性别比例统计)等情况下会发挥作用,有助于更细致地了解用户群体特征。 + */ + private String sex; + + /** + * 身份证号,作为重要的身份识别信息,常用于需要严格身份认证的业务流程中,例如在涉及实名认证、办理重要业务(如涉及资金交易、权益保障等)时,需要核对身份证号以确保用户身份的准确性。 + */ + private String idNumber; + + /** + * 头像,用于展示用户的个人形象,通常以图片链接或者图片数据的形式存储,在用户信息展示、社交互动等场景中,头像可以让用户形象更加直观,提升用户体验和辨识度。 + */ + private String avatar; + + /** + * 注册时间,使用LocalDateTime类型来精确记录用户首次在系统中注册账号的时间点, + * 这个时间信息有助于进行数据溯源、统计不同时间段的用户新增情况等业务分析,例如可以查看每月新注册了多少用户等,为用户增长相关的数据分析提供了时间维度的参考依据。 + */ + private LocalDateTime createTime; +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/vo/DishVO.java b/sky/sky-pojo/src/main/java/com/sky/vo/DishVO.java new file mode 100644 index 0000000..eb46ccb --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/vo/DishVO.java @@ -0,0 +1,92 @@ +package com.sky.vo; + +import com.sky.entity.DishFlavor; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + * DishVO类,属于值对象(Value Object),主要用于在系统不同模块或业务场景之间传递与菜品相关的特定数据信息, + * 它整合了菜品的诸多关键属性,比如基本信息(名称、价格、分类等)、状态信息、关联的口味信息等,方便进行数据展示、交互以及在不同层次之间传递使用, + * 有助于简化业务逻辑中对菜品相关数据的处理流程,遵循了关注点分离原则,聚焦于传递需要展示或使用的菜品关键信息,同时避免传递过多不必要的业务细节。 + * 该类实现了Serializable接口,这使得它可以被序列化,能够应用在诸如网络传输(比如从服务端将菜品相关数据发送到前端展示)、持久化存储(虽相对较少但在特定缓存等场景可能涉及)等场景下,确保数据的完整性以及能够顺利地流转和使用。 + * 通过使用Lombok提供的多个注解,极大地简化了代码编写时关于构造函数、Getter/Setter方法以及对象构建方式等方面的代码量。 + * @Data注解自动生成常用的Getter、Setter、toString、equals和hashCode等方法,减少了手动编写这些重复代码的工作量; + * @Builder注解方便运用建造者模式来创建该类的对象,让对象的创建过程更加清晰、灵活,适合在需要灵活配置对象属性值的场景下使用; + * @NoArgsConstructor和@AllArgsConstructor注解分别生成无参构造函数和包含所有参数的构造函数,以满足不同业务场景下创建对象的需求,例如在某些默认初始化或者根据完整属性值创建对象的情况中可以按需选用。 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DishVO implements Serializable { + + /** + * 菜品的唯一标识符,通常对应数据库中菜品记录的主键值,通过这个id可以在整个系统中精准地定位到具体的某一道菜品, + * 便于进行菜品的查询、修改、删除以及与其他业务逻辑相关的操作,是菜品在系统内的重要标识,对于菜品管理、展示等业务场景起着关键作用。 + */ + private Long id; + + /** + * 菜品名称,是展示给用户看到的、用于区分不同菜品的重要文本信息,用户可以根据菜品名称直观地了解菜品的大致内容或特点, + * 同时也是系统内部进行菜品管理、查询等操作时的重要依据之一,例如在菜单展示、点菜操作等场景中,菜品名称都是必不可少的关键元素,方便用户进行选择以及系统进行菜品相关的管理操作。 + */ + private String name; + + /** + * 菜品分类id,用于指明该菜品所属的分类,不同的分类可能有不同的业务规则、展示方式或者营销策略等, + * 通过这个分类id可以关联到对应的分类信息,比如在菜单展示中按照分类来分组显示菜品,方便用户查找和选择,有助于提升用户体验以及系统的菜品管理效率,是菜品组织与展示的重要关联属性。 + */ + private Long categoryId; + + /** + * 菜品价格,使用BigDecimal类型来精确表示价格数值,因为在涉及金额计算时,需要保证精度和准确性,避免浮点数运算带来的精度丢失问题, + * 该价格是用户购买菜品需要支付的金额,也是进行财务统计、价格比较等业务操作的关键数据,对于餐饮系统等涉及菜品售卖的业务场景十分重要,明确了菜品的价值衡量标准。 + */ + private BigDecimal price; + + /** + * 图片,用于展示菜品的外观、样式等可视化信息,通过图片可以让用户更直观地感受菜品的样子,增强用户购买的欲望, + * 在前端界面展示中,通常会将这个图片显示在菜品相关的位置,提升菜品展示效果以及用户的点菜意愿,是优化用户体验的重要因素之一,从视觉角度辅助菜品的推广与销售。 + */ + private String image; + + /** + * 描述信息,用于对菜品进行更详细的介绍,比如菜品的制作工艺、口味特点、食材组成等内容, + * 帮助用户更好地了解菜品详情,以便做出是否购买的决策,同时也便于后台管理人员对菜品进行准确的描述和管理,在菜品展示和管理环节都有着重要意义,丰富了用户对菜品的认知。 + */ + private String description; + + /** + * 状态字段,以整数形式表示菜品的当前销售状态,其中“0”表示停售,意味着该菜品暂时不可供用户购买,可能是由于原材料短缺、菜品调整等原因; + * “1”表示起售,即菜品处于正常可售卖、可供用户选择的状态,系统可以根据这个状态来决定是否展示该菜品以及是否允许进行相关的下单操作等,方便对菜品的售卖情况进行管控,保障菜品销售管理的有序性。 + */ + private Integer status; + + /** + * 更新时间,使用LocalDateTime类型来记录菜品信息最近一次被修改的时间, + * 可以用于跟踪菜品信息的变动情况,了解哪些菜品信息在何时进行了更新,对于数据审计、历史记录查询等方面有一定帮助,便于掌握菜品数据的变化轨迹,同时也能让用户或管理人员知晓菜品相关信息的时效性。 + */ + private LocalDateTime updateTime; + + /** + * 分类名称,用于展示菜品所属分类的具体名称,相较于分类id,这个名称更加直观易懂,方便用户在查看菜品信息时快速了解其所属的分类情况, + * 在菜单展示、菜品管理等场景中,与分类id配合使用,能进一步提升菜品信息展示的友好性和可读性,让用户对菜品的分类归属有更清晰的认知。 + */ + private String categoryName; + + /** + * 菜品关联的口味,是一个List集合,用于存放与该菜品相关联的DishFlavor对象,每个DishFlavor对象代表菜品的一种口味以及相关的口味信息(如口味的具体配料、辣度等), + * 通过这个集合可以清晰地知道该菜品具体有哪些口味可供选择,便于进行菜品口味的管理、展示以及在业务流程中涉及口味调整等操作,满足用户对于菜品口味多样化的需求,是菜品个性化呈现的重要组成部分。 + */ + private List flavors = new ArrayList<>(); + + //private Integer copies; + +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/vo/OrderReportVO.java b/sky/sky-pojo/src/main/java/com/sky/vo/OrderReportVO.java new file mode 100644 index 0000000..4797d74 --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/vo/OrderReportVO.java @@ -0,0 +1,59 @@ +package com.sky.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import java.io.Serializable; + +/** + * OrderReportVO类,属于值对象(Value Object),主要用于在系统不同模块或业务场景之间传递订单相关的统计报告数据信息, + * 它将订单统计分析中的关键数据进行整合,方便在数据展示、报表生成以及不同业务层次间传递这些统计结果,遵循关注点分离原则,聚焦于呈现订单统计方面的核心内容,避免传递过多无关的数据,有助于提高数据处理和展示的效率。 + * 该类实现了Serializable接口,这使得它能够被序列化,可应用于网络传输(比如从后端统计服务将订单统计数据发送到前端页面进行展示)、持久化存储(虽相对少见,但在特定数据缓存、备份订单统计结果等场景下可能涉及)等场景,保障数据的完整性以及能顺利地流转和使用。 + * 通过使用Lombok提供的多个注解,极大地简化了代码编写时关于构造函数、Getter/Setter方法以及对象构建方式等方面的代码量。 + * @Data注解自动生成常用的Getter、Setter、toString、equals和hashCode等方法,减少了手动编写这些重复代码的工作量; + * @Builder注解方便运用建造者模式来创建该类的对象,让对象的创建过程更加清晰、灵活,适合在需要灵活配置对象属性值的场景下使用; + * @NoArgsConstructor和@AllArgsConstructor注解分别生成无参构造函数和包含所有参数的构造函数,以满足不同业务场景下创建对象的需求,例如在默认初始化或者根据完整统计结果来创建对象用于传递数据等情况中可以按需选用。 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrderReportVO implements Serializable { + + /** + * 日期,以逗号分隔的字符串形式存储,例如:"2022-10-01,2022-10-02,2022-10-03", + * 这里记录的是进行订单统计所涉及的多个日期信息,方便后续在展示订单统计数据时,按照对应的日期来呈现相应的数据情况,比如展示不同日期的订单数量变化等,是构建订单时间序列统计的基础元素之一。 + */ + private String dateList; + + /** + * 每日订单数,同样以逗号分隔的字符串形式呈现,像"260,210,215"这样, + * 其中每个数值对应着前面日期List中相应日期的订单数量,用于直观展示在各个统计日期内系统产生的订单总数情况,便于分析订单数量随时间的变化趋势以及进行订单流量方面的数据分析等操作。 + */ + private String orderCountList; + + /** + * 每日有效订单数,也是以逗号分隔的字符串格式,例如"20,21,10", + * 它所包含的每个数值对应着特定日期下的有效订单数量,有效订单通常是指符合一定业务规则、完成了有效交易等的订单,通过这个数据可以进一步分析在不同时间段内有效订单的分布情况,与总订单数对比能看出订单质量等相关情况。 + */ + private String validOrderCountList; + + /** + * 订单总数,以整数形式表示,是对所统计的一定时间段内所有订单数量的汇总值, + * 该数值可以通过对每日订单数(orderCountList中的各个数值累加)等方式获取,它反映了在特定统计范围内系统的总体订单规模,常用于整体业务量的衡量以及与其他统计周期对比等操作。 + */ + private Integer totalOrderCount; + + /** + * 有效订单数,同样为整数类型,是所统计的整个时间段内符合有效订单定义的订单数量总和, + * 这个数值可以基于每日有效订单数(validOrderCountList中的数值累加)得出,有效订单数对于评估业务实际成交情况、分析运营效率等方面有着重要意义,常作为重要指标来衡量业务运营的质量。 + */ + private Integer validOrderCount; + + /** + * 订单完成率,以双精度浮点数(Double)类型表示,它是通过有效订单数与订单总数之间的比例关系计算得出,计算公式一般为:有效订单数 / 订单总数, + * 以百分比的形式(通常会乘以100转化为百分数形式展示,但这里以小数形式存储便于后续计算和数据处理)体现了订单完成的比例情况,用于直观反映业务中订单最终成功完成的概率,是衡量业务流程完整性和运营效果的关键指标之一。 + */ + private Double orderCompletionRate; +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/vo/SalesTop10ReportVO.java b/sky/sky-pojo/src/main/java/com/sky/vo/SalesTop10ReportVO.java new file mode 100644 index 0000000..ac7f34d --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/vo/SalesTop10ReportVO.java @@ -0,0 +1,35 @@ +package com.sky.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import java.io.Serializable; + +/** + * SalesTop10ReportVO类,属于值对象(Value Object),主要用于在系统不同模块或业务场景之间传递商品销量排名前十相关的统计报告数据信息, + * 它将销量排名靠前的商品关键数据进行整合,方便在数据展示(比如生成销售排行榜报表展示给管理人员查看)、不同业务层次间传递这些统计结果,遵循关注点分离原则,聚焦于呈现销量排名方面的核心内容,避免传递过多无关的数据,有助于提高数据处理和展示的效率。 + * 该类实现了Serializable接口,这使得它能够被序列化,可应用于网络传输(比如从后端统计服务将销量统计数据发送到前端页面进行展示)、持久化存储(虽相对少见,但在特定数据缓存、备份销量统计结果等场景下可能涉及)等场景,保障数据的完整性以及能顺利地流转和使用。 + * 通过使用Lombok提供的多个注解,极大地简化了代码编写时关于构造函数、Getter/Setter方法以及对象构建方式等方面的代码量。 + * @Data注解自动生成常用的Getter、Setter、toString、equals和hashCode等方法,减少了手动编写这些重复代码的工作量; + * @Builder注解方便运用建造者模式来创建该类的对象,让对象的创建过程更加清晰、灵活,适合在需要灵活配置对象属性值的场景下使用; + * @NoArgsConstructor和@AllArgsConstructor注解分别生成无参构造函数和包含所有参数的构造函数,以满足不同业务场景下创建对象的需求,例如在默认初始化或者根据完整统计结果来创建对象用于传递数据等情况中可以按需选用。 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalesTop10ReportVO implements Serializable { + + /** + * 商品名称列表,以逗号分隔的字符串形式存储,例如:"鱼香肉丝,宫保鸡丁,水煮鱼", + * 这里记录的是销量排名前十的商品的具体名称信息,按照顺序罗列,方便后续在展示销售排行榜等场景下,直观呈现出哪些商品的销量处于前列,让查看者快速知晓热门商品情况,是构成销量排名展示的重要内容之一。 + */ + private String nameList; + + /** + * 销量列表,同样以逗号分隔的字符串格式,像"260,215,200"这样, + * 其中每个数值对应着前面商品名称列表中相应商品的销量数量,通过这种一一对应的方式,可以清晰地展示出每个热门商品具体的销售数量情况,便于进行销量对比以及分析不同商品的销售热度差异等操作。 + */ + private String numberList; +} \ No newline at end of file diff --git a/sky/sky-pojo/src/main/java/com/sky/vo/UserLoginVO.java b/sky/sky-pojo/src/main/java/com/sky/vo/UserLoginVO.java new file mode 100644 index 0000000..a3f519e --- /dev/null +++ b/sky/sky-pojo/src/main/java/com/sky/vo/UserLoginVO.java @@ -0,0 +1,41 @@ +package com.sky.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import java.io.Serializable; + +/** + * UserLoginVO类,属于值对象(Value Object),主要用于在系统不同模块或业务场景之间传递用户登录相关的数据信息, + * 它整合了用户登录成功后关键的身份标识以及认证相关的数据,方便在后续的业务流程中(比如权限验证、接口访问控制等场景)传递用户登录状态,确保系统能基于这些信息识别当前登录用户并提供相应的服务,遵循关注点分离原则,聚焦于传递登录环节的核心数据,避免传递过多无关内容。 + * 该类实现了Serializable接口,这使得它可以被序列化,能够应用在诸如网络传输(比如从登录验证模块将登录结果数据发送到其他需要知晓用户登录状态的模块)、持久化存储(虽相对较少但在特定缓存等场景可能涉及)等场景下,确保数据的完整性以及能够顺利地流转和使用。 + * 通过使用Lombok提供的多个注解,极大地简化了代码编写时关于构造函数、Getter/Setter方法以及对象构建方式等方面的代码量。 + * @Data注解自动生成常用的Getter、Setter、toString、equals和hashCode等方法,减少了手动编写这些重复代码的工作量; + * @Builder注解方便运用建造者模式来创建该类的对象,让对象的创建过程更加清晰、灵活,适合在需要灵活配置对象属性值的场景下使用; + * @NoArgsConstructor和@AllArgsConstructor注解分别生成无参构造函数和包含所有参数的构造函数,以满足不同业务场景下创建对象的需求,例如在某些默认初始化或者根据完整登录结果创建对象的情况中可以按需选用。 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class UserLoginVO implements Serializable { + + /** + * 用户的唯一标识符,通常对应数据库中用户记录的主键,凭借这个id能够在整个系统中精准地定位到具体的某一位用户, + * 它在后续的诸多业务操作中(如查询用户详细信息、关联用户相关的订单、权限管理等)起着关键作用,是系统识别用户个体的重要依据,便于基于用户身份开展不同的业务逻辑处理。 + */ + private Long id; + + /** + * 微信用户唯一标识(若系统与微信相关联登录的话),这个openid是用于区分不同微信用户的重要标识, + * 在基于微信生态的应用或者与微信进行关联登录等场景下,系统通过该openid来识别用户身份,与微信平台进行交互(如获取用户信息、验证登录状态等),是实现微信相关用户功能以及保障登录唯一性的关键属性。 + */ + private String openid; + + /** + * 令牌(token),是用户登录成功后系统颁发给用户的一种认证标识,在后续用户访问受保护的资源(如需要登录后才能查看的页面、调用的接口等)时, + * 需要携带这个token来证明自己的身份合法性,系统会对token进行验证,只有验证通过才能允许用户进行相应的操作,它在保障系统安全、实现无状态登录验证等方面起着至关重要的作用。 + */ + private String token; +} \ No newline at end of file