diff --git a/sky/sky-common/src/main/java/com/sky/constant/AutoFillConstant.java b/sky/sky-common/src/main/java/com/sky/constant/AutoFillConstant.java new file mode 100644 index 0000000..5c9f8ae --- /dev/null +++ b/sky/sky-common/src/main/java/com/sky/constant/AutoFillConstant.java @@ -0,0 +1,36 @@ +package com.sky.constant; + +/** + * 公共字段自动填充相关常量 + *

+ * 此类用于定义实体类中自动填充公共字段时所需的方法名称常量。 + */ +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 claims) { + // 指定签名时使用的签名算法,即header部分 + SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; + + // 生成JWT的时间 + long expMillis = System.currentTimeMillis() + ttlMillis; + Date exp = new Date(expMillis); + + // 设置jwt的body + JwtBuilder builder = Jwts.builder() + // 如果有私有声明,一定要先设置这个自己创建的私有的声明,这个是给builder的claim赋值,一旦写在标准的声明赋值之后,就是覆盖了那些标准的声明的 + .setClaims(claims) + // 设置签名使用的签名算法和签名使用的秘钥 + .signWith(signatureAlgorithm, secretKey.getBytes(StandardCharsets.UTF_8)) + // 设置过期时间 + .setExpiration(exp); + + return builder.compact(); + } + + /** + * Token解密 + *

+ * 解析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