authorIdTL = new ThreadLocal<>();
public void setUserId(Long userId) {
@@ -37,7 +37,7 @@ public class UserHolder {
return authorIdTL.get();
}
- public void clear(){
+ public void clear() {
userIdTL.remove();
authorIdTL.remove();
}
diff --git a/src/main/java/io/github/xxyopen/novel/core/common/constant/CommonConsts.java b/src/main/java/io/github/xxyopen/novel/core/common/constant/CommonConsts.java
index e2fae0a..b943f28 100644
--- a/src/main/java/io/github/xxyopen/novel/core/common/constant/CommonConsts.java
+++ b/src/main/java/io/github/xxyopen/novel/core/common/constant/CommonConsts.java
@@ -11,33 +11,33 @@ public class CommonConsts {
/**
* 是
- * */
+ */
public static final Integer YES = 1;
public static final String TRUE = "true";
/**
* 否
- * */
+ */
public static final Integer NO = 0;
public static final String FALSE = "false";
/**
* 性别常量
- * */
- public enum SexEnum{
+ */
+ public enum SexEnum {
/**
* 男
- * */
- MALE(0,"男"),
+ */
+ MALE(0, "男"),
/**
* 女
- * */
- FEMALE(1,"女");
+ */
+ FEMALE(1, "女");
- SexEnum(int code,String desc){
+ SexEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
diff --git a/src/main/java/io/github/xxyopen/novel/core/common/constant/ErrorCodeEnum.java b/src/main/java/io/github/xxyopen/novel/core/common/constant/ErrorCodeEnum.java
index 8d10836..918cf30 100644
--- a/src/main/java/io/github/xxyopen/novel/core/common/constant/ErrorCodeEnum.java
+++ b/src/main/java/io/github/xxyopen/novel/core/common/constant/ErrorCodeEnum.java
@@ -5,15 +5,12 @@ import lombok.Getter;
/**
* 错误码枚举类。
- *
- * 错误码为字符串类型,共 5 位,分成两个部分:错误产生来源+四位数字编号。
- * 错误产生来源分为 A/B/C, A 表示错误来源于用户,比如参数错误,用户安装版本过低,用户支付
- * 超时等问题; B 表示错误来源于当前系统,往往是业务逻辑出错,或程序健壮性差等问题; C 表示错误来源
- * 于第三方服务,比如 CDN 服务出错,消息投递超时等问题;四位数字编号从 0001 到 9999,大类之间的
+ *
+ * 错误码为字符串类型,共 5 位,分成两个部分:错误产生来源+四位数字编号。 错误产生来源分为 A/B/C, A 表示错误来源于用户,比如参数错误,用户安装版本过低,用户支付 超时等问题; B
+ * 表示错误来源于当前系统,往往是业务逻辑出错,或程序健壮性差等问题; C 表示错误来源 于第三方服务,比如 CDN 服务出错,消息投递超时等问题;四位数字编号从 0001 到 9999,大类之间的
* 步长间距预留 100。
- *
- * 错误码分为一级宏观错误码、二级宏观错误码、三级宏观错误码。
- * 在无法更加具体确定的错误场景中,可以直接使用一级宏观错误码。
+ *
+ * 错误码分为一级宏观错误码、二级宏观错误码、三级宏观错误码。 在无法更加具体确定的错误场景中,可以直接使用一级宏观错误码。
*
* @author xiongxiaoyang
* @date 2022/5/11
@@ -24,134 +21,132 @@ public enum ErrorCodeEnum {
/**
* 正确执行后的返回
- * */
- OK("00000","一切 ok"),
+ */
+ OK("00000", "一切 ok"),
/**
* 一级宏观错误码,用户端错误
- * */
- USER_ERROR("A0001","用户端错误"),
+ */
+ USER_ERROR("A0001", "用户端错误"),
/**
* 二级宏观错误码,用户注册错误
- * */
- USER_REGISTER_ERROR("A0100","用户注册错误"),
+ */
+ USER_REGISTER_ERROR("A0100", "用户注册错误"),
/**
* 用户未同意隐私协议
- * */
- USER_NO_AGREE_PRIVATE_ERROR("A0101","用户未同意隐私协议"),
+ */
+ USER_NO_AGREE_PRIVATE_ERROR("A0101", "用户未同意隐私协议"),
/**
* 注册国家或地区受限
- * */
- USER_REGISTER_AREA_LIMIT_ERROR("A0102","注册国家或地区受限"),
+ */
+ USER_REGISTER_AREA_LIMIT_ERROR("A0102", "注册国家或地区受限"),
/**
* 用户验证码错误
- * */
- USER_VERIFY_CODE_ERROR("A0240","用户验证码错误"),
+ */
+ USER_VERIFY_CODE_ERROR("A0240", "用户验证码错误"),
/**
* 用户名已存在
- * */
- USER_NAME_EXIST("A0111","用户名已存在"),
+ */
+ USER_NAME_EXIST("A0111", "用户名已存在"),
/**
* 用户账号不存在
- * */
- USER_ACCOUNT_NOT_EXIST("A0201","用户账号不存在"),
+ */
+ USER_ACCOUNT_NOT_EXIST("A0201", "用户账号不存在"),
/**
* 用户密码错误
- * */
- USER_PASSWORD_ERROR("A0210","用户密码错误"),
+ */
+ USER_PASSWORD_ERROR("A0210", "用户密码错误"),
/**
* 二级宏观错误码,用户请求参数错误
- * */
- USER_REQUEST_PARAM_ERROR("A0400","用户请求参数错误"),
+ */
+ USER_REQUEST_PARAM_ERROR("A0400", "用户请求参数错误"),
/**
* 用户登录已过期
- * */
- USER_LOGIN_EXPIRED("A0230","用户登录已过期"),
+ */
+ USER_LOGIN_EXPIRED("A0230", "用户登录已过期"),
/**
* 访问未授权
- * */
- USER_UN_AUTH("A0301","访问未授权"),
+ */
+ USER_UN_AUTH("A0301", "访问未授权"),
/**
* 用户请求服务异常
- * */
- USER_REQ_EXCEPTION("A0500","用户请求服务异常"),
+ */
+ USER_REQ_EXCEPTION("A0500", "用户请求服务异常"),
/**
* 请求超出限制
- * */
- USER_REQ_MANY("A0501","请求超出限制"),
+ */
+ USER_REQ_MANY("A0501", "请求超出限制"),
/**
* 用户评论异常
- * */
- USER_COMMENT("A2000","用户评论异常"),
+ */
+ USER_COMMENT("A2000", "用户评论异常"),
/**
* 用户评论异常
- * */
- USER_COMMENTED("A2001","用户已发表评论"),
+ */
+ USER_COMMENTED("A2001", "用户已发表评论"),
/**
* 作家发布异常
- * */
- AUTHOR_PUBLISH("A3000","作家发布异常"),
+ */
+ AUTHOR_PUBLISH("A3000", "作家发布异常"),
/**
* 小说名已存在
- * */
- AUTHOR_BOOK_NAME_EXIST("A3001","小说名已存在"),
-
+ */
+ AUTHOR_BOOK_NAME_EXIST("A3001", "小说名已存在"),
/**
* 用户上传文件异常
- * */
- USER_UPLOAD_FILE_ERROR("A0700","用户上传文件异常"),
+ */
+ USER_UPLOAD_FILE_ERROR("A0700", "用户上传文件异常"),
/**
* 用户上传文件类型不匹配
- * */
- USER_UPLOAD_FILE_TYPE_NOT_MATCH("A0701","用户上传文件类型不匹配"),
+ */
+ USER_UPLOAD_FILE_TYPE_NOT_MATCH("A0701", "用户上传文件类型不匹配"),
/**
* 一级宏观错误码,系统执行出错
- * */
- SYSTEM_ERROR("B0001","系统执行出错"),
+ */
+ SYSTEM_ERROR("B0001", "系统执行出错"),
/**
* 二级宏观错误码,系统执行超时
- * */
- SYSTEM_TIMEOUT_ERROR("B0100","系统执行超时"),
+ */
+ SYSTEM_TIMEOUT_ERROR("B0100", "系统执行超时"),
/**
* 一级宏观错误码,调用第三方服务出错
- * */
- THIRD_SERVICE_ERROR("C0001","调用第三方服务出错"),
+ */
+ THIRD_SERVICE_ERROR("C0001", "调用第三方服务出错"),
/**
* 一级宏观错误码,中间件服务出错
- * */
- MIDDLEWARE_SERVICE_ERROR("C0100","中间件服务出错")
- ;
+ */
+ MIDDLEWARE_SERVICE_ERROR("C0100", "中间件服务出错");
/**
* 错误码
- * */
+ */
private final String code;
/**
* 中文描述
- * */
+ */
private final String message;
}
diff --git a/src/main/java/io/github/xxyopen/novel/core/common/exception/CommonExceptionHandler.java b/src/main/java/io/github/xxyopen/novel/core/common/exception/CommonExceptionHandler.java
index 7b9e43f..3104c82 100644
--- a/src/main/java/io/github/xxyopen/novel/core/common/exception/CommonExceptionHandler.java
+++ b/src/main/java/io/github/xxyopen/novel/core/common/exception/CommonExceptionHandler.java
@@ -19,28 +19,28 @@ public class CommonExceptionHandler {
/**
* 处理数据校验异常
- * */
+ */
@ExceptionHandler(BindException.class)
- public RestResp handlerBindException(BindException e){
- log.error(e.getMessage(),e);
+ public RestResp handlerBindException(BindException e) {
+ log.error(e.getMessage(), e);
return RestResp.fail(ErrorCodeEnum.USER_REQUEST_PARAM_ERROR);
}
/**
* 处理业务异常
- * */
+ */
@ExceptionHandler(BusinessException.class)
- public RestResp handlerBusinessException(BusinessException e){
- log.error(e.getMessage(),e);
+ public RestResp handlerBusinessException(BusinessException e) {
+ log.error(e.getMessage(), e);
return RestResp.fail(e.getErrorCodeEnum());
}
/**
* 处理系统异常
- * */
+ */
@ExceptionHandler(Exception.class)
- public RestResp handlerException(Exception e){
- log.error(e.getMessage(),e);
+ public RestResp handlerException(Exception e) {
+ log.error(e.getMessage(), e);
return RestResp.error();
}
diff --git a/src/main/java/io/github/xxyopen/novel/core/common/req/PageReqDto.java b/src/main/java/io/github/xxyopen/novel/core/common/req/PageReqDto.java
index b881301..31c92c9 100644
--- a/src/main/java/io/github/xxyopen/novel/core/common/req/PageReqDto.java
+++ b/src/main/java/io/github/xxyopen/novel/core/common/req/PageReqDto.java
@@ -14,20 +14,19 @@ public class PageReqDto {
/**
* 请求页码,默认第 1 页
- * */
+ */
@Parameter(description = "请求页码,默认第 1 页")
private int pageNum = 1;
/**
* 每页大小,默认每页 10 条
- * */
+ */
@Parameter(description = "每页大小,默认每页 10 条")
private int pageSize = 10;
/**
- * 是否查询所有,默认不查所有
- * 为 true 时,pageNum 和 pageSize 无效
- * */
+ * 是否查询所有,默认不查所有 为 true 时,pageNum 和 pageSize 无效
+ */
@Parameter(hidden = true)
private boolean fetchAll = false;
diff --git a/src/main/java/io/github/xxyopen/novel/core/common/resp/PageRespDto.java b/src/main/java/io/github/xxyopen/novel/core/common/resp/PageRespDto.java
index 65c954c..689fe6a 100644
--- a/src/main/java/io/github/xxyopen/novel/core/common/resp/PageRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/core/common/resp/PageRespDto.java
@@ -1,8 +1,7 @@
package io.github.xxyopen.novel.core.common.resp;
-import lombok.Getter;
-
import java.util.List;
+import lombok.Getter;
/**
* 分页响应数据格式封装
@@ -34,8 +33,7 @@ public class PageRespDto {
private final List extends T> list;
/**
- * 该构造函数用于通用分页查询的场景
- * 接收普通分页数据和普通集合
+ * 该构造函数用于通用分页查询的场景 接收普通分页数据和普通集合
*/
public PageRespDto(long pageNum, long pageSize, long total, List list) {
this.pageNum = pageNum;
@@ -50,7 +48,7 @@ public class PageRespDto {
/**
* 获取分页数
- * */
+ */
public long getPages() {
if (this.pageSize == 0L) {
return 0L;
@@ -59,7 +57,6 @@ public class PageRespDto {
if (this.total % this.pageSize != 0L) {
++pages;
}
-
return pages;
}
}
diff --git a/src/main/java/io/github/xxyopen/novel/core/common/util/ImgVerifyCodeUtils.java b/src/main/java/io/github/xxyopen/novel/core/common/util/ImgVerifyCodeUtils.java
index 073a3cb..2e230d4 100644
--- a/src/main/java/io/github/xxyopen/novel/core/common/util/ImgVerifyCodeUtils.java
+++ b/src/main/java/io/github/xxyopen/novel/core/common/util/ImgVerifyCodeUtils.java
@@ -1,14 +1,15 @@
package io.github.xxyopen.novel.core.common.util;
-import lombok.experimental.UtilityClass;
-
-import javax.imageio.ImageIO;
-import java.awt.*;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.Random;
+import javax.imageio.ImageIO;
+import lombok.experimental.UtilityClass;
/**
* 图片验证码工具类
@@ -79,7 +80,7 @@ public class ImgVerifyCodeUtils {
for (int i = 1; i <= verifyCode.length(); i++) {
g.setFont(getFont());
g.setColor(new Color(random.nextInt(101), random.nextInt(111), random
- .nextInt(121)));
+ .nextInt(121)));
g.translate(random.nextInt(3), random.nextInt(3));
g.drawString(String.valueOf(verifyCode.charAt(i - 1)), 13 * i, 23);
}
diff --git a/src/main/java/io/github/xxyopen/novel/core/common/util/IpUtils.java b/src/main/java/io/github/xxyopen/novel/core/common/util/IpUtils.java
index 6d5f2f2..0d628c8 100644
--- a/src/main/java/io/github/xxyopen/novel/core/common/util/IpUtils.java
+++ b/src/main/java/io/github/xxyopen/novel/core/common/util/IpUtils.java
@@ -16,6 +16,7 @@ public class IpUtils {
/**
* 获取真实IP
+ *
* @return 真实IP
*/
public String getRealIp(HttpServletRequest request) {
diff --git a/src/main/java/io/github/xxyopen/novel/core/config/CacheConfig.java b/src/main/java/io/github/xxyopen/novel/core/config/CacheConfig.java
index 5493a94..ac6a643 100644
--- a/src/main/java/io/github/xxyopen/novel/core/config/CacheConfig.java
+++ b/src/main/java/io/github/xxyopen/novel/core/config/CacheConfig.java
@@ -2,6 +2,11 @@ package io.github.xxyopen.novel.core.config;
import com.github.benmanes.caffeine.cache.Caffeine;
import io.github.xxyopen.novel.core.constant.CacheConsts;
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
import org.springframework.cache.CacheManager;
import org.springframework.cache.caffeine.CaffeineCache;
import org.springframework.cache.support.SimpleCacheManager;
@@ -13,12 +18,6 @@ import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnectionFactory;
-import java.time.Duration;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
/**
* 缓存配置类
*
@@ -40,7 +39,8 @@ public class CacheConfig {
// 类型推断 var 非常适合 for 循环,JDK 10 引入,JDK 11 改进
for (var c : CacheConsts.CacheEnum.values()) {
if (c.isLocal()) {
- Caffeine