From 43b551d60306f3ef057408e54133b972a0c0a223 Mon Sep 17 00:00:00 2001
From: wangheng <2896983134@qq.com>
Date: Mon, 16 Dec 2024 15:47:03 +0800
Subject: [PATCH 1/4] test00
---
.idea/code.iml | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 .idea/code.iml
diff --git a/.idea/code.iml b/.idea/code.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/code.iml
@@ -0,0 +1,9 @@
+
+
+ * 此类用于定义实体类中自动填充公共字段时所需的方法名称常量。 + */ +public class AutoFillConstant { + /** + * 实体类中设置创建时间的方法名称 + *
+ * 当实体类需要自动填充创建时间时,可以使用该常量作为方法名称。 + */ + public static final String SET_CREATE_TIME = "setCreateTime"; + + /** + * 实体类中设置更新时间的方法名称 + *
+ * 当实体类需要自动填充更新时间时,可以使用该常量作为方法名称。 + */ + public static final String SET_UPDATE_TIME = "setUpdateTime"; + + /** + * 实体类中设置创建者的方法名称 + *
+ * 当实体类需要自动填充创建者信息时,可以使用该常量作为方法名称。 + */ + public static final String SET_CREATE_USER = "setCreateUser"; + + /** + * 实体类中设置更新者的方法名称 + *
+ * 当实体类需要自动填充更新者信息时,可以使用该常量作为方法名称。 + */ + public static final String SET_UPDATE_USER = "setUpdateUser"; +} \ No newline at end of file diff --git a/sky/sky-common/src/main/java/com/sky/constant/StatusConstant.java b/sky/sky-common/src/main/java/com/sky/constant/StatusConstant.java new file mode 100644 index 0000000..3a0b469 --- /dev/null +++ b/sky/sky-common/src/main/java/com/sky/constant/StatusConstant.java @@ -0,0 +1,23 @@ +package com.sky.constant; + +/** + * 状态常量,用于表示启用或者禁用的状态。 + *
+ * 此类定义了两个常量,分别用于表示启用(ENABLE)和禁用(DISABLE)的状态。 + */ +public class StatusConstant { + + /** + * 启用状态的标识 + *
+ * 当需要表示一个状态为启用时,可以使用该常量。 + */ + public static final Integer ENABLE = 1; + + /** + * 禁用状态的标识 + *
+ * 当需要表示一个状态为禁用时,可以使用该常量。 + */ + public static final Integer DISABLE = 0; +} \ No newline at end of file diff --git a/sky/sky-common/src/main/java/com/sky/exception/AccountNotFoundException.java b/sky/sky-common/src/main/java/com/sky/exception/AccountNotFoundException.java new file mode 100644 index 0000000..064b19e --- /dev/null +++ b/sky/sky-common/src/main/java/com/sky/exception/AccountNotFoundException.java @@ -0,0 +1,27 @@ +package com.sky.exception; + +/** + * 账号不存在异常 + *
+ * 此类表示当尝试访问或操作一个不存在的账号时抛出的异常。 + */ +public class AccountNotFoundException extends BaseException { + + /** + * 构造一个账号不存在异常,无自定义错误信息。 + *
+ * 使用默认的错误消息。 + */ + public AccountNotFoundException() { + super(); + } + + /** + * 构造一个账号不存在异常,并提供自定义错误信息。 + * + * @param msg 自定义错误信息,描述账号不存在的具体情况。 + */ + public AccountNotFoundException(String msg) { + super(msg); + } +} \ No newline at end of file diff --git a/sky/sky-common/src/main/java/com/sky/exception/LoginFailedException.java b/sky/sky-common/src/main/java/com/sky/exception/LoginFailedException.java new file mode 100644 index 0000000..22704a7 --- /dev/null +++ b/sky/sky-common/src/main/java/com/sky/exception/LoginFailedException.java @@ -0,0 +1,17 @@ +package com.sky.exception; + +/** + * 登录失败异常 + *
+ * 此类表示当用户登录系统时失败抛出的异常。 + */ +public class LoginFailedException extends BaseException { + /** + * 构造一个登录失败异常,并提供自定义错误信息。 + * + * @param msg 自定义错误信息,描述登录失败的具体情况。 + */ + public LoginFailedException(String msg) { + super(msg); + } +} \ No newline at end of file diff --git a/sky/sky-common/src/main/java/com/sky/exception/SetmealEnableFailedException.java b/sky/sky-common/src/main/java/com/sky/exception/SetmealEnableFailedException.java new file mode 100644 index 0000000..ccaeb7f --- /dev/null +++ b/sky/sky-common/src/main/java/com/sky/exception/SetmealEnableFailedException.java @@ -0,0 +1,27 @@ +package com.sky.exception; + +/** + * 套餐启用失败异常 + *
+ * 此类表示当尝试启用一个套餐时失败抛出的异常。 + */ +public class SetmealEnableFailedException extends BaseException { + + /** + * 构造一个套餐启用失败异常,无自定义错误信息。 + *
+ * 使用默认的错误消息。 + */ + public SetmealEnableFailedException() { + super(); + } + + /** + * 构造一个套餐启用失败异常,并提供自定义错误信息。 + * + * @param msg 自定义错误信息,描述套餐启用失败的具体情况。 + */ + public SetmealEnableFailedException(String msg) { + super(msg); + } +} \ No newline at end of file diff --git a/sky/sky-common/src/main/java/com/sky/properties/AliOssProperties.java b/sky/sky-common/src/main/java/com/sky/properties/AliOssProperties.java new file mode 100644 index 0000000..825c141 --- /dev/null +++ b/sky/sky-common/src/main/java/com/sky/properties/AliOssProperties.java @@ -0,0 +1,42 @@ +package com.sky.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 阿里云OSS配置属性类 + *
+ * 此类用于存储和反射阿里云OSS的相关配置属性。 + */ +@Component +@ConfigurationProperties(prefix = "sky.alioss") // 指定配置文件中相关属性的前缀 +@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法 +public class AliOssProperties { + + /** + * OSS服务的终端节点 + */ + private String endpoint; + + /** + * 访问密钥ID + */ + private String accessKeyId; + + /** + * 访问密钥秘密 + */ + private String accessKeySecret; + + /** + * 存储空间名称 + */ + private String bucketName; + + /** + * 上传文件的路径 + */ + private String uploadPath; + +} \ No newline at end of file diff --git a/sky/sky-common/src/main/java/com/sky/result/PageResult.java b/sky/sky-common/src/main/java/com/sky/result/PageResult.java new file mode 100644 index 0000000..283c0f7 --- /dev/null +++ b/sky/sky-common/src/main/java/com/sky/result/PageResult.java @@ -0,0 +1,34 @@ +package com.sky.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 封装分页查询结果的类 + *
+ * 此类用于封装分页查询的结果,包括总记录数和当前页的数据集合。 + */ +@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法 +@AllArgsConstructor // 使用lombok提供的注解来自动生成包含所有参数的构造函数 +@NoArgsConstructor // 使用lombok提供的注解来自动生成无参数的构造函数 +public class PageResult implements Serializable { + + /** + * 总记录数 + *
+ * 表示查询结果的总记录数。 + */ + private long total; // 总记录数 + + /** + * 当前页数据集合 + *
+ * 表示当前页的数据集合。 + */ + private List records; // 当前页数据集合 + +} \ No newline at end of file diff --git a/sky/sky-common/src/main/java/com/sky/utils/JwtUtil.java b/sky/sky-common/src/main/java/com/sky/utils/JwtUtil.java new file mode 100644 index 0000000..b8e2c1a --- /dev/null +++ b/sky/sky-common/src/main/java/com/sky/utils/JwtUtil.java @@ -0,0 +1,70 @@ +package com.sky.utils; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.JwtBuilder; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +import java.nio.charset.StandardCharsets; +import java.util.Date; +import java.util.Map; + +/** + * JWT工具类 + *
+ * 提供JWT的生成和解析功能。 + */ +public class JwtUtil { + + /** + * 生成JWT + *
+ * 使用HS256算法,私钥使用固定秘钥。
+ *
+ * @param secretKey JWT秘钥
+ * @param ttlMillis JWT过期时间(毫秒)
+ * @param claims 设置的信息
+ * @return 生成的JWT字符串
+ */
+ public static String createJWT(String secretKey, long ttlMillis, Map
+ * 解析JWT字符串,获取其中的Claims信息。
+ *
+ * @param secretKey JWT秘钥,此秘钥一定要保留好在服务端,不能暴露出去,否则sign就可以被伪造。
+ * 如果对接多个客户端建议改造成多个。
+ * @param token 加密后的token
+ * @return 解析后的Claims对象
+ */
+ public static Claims parseJWT(String secretKey, String token) {
+ // 得到DefaultJwtParser
+ Claims claims = Jwts.parser()
+ // 设置签名的秘钥
+ .setSigningKey(secretKey.getBytes(StandardCharsets.UTF_8))
+ // 设置需要解析的jwt
+ .parseClaimsJws(token)
+ .getBody();
+ return claims;
+ }
+
+}
\ No newline at end of file
From 8328fa6167266a43d5e2d9c4b3cfc41198bc9f21 Mon Sep 17 00:00:00 2001
From: wangheng <2896983134@qq.com>
Date: Mon, 16 Dec 2024 16:47:44 +0800
Subject: [PATCH 3/4] test02
---
.../main/java/com/sky/dto/CategoryDTO.java | 42 ++++++++
.../java/com/sky/dto/DishPageQueryDTO.java | 49 +++++++++
.../main/java/com/sky/dto/GoodsSalesDTO.java | 35 ++++++
.../java/com/sky/dto/OrdersPageQueryDTO.java | 74 +++++++++++++
.../java/com/sky/dto/PasswordEditDTO.java | 35 ++++++
.../main/java/com/sky/dto/UserLoginDTO.java | 21 ++++
.../main/java/com/sky/entity/DishFlavor.java | 51 +++++++++
.../src/main/java/com/sky/entity/Setmeal.java | 101 ++++++++++++++++++
.../main/java/com/sky/vo/BusinessDataVO.java | 56 ++++++++++
.../main/java/com/sky/vo/EmployeeLoginVO.java | 56 ++++++++++
.../java/com/sky/vo/OrderStatisticsVO.java | 32 ++++++
.../java/com/sky/vo/SetmealOverViewVO.java | 33 ++++++
.../main/java/com/sky/vo/UserReportVO.java | 43 ++++++++
13 files changed, 628 insertions(+)
create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/CategoryDTO.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/DishPageQueryDTO.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/GoodsSalesDTO.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/OrdersPageQueryDTO.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/PasswordEditDTO.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/dto/UserLoginDTO.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/entity/DishFlavor.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/entity/Setmeal.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/vo/BusinessDataVO.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/vo/EmployeeLoginVO.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/vo/OrderStatisticsVO.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/vo/SetmealOverViewVO.java
create mode 100644 sky/sky-pojo/src/main/java/com/sky/vo/UserReportVO.java
diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/CategoryDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/CategoryDTO.java
new file mode 100644
index 0000000..d17b389
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/dto/CategoryDTO.java
@@ -0,0 +1,42 @@
+package com.sky.dto;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 分类数据传输对象
+ *
+ * 此类用于封装分类信息的数据传输对象(DTO),包括分类的基本信息。
+ */
+@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法
+public class CategoryDTO implements Serializable {
+
+ /**
+ * 分类的数据库主键ID
+ *
+ * 唯一标识一个分类实体。
+ */
+ private Long id;
+
+ /**
+ * 分类的类型
+ *
+ * 类型用于区分不同的分类,例如:1代表菜品分类,2代表套餐分类。
+ */
+ private Integer type;
+
+ /**
+ * 分类的名称
+ *
+ * 表示分类的名称,如“川菜”、“粤菜”等。
+ */
+ private String name;
+
+ /**
+ * 分类的排序号
+ *
+ * 用于在展示分类时确定分类的顺序。
+ */
+ private Integer sort;
+
+}
\ No newline at end of file
diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/DishPageQueryDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/DishPageQueryDTO.java
new file mode 100644
index 0000000..5376487
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/dto/DishPageQueryDTO.java
@@ -0,0 +1,49 @@
+package com.sky.dto;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 菜品分页查询数据传输对象
+ *
+ * 此类用于封装菜品分页查询的参数。
+ */
+@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法
+public class DishPageQueryDTO implements Serializable {
+
+ /**
+ * 当前页码
+ *
+ * 表示查询的当前页码,从1开始。
+ */
+ private int page;
+
+ /**
+ * 每页显示的记录数
+ *
+ * 表示每页想要显示的记录数。
+ */
+ private int pageSize;
+
+ /**
+ * 菜品名称
+ *
+ * 根据菜品名称进行搜索查询。
+ */
+ private String name;
+
+ /**
+ * 分类ID
+ *
+ * 根据分类ID进行筛选查询。
+ */
+ private Integer categoryId;
+
+ /**
+ * 状态
+ *
+ * 0表示禁用,1表示启用,用于筛选菜品的状态。
+ */
+ private Integer status;
+
+}
\ No newline at end of file
diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/GoodsSalesDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/GoodsSalesDTO.java
new file mode 100644
index 0000000..868fd7c
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/dto/GoodsSalesDTO.java
@@ -0,0 +1,35 @@
+package com.sky.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 商品销售数据传输对象
+ *
+ * 此类用于封装商品销售相关的数据,包括商品名称和销量。
+ */
+@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法
+@AllArgsConstructor // 使用lombok提供的注解来自动生成包含所有参数的构造函数
+@NoArgsConstructor // 使用lombok提供的注解来自动生成无参数的构造函数
+@Builder // 使用lombok提供的注解来自动生成builder模式的构建器
+public class GoodsSalesDTO implements Serializable {
+
+ /**
+ * 商品名称
+ *
+ * 表示商品的名称。
+ */
+ private String name;
+
+ /**
+ * 销量
+ *
+ * 表示商品的销售数量。
+ */
+ private Integer number;
+
+}
\ No newline at end of file
diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/OrdersPageQueryDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/OrdersPageQueryDTO.java
new file mode 100644
index 0000000..008011a
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/dto/OrdersPageQueryDTO.java
@@ -0,0 +1,74 @@
+package com.sky.dto;
+
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 订单分页查询数据传输对象
+ *
+ * 此类用于封装订单分页查询的参数,包括分页信息、订单编号、联系电话、订单状态以及时间范围。
+ */
+@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法
+public class OrdersPageQueryDTO implements Serializable {
+
+ /**
+ * 当前页码
+ *
+ * 表示查询的当前页码,从1开始。
+ */
+ private int page;
+
+ /**
+ * 每页显示的记录数
+ *
+ * 表示每页想要显示的记录数。
+ */
+ private int pageSize;
+
+ /**
+ * 订单编号
+ *
+ * 用于根据订单编号进行搜索。
+ */
+ private String number;
+
+ /**
+ * 联系电话
+ *
+ * 用于根据联系电话进行搜索。
+ */
+ private String phone;
+
+ /**
+ * 订单状态
+ *
+ * 用于筛选特定状态的订单。
+ */
+ private Integer status;
+
+ /**
+ * 开始时间
+ *
+ * 查询订单的时间范围开始时间,格式为yyyy-MM-dd HH:mm:ss。
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime beginTime;
+
+ /**
+ * 结束时间
+ *
+ * 查询订单的时间范围结束时间,格式为yyyy-MM-dd HH:mm:ss。
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime endTime;
+
+ /**
+ * 用户ID
+ *
+ * 用于筛选属于特定用户的订单。
+ */
+ private Long userId;
+
+}
\ No newline at end of file
diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/PasswordEditDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/PasswordEditDTO.java
new file mode 100644
index 0000000..8add980
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/dto/PasswordEditDTO.java
@@ -0,0 +1,35 @@
+package com.sky.dto;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 密码编辑数据传输对象
+ *
+ * 此类用于封装员工密码修改时所需的数据。
+ */
+@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法
+public class PasswordEditDTO implements Serializable {
+
+ /**
+ * 员工ID
+ *
+ * 唯一标识一个员工的ID。
+ */
+ private Long empId;
+
+ /**
+ * 旧密码
+ *
+ * 员工当前使用的密码,用于验证身份。
+ */
+ private String oldPassword;
+
+ /**
+ * 新密码
+ *
+ * 员工想要设置的新密码。
+ */
+ private String newPassword;
+
+}
\ No newline at end of file
diff --git a/sky/sky-pojo/src/main/java/com/sky/dto/UserLoginDTO.java b/sky/sky-pojo/src/main/java/com/sky/dto/UserLoginDTO.java
new file mode 100644
index 0000000..41ba827
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/dto/UserLoginDTO.java
@@ -0,0 +1,21 @@
+package com.sky.dto;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * C端用户登录数据传输对象
+ *
+ * 此类用于封装C端用户登录时所需的数据。
+ */
+@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法
+public class UserLoginDTO implements Serializable {
+
+ /**
+ * 登录授权码
+ *
+ * 表示用户在登录过程中获取的授权码,通常通过第三方平台(如微信、支付宝等)授权登录后获得。
+ */
+ private String code;
+
+}
\ No newline at end of file
diff --git a/sky/sky-pojo/src/main/java/com/sky/entity/DishFlavor.java b/sky/sky-pojo/src/main/java/com/sky/entity/DishFlavor.java
new file mode 100644
index 0000000..ea2dcad
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/entity/DishFlavor.java
@@ -0,0 +1,51 @@
+package com.sky.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 菜品口味实体类
+ *
+ * 此类用于表示菜品的不同口味,包含口味的基本信息。
+ */
+@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法
+@Builder // 提供builder模式的构建器
+@NoArgsConstructor // 提供无参数的构造函数
+@AllArgsConstructor // 提供包含所有属性的构造函数
+public class DishFlavor implements Serializable {
+
+ private static final long serialVersionUID = 1L; // 序列化ID,用于序列化和反序列化
+
+ /**
+ * 菜品口味ID
+ *
+ * 唯一标识一个菜品口味实体。
+ */
+ private Long id;
+
+ /**
+ * 菜品ID
+ *
+ * 标识属于哪个菜品的口味。
+ */
+ private Long dishId;
+
+ /**
+ * 口味名称
+ *
+ * 表示口味的名称,例如“麻辣”、“酸甜”等。
+ */
+ private String name;
+
+ /**
+ * 口味数据列表
+ *
+ * 存储口味的具体数据,可能是一个以逗号分隔的字符串列表。
+ */
+ private String value;
+
+}
\ No newline at end of file
diff --git a/sky/sky-pojo/src/main/java/com/sky/entity/Setmeal.java b/sky/sky-pojo/src/main/java/com/sky/entity/Setmeal.java
new file mode 100644
index 0000000..fd443c6
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/entity/Setmeal.java
@@ -0,0 +1,101 @@
+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;
+
+/**
+ * 套餐实体类
+ *
+ * 此类用于表示套餐的详细信息,包括套餐的基础信息和状态等。
+ */
+@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法
+@Builder // 提供builder模式的构建器
+@NoArgsConstructor // 提供无参数的构造函数
+@AllArgsConstructor // 提供包含所有属性的构造函数
+public class Setmeal implements Serializable {
+
+ private static final long serialVersionUID = 1L; // 序列化ID,用于序列化和反序列化
+
+ /**
+ * 套餐ID
+ *
+ * 唯一标识一个套餐实体。
+ */
+ private Long id;
+
+ /**
+ * 分类ID
+ *
+ * 标识套餐所属的分类。
+ */
+ private Long categoryId;
+
+ /**
+ * 套餐名称
+ *
+ * 表示套餐的名称。
+ */
+ private String name;
+
+ /**
+ * 套餐价格
+ *
+ * 表示套餐的价格。
+ */
+ private BigDecimal price;
+
+ /**
+ * 状态
+ *
+ * 0表示停用,1表示启用。
+ */
+ private Integer status;
+
+ /**
+ * 描述信息
+ *
+ * 对套餐的详细描述。
+ */
+ private String description;
+
+ /**
+ * 图片
+ *
+ * 套餐的图片链接或路径。
+ */
+ private String image;
+
+ /**
+ * 创建时间
+ *
+ * 记录套餐创建的时间。
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * 更新时间
+ *
+ * 记录套餐最后更新的时间。
+ */
+ private LocalDateTime updateTime;
+
+ /**
+ * 创建用户ID
+ *
+ * 创建套餐的用户ID。
+ */
+ private Long createUser;
+
+ /**
+ * 更新用户ID
+ *
+ * 最后更新套餐的用户ID。
+ */
+ private Long updateUser;
+}
\ No newline at end of file
diff --git a/sky/sky-pojo/src/main/java/com/sky/vo/BusinessDataVO.java b/sky/sky-pojo/src/main/java/com/sky/vo/BusinessDataVO.java
new file mode 100644
index 0000000..62ff777
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/vo/BusinessDataVO.java
@@ -0,0 +1,56 @@
+package com.sky.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 数据概览视图对象
+ *
+ * 此类用于展示业务数据概览,包括营业额、有效订单数、订单完成率、平均客单价和新增用户数等关键指标。
+ */
+@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法
+@Builder // 提供builder模式的构建器
+@NoArgsConstructor // 提供无参数的构造函数
+@AllArgsConstructor // 提供包含所有属性的构造函数
+public class BusinessDataVO implements Serializable {
+
+ /**
+ * 营业额
+ *
+ * 表示在一定时间内的总营业额。
+ */
+ private Double turnover;
+
+ /**
+ * 有效订单数
+ *
+ * 表示在一定时间内完成的有效订单数量。
+ */
+ private Integer validOrderCount;
+
+ /**
+ * 订单完成率
+ *
+ * 表示订单完成率,通常是百分比形式。
+ */
+ private Double orderCompletionRate;
+
+ /**
+ * 平均客单价
+ *
+ * 表示平均每笔订单的消费金额。
+ */
+ private Double unitPrice;
+
+ /**
+ * 新增用户数
+ *
+ * 表示在一定时间内新增的用户数量。
+ */
+ private Integer newUsers;
+
+}
\ No newline at end of file
diff --git a/sky/sky-pojo/src/main/java/com/sky/vo/EmployeeLoginVO.java b/sky/sky-pojo/src/main/java/com/sky/vo/EmployeeLoginVO.java
new file mode 100644
index 0000000..fd663ec
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/vo/EmployeeLoginVO.java
@@ -0,0 +1,56 @@
+package com.sky.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 员工登录视图对象
+ *
+ * 此类用于封装员工登录成功后返回的数据,包括员工的基本信息和JWT令牌。
+ */
+@Data // 使用lombok提供的注解来自动生成getter和setter方法,以及toString等方法
+@Builder // 提供builder模式的构建器
+@NoArgsConstructor // 提供无参数的构造函数
+@AllArgsConstructor // 提供包含所有属性的构造函数
+@ApiModel(description = "员工登录返回的数据格式") // Swagger注解,用于描述这个VO对象
+public class EmployeeLoginVO implements Serializable {
+
+ /**
+ * 主键值
+ *
+ * 员工的唯一标识符。
+ */
+ @ApiModelProperty("主键值") // Swagger注解,用于描述字段
+ private Long id;
+
+ /**
+ * 用户名
+ *
+ * 员工的用户名,用于登录系统。
+ */
+ @ApiModelProperty("用户名") // Swagger注解,用于描述字段
+ private String userName;
+
+ /**
+ * 姓名
+ *
+ * 员工的真实姓名。
+ */
+ @ApiModelProperty("姓名") // Swagger注解,用于描述字段
+ private String name;
+
+ /**
+ * JWT令牌
+ *
+ * 登录成功后颁发的JWT令牌,用于后续请求的认证。
+ */
+ @ApiModelProperty("jwt令牌") // Swagger注解,用于描述字段
+ private String token;
+
+}
\ No newline at end of file
diff --git a/sky/sky-pojo/src/main/java/com/sky/vo/OrderStatisticsVO.java b/sky/sky-pojo/src/main/java/com/sky/vo/OrderStatisticsVO.java
new file mode 100644
index 0000000..4cb9cca
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/vo/OrderStatisticsVO.java
@@ -0,0 +1,32 @@
+package com.sky.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * OrderStatisticsVO 是一个值对象,用于存储订单统计数据。
+ * 该类实现了 Serializable 接口,可以支持对象的序列化和反序列化操作。
+ * 使用了 Lombok 的 @Data 注解,自动生成 getter、setter、toString、equals 和 hashCode 方法。
+ */
+@Data
+public class OrderStatisticsVO implements Serializable {
+
+ /**
+ * 表示待接单的订单数量。
+ * 可能用于展示当前有多少订单等待确认。
+ */
+ private Integer toBeConfirmed;
+
+ /**
+ * 表示已确认但尚未派送的订单数量。
+ * 可能用于跟踪订单的待派送状态。
+ */
+ private Integer confirmed;
+
+ /**
+ * 表示当前正在派送中的订单数量。
+ * 可能用于监控派送过程中的订单进展。
+ */
+ private Integer deliveryInProgress;
+}
diff --git a/sky/sky-pojo/src/main/java/com/sky/vo/SetmealOverViewVO.java b/sky/sky-pojo/src/main/java/com/sky/vo/SetmealOverViewVO.java
new file mode 100644
index 0000000..0030d95
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/vo/SetmealOverViewVO.java
@@ -0,0 +1,33 @@
+package com.sky.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * SetmealOverViewVO 是一个值对象,用于表示套餐的总体情况。
+ * 该类实现了 Serializable 接口,可以支持对象的序列化和反序列化操作。
+ * 使用了 Lombok 的 @Data、@Builder、@NoArgsConstructor 和 @AllArgsConstructor 注解,
+ * 简化了类的构造、属性访问和对象构建。
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SetmealOverViewVO implements Serializable {
+
+ /**
+ * 表示已启售的套餐数量。
+ * 可能用于统计或展示当前正在销售的套餐数量。
+ */
+ private Integer sold;
+
+ /**
+ * 表示已停售的套餐数量。
+ * 可能用于统计或展示已经停止销售的套餐数量。
+ */
+ private Integer discontinued;
+}
diff --git a/sky/sky-pojo/src/main/java/com/sky/vo/UserReportVO.java b/sky/sky-pojo/src/main/java/com/sky/vo/UserReportVO.java
new file mode 100644
index 0000000..d1f4e0c
--- /dev/null
+++ b/sky/sky-pojo/src/main/java/com/sky/vo/UserReportVO.java
@@ -0,0 +1,43 @@
+package com.sky.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * UserReportVO 是一个值对象,用于存储用户统计报告的数据。
+ * 该类实现了 Serializable 接口,支持对象的序列化和反序列化。
+ * 使用了 Lombok 注解 @Data、@Builder、@NoArgsConstructor 和 @AllArgsConstructor,
+ * 自动生成了常用方法和构造器,简化了开发。
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserReportVO implements Serializable {
+
+ /**
+ * 表示日期列表,用逗号分隔的字符串形式。
+ * 示例:2022-10-01,2022-10-02,2022-10-03
+ * 通常用于标识统计数据对应的时间段。
+ */
+ private String dateList;
+
+ /**
+ * 表示用户总量列表,用逗号分隔的字符串形式。
+ * 示例:200,210,220
+ * 每个数值对应 dateList 中的日期,表示该日期的累计用户总量。
+ */
+ private String totalUserList;
+
+ /**
+ * 表示新增用户数量列表,用逗号分隔的字符串形式。
+ * 示例:20,21,10
+ * 每个数值对应 dateList 中的日期,表示该日期新增的用户数量。
+ */
+ private String newUserList;
+
+}
From 58699789294f39c8507d554e245aee113c0af7be Mon Sep 17 00:00:00 2001
From: wangheng <2896983134@qq.com>
Date: Mon, 16 Dec 2024 17:03:17 +0800
Subject: [PATCH 4/4] test03
---
.../java/com/sky/SkyServerApplication.java | 30 ++++
.../java/com/sky/annotation/AutoFill.java | 33 ++++
.../sky/config/WebSocketConfiguration.java | 29 +++
.../controller/admin/EmployeeController.java | 166 ++++++++++++++++++
.../sky/controller/admin/ShopController.java | 67 +++++++
.../controller/user/CategoryController.java | 48 +++++
.../sky/controller/user/ShopController.java | 48 +++++
.../interceptor/JwtTokenAdminInterceptor.java | 69 ++++++++
.../main/java/com/sky/mapper/DishMapper.java | 115 ++++++++++++
.../java/com/sky/mapper/ReportMapper.java | 73 ++++++++
.../java/com/sky/service/CategoryService.java | 68 +++++++
.../java/com/sky/service/OrderService.java | 159 +++++++++++++++++
.../java/com/sky/service/UserService.java | 19 ++
.../service/impl/AddressBookServiceImpl.java | 94 ++++++++++
.../sky/service/impl/EmployeeServiceImpl.java | 156 ++++++++++++++++
.../service/impl/ShoppingCartServiceImpl.java | 128 ++++++++++++++
16 files changed, 1302 insertions(+)
create mode 100644 sky/sky-server/src/main/java/com/sky/SkyServerApplication.java
create mode 100644 sky/sky-server/src/main/java/com/sky/annotation/AutoFill.java
create mode 100644 sky/sky-server/src/main/java/com/sky/config/WebSocketConfiguration.java
create mode 100644 sky/sky-server/src/main/java/com/sky/controller/admin/EmployeeController.java
create mode 100644 sky/sky-server/src/main/java/com/sky/controller/admin/ShopController.java
create mode 100644 sky/sky-server/src/main/java/com/sky/controller/user/CategoryController.java
create mode 100644 sky/sky-server/src/main/java/com/sky/controller/user/ShopController.java
create mode 100644 sky/sky-server/src/main/java/com/sky/interceptor/JwtTokenAdminInterceptor.java
create mode 100644 sky/sky-server/src/main/java/com/sky/mapper/DishMapper.java
create mode 100644 sky/sky-server/src/main/java/com/sky/mapper/ReportMapper.java
create mode 100644 sky/sky-server/src/main/java/com/sky/service/CategoryService.java
create mode 100644 sky/sky-server/src/main/java/com/sky/service/OrderService.java
create mode 100644 sky/sky-server/src/main/java/com/sky/service/UserService.java
create mode 100644 sky/sky-server/src/main/java/com/sky/service/impl/AddressBookServiceImpl.java
create mode 100644 sky/sky-server/src/main/java/com/sky/service/impl/EmployeeServiceImpl.java
create mode 100644 sky/sky-server/src/main/java/com/sky/service/impl/ShoppingCartServiceImpl.java
diff --git a/sky/sky-server/src/main/java/com/sky/SkyServerApplication.java b/sky/sky-server/src/main/java/com/sky/SkyServerApplication.java
new file mode 100644
index 0000000..7d35984
--- /dev/null
+++ b/sky/sky-server/src/main/java/com/sky/SkyServerApplication.java
@@ -0,0 +1,30 @@
+package com.sky;
+
+import com.sky.utils.AliOssUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+import org.springframework.web.socket.config.annotation.EnableWebSocket;
+
+@SpringBootApplication() // 启用Spring Boot的自动配置和组件扫描
+@EnableTransactionManagement // 开启注解方式的事务管理
+@Slf4j // 启用Lombok日志功能,自动生成log对象
+@EnableConfigurationProperties // 允许@ConfigurationProperties注解使用,用于从配置文件加载属性
+@EnableCaching // 启用Spring的缓存机制
+@EnableScheduling // 启用定时任务功能
+public class SkyServerApplication {
+
+ // 程序的入口点,启动Spring Boot应用
+ public static void main(String[] args) {
+ SpringApplication.run(SkyServerApplication.class, args); // 启动Spring Boot应用
+ log.info("server started"); // 输出应用启动的日志信息
+ }
+}
diff --git a/sky/sky-server/src/main/java/com/sky/annotation/AutoFill.java b/sky/sky-server/src/main/java/com/sky/annotation/AutoFill.java
new file mode 100644
index 0000000..b99dab1
--- /dev/null
+++ b/sky/sky-server/src/main/java/com/sky/annotation/AutoFill.java
@@ -0,0 +1,33 @@
+package com.sky.annotation;
+
+import com.sky.enumeration.OperationType;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 自定义注解 AutoFill,用于在方法上标记操作类型,以实现公共字段的自动填充功能。
+ *
+ * 主要用途:
+ * - 标记需要自动填充公共字段(如创建时间、更新时间、操作人等)的业务方法。
+ * - 结合切面编程(AOP)实现自动填充逻辑。
+ *
+ * 使用方式:
+ * 在需要自动填充公共字段的方法上添加该注解,并指定操作类型。
+ * 示例:
+ * {@code @AutoFill(OperationType.INSERT)}
+ */
+@Target(ElementType.METHOD) // 指定该注解只能应用于方法上
+@Retention(RetentionPolicy.RUNTIME) // 指定该注解在运行时可用(用于运行时动态处理)
+public @interface AutoFill {
+
+ /**
+ * 操作类型,用于指定当前方法的数据库操作类型。
+ * 必须通过 {@link OperationType} 枚举指定,支持 INSERT 和 UPDATE 等操作。
+ *
+ * @return 操作类型
+ */
+ OperationType value();
+}
diff --git a/sky/sky-server/src/main/java/com/sky/config/WebSocketConfiguration.java b/sky/sky-server/src/main/java/com/sky/config/WebSocketConfiguration.java
new file mode 100644
index 0000000..5044769
--- /dev/null
+++ b/sky/sky-server/src/main/java/com/sky/config/WebSocketConfiguration.java
@@ -0,0 +1,29 @@
+package com.sky.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+/**
+ * WebSocketConfiguration 是一个 Spring 配置类,用于配置 WebSocket 服务端。
+ * 该类通过 @Configuration 注解告知 Spring 容器,这是一个配置类,主要用于初始化和配置 WebSocket 相关的 Bean。
+ */
+@Configuration
+public class WebSocketConfiguration {
+
+ /**
+ * 创建并返回一个 ServerEndpointExporter Bean,该 Bean 用于支持 WebSocket 的端点。
+ *
+ * 说明:
+ * ServerEndpointExporter 是 Spring 提供的一个 WebSocket 端点导出器,它负责将使用 @ServerEndpoint 注解标注的 WebSocket 端点暴露为可用的服务。
+ *
+ * 这个方法是 Spring 配置类的一部分,用于在容器启动时注册 WebSocket 端点。
+ *
+ * @return ServerEndpointExporter Bean
+ */
+ @Bean
+ public ServerEndpointExporter serverEndpointExporter(){
+ // 返回 ServerEndpointExporter 实例,Spring 会自动注册 WebSocket 端点
+ return new ServerEndpointExporter();
+ }
+}
diff --git a/sky/sky-server/src/main/java/com/sky/controller/admin/EmployeeController.java b/sky/sky-server/src/main/java/com/sky/controller/admin/EmployeeController.java
new file mode 100644
index 0000000..62a8ba3
--- /dev/null
+++ b/sky/sky-server/src/main/java/com/sky/controller/admin/EmployeeController.java
@@ -0,0 +1,166 @@
+package com.sky.controller.admin;
+
+import com.sky.constant.JwtClaimsConstant;
+import com.sky.context.BaseContext;
+import com.sky.dto.EmployeeDTO;
+import com.sky.dto.EmployeeLoginDTO;
+import com.sky.dto.EmployeePageQueryDTO;
+import com.sky.entity.Employee;
+import com.sky.properties.JwtProperties;
+import com.sky.result.PageResult;
+import com.sky.result.Result;
+import com.sky.service.EmployeeService;
+import com.sky.utils.JwtUtil;
+import com.sky.vo.EmployeeLoginVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.DigestUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 员工管理控制器
+ * 该类提供了关于员工的增删改查以及登录等功能接口,支持管理端的员工操作。
+ * 使用了 Swagger 注解,提供 API 文档支持。
+ */
+@RestController
+@RequestMapping("/admin/employee")
+@Slf4j
+@Api(tags = "员工相关接口")
+public class EmployeeController {
+
+ @Autowired
+ private EmployeeService employeeService; // 注入员工服务类,用于处理员工相关业务
+ @Autowired
+ private JwtProperties jwtProperties; // 注入 JWT 配置类,用于生成 JWT 令牌
+
+ /**
+ * 员工登录接口
+ * 接收员工登录请求,验证身份,并生成 JWT 令牌返回给前端。
+ *
+ * @param employeeLoginDTO 登录信息
+ * @return 返回登录信息以及生成的 JWT 令牌
+ */
+ @PostMapping("/login")
+ @ApiOperation(value = "员工登录")
+ public Result> list(Integer type) {
+ // 记录查询分类操作的日志,输出传入的分类类型参数
+ log.info("查询分类{}", type);
+
+ // 调用 categoryService 查询分类信息
+ List