top.continew.starter
diff --git a/continew-common/src/main/java/top/continew/admin/common/config/doc/GlobalSpringDocResponseOperationCustomizer.java b/continew-common/src/main/java/top/continew/admin/common/config/doc/GlobalSpringDocResponseOperationCustomizer.java
index 55d1b0420..7f2a4fd90 100644
--- a/continew-common/src/main/java/top/continew/admin/common/config/doc/GlobalSpringDocResponseOperationCustomizer.java
+++ b/continew-common/src/main/java/top/continew/admin/common/config/doc/GlobalSpringDocResponseOperationCustomizer.java
@@ -16,6 +16,9 @@
package top.continew.admin.common.config.doc;
+import static org.springdoc.core.converters.ConverterUtils.isResponseTypeWrapper;
+import static org.springdoc.core.utils.SpringDocAnnotationsUtils.extractSchema;
+
import cn.hutool.core.util.ClassUtil;
import com.fasterxml.jackson.annotation.JsonView;
import io.swagger.v3.oas.models.Components;
@@ -37,9 +40,6 @@
import java.lang.reflect.Type;
import java.util.Arrays;
-import static org.springdoc.core.converters.ConverterUtils.isResponseTypeWrapper;
-import static org.springdoc.core.utils.SpringDocAnnotationsUtils.extractSchema;
-
/**
* 全局响应操作自定义器
*
diff --git a/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalExceptionHandler.java b/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalExceptionHandler.java
index f4186e7ab..dbed9f05d 100644
--- a/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalExceptionHandler.java
+++ b/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalExceptionHandler.java
@@ -19,7 +19,6 @@
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.text.CharSequenceUtil;
import com.fasterxml.jackson.databind.exc.InvalidFormatException;
-import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.core.annotation.Order;
@@ -40,6 +39,8 @@
import top.continew.starter.core.exception.BusinessException;
import top.continew.starter.web.model.R;
+import jakarta.servlet.http.HttpServletRequest;
+
/**
* 全局异常处理器
*
diff --git a/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalSaTokenExceptionHandler.java b/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalSaTokenExceptionHandler.java
index 5927c449c..5ddf23b3f 100644
--- a/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalSaTokenExceptionHandler.java
+++ b/continew-common/src/main/java/top/continew/admin/common/config/exception/GlobalSaTokenExceptionHandler.java
@@ -19,8 +19,6 @@
import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.exception.NotPermissionException;
import cn.dev33.satoken.exception.NotRoleException;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
@@ -28,6 +26,9 @@
import org.springframework.web.bind.annotation.RestControllerAdvice;
import top.continew.starter.web.model.R;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
/**
* 全局 SaToken 异常处理器
*
diff --git a/continew-auth-refresh/src/main/java/top/continew/admin/auth/web/RefreshTokenExceptionHandler.java b/continew-common/src/main/java/top/continew/admin/common/config/exception/RefreshTokenExceptionHandler.java
similarity index 93%
rename from continew-auth-refresh/src/main/java/top/continew/admin/auth/web/RefreshTokenExceptionHandler.java
rename to continew-common/src/main/java/top/continew/admin/common/config/exception/RefreshTokenExceptionHandler.java
index 88666250d..ff8f1bb86 100644
--- a/continew-auth-refresh/src/main/java/top/continew/admin/auth/web/RefreshTokenExceptionHandler.java
+++ b/continew-common/src/main/java/top/continew/admin/common/config/exception/RefreshTokenExceptionHandler.java
@@ -14,17 +14,18 @@
* limitations under the License.
*/
-package top.continew.admin.auth.web;
+package top.continew.admin.common.config.exception;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
-import top.continew.admin.auth.exception.RefreshTokenException;
+import top.continew.starter.auth.refresh.token.exception.RefreshTokenException;
import top.continew.starter.web.model.R;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
/** Refresh Token HTTP 协议异常处理器。 */
@Slf4j
@Order(98)
diff --git a/continew-common/src/main/java/top/continew/admin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java b/continew-common/src/main/java/top/continew/admin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java
index a24d95a19..c0200a757 100644
--- a/continew-common/src/main/java/top/continew/admin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java
+++ b/continew-common/src/main/java/top/continew/admin/common/config/mybatis/MyBatisPlusMetaObjectHandler.java
@@ -16,13 +16,12 @@
package top.continew.admin.common.config.mybatis;
-import top.continew.admin.common.constant.GlobalConstants;
-
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
-import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.common.base.model.entity.BaseDO;
+import top.continew.admin.common.constant.GlobalConstants;
+import top.continew.admin.common.context.UserContextHolder;
import java.time.LocalDateTime;
diff --git a/continew-common/src/main/java/top/continew/admin/common/context/UserExtraContext.java b/continew-common/src/main/java/top/continew/admin/common/context/UserExtraContext.java
index c6a7331a4..d75fd4d60 100644
--- a/continew-common/src/main/java/top/continew/admin/common/context/UserExtraContext.java
+++ b/continew-common/src/main/java/top/continew/admin/common/context/UserExtraContext.java
@@ -16,17 +16,16 @@
package top.continew.admin.common.context;
-import top.continew.admin.common.constant.GlobalConstants;
-
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.servlet.JakartaServletUtil;
-import jakarta.servlet.http.HttpServletRequest;
import lombok.Data;
import lombok.NoArgsConstructor;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.starter.core.util.ExceptionUtils;
import top.continew.starter.core.util.IpUtils;
import top.continew.starter.core.util.ServletUtils;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
diff --git a/continew-common/src/main/java/top/continew/admin/common/model/req/CommonStatusUpdateReq.java b/continew-common/src/main/java/top/continew/admin/common/model/req/CommonStatusUpdateReq.java
index 6eebdcb21..1727a9cc8 100644
--- a/continew-common/src/main/java/top/continew/admin/common/model/req/CommonStatusUpdateReq.java
+++ b/continew-common/src/main/java/top/continew/admin/common/model/req/CommonStatusUpdateReq.java
@@ -17,10 +17,10 @@
package top.continew.admin.common.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import top.continew.admin.common.enums.DisEnableStatusEnum;
+import jakarta.validation.constraints.NotNull;
import java.io.Serializable;
/**
diff --git a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/controller/GeneratorController.java b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/controller/GeneratorController.java
index 2be117ca4..61528763a 100644
--- a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/controller/GeneratorController.java
+++ b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/controller/GeneratorController.java
@@ -21,8 +21,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -42,6 +40,8 @@
import top.continew.starter.extension.crud.model.resp.LabelValueResp;
import top.continew.starter.extension.crud.model.resp.PageResp;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
import java.sql.SQLException;
import java.util.List;
diff --git a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/entity/FieldConfigDO.java b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/entity/FieldConfigDO.java
index 597f37f96..df24fcd3e 100644
--- a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/entity/FieldConfigDO.java
+++ b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/entity/FieldConfigDO.java
@@ -23,8 +23,6 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@@ -32,6 +30,8 @@
import top.continew.admin.generator.enums.QueryTypeEnum;
import top.continew.starter.core.constant.StringConstants;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
diff --git a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/entity/GenConfigDO.java b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/entity/GenConfigDO.java
index 775fffea3..377f65d90 100644
--- a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/entity/GenConfigDO.java
+++ b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/entity/GenConfigDO.java
@@ -23,9 +23,6 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Pattern;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
@@ -33,6 +30,9 @@
import top.continew.starter.core.constant.CharConstants;
import top.continew.starter.core.util.StrUtils;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
diff --git a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/req/GenConfigReq.java b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/req/GenConfigReq.java
index 3123ea185..ab1ac3b8f 100644
--- a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/req/GenConfigReq.java
+++ b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/model/req/GenConfigReq.java
@@ -17,13 +17,13 @@
package top.continew.admin.generator.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import top.continew.admin.generator.model.entity.FieldConfigDO;
import top.continew.admin.generator.model.entity.GenConfigDO;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
diff --git a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/GeneratorService.java b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/GeneratorService.java
index 10040d9ff..1a0a54ad7 100644
--- a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/GeneratorService.java
+++ b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/GeneratorService.java
@@ -16,7 +16,6 @@
package top.continew.admin.generator.service;
-import jakarta.servlet.http.HttpServletResponse;
import top.continew.admin.generator.model.entity.FieldConfigDO;
import top.continew.admin.generator.model.entity.GenConfigDO;
import top.continew.admin.generator.model.query.GenConfigQuery;
@@ -25,6 +24,7 @@
import top.continew.starter.extension.crud.model.query.PageQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
+import jakarta.servlet.http.HttpServletResponse;
import java.sql.SQLException;
import java.util.List;
diff --git a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/impl/GeneratorServiceImpl.java b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/impl/GeneratorServiceImpl.java
index 66e63f074..6fb57e5ef 100644
--- a/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/impl/GeneratorServiceImpl.java
+++ b/continew-plugin/continew-plugin-generator/src/main/java/top/continew/admin/generator/service/impl/GeneratorServiceImpl.java
@@ -35,7 +35,6 @@
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.DefaultObjectWrapperBuilder;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -58,14 +57,14 @@
import top.continew.starter.core.enums.BaseEnum;
import top.continew.starter.core.exception.BusinessException;
import top.continew.starter.core.util.CollUtils;
+import top.continew.starter.core.util.FileUploadUtils;
import top.continew.starter.core.util.validation.CheckUtils;
import top.continew.starter.data.enums.DatabaseType;
import top.continew.starter.data.util.MetaUtils;
import top.continew.starter.extension.crud.model.query.PageQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
-import top.continew.starter.core.util.FileUploadUtils;
-import javax.sql.DataSource;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.File;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -79,6 +78,7 @@
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
+import javax.sql.DataSource;
/**
* 代码生成业务实现
diff --git a/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/handler/SaCheckPermissionHandler.java b/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/handler/SaCheckPermissionHandler.java
index b94c7cee2..ff347c732 100644
--- a/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/handler/SaCheckPermissionHandler.java
+++ b/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/handler/SaCheckPermissionHandler.java
@@ -16,6 +16,8 @@
package top.continew.admin.open.handler;
+import static cn.dev33.satoken.annotation.handler.SaCheckPermissionHandler._checkMethod;
+
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.handler.SaAnnotationHandlerInterface;
import org.springframework.stereotype.Component;
@@ -23,8 +25,6 @@
import java.lang.reflect.AnnotatedElement;
-import static cn.dev33.satoken.annotation.handler.SaCheckPermissionHandler._checkMethod;
-
/**
* 重定义注解 SaCheckPermission 的处理器
*
diff --git a/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/entity/AppDO.java b/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/entity/AppDO.java
index 622f5f832..c4e358af5 100644
--- a/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/entity/AppDO.java
+++ b/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/entity/AppDO.java
@@ -16,11 +16,10 @@
package top.continew.admin.open.model.entity;
-import top.continew.admin.common.constant.GlobalConstants;
-
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import top.continew.admin.common.base.model.entity.BaseDO;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.starter.encrypt.field.annotation.FieldEncrypt;
diff --git a/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/req/AppReq.java b/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/req/AppReq.java
index 779780cb1..78a8250f0 100644
--- a/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/req/AppReq.java
+++ b/continew-plugin/continew-plugin-open/src/main/java/top/continew/admin/open/model/req/AppReq.java
@@ -17,12 +17,12 @@
package top.continew.admin.open.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Future;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.enums.DisEnableStatusEnum;
+import jakarta.validation.constraints.Future;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
diff --git a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/controller/JobController.java b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/controller/JobController.java
index 93477a292..b4ed46b51 100644
--- a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/controller/JobController.java
+++ b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/controller/JobController.java
@@ -21,7 +21,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -45,6 +44,7 @@
import top.continew.starter.extension.crud.validation.CrudValidationGroup;
import top.continew.starter.log.annotation.Log;
+import jakarta.validation.Valid;
import java.util.List;
/**
diff --git a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/controller/JobLogController.java b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/controller/JobLogController.java
index f02fc183e..4083c3514 100644
--- a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/controller/JobLogController.java
+++ b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/controller/JobLogController.java
@@ -21,7 +21,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -34,6 +33,8 @@
import top.continew.admin.schedule.service.JobLogService;
import top.continew.starter.extension.crud.model.resp.PageResp;
+import jakarta.validation.Valid;
+
/**
* 任务日志 API
*
diff --git a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/query/JobLogQuery.java b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/query/JobLogQuery.java
index c30e5bc36..b0b523fb9 100644
--- a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/query/JobLogQuery.java
+++ b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/query/JobLogQuery.java
@@ -17,11 +17,11 @@
package top.continew.admin.schedule.model.query;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Size;
import lombok.Data;
import top.continew.admin.schedule.enums.JobExecuteStatusEnum;
import top.continew.starter.validation.constraints.EnumValue;
+import jakarta.validation.constraints.Size;
import java.io.Serial;
import java.time.LocalDateTime;
diff --git a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/query/JobPageQuery.java b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/query/JobPageQuery.java
index 884ba5c47..3127775d6 100644
--- a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/query/JobPageQuery.java
+++ b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/query/JobPageQuery.java
@@ -17,10 +17,10 @@
package top.continew.admin.schedule.model.query;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Min;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
+import jakarta.validation.constraints.Min;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobReq.java b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobReq.java
index 1df5f851f..0c923582b 100644
--- a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobReq.java
+++ b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobReq.java
@@ -17,8 +17,6 @@
package top.continew.admin.schedule.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.schedule.enums.JobBlockStrategyEnum;
@@ -26,6 +24,9 @@
import top.continew.admin.schedule.enums.JobStatusEnum;
import top.continew.admin.schedule.enums.JobTaskTypeEnum;
import top.continew.admin.schedule.enums.JobTriggerTypeEnum;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobStatusReq.java b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobStatusReq.java
index 450c36a88..1ed5777cf 100644
--- a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobStatusReq.java
+++ b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobStatusReq.java
@@ -17,10 +17,10 @@
package top.continew.admin.schedule.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import top.continew.admin.schedule.enums.JobStatusEnum;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobTriggerReq.java b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobTriggerReq.java
index 05e92a346..6f99765d7 100644
--- a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobTriggerReq.java
+++ b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/req/JobTriggerReq.java
@@ -17,9 +17,9 @@
package top.continew.admin.schedule.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/resp/JobResp.java b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/resp/JobResp.java
index 1180f07ad..9e80e9d77 100644
--- a/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/resp/JobResp.java
+++ b/continew-plugin/continew-plugin-schedule/src/main/java/top/continew/admin/schedule/model/resp/JobResp.java
@@ -23,6 +23,7 @@
import top.continew.admin.schedule.enums.JobStatusEnum;
import top.continew.admin.schedule.enums.JobTaskTypeEnum;
import top.continew.admin.schedule.enums.JobTriggerTypeEnum;
+
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
diff --git a/continew-plugin/continew-plugin-tenant/pom.xml b/continew-plugin/continew-plugin-tenant/pom.xml
index fad4afd9f..bb0db90c6 100644
--- a/continew-plugin/continew-plugin-tenant/pom.xml
+++ b/continew-plugin/continew-plugin-tenant/pom.xml
@@ -16,11 +16,6 @@
租户插件
-
-
- ${project.groupId}
- continew-auth-refresh
-
org.springframework.boot
spring-boot-starter-test
diff --git a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/api/TenantApiImpl.java b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/api/TenantApiImpl.java
index 276f1f7d1..931bff0c7 100644
--- a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/api/TenantApiImpl.java
+++ b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/api/TenantApiImpl.java
@@ -16,12 +16,12 @@
package top.continew.admin.tenant.api;
-import top.continew.admin.common.config.TenantExtensionProperties;
-import top.continew.admin.common.constant.GlobalConstants;
-import top.continew.admin.common.enums.DisEnableStatusEnum;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import top.continew.admin.common.api.tenant.TenantApi;
+import top.continew.admin.common.config.TenantExtensionProperties;
+import top.continew.admin.common.constant.GlobalConstants;
+import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.tenant.constant.TenantCacheConstants;
import top.continew.admin.tenant.mapper.PackageMapper;
import top.continew.admin.tenant.mapper.TenantMapper;
diff --git a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/auth/PackageTenantPolicyLockTargetResolver.java b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/auth/PackageTenantPolicyLockTargetResolver.java
index eb74522db..c8183758c 100644
--- a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/auth/PackageTenantPolicyLockTargetResolver.java
+++ b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/auth/PackageTenantPolicyLockTargetResolver.java
@@ -18,9 +18,9 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
-import top.continew.admin.auth.api.AuthPolicyLockTarget;
-import top.continew.admin.auth.api.AuthPolicyLockTargetResolver;
import top.continew.admin.common.api.tenant.TenantApi;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyLockTarget;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyLockTargetResolver;
import java.util.Collection;
diff --git a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/config/DefaultTenantProvider.java b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/config/DefaultTenantProvider.java
index bb1468c5b..4cba94a1f 100644
--- a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/config/DefaultTenantProvider.java
+++ b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/config/DefaultTenantProvider.java
@@ -17,7 +17,6 @@
package top.continew.admin.tenant.config;
import cn.hutool.core.util.StrUtil;
-import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import top.continew.admin.common.config.TenantExtensionProperties;
import top.continew.admin.tenant.service.TenantService;
@@ -26,6 +25,8 @@
import top.continew.starter.extension.tenant.config.TenantProvider;
import top.continew.starter.extension.tenant.context.TenantContext;
+import jakarta.servlet.http.HttpServletRequest;
+
/**
* 默认租户提供者
*
diff --git a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/controller/TenantController.java b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/controller/TenantController.java
index b83e797f5..d272ebb31 100644
--- a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/controller/TenantController.java
+++ b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/controller/TenantController.java
@@ -19,7 +19,6 @@
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
@@ -39,6 +38,8 @@
import top.continew.starter.extension.crud.enums.Api;
import top.continew.starter.extension.tenant.util.TenantUtils;
+import jakarta.validation.Valid;
+
/**
* 租户管理 API
*
diff --git a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/mapper/PackageMapper.java b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/mapper/PackageMapper.java
index 74c093af5..a162c874a 100644
--- a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/mapper/PackageMapper.java
+++ b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/mapper/PackageMapper.java
@@ -16,8 +16,8 @@
package top.continew.admin.tenant.mapper;
-import top.continew.starter.data.mapper.BaseMapper;
import top.continew.admin.tenant.model.entity.PackageDO;
+import top.continew.starter.data.mapper.BaseMapper;
/**
* 套餐 Mapper
diff --git a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/PackageReq.java b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/PackageReq.java
index 49a52e14e..3fd23d35a 100644
--- a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/PackageReq.java
+++ b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/PackageReq.java
@@ -17,12 +17,12 @@
package top.continew.admin.tenant.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.enums.DisEnableStatusEnum;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
diff --git a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/TenantAdminUserPwdUpdateReq.java b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/TenantAdminUserPwdUpdateReq.java
index a7c85054c..b39976528 100644
--- a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/TenantAdminUserPwdUpdateReq.java
+++ b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/TenantAdminUserPwdUpdateReq.java
@@ -17,9 +17,9 @@
package top.continew.admin.tenant.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serializable;
/**
diff --git a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/TenantReq.java b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/TenantReq.java
index f61113129..b8b174290 100644
--- a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/TenantReq.java
+++ b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/model/req/TenantReq.java
@@ -17,16 +17,16 @@
package top.continew.admin.tenant.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Future;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Pattern;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.constant.RegexConstants;
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.starter.extension.crud.validation.CrudValidationGroup;
+import jakarta.validation.constraints.Future;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
diff --git a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/service/impl/PackageServiceImpl.java b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/service/impl/PackageServiceImpl.java
index bd14f16dd..44bbc2871 100644
--- a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/service/impl/PackageServiceImpl.java
+++ b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/service/impl/PackageServiceImpl.java
@@ -16,15 +16,13 @@
package top.continew.admin.tenant.service.impl;
-import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import top.continew.admin.auth.api.AuthPolicyWriteLocked;
-import top.continew.admin.tenant.auth.PackageTenantPolicyLockTargetResolver;
import top.continew.admin.common.base.service.BaseServiceImpl;
import top.continew.admin.common.enums.DisEnableStatusEnum;
+import top.continew.admin.tenant.auth.PackageTenantPolicyLockTargetResolver;
import top.continew.admin.tenant.mapper.PackageMapper;
import top.continew.admin.tenant.model.entity.PackageDO;
import top.continew.admin.tenant.model.query.PackageQuery;
@@ -34,8 +32,10 @@
import top.continew.admin.tenant.service.PackageMenuService;
import top.continew.admin.tenant.service.PackageService;
import top.continew.admin.tenant.service.TenantService;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyWriteLocked;
import top.continew.starter.core.util.validation.CheckUtils;
+import jakarta.annotation.Resource;
import java.util.List;
/**
diff --git a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/service/impl/TenantServiceImpl.java b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/service/impl/TenantServiceImpl.java
index 4a002f2e3..465b080f6 100644
--- a/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/service/impl/TenantServiceImpl.java
+++ b/continew-plugin/continew-plugin-tenant/src/main/java/top/continew/admin/tenant/service/impl/TenantServiceImpl.java
@@ -16,8 +16,6 @@
package top.continew.admin.tenant.service.impl;
-import top.continew.admin.common.constant.GlobalConstants;
-
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.extra.spring.SpringUtil;
@@ -26,14 +24,13 @@
import me.ahoo.cosid.provider.IdGeneratorProvider;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import top.continew.admin.auth.api.AuthPolicyWriteLocked;
-import top.continew.admin.auth.support.TenantArgumentPolicyLockTargetResolver;
import top.continew.admin.common.api.system.RoleApi;
import top.continew.admin.common.api.system.RoleMenuApi;
import top.continew.admin.common.api.tenant.TenantDataApi;
import top.continew.admin.common.base.service.BaseServiceImpl;
import top.continew.admin.common.config.TenantExtensionProperties;
import top.continew.admin.common.constant.CacheConstants;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.common.enums.RoleCodeEnum;
import top.continew.admin.common.model.dto.TenantDTO;
@@ -47,6 +44,8 @@
import top.continew.admin.tenant.model.resp.TenantResp;
import top.continew.admin.tenant.service.PackageService;
import top.continew.admin.tenant.service.TenantService;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyWriteLocked;
+import top.continew.starter.auth.refresh.token.support.TenantArgumentPolicyLockTargetResolver;
import top.continew.starter.cache.redisson.util.RedisUtils;
import top.continew.starter.core.constant.StringConstants;
import top.continew.starter.core.util.validation.CheckUtils;
diff --git a/continew-plugin/continew-plugin-tenant/src/test/java/top/continew/admin/tenant/config/DefaultTenantProviderTest.java b/continew-plugin/continew-plugin-tenant/src/test/java/top/continew/admin/tenant/config/DefaultTenantProviderTest.java
index 898a97be8..137066653 100644
--- a/continew-plugin/continew-plugin-tenant/src/test/java/top/continew/admin/tenant/config/DefaultTenantProviderTest.java
+++ b/continew-plugin/continew-plugin-tenant/src/test/java/top/continew/admin/tenant/config/DefaultTenantProviderTest.java
@@ -16,6 +16,12 @@
package top.continew.admin.tenant.config;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -26,12 +32,6 @@
import top.continew.admin.tenant.service.TenantService;
import top.continew.starter.extension.tenant.context.TenantContext;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
/**
* 默认租户提供者测试:验证刷新/退出时请求入口忽略残留租户头,而业务代码显式切换的
* 会话租户不被覆盖。
diff --git a/continew-server/pom.xml b/continew-server/pom.xml
index 9fa158b09..7c76f6eb4 100644
--- a/continew-server/pom.xml
+++ b/continew-server/pom.xml
@@ -22,11 +22,6 @@
continew-system
-
-
- ${project.groupId}
- continew-auth-refresh
-
diff --git a/continew-server/src/main/java/top/continew/admin/ContiNewAdminApplication.java b/continew-server/src/main/java/top/continew/admin/ContiNewAdminApplication.java
index 2bbaafc9c..cd81bb2d0 100644
--- a/continew-server/src/main/java/top/continew/admin/ContiNewAdminApplication.java
+++ b/continew-server/src/main/java/top/continew/admin/ContiNewAdminApplication.java
@@ -69,7 +69,7 @@ public class ContiNewAdminApplication implements ApplicationRunner {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(ContiNewAdminApplication.class);
application.setDefaultProperties(
- MapUtil.of("continew-starter.version", ContiNewStarterVersion.getVersion()));
+ MapUtil.of("continew-starter.version", ContiNewStarterVersion.VERSION));
application.run(args);
}
@@ -88,7 +88,7 @@ public void run(ApplicationArguments args) {
String baseUrl = URLUtil.normalize("%s:%s%s".formatted(hostAddress, port, contextPath));
log.info("--------------------------------------------------------");
log.info("{} server started successfully.", applicationProperties.getName());
- log.info("ContiNew Starter: v{} (Spring Boot: v{})", ContiNewStarterVersion.getVersion(),
+ log.info("ContiNew Starter: v{} (Spring Boot: v{})", ContiNewStarterVersion.VERSION,
SpringBootVersion
.getVersion());
log.info("当前版本: v{} (Profile: {})", applicationProperties.getVersion(), SpringUtil
diff --git a/continew-server/src/main/java/top/continew/admin/config/log/DatabaseLogDao.java b/continew-server/src/main/java/top/continew/admin/config/log/DatabaseLogDao.java
index 92d7d73c1..714ddcc9d 100644
--- a/continew-server/src/main/java/top/continew/admin/config/log/DatabaseLogDao.java
+++ b/continew-server/src/main/java/top/continew/admin/config/log/DatabaseLogDao.java
@@ -30,12 +30,12 @@
import org.springframework.http.HttpHeaders;
import org.springframework.scheduling.annotation.Async;
import top.continew.admin.auth.constant.AuthConstants;
-import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.auth.enums.AuthTypeEnum;
import top.continew.admin.auth.model.req.AccountLoginReq;
import top.continew.admin.auth.model.req.EmailLoginReq;
import top.continew.admin.auth.model.req.LoginReq;
import top.continew.admin.auth.model.req.PhoneLoginReq;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.system.enums.LogStatusEnum;
import top.continew.admin.system.mapper.LogMapper;
import top.continew.admin.system.model.entity.LogDO;
diff --git a/continew-server/src/main/java/top/continew/admin/config/satoken/AccessTokenSecretValidator.java b/continew-server/src/main/java/top/continew/admin/config/satoken/AccessTokenSecretValidator.java
index 130545826..70a8a409e 100644
--- a/continew-server/src/main/java/top/continew/admin/config/satoken/AccessTokenSecretValidator.java
+++ b/continew-server/src/main/java/top/continew/admin/config/satoken/AccessTokenSecretValidator.java
@@ -16,12 +16,12 @@
package top.continew.admin.config.satoken;
-import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.context.properties.bind.Binder;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
+import jakarta.annotation.PostConstruct;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
@@ -38,7 +38,8 @@ public class AccessTokenSecretValidator {
public void validate() {
String accessSecret = this.bindSecret("sa-token.jwt-secret-key",
"Access Token JWT 密钥");
- String refreshSecret = this.bindSecret("auth.refresh-token.secret", "Refresh Token 密钥");
+ String refreshSecret = this.bindSecret("continew-starter.refresh-token.secret",
+ "Refresh Token 密钥");
if (MessageDigest.isEqual(accessSecret.getBytes(StandardCharsets.UTF_8),
refreshSecret.getBytes(StandardCharsets.UTF_8))) {
throw new IllegalStateException(
diff --git a/continew-server/src/main/java/top/continew/admin/config/satoken/SaExtensionInterceptor.java b/continew-server/src/main/java/top/continew/admin/config/satoken/SaExtensionInterceptor.java
index 15352cbe2..f8721d50c 100644
--- a/continew-server/src/main/java/top/continew/admin/config/satoken/SaExtensionInterceptor.java
+++ b/continew-server/src/main/java/top/continew/admin/config/satoken/SaExtensionInterceptor.java
@@ -19,22 +19,22 @@
import cn.dev33.satoken.fun.SaParamFunction;
import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.stp.StpUtil;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.lang.Nullable;
-import top.continew.admin.auth.api.AccessSessionValidator;
import top.continew.admin.auth.constant.AuthConstants;
import top.continew.admin.common.context.UserContext;
import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.common.context.UserExtraContext;
import top.continew.admin.open.util.OpenApiUtils;
+import top.continew.starter.auth.refresh.token.api.AccessSessionValidator;
import top.continew.starter.core.util.ServletUtils;
import top.continew.starter.extension.tenant.context.TenantContextHolder;
-import top.continew.starter.json.jackson.util.JSONUtils;
+import top.continew.starter.json.jackson.util.JsonUtils;
import top.continew.starter.web.model.R;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.util.Objects;
/**
@@ -80,7 +80,7 @@ public boolean preHandle(HttpServletRequest request,
UserContextHolder.clearContext();
R r = R.fail(String.valueOf(HttpStatus.UNAUTHORIZED.value()), invalidReason);
response.setStatus(HttpStatus.UNAUTHORIZED.value());
- ServletUtils.writeJSON(response, JSONUtils.toJsonStr(r));
+ ServletUtils.writeJson(response, JsonUtils.toJsonStr(r));
return false;
}
}
@@ -102,7 +102,7 @@ public boolean preHandle(HttpServletRequest request,
UserContextHolder.clearContext();
R r = R.fail(String.valueOf(HttpStatus.FORBIDDEN.value()), "您当前没有访问该租户的权限");
response.setStatus(HttpStatus.FORBIDDEN.value());
- ServletUtils.writeJSON(response, JSONUtils.toJsonStr(r));
+ ServletUtils.writeJson(response, JsonUtils.toJsonStr(r));
return false;
}
}
diff --git a/continew-server/src/main/java/top/continew/admin/config/satoken/SaTokenConfiguration.java b/continew-server/src/main/java/top/continew/admin/config/satoken/SaTokenConfiguration.java
index 735803d68..d83d6eb53 100644
--- a/continew-server/src/main/java/top/continew/admin/config/satoken/SaTokenConfiguration.java
+++ b/continew-server/src/main/java/top/continew/admin/config/satoken/SaTokenConfiguration.java
@@ -37,10 +37,10 @@
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.AnnotationUtils;
import top.continew.admin.common.config.crud.CrudApiPermissionPrefixCache;
-import top.continew.admin.auth.api.AccessSessionValidator;
import top.continew.admin.common.context.UserContext;
import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.open.sign.OpenApiSignTemplate;
+import top.continew.starter.auth.refresh.token.api.AccessSessionValidator;
import top.continew.starter.auth.satoken.autoconfigure.SaTokenExtensionProperties;
import top.continew.starter.core.constant.StringConstants;
import top.continew.starter.core.exception.BusinessException;
diff --git a/continew-server/src/main/java/top/continew/admin/controller/CaptchaController.java b/continew-server/src/main/java/top/continew/admin/controller/CaptchaController.java
index 3d0921201..6e59f7446 100644
--- a/continew-server/src/main/java/top/continew/admin/controller/CaptchaController.java
+++ b/continew-server/src/main/java/top/continew/admin/controller/CaptchaController.java
@@ -31,10 +31,6 @@
import com.wf.captcha.base.Captcha;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.mail.MessagingException;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.validation.constraints.Email;
-import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.entity.SmsResponse;
@@ -69,6 +65,10 @@
import top.continew.starter.validation.constraints.Mobile;
import top.continew.starter.web.model.R;
+import jakarta.mail.MessagingException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
import java.time.Duration;
import java.time.Instant;
import java.util.LinkedHashMap;
diff --git a/continew-server/src/main/java/top/continew/admin/job/NoticePublishJob.java b/continew-server/src/main/java/top/continew/admin/job/NoticePublishJob.java
index fd1ffdc50..c1a3c18b5 100644
--- a/continew-server/src/main/java/top/continew/admin/job/NoticePublishJob.java
+++ b/continew-server/src/main/java/top/continew/admin/job/NoticePublishJob.java
@@ -16,8 +16,6 @@
package top.continew.admin.job;
-import top.continew.admin.common.constant.GlobalConstants;
-
import cn.hutool.core.collection.CollUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
@@ -27,6 +25,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.schedule.annotation.ConditionalOnEnabledScheduleJob;
import top.continew.admin.system.enums.NoticeMethodEnum;
import top.continew.admin.system.enums.NoticeStatusEnum;
diff --git a/continew-server/src/main/resources/config/application-dev.yml b/continew-server/src/main/resources/config/application-dev.yml
index e304d2662..819420d1e 100644
--- a/continew-server/src/main/resources/config/application-dev.yml
+++ b/continew-server/src/main/resources/config/application-dev.yml
@@ -3,16 +3,16 @@ application:
# URL(跨域配置默认放行此 URL,第三方登录回调默认使用此 URL 为前缀,请注意更改为你实际的前端 URL)
url: http://localhost:5173
---- ### 认证配置
-auth:
- ## Refresh Token 配置。浏览器使用 HttpOnly Cookie,App / 小程序使用 BODY 模式。
- refresh-token:
- # 团队共享的开发环境固定密钥;仅用于 dev,禁止与 Access Token 的 JWT 密钥复用。
- secret: 80B38761234D4D108BAF2022065FE6E6
- # 可配置精确 Origin 或 http[s]://*.example.com 子域通配符。
- cookie-allowed-origins:
- - http://localhost:5173
- - http://localhost:5777
+--- ### Refresh Token 配置
+continew-starter.refresh-token:
+ # 团队共享的开发环境固定密钥;仅用于 dev,禁止与 Access Token 的 JWT 密钥复用。
+ secret: 80B38761234D4D108BAF2022065FE6E6
+ # 可配置精确 Origin 或 http[s]://*.example.com 子域通配符。
+ cookie-allowed-origins:
+ - http://localhost:5173
+ - http://localhost:5777
+ # 本地开发使用 HTTP,显式确认知情选择不安全 Cookie 传输,避免 Starter 启动告警。
+ cookie-insecure-allowed: true
--- ### Sa-Token 配置
sa-token:
diff --git a/continew-server/src/main/resources/config/application-prod.yml b/continew-server/src/main/resources/config/application-prod.yml
index 849298894..a2d939bf7 100644
--- a/continew-server/src/main/resources/config/application-prod.yml
+++ b/continew-server/src/main/resources/config/application-prod.yml
@@ -5,21 +5,19 @@ application:
# 是否为生产环境
production: true
---- ### 认证配置
-auth:
- ## Refresh Token 配置。浏览器使用 HttpOnly Cookie,App / 小程序使用 BODY 模式。
- refresh-token:
- # 生产环境必须显式提供独立的高熵密钥,不允许回退复用 JWT 密钥。
- secret: ${REFRESH_TOKEN_SECRET}
- # 生产环境只允许通过 HTTPS 发送长期凭证。
- cookie-secure: true
- # __Host- 前缀禁止 Domain 属性并强制 Path=/,可防止子域写入同名 Cookie。
- cookie-name: __Host-refresh_token
- # 覆盖网关前缀及前后端分离部署,Refresh Token Cookie 在站点根路径生效。
- cookie-path: /
- # Cookie 请求来源可填精确 Origin 或 http[s]://*.example.com 子域通配符,不继承通用 CORS 配置。
- cookie-allowed-origins:
- - ${application.url}
+--- ### Refresh Token 配置
+continew-starter.refresh-token:
+ # 生产环境必须显式提供独立的高熵密钥,不允许回退复用 JWT 密钥。
+ secret: ${REFRESH_TOKEN_SECRET}
+ # 生产环境只允许通过 HTTPS 发送长期凭证。
+ cookie-secure: true
+ # __Host- 前缀禁止 Domain 属性并强制 Path=/,可防止子域写入同名 Cookie。
+ cookie-name: __Host-refresh_token
+ # 覆盖网关前缀及前后端分离部署,Refresh Token Cookie 在站点根路径生效。
+ cookie-path: /
+ # Cookie 请求来源可填精确 Origin 或 http[s]://*.example.com 子域通配符,不继承通用 CORS 配置。
+ cookie-allowed-origins:
+ - ${application.url}
--- ### 服务器配置
server:
# HTTP 端口(默认 8080)
diff --git a/continew-server/src/main/resources/config/application.yml b/continew-server/src/main/resources/config/application.yml
index a2e030a80..cd9532af1 100644
--- a/continew-server/src/main/resources/config/application.yml
+++ b/continew-server/src/main/resources/config/application.yml
@@ -354,37 +354,39 @@ cosid:
char-size: 11
pad-start: true
+--- ### Refresh Token 配置
+## 浏览器使用 HttpOnly Cookie,App / 小程序使用 BODY 模式。
+continew-starter.refresh-token:
+ # 必须设置独立的高熵随机值,禁止与 Access Token 的 JWT 密钥复用。
+ secret: ${REFRESH_TOKEN_SECRET}
+ cookie-name: refresh_token
+ # 必须覆盖前端代理路径(如 /api、/dev-api),否则浏览器刷新请求不会携带 Cookie。
+ cookie-path: /
+ # 本地开发通常使用 HTTP;生产配置在 application-prod.yml 中覆盖为 true。
+ cookie-secure: false
+ cookie-same-site: Lax
+ # Cookie 来源使用独立白名单;可填精确 Origin 或 http[s]://*.example.com 子域通配符。
+ # 空列表仅允许同源,不继承通用 CORS 通配符。
+ cookie-allowed-origins: []
+ rotation-grace-period: 5
+ ip-rate-limit: 60
+ ip-rate-limit-period: 60
+ session-rate-limit: 10
+ session-rate-limit-period: 60
+ # 仅在网关地址和跳数均显式配置时解析 X-Forwarded-For;默认使用连接对端地址防伪造。
+ # 警告:经 Nginx / 网关部署必须显式配置 trusted-proxy-*,否则所有用户共享网关这一个
+ # IP 的限流桶(ip-rate-limit 60 次/分钟变全站共享),且 /auth/refresh 为匿名接口,
+ # 公共桶易被填满导致全站 429。
+ trusted-proxy-addresses: []
+ trusted-proxy-hops: 0
+ # 热路径会话校验本地缓存:命中后每个请求 0 次 Redis;撤销经广播子秒级失效,2s TTL 兜底。
+ access-session-cache-enabled: true
+ # 会话失效广播 Topic(默认按应用名隔离:auth:access-session-invalid:{spring.application.name},
+ # 同一服务多副本共享、不同服务互不串扰);多服务显式共享会话域时才覆盖为公共 Topic。
+ # access-session-invalid-topic: auth:access-session-invalid:${spring.application.name}
+
--- ### 认证配置
auth:
- ## Refresh Token 配置。浏览器使用 HttpOnly Cookie,App / 小程序使用 BODY 模式。
- refresh-token:
- # 必须设置独立的高熵随机值,禁止与 Access Token 的 JWT 密钥复用。
- secret: ${REFRESH_TOKEN_SECRET}
- cookie-name: refresh_token
- # 必须覆盖前端代理路径(如 /api、/dev-api),否则浏览器刷新请求不会携带 Cookie。
- cookie-path: /
- # 本地开发通常使用 HTTP;生产配置在 application-prod.yml 中覆盖为 true。
- cookie-secure: false
- cookie-same-site: Lax
- # Cookie 来源使用独立白名单;可填精确 Origin 或 http[s]://*.example.com 子域通配符。
- # 空列表仅允许同源,不继承通用 CORS 通配符。
- cookie-allowed-origins: []
- rotation-grace-period: 5
- ip-rate-limit: 60
- ip-rate-limit-period: 60
- session-rate-limit: 10
- session-rate-limit-period: 60
- # 仅在网关地址和跳数均显式配置时解析 X-Forwarded-For;默认使用连接对端地址防伪造。
- # 警告:经 Nginx / 网关部署必须显式配置 trusted-proxy-*,否则所有用户共享网关这一个
- # IP 的限流桶(ip-rate-limit 60 次/分钟变全站共享),且 /auth/refresh 为匿名接口,
- # 公共桶易被填满导致全站 429。
- trusted-proxy-addresses: []
- trusted-proxy-hops: 0
- # 热路径会话校验本地缓存:命中后每个请求 0 次 Redis;撤销经广播子秒级失效,2s TTL 兜底。
- access-session-cache-enabled: true
- # 会话失效广播 Topic(默认按应用名隔离:auth:access-session-invalid:{spring.application.name},
- # 同一服务多副本共享、不同服务互不串扰);多服务显式共享会话域时才覆盖为公共 Topic。
- # access-session-invalid-topic: auth:access-session-invalid:${spring.application.name}
## 密码配置
password:
excludes:
diff --git a/continew-server/src/test/java/top/continew/admin/auth/service/OnlineUserServiceImplTest.java b/continew-server/src/test/java/top/continew/admin/auth/service/OnlineUserServiceImplTest.java
index b3596dc95..6382c2b85 100644
--- a/continew-server/src/test/java/top/continew/admin/auth/service/OnlineUserServiceImplTest.java
+++ b/continew-server/src/test/java/top/continew/admin/auth/service/OnlineUserServiceImplTest.java
@@ -16,12 +16,20 @@
package top.continew.admin.auth.service;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.when;
+
import org.junit.jupiter.api.Test;
import org.mockito.MockedStatic;
-import top.continew.admin.auth.model.SessionView;
import top.continew.admin.auth.model.query.OnlineUserQuery;
import top.continew.admin.auth.model.resp.OnlineUserResp;
import top.continew.admin.auth.service.impl.OnlineUserServiceImpl;
+import top.continew.starter.auth.refresh.token.model.RefreshSession;
+import top.continew.starter.auth.refresh.token.model.SessionView;
+import top.continew.starter.auth.refresh.token.service.SessionInvalidationService;
+import top.continew.starter.auth.refresh.token.service.SessionQueryService;
import top.continew.starter.extension.tenant.context.TenantContextHolder;
import java.time.Instant;
@@ -29,11 +37,6 @@
import java.time.ZoneId;
import java.util.List;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
-import static org.mockito.Mockito.when;
-
/** 在线用户以 Refresh Session 为事实源测试。 */
class OnlineUserServiceImplTest {
@@ -42,15 +45,16 @@ void shouldListRefreshSessionAfterAccessTokenExpires() {
SessionInvalidationService sessionInvalidationService =
mock(SessionInvalidationService.class);
SessionQueryService sessionQueryService = mock(SessionQueryService.class);
- SessionView session = new SessionView();
- session.setSessionId("session-1");
- session.setUserId(1L);
- session.setUsername("tester");
- session.setNickname("Tester");
- session.setClientId("web");
- session.setClientType("WEB");
- session.setCreatedAt(1_767_262_400_000L);
- session.setLastRefreshAt(1_767_266_000_000L);
+ RefreshSession refreshSession = new RefreshSession();
+ refreshSession.setSessionId("session-1");
+ refreshSession.setUserId(1L);
+ refreshSession.setUsername("tester");
+ refreshSession.setNickname("Tester");
+ refreshSession.setClientId("web");
+ refreshSession.setClientType("WEB");
+ refreshSession.setCreatedAt(1_767_262_400_000L);
+ refreshSession.setLastRefreshAt(1_767_266_000_000L);
+ SessionView session = SessionView.from(refreshSession);
when(sessionQueryService.listSessions(null)).thenReturn(List.of(session));
OnlineUserServiceImpl service = new OnlineUserServiceImpl(sessionInvalidationService,
diff --git a/continew-server/src/test/java/top/continew/admin/config/satoken/SaExtensionInterceptorTest.java b/continew-server/src/test/java/top/continew/admin/config/satoken/SaExtensionInterceptorTest.java
index f025af121..f4248eb6c 100644
--- a/continew-server/src/test/java/top/continew/admin/config/satoken/SaExtensionInterceptorTest.java
+++ b/continew-server/src/test/java/top/continew/admin/config/satoken/SaExtensionInterceptorTest.java
@@ -16,6 +16,15 @@
package top.continew.admin.config.satoken;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.when;
+
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.context.SaTokenContextForThreadLocal;
import cn.dev33.satoken.servlet.model.SaRequestForServlet;
@@ -33,20 +42,11 @@
import org.mockito.MockedStatic;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
-import top.continew.admin.auth.api.AccessSessionValidator;
import top.continew.admin.common.context.UserContext;
import top.continew.admin.common.context.UserContextHolder;
+import top.continew.starter.auth.refresh.token.api.AccessSessionValidator;
import top.continew.starter.extension.tenant.context.TenantContextHolder;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.when;
-
/**
* SaExtensionInterceptor 短路路径线程本地清理测试。
*
diff --git a/continew-system/pom.xml b/continew-system/pom.xml
index 05475d48f..591b4360b 100644
--- a/continew-system/pom.xml
+++ b/continew-system/pom.xml
@@ -22,16 +22,28 @@
continew-common
-
-
- ${project.groupId}
- continew-auth-refresh
-
-
org.dromara.sms4j
sms4j-spring-boot-starter
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ false
+
+
+
+
diff --git a/continew-system/src/main/java/top/continew/admin/auth/AbstractLoginHandler.java b/continew-system/src/main/java/top/continew/admin/auth/AbstractLoginHandler.java
index 1852f4672..64e79aff6 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/AbstractLoginHandler.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/AbstractLoginHandler.java
@@ -16,9 +16,6 @@
package top.continew.admin.auth;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import top.continew.admin.auth.model.req.LoginReq;
import top.continew.admin.auth.model.resp.LoginResp;
@@ -31,6 +28,10 @@
import top.continew.starter.core.util.validation.Validator;
import top.continew.starter.extension.tenant.context.TenantContextHolder;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
/**
* 登录处理器基类
*
diff --git a/continew-system/src/main/java/top/continew/admin/auth/LoginHandler.java b/continew-system/src/main/java/top/continew/admin/auth/LoginHandler.java
index 175cb77e5..16a2a7eaa 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/LoginHandler.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/LoginHandler.java
@@ -16,13 +16,14 @@
package top.continew.admin.auth;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import top.continew.admin.auth.enums.AuthTypeEnum;
import top.continew.admin.auth.model.req.LoginReq;
import top.continew.admin.auth.model.resp.LoginResp;
import top.continew.admin.system.model.resp.ClientResp;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
/**
* 登录处理器
*
diff --git a/continew-system/src/main/java/top/continew/admin/auth/adapter/ClientPolicyLockTargetResolver.java b/continew-system/src/main/java/top/continew/admin/auth/adapter/ClientPolicyLockTargetResolver.java
index 9e947dd38..eccf373e5 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/adapter/ClientPolicyLockTargetResolver.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/adapter/ClientPolicyLockTargetResolver.java
@@ -19,10 +19,10 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
-import top.continew.admin.auth.api.AuthPolicyLockTarget;
-import top.continew.admin.auth.api.AuthPolicyLockTargetResolver;
import top.continew.admin.system.mapper.ClientMapper;
import top.continew.admin.system.model.entity.ClientDO;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyLockTarget;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyLockTargetResolver;
import java.util.Collection;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/auth/adapter/DeptUserPolicyLockTargetResolver.java b/continew-system/src/main/java/top/continew/admin/auth/adapter/DeptUserPolicyLockTargetResolver.java
index 7c2a33cbe..834f16823 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/adapter/DeptUserPolicyLockTargetResolver.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/adapter/DeptUserPolicyLockTargetResolver.java
@@ -19,10 +19,10 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
-import top.continew.admin.auth.api.AuthPolicyLockTarget;
-import top.continew.admin.auth.api.AuthPolicyLockTargetResolver;
import top.continew.admin.system.mapper.user.UserMapper;
import top.continew.admin.system.model.entity.user.UserDO;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyLockTarget;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyLockTargetResolver;
import java.util.Collection;
diff --git a/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshAccessTokenIssuerImpl.java b/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshAccessTokenIssuerImpl.java
index 50967482e..8785558ba 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshAccessTokenIssuerImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshAccessTokenIssuerImpl.java
@@ -17,24 +17,25 @@
package top.continew.admin.auth.adapter;
import cn.hutool.core.util.StrUtil;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
-import top.continew.admin.auth.model.RefreshSession;
import top.continew.admin.auth.model.resp.LoginResp;
import top.continew.admin.auth.service.AuthTokenService;
-import top.continew.admin.auth.service.RefreshAccessTokenIssuer;
import top.continew.admin.common.api.tenant.TenantApi;
import top.continew.admin.common.enums.DisEnableStatusEnum;
-import top.continew.admin.auth.exception.RefreshTokenException;
import top.continew.admin.system.model.entity.user.UserDO;
import top.continew.admin.system.model.resp.ClientResp;
import top.continew.admin.system.service.ClientService;
import top.continew.admin.system.service.UserService;
+import top.continew.starter.auth.refresh.token.exception.RefreshTokenException;
+import top.continew.starter.auth.refresh.token.model.IssuedAccessToken;
+import top.continew.starter.auth.refresh.token.model.RefreshSession;
+import top.continew.starter.auth.refresh.token.service.RefreshAccessTokenIssuer;
import top.continew.starter.core.exception.BusinessException;
import top.continew.starter.extension.tenant.util.TenantUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.util.concurrent.atomic.AtomicReference;
/** system 对刷新主体状态和 Access Token 签发的适配实现。 */
@@ -48,7 +49,7 @@ public class RefreshAccessTokenIssuerImpl implements RefreshAccessTokenIssuer {
private final UserService userService;
@Override
- public LoginResp issue(RefreshSession session, HttpServletRequest request,
+ public IssuedAccessToken issue(RefreshSession session, HttpServletRequest request,
HttpServletResponse response) {
ClientResp client = clientService.getByClientId(session.getClientId());
if (client == null || DisEnableStatusEnum.DISABLE.equals(client.getStatus())) {
@@ -65,7 +66,9 @@ public LoginResp issue(RefreshSession session, HttpServletRequest request,
if (userReference.get() == null || StrUtil.isBlank(userReference.get().getUsername())) {
throw RefreshTokenException.unauthorized("登录状态已失效,请重新登录");
}
- return authTokenService.issueAccessToken(userReference.get(), client, session.getTenantId(),
- session, request, response);
+ LoginResp loginResp = authTokenService.issueAccessToken(userReference.get(), client,
+ session.getTenantId(), session, request, response);
+ return new IssuedAccessToken(loginResp.getAccessToken(), loginResp.getExpiresIn(),
+ loginResp.getTenantId());
}
}
diff --git a/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshClientPolicyMapper.java b/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshClientPolicyMapper.java
index 974806df4..54a290a35 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshClientPolicyMapper.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshClientPolicyMapper.java
@@ -16,12 +16,12 @@
package top.continew.admin.auth.adapter;
-import top.continew.admin.auth.enums.LogoutReasonEnum;
-import top.continew.admin.auth.enums.SessionReplacementScope;
-import top.continew.admin.auth.model.RefreshClientPolicy;
import top.continew.admin.system.enums.LogoutModeEnum;
import top.continew.admin.system.enums.ReplacedRangeEnum;
import top.continew.admin.system.model.resp.ClientResp;
+import top.continew.starter.auth.refresh.token.enums.LogoutReasonEnum;
+import top.continew.starter.auth.refresh.token.enums.SessionReplacementScope;
+import top.continew.starter.auth.refresh.token.model.RefreshClientPolicy;
/**
* 系统客户端配置到认证会话策略的边界转换器。
diff --git a/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshSessionPrincipalAdapter.java b/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshSessionPrincipalAdapter.java
new file mode 100644
index 000000000..9a0a739d6
--- /dev/null
+++ b/continew-system/src/main/java/top/continew/admin/auth/adapter/RefreshSessionPrincipalAdapter.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package top.continew.admin.auth.adapter;
+
+import top.continew.admin.common.context.UserContext;
+import top.continew.admin.common.context.UserExtraContext;
+import top.continew.starter.auth.refresh.token.model.RefreshSessionPrincipal;
+
+/**
+ * 登录主体快照适配器:将 Admin 用户上下文映射为认证会话模块的主体快照。
+ *
+ *
认证会话模块不依赖用户实体,登录签发时由本适配器提供创建会话所需的主体信息,
+ * 随 Refresh Session 一并保存,用于会话管理展示与失效原因判定。
+ *
+ * @author Charles7c
+ * @since 4.2.0
+ */
+public record RefreshSessionPrincipalAdapter(UserContext userContext,
+ UserExtraContext extraContext) implements RefreshSessionPrincipal {
+
+ @Override
+ public Long getUserId() {
+ return this.userContext.getId();
+ }
+
+ @Override
+ public String getUsername() {
+ return this.userContext.getUsername();
+ }
+
+ @Override
+ public String getNickname() {
+ return this.userContext.getNickname();
+ }
+
+ @Override
+ public Long getTenantId() {
+ return this.extraContext.getTenantId();
+ }
+
+ @Override
+ public String getIp() {
+ return this.extraContext.getIp();
+ }
+
+ @Override
+ public String getAddress() {
+ return this.extraContext.getAddress();
+ }
+
+ @Override
+ public String getBrowser() {
+ return this.extraContext.getBrowser();
+ }
+
+ @Override
+ public String getOs() {
+ return this.extraContext.getOs();
+ }
+}
diff --git a/continew-system/src/main/java/top/continew/admin/auth/controller/AuthController.java b/continew-system/src/main/java/top/continew/admin/auth/controller/AuthController.java
index afe0f8325..b286cc833 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/controller/AuthController.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/controller/AuthController.java
@@ -22,9 +22,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import me.zhyd.oauth.request.AuthRequest;
import me.zhyd.oauth.utils.AuthStateUtils;
@@ -47,10 +44,13 @@
import top.continew.admin.system.model.resp.user.UserDetailResp;
import top.continew.admin.system.service.UserService;
import top.continew.starter.auth.justauth.AuthRequestFactory;
-import top.continew.starter.log.enums.Include;
import top.continew.starter.log.annotation.Log;
+import top.continew.starter.log.enums.Include;
import top.continew.starter.validation.constraints.EnumValue;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
import java.util.List;
/**
diff --git a/continew-system/src/main/java/top/continew/admin/auth/controller/OnlineUserController.java b/continew-system/src/main/java/top/continew/admin/auth/controller/OnlineUserController.java
index fc8b60c64..3ea9f048b 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/controller/OnlineUserController.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/controller/OnlineUserController.java
@@ -23,7 +23,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -31,18 +30,19 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import top.continew.admin.auth.model.query.OnlineUserQuery;
-import top.continew.admin.auth.model.SessionView;
import top.continew.admin.auth.model.resp.OnlineUserResp;
import top.continew.admin.auth.service.OnlineUserService;
-import top.continew.admin.auth.service.SessionInvalidationService;
-import top.continew.admin.auth.service.SessionQueryService;
import top.continew.admin.common.context.UserContextHolder;
-import top.continew.admin.auth.api.AuthSessionConstants;
+import top.continew.starter.auth.refresh.token.api.AuthSessionConstants;
+import top.continew.starter.auth.refresh.token.model.SessionView;
+import top.continew.starter.auth.refresh.token.service.SessionInvalidationService;
+import top.continew.starter.auth.refresh.token.service.SessionQueryService;
import top.continew.starter.core.util.validation.CheckUtils;
import top.continew.starter.extension.crud.model.query.PageQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
import top.continew.starter.extension.tenant.context.TenantContextHolder;
+import jakarta.validation.Valid;
import java.util.Objects;
/**
diff --git a/continew-auth-refresh/src/main/java/top/continew/admin/auth/controller/SessionController.java b/continew-system/src/main/java/top/continew/admin/auth/controller/SessionController.java
similarity index 80%
rename from continew-auth-refresh/src/main/java/top/continew/admin/auth/controller/SessionController.java
rename to continew-system/src/main/java/top/continew/admin/auth/controller/SessionController.java
index e5ed8c53f..460977937 100644
--- a/continew-auth-refresh/src/main/java/top/continew/admin/auth/controller/SessionController.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/controller/SessionController.java
@@ -22,9 +22,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -34,13 +31,18 @@
import org.springframework.web.bind.annotation.RestController;
import top.continew.admin.auth.model.req.RefreshTokenReq;
import top.continew.admin.auth.model.resp.LoginResp;
-import top.continew.admin.auth.service.RefreshAccessTokenIssuer;
-import top.continew.admin.auth.service.RefreshTokenService;
-import top.continew.admin.auth.exception.RefreshTokenException;
+import top.continew.starter.auth.refresh.token.exception.RefreshTokenException;
+import top.continew.starter.auth.refresh.token.model.RefreshIssueResult;
+import top.continew.starter.auth.refresh.token.service.RefreshAccessTokenIssuer;
+import top.continew.starter.auth.refresh.token.service.RefreshTokenService;
import top.continew.starter.extension.tenant.annotation.TenantIgnore;
import top.continew.starter.log.annotation.Log;
import top.continew.starter.log.enums.Include;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+
/** Refresh Token 会话 API。 */
@Tag(name = "认证会话 API")
@Log(module = "认证会话")
@@ -63,12 +65,15 @@ public class SessionController {
@PostMapping("/refresh")
public LoginResp refresh(@RequestBody(required = false) @Valid RefreshTokenReq req,
HttpServletRequest request, HttpServletResponse response) {
- String rawRefreshToken = refreshTokenService.resolve(req == null ? null : req
- .getRefreshToken(), request);
- refreshTokenService.checkRequestRateLimit(request);
- refreshTokenService.validateRequest(rawRefreshToken, request);
- return refreshTokenService.rotate(rawRefreshToken, response,
- session -> refreshAccessTokenIssuer.issue(session, request, response));
+ // 四步安全钩子(解析 → 限流 → 来源校验 → 原子轮换)由 Starter 的 refresh 模板固化编排
+ RefreshIssueResult result = refreshTokenService.refresh(req == null ? null : req
+ .getRefreshToken(), request, response,
+ session -> refreshAccessTokenIssuer.issue(session,
+ request, response));
+ return LoginResp.builder().accessToken(result.getAccessToken())
+ .tokenType(result.getTokenType()).expiresIn(result.getExpiresIn())
+ .refreshExpiresIn(result.getRefreshExpiresIn()).refreshToken(result.getRefreshToken())
+ .tenantId(result.getTenantId()).build();
}
/** 注销当前认证会话。 */
diff --git a/continew-system/src/main/java/top/continew/admin/auth/handler/AccountLoginHandler.java b/continew-system/src/main/java/top/continew/admin/auth/handler/AccountLoginHandler.java
index 211e0869f..cc37c0590 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/handler/AccountLoginHandler.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/handler/AccountLoginHandler.java
@@ -20,8 +20,6 @@
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.servlet.JakartaServletUtil;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
@@ -39,6 +37,8 @@
import top.continew.starter.core.util.validation.CheckUtils;
import top.continew.starter.core.util.validation.ValidationUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.time.Duration;
import java.time.LocalDateTime;
diff --git a/continew-system/src/main/java/top/continew/admin/auth/handler/EmailLoginHandler.java b/continew-system/src/main/java/top/continew/admin/auth/handler/EmailLoginHandler.java
index 8ae0e0b3e..5dc673889 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/handler/EmailLoginHandler.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/handler/EmailLoginHandler.java
@@ -16,8 +16,6 @@
package top.continew.admin.auth.handler;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import top.continew.admin.auth.AbstractLoginHandler;
import top.continew.admin.auth.enums.AuthTypeEnum;
@@ -29,6 +27,9 @@
import top.continew.starter.cache.redisson.util.RedisUtils;
import top.continew.starter.core.util.validation.ValidationUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
/**
* 邮箱登录处理器
*
diff --git a/continew-system/src/main/java/top/continew/admin/auth/handler/PhoneLoginHandler.java b/continew-system/src/main/java/top/continew/admin/auth/handler/PhoneLoginHandler.java
index 5f1a7ed3b..d50f04177 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/handler/PhoneLoginHandler.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/handler/PhoneLoginHandler.java
@@ -16,8 +16,6 @@
package top.continew.admin.auth.handler;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import top.continew.admin.auth.AbstractLoginHandler;
import top.continew.admin.auth.enums.AuthTypeEnum;
@@ -29,6 +27,9 @@
import top.continew.starter.cache.redisson.util.RedisUtils;
import top.continew.starter.core.util.validation.ValidationUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
/**
* 手机号登录处理器
*
diff --git a/continew-system/src/main/java/top/continew/admin/auth/handler/SocialLoginHandler.java b/continew-system/src/main/java/top/continew/admin/auth/handler/SocialLoginHandler.java
index d853b2283..36997a205 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/handler/SocialLoginHandler.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/handler/SocialLoginHandler.java
@@ -16,8 +16,6 @@
package top.continew.admin.auth.handler;
-import top.continew.admin.common.constant.GlobalConstants;
-
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
@@ -25,8 +23,6 @@
import cn.hutool.core.util.ReUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
@@ -38,6 +34,7 @@
import top.continew.admin.auth.enums.AuthTypeEnum;
import top.continew.admin.auth.model.req.SocialLoginReq;
import top.continew.admin.auth.model.resp.LoginResp;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.common.constant.RegexConstants;
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.common.enums.GenderEnum;
@@ -57,6 +54,8 @@
import top.continew.starter.core.autoconfigure.application.ApplicationProperties;
import top.continew.starter.core.util.validation.ValidationUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.Collections;
diff --git a/continew-system/src/main/java/top/continew/admin/auth/model/req/AccountLoginReq.java b/continew-system/src/main/java/top/continew/admin/auth/model/req/AccountLoginReq.java
index abb658a17..7612fa2b9 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/model/req/AccountLoginReq.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/model/req/AccountLoginReq.java
@@ -17,9 +17,9 @@
package top.continew.admin.auth.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serial;
/**
diff --git a/continew-system/src/main/java/top/continew/admin/auth/model/req/EmailLoginReq.java b/continew-system/src/main/java/top/continew/admin/auth/model/req/EmailLoginReq.java
index 05616120c..775b8aab7 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/model/req/EmailLoginReq.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/model/req/EmailLoginReq.java
@@ -17,11 +17,11 @@
package top.continew.admin.auth.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Email;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serial;
/**
diff --git a/continew-system/src/main/java/top/continew/admin/auth/model/req/LoginReq.java b/continew-system/src/main/java/top/continew/admin/auth/model/req/LoginReq.java
index 76cc89287..7f1710aea 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/model/req/LoginReq.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/model/req/LoginReq.java
@@ -19,11 +19,11 @@
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import top.continew.admin.auth.enums.AuthTypeEnum;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/auth/model/req/PhoneLoginReq.java b/continew-system/src/main/java/top/continew/admin/auth/model/req/PhoneLoginReq.java
index 355ad925c..34f151f6c 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/model/req/PhoneLoginReq.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/model/req/PhoneLoginReq.java
@@ -17,11 +17,11 @@
package top.continew.admin.auth.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.starter.validation.constraints.Mobile;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serial;
/**
diff --git a/continew-auth-refresh/src/main/java/top/continew/admin/auth/model/req/RefreshTokenReq.java b/continew-system/src/main/java/top/continew/admin/auth/model/req/RefreshTokenReq.java
similarity index 100%
rename from continew-auth-refresh/src/main/java/top/continew/admin/auth/model/req/RefreshTokenReq.java
rename to continew-system/src/main/java/top/continew/admin/auth/model/req/RefreshTokenReq.java
diff --git a/continew-system/src/main/java/top/continew/admin/auth/model/req/SocialLoginReq.java b/continew-system/src/main/java/top/continew/admin/auth/model/req/SocialLoginReq.java
index 2c2d8b935..92eac89a8 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/model/req/SocialLoginReq.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/model/req/SocialLoginReq.java
@@ -17,9 +17,9 @@
package top.continew.admin.auth.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serial;
/**
diff --git a/continew-auth-refresh/src/main/java/top/continew/admin/auth/model/resp/LoginResp.java b/continew-system/src/main/java/top/continew/admin/auth/model/resp/LoginResp.java
similarity index 100%
rename from continew-auth-refresh/src/main/java/top/continew/admin/auth/model/resp/LoginResp.java
rename to continew-system/src/main/java/top/continew/admin/auth/model/resp/LoginResp.java
index d8d37c2a8..690c1ee55 100644
--- a/continew-auth-refresh/src/main/java/top/continew/admin/auth/model/resp/LoginResp.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/model/resp/LoginResp.java
@@ -16,8 +16,8 @@
package top.continew.admin.auth.model.resp;
-import io.swagger.v3.oas.annotations.media.Schema;
import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
diff --git a/continew-system/src/main/java/top/continew/admin/auth/service/AuthService.java b/continew-system/src/main/java/top/continew/admin/auth/service/AuthService.java
index 538d856ed..e6ae2335c 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/service/AuthService.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/service/AuthService.java
@@ -16,12 +16,12 @@
package top.continew.admin.auth.service;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import top.continew.admin.auth.model.req.LoginReq;
import top.continew.admin.auth.model.resp.LoginResp;
import top.continew.admin.auth.model.resp.RouteResp;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.util.List;
/**
diff --git a/continew-system/src/main/java/top/continew/admin/auth/service/AuthTokenService.java b/continew-system/src/main/java/top/continew/admin/auth/service/AuthTokenService.java
index f1b72f3eb..e36db6ace 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/service/AuthTokenService.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/service/AuthTokenService.java
@@ -16,12 +16,13 @@
package top.continew.admin.auth.service;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import top.continew.admin.auth.model.RefreshSession;
import top.continew.admin.auth.model.resp.LoginResp;
import top.continew.admin.system.model.entity.user.UserDO;
import top.continew.admin.system.model.resp.ClientResp;
+import top.continew.starter.auth.refresh.token.model.RefreshSession;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
/**
* 统一访问令牌签发服务。
diff --git a/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthServiceImpl.java b/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthServiceImpl.java
index f4e610b25..e13d1eb75 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthServiceImpl.java
@@ -21,8 +21,6 @@
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import top.continew.admin.auth.LoginHandler;
@@ -41,10 +39,13 @@
import top.continew.admin.system.service.ClientService;
import top.continew.admin.system.service.MenuService;
import top.continew.admin.system.service.RoleService;
+import top.continew.starter.core.exception.BadRequestException;
import top.continew.starter.core.util.validation.ValidationUtils;
import top.continew.starter.extension.crud.annotation.TreeField;
import top.continew.starter.extension.crud.autoconfigure.CrudProperties;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
@@ -71,13 +72,18 @@ public LoginResp login(LoginReq req, HttpServletRequest request, HttpServletResp
AuthTypeEnum authType = req.getAuthType();
// 校验客户端
ClientResp client = clientService.getByClientId(req.getClientId());
- ValidationUtils.throwIfNull(client, "客户端不存在");
+ if (client == null) {
+ throw new BadRequestException("客户端不存在");
+ }
ValidationUtils.throwIf(DisEnableStatusEnum.DISABLE.equals(client.getStatus()), "客户端已禁用");
ValidationUtils.throwIf(!client.getAuthType().contains(authType.getValue()),
"该客户端暂未授权 [{}] 认证", authType
.getDescription());
// 获取处理器
LoginHandler loginHandler = loginHandlerFactory.getHandler(authType);
+ if (loginHandler == null) {
+ throw new BadRequestException("不支持的认证类型 [" + authType.getDescription() + "]");
+ }
// 登录前置处理
loginHandler.preLogin(req, client, request);
// 登录
diff --git a/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthTokenServiceImpl.java b/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthTokenServiceImpl.java
index c5e9e402c..6f86afa0c 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthTokenServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/service/impl/AuthTokenServiceImpl.java
@@ -16,32 +16,25 @@
package top.continew.admin.auth.service.impl;
+import static top.continew.admin.system.enums.PasswordPolicyEnum.PASSWORD_EXPIRATION_DAYS;
+
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
import cn.hutool.core.bean.BeanUtil;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
-import top.continew.admin.auth.enums.RefreshTokenModeEnum;
-import top.continew.admin.auth.model.AuthSecurityVersion;
-import top.continew.admin.auth.model.RefreshSession;
-import top.continew.admin.auth.model.RefreshClientPolicy;
import top.continew.admin.auth.adapter.RefreshClientPolicyMapper;
+import top.continew.admin.auth.adapter.RefreshSessionPrincipalAdapter;
import top.continew.admin.auth.model.resp.LoginResp;
import top.continew.admin.auth.service.AuthTokenService;
-import top.continew.admin.auth.service.RefreshTokenService;
-import top.continew.admin.auth.service.RefreshTokenService.LoginAttempt;
-import top.continew.admin.auth.api.AuthSessionConstants;
import top.continew.admin.common.api.tenant.TenantApi;
import top.continew.admin.common.context.RoleContext;
import top.continew.admin.common.context.UserContext;
import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.common.context.UserExtraContext;
import top.continew.admin.common.enums.DisEnableStatusEnum;
-import top.continew.admin.auth.exception.RefreshTokenException;
import top.continew.admin.system.model.entity.DeptDO;
import top.continew.admin.system.model.entity.user.UserDO;
import top.continew.admin.system.model.resp.ClientResp;
@@ -50,13 +43,23 @@
import top.continew.admin.system.service.OptionService;
import top.continew.admin.system.service.RoleService;
import top.continew.admin.system.service.UserService;
+import top.continew.starter.auth.refresh.token.api.AuthSessionConstants;
+import top.continew.starter.auth.refresh.token.enums.RefreshTokenModeEnum;
+import top.continew.starter.auth.refresh.token.exception.RefreshTokenException;
+import top.continew.starter.auth.refresh.token.model.AuthSecurityVersion;
+import top.continew.starter.auth.refresh.token.model.RefreshClientPolicy;
+import top.continew.starter.auth.refresh.token.model.RefreshSession;
+import top.continew.starter.auth.refresh.token.service.RefreshTokenService;
+import top.continew.starter.auth.refresh.token.service.RefreshTokenService.LoginAttempt;
import top.continew.starter.core.exception.BusinessException;
import top.continew.starter.core.util.validation.CheckUtils;
import top.continew.starter.extension.tenant.context.TenantContextHolder;
import top.continew.starter.extension.tenant.util.TenantUtils;
-import java.util.HashSet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
@@ -64,8 +67,6 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Supplier;
-import static top.continew.admin.system.enums.PasswordPolicyEnum.PASSWORD_EXPIRATION_DAYS;
-
/**
* 统一 Access Token 签发实现。
*
@@ -159,7 +160,7 @@ private LoginResp issueInTenant(UserDO user, ClientResp client, Long tenantId,
RefreshClientPolicy refreshClientPolicy = RefreshClientPolicyMapper.from(client);
long accessTokenTimeout = this.getEffectiveAccessTokenTimeout(client.getTimeout(),
- issueRefreshToken ? refreshTokenService.getRefreshTimeout(refreshClientPolicy)
+ issueRefreshToken ? refreshClientPolicy.refreshTokenTimeout()
: this.remainingSeconds(refreshSession.getExpiresAt()));
// Sa-Token 只管理短期 Access Token 的生命周期。并发登录、顶人范围和最大登录
@@ -203,13 +204,11 @@ private LoginResp issueInTenant(UserDO user, ClientResp client, Long tenantId,
// 新登录创建 Refresh Session。浏览器明文只进入 HttpOnly Cookie;BODY 模式
// 将明文返回给 App / 微信小程序客户端。
if (issueRefreshToken) {
- String refreshToken =
- refreshTokenService.issue(sessionId, userContext, refreshClientPolicy,
- extraContext, securityVersion, response, accessToken, accessTokenTimeout);
- loginResp.setRefreshExpiresIn(
- refreshTokenService.getRefreshTimeout(refreshClientPolicy));
- if (RefreshTokenModeEnum.BODY
- .equals(refreshTokenService.getMode(refreshClientPolicy))) {
+ String refreshToken = refreshTokenService.issue(sessionId,
+ new RefreshSessionPrincipalAdapter(userContext, extraContext),
+ refreshClientPolicy, securityVersion, response);
+ loginResp.setRefreshExpiresIn(refreshClientPolicy.refreshTokenTimeout());
+ if (RefreshTokenModeEnum.BODY.equals(refreshClientPolicy.refreshTokenMode())) {
loginResp.setRefreshToken(refreshToken);
}
}
@@ -269,7 +268,9 @@ private void checkUserStatus(UserDO user, boolean refreshRequest) {
private LoginState reloadLoginState(UserDO authenticatedUser, ClientResp authenticatedClient,
Long tenantId) {
ClientResp currentClient = clientService.getByClientId(authenticatedClient.getClientId());
- CheckUtils.throwIfNull(currentClient, "客户端不存在");
+ if (currentClient == null) {
+ throw new BusinessException("客户端不存在");
+ }
CheckUtils.throwIfEqual(DisEnableStatusEnum.DISABLE, currentClient.getStatus(),
"客户端已禁用");
if (!this.isSameSecurityPolicy(authenticatedClient, currentClient)) {
diff --git a/continew-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java b/continew-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java
index d04c39a31..fc4c6a6a7 100644
--- a/continew-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/auth/service/impl/OnlineUserServiceImpl.java
@@ -21,13 +21,13 @@
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
-import top.continew.admin.auth.model.SessionView;
import top.continew.admin.auth.model.query.OnlineUserQuery;
import top.continew.admin.auth.model.resp.OnlineUserResp;
import top.continew.admin.auth.service.OnlineUserService;
-import top.continew.admin.auth.service.SessionInvalidationService;
-import top.continew.admin.auth.service.SessionQueryService;
import top.continew.admin.common.context.UserContextHolder;
+import top.continew.starter.auth.refresh.token.model.SessionView;
+import top.continew.starter.auth.refresh.token.service.SessionInvalidationService;
+import top.continew.starter.auth.refresh.token.service.SessionQueryService;
import top.continew.starter.extension.crud.model.query.PageQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
import top.continew.starter.extension.tenant.context.TenantContextHolder;
diff --git a/continew-system/src/main/java/top/continew/admin/system/api/TenantDataApiForSystemImpl.java b/continew-system/src/main/java/top/continew/admin/system/api/TenantDataApiForSystemImpl.java
index a8d540de3..9a3f63789 100644
--- a/continew-system/src/main/java/top/continew/admin/system/api/TenantDataApiForSystemImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/api/TenantDataApiForSystemImpl.java
@@ -32,7 +32,6 @@
import top.continew.admin.common.enums.RoleCodeEnum;
import top.continew.admin.common.model.dto.TenantDTO;
import top.continew.admin.common.util.SecureUtils;
-import top.continew.admin.auth.service.SessionInvalidationService;
import top.continew.admin.system.mapper.DeptMapper;
import top.continew.admin.system.mapper.LogMapper;
import top.continew.admin.system.mapper.MessageMapper;
@@ -51,6 +50,7 @@
import top.continew.admin.system.service.FileService;
import top.continew.admin.system.service.RoleMenuService;
import top.continew.admin.system.service.UserRoleService;
+import top.continew.starter.auth.refresh.token.service.SessionInvalidationService;
import top.continew.starter.core.util.CollUtils;
import top.continew.starter.extension.tenant.context.TenantContextHolder;
import top.continew.starter.extension.tenant.util.TenantUtils;
diff --git a/continew-system/src/main/java/top/continew/admin/system/config/file/FileRecorderImpl.java b/continew-system/src/main/java/top/continew/admin/system/config/file/FileRecorderImpl.java
index 530990fe1..3082b235e 100644
--- a/continew-system/src/main/java/top/continew/admin/system/config/file/FileRecorderImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/config/file/FileRecorderImpl.java
@@ -34,7 +34,7 @@
import top.continew.starter.cache.redisson.util.RedisUtils;
import top.continew.starter.core.constant.StringConstants;
import top.continew.starter.core.util.CollUtils;
-import top.continew.starter.core.util.URLUtils;
+import top.continew.starter.core.util.UrlUtils;
import top.continew.starter.storage.domain.model.resp.FileInfo;
import top.continew.starter.storage.domain.model.resp.FilePartInfo;
import top.continew.starter.storage.domain.model.resp.MultipartInitResp;
@@ -78,12 +78,12 @@ public boolean save(FileInfo fileInfo) {
file.setStorageId(storage.getId());
boolean saved = fileMapper.insert(file) > 0;
fileInfo.setFileId(String.valueOf(file.getId()));
- if (!URLUtils.isHttpUrl(fileInfo.getUrl())) {
+ if (!UrlUtils.isHttpUrl(fileInfo.getUrl())) {
String prefix = storage.getUrlPrefix();
String url = URLUtil.normalize(prefix + fileInfo.getPath(), false, true);
fileInfo.setUrl(url);
if (StrUtil.isNotBlank(fileInfo.getThumbnailPath())
- && !URLUtils.isHttpUrl(fileInfo.getThumbnailPath())) {
+ && !UrlUtils.isHttpUrl(fileInfo.getThumbnailPath())) {
fileInfo.setThumbnailPath(
URLUtil.normalize(prefix + fileInfo.getThumbnailPath(), false, true));
}
@@ -322,7 +322,7 @@ private FileDO getFileByUrl(String url) {
LambdaQueryChainWrapper queryWrapper = fileMapper.lambdaQuery()
.eq(FileDO::getName, StrUtil.subAfter(url, StringConstants.SLASH, true));
// 非 HTTP URL 场景
- if (!URLUtils.isHttpUrl(url)) {
+ if (!UrlUtils.isHttpUrl(url)) {
return queryWrapper
.eq(FileDO::getPath, StrUtil.prependIfMissing(url, StringConstants.SLASH)).one();
}
diff --git a/continew-system/src/main/java/top/continew/admin/system/config/sms/SmsConfigUtil.java b/continew-system/src/main/java/top/continew/admin/system/config/sms/SmsConfigUtil.java
index 96ed97545..54349353a 100644
--- a/continew-system/src/main/java/top/continew/admin/system/config/sms/SmsConfigUtil.java
+++ b/continew-system/src/main/java/top/continew/admin/system/config/sms/SmsConfigUtil.java
@@ -25,7 +25,7 @@
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
import top.continew.admin.system.model.resp.SmsConfigResp;
-import top.continew.starter.json.jackson.util.JSONUtils;
+import top.continew.starter.json.jackson.util.JsonUtils;
import java.util.Map;
@@ -72,7 +72,7 @@ public static BaseConfig from(SmsConfigResp smsConfig) {
configInfo.put("maxRetries", smsConfig.getMaxRetries());
}
if (StrUtil.isNotBlank(smsConfig.getSupplierConfig())) {
- configInfo.putAll(JSONUtils.toBean(smsConfig.getSupplierConfig(), Map.class));
+ configInfo.putAll(JsonUtils.toBean(smsConfig.getSupplierConfig(), Map.class));
}
return (BaseConfig) BeanUtil.toBean(configInfo, providerFactory.getConfigClass());
}
diff --git a/continew-system/src/main/java/top/continew/admin/system/config/sms/SmsReadConfigDatabaseImpl.java b/continew-system/src/main/java/top/continew/admin/system/config/sms/SmsReadConfigDatabaseImpl.java
index b74c1751a..5cf422691 100644
--- a/continew-system/src/main/java/top/continew/admin/system/config/sms/SmsReadConfigDatabaseImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/config/sms/SmsReadConfigDatabaseImpl.java
@@ -18,11 +18,9 @@
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
-
import org.dromara.sms4j.core.datainterface.SmsReadConfig;
import org.dromara.sms4j.provider.config.BaseConfig;
import org.springframework.stereotype.Component;
-
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.system.model.query.SmsConfigQuery;
import top.continew.admin.system.model.resp.SmsConfigResp;
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/CommonController.java b/continew-system/src/main/java/top/continew/admin/system/controller/CommonController.java
index 66aaad9df..c2259e91a 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/CommonController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/CommonController.java
@@ -23,7 +23,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
@@ -48,6 +47,7 @@
import top.continew.starter.log.annotation.Log;
import top.continew.starter.storage.domain.model.resp.FileInfo;
+import jakarta.validation.constraints.NotNull;
import java.io.IOException;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/DictController.java b/continew-system/src/main/java/top/continew/admin/system/controller/DictController.java
index 2af97f447..b2889f005 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/DictController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/DictController.java
@@ -22,8 +22,8 @@
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
-import top.continew.admin.common.constant.CacheConstants;
import top.continew.admin.common.base.controller.BaseController;
+import top.continew.admin.common.constant.CacheConstants;
import top.continew.admin.system.model.query.DictQuery;
import top.continew.admin.system.model.req.DictReq;
import top.continew.admin.system.model.resp.DictResp;
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/FileController.java b/continew-system/src/main/java/top/continew/admin/system/controller/FileController.java
index f16ce0805..20d30f964 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/FileController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/FileController.java
@@ -21,8 +21,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
@@ -36,11 +34,11 @@
import top.continew.admin.common.base.controller.BaseController;
import top.continew.admin.system.model.query.FileQuery;
import top.continew.admin.system.model.req.FileReq;
-import top.continew.admin.system.model.resp.file.FileUploadConfigResp;
-import top.continew.admin.system.model.resp.file.FileUploadProgressResp;
import top.continew.admin.system.model.resp.file.FileDirCalcSizeResp;
import top.continew.admin.system.model.resp.file.FileResp;
import top.continew.admin.system.model.resp.file.FileStatisticsResp;
+import top.continew.admin.system.model.resp.file.FileUploadConfigResp;
+import top.continew.admin.system.model.resp.file.FileUploadProgressResp;
import top.continew.admin.system.model.resp.file.FileUploadResp;
import top.continew.admin.system.service.FileService;
import top.continew.admin.system.service.StorageService;
@@ -51,6 +49,8 @@
import top.continew.starter.log.annotation.Log;
import top.continew.starter.storage.domain.model.resp.FileInfo;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
import java.io.IOException;
/**
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/FileRecycleController.java b/continew-system/src/main/java/top/continew/admin/system/controller/FileRecycleController.java
index dce9983f6..e647a0d62 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/FileRecycleController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/FileRecycleController.java
@@ -19,7 +19,6 @@
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -33,6 +32,8 @@
import top.continew.starter.extension.crud.model.query.PageQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
+import jakarta.validation.Valid;
+
/**
* 文件回收站管理 API
*
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/LogController.java b/continew-system/src/main/java/top/continew/admin/system/controller/LogController.java
index dfc508804..c3143b80f 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/LogController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/LogController.java
@@ -22,8 +22,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -38,6 +36,9 @@
import top.continew.starter.extension.crud.model.resp.PageResp;
import top.continew.starter.log.annotation.Log;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+
/**
* 系统日志 API
*
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/MenuController.java b/continew-system/src/main/java/top/continew/admin/system/controller/MenuController.java
index 655d781a7..8968def26 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/MenuController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/MenuController.java
@@ -32,7 +32,7 @@
import top.continew.admin.system.service.MenuService;
import top.continew.starter.cache.redisson.util.RedisUtils;
import top.continew.starter.core.constant.StringConstants;
-import top.continew.starter.core.util.URLUtils;
+import top.continew.starter.core.util.UrlUtils;
import top.continew.starter.core.util.validation.ValidationUtils;
import top.continew.starter.extension.crud.annotation.CrudApi;
import top.continew.starter.extension.crud.annotation.CrudRequestMapping;
@@ -73,11 +73,11 @@ public void preHandle(CrudApi crudApi, Object[] args, Method targetMethod, Class
MenuReq req = (MenuReq) args[0];
Boolean isExternal = ObjectUtil.defaultIfNull(req.getIsExternal(), false);
String path = req.getPath();
- ValidationUtils.throwIf(Boolean.TRUE.equals(isExternal) && !URLUtils
+ ValidationUtils.throwIf(Boolean.TRUE.equals(isExternal) && !UrlUtils
.isHttpUrl(path), "路由地址格式不正确,请以 http:// 或 https:// 开头");
// 非外链菜单参数修正
if (Boolean.FALSE.equals(isExternal)) {
- ValidationUtils.throwIf(URLUtils.isHttpUrl(path), "路由地址格式不正确");
+ ValidationUtils.throwIf(UrlUtils.isHttpUrl(path), "路由地址格式不正确");
req.setPath(StrUtil.isBlank(path) ? path
: StrUtil.prependIfMissing(path, StringConstants.SLASH));
req.setName(StrUtil.removePrefix(req.getName(), StringConstants.SLASH));
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/MultipartUploadController.java b/continew-system/src/main/java/top/continew/admin/system/controller/MultipartUploadController.java
index 6b44e4e9e..af050e602 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/MultipartUploadController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/MultipartUploadController.java
@@ -18,7 +18,6 @@
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -35,6 +34,8 @@
import top.continew.admin.system.model.resp.file.MultipartUploadPartResp;
import top.continew.admin.system.service.MultipartUploadService;
+import jakarta.validation.Valid;
+
/**
* 分片上传控制器
*
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/OptionController.java b/continew-system/src/main/java/top/continew/admin/system/controller/OptionController.java
index ed4ea877a..6d94c2d67 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/OptionController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/OptionController.java
@@ -20,7 +20,6 @@
import cn.dev33.satoken.annotation.SaMode;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
@@ -34,6 +33,7 @@
import top.continew.admin.system.model.resp.OptionResp;
import top.continew.admin.system.service.OptionService;
+import jakarta.validation.Valid;
import java.util.List;
/**
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/RoleController.java b/continew-system/src/main/java/top/continew/admin/system/controller/RoleController.java
index 5919980a7..de7ba5699 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/RoleController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/RoleController.java
@@ -23,8 +23,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotEmpty;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -37,8 +35,8 @@
import top.continew.admin.common.base.controller.BaseController;
import top.continew.admin.system.model.query.RoleQuery;
import top.continew.admin.system.model.query.RoleUserQuery;
-import top.continew.admin.system.model.req.RoleReq;
import top.continew.admin.system.model.req.RolePermissionUpdateReq;
+import top.continew.admin.system.model.req.RoleReq;
import top.continew.admin.system.model.resp.role.RoleDetailResp;
import top.continew.admin.system.model.resp.role.RolePermissionResp;
import top.continew.admin.system.model.resp.role.RoleResp;
@@ -51,6 +49,8 @@
import top.continew.starter.extension.crud.model.query.PageQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
import java.util.List;
/**
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/StorageController.java b/continew-system/src/main/java/top/continew/admin/system/controller/StorageController.java
index 35612e7b5..68d663ae4 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/StorageController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/StorageController.java
@@ -21,7 +21,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -35,6 +34,8 @@
import top.continew.starter.extension.crud.annotation.CrudRequestMapping;
import top.continew.starter.extension.crud.enums.Api;
+import jakarta.validation.Valid;
+
/**
* 存储管理 API
*
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/UserController.java b/continew-system/src/main/java/top/continew/admin/system/controller/UserController.java
index c60eabfae..4da9127d5 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/UserController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/UserController.java
@@ -21,9 +21,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
@@ -51,6 +48,9 @@
import top.continew.starter.extension.crud.annotation.CrudRequestMapping;
import top.continew.starter.extension.crud.enums.Api;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
import java.io.IOException;
/**
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/UserMessageController.java b/continew-system/src/main/java/top/continew/admin/system/controller/UserMessageController.java
index 03e40c78d..824464712 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/UserMessageController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/UserMessageController.java
@@ -21,7 +21,6 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -51,6 +50,7 @@
import top.continew.starter.extension.crud.model.resp.PageResp;
import top.continew.starter.log.annotation.Log;
+import jakarta.validation.Valid;
import java.util.Collections;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/system/controller/UserProfileController.java b/continew-system/src/main/java/top/continew/admin/system/controller/UserProfileController.java
index 97e55739d..418a6b54d 100644
--- a/continew-system/src/main/java/top/continew/admin/system/controller/UserProfileController.java
+++ b/continew-system/src/main/java/top/continew/admin/system/controller/UserProfileController.java
@@ -16,12 +16,11 @@
package top.continew.admin.system.controller;
+import cn.hutool.core.util.StrUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
@@ -37,7 +36,6 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-import cn.hutool.core.util.StrUtil;
import top.continew.admin.common.constant.CacheConstants;
import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.common.util.SecureUtils;
@@ -57,6 +55,8 @@
import top.continew.starter.core.util.validation.ValidationUtils;
import top.continew.starter.validation.constraints.EnumValue;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
import java.io.IOException;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/system/enums/PasswordPolicyEnum.java b/continew-system/src/main/java/top/continew/admin/system/enums/PasswordPolicyEnum.java
index f336e1dec..497411cdf 100644
--- a/continew-system/src/main/java/top/continew/admin/system/enums/PasswordPolicyEnum.java
+++ b/continew-system/src/main/java/top/continew/admin/system/enums/PasswordPolicyEnum.java
@@ -24,8 +24,8 @@
import cn.hutool.extra.spring.SpringUtil;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import top.continew.admin.common.constant.RegexConstants;
import top.continew.admin.common.constant.GlobalConstants;
+import top.continew.admin.common.constant.RegexConstants;
import top.continew.admin.system.model.entity.user.UserDO;
import top.continew.admin.system.service.OptionService;
import top.continew.admin.system.service.UserPasswordHistoryService;
diff --git a/continew-system/src/main/java/top/continew/admin/system/enums/StorageTypeEnum.java b/continew-system/src/main/java/top/continew/admin/system/enums/StorageTypeEnum.java
index 684907f99..725098242 100644
--- a/continew-system/src/main/java/top/continew/admin/system/enums/StorageTypeEnum.java
+++ b/continew-system/src/main/java/top/continew/admin/system/enums/StorageTypeEnum.java
@@ -25,7 +25,7 @@
import top.continew.admin.system.validation.ValidationGroup;
import top.continew.starter.core.constant.StringConstants;
import top.continew.starter.core.enums.BaseEnum;
-import top.continew.starter.core.util.URLUtils;
+import top.continew.starter.core.util.UrlUtils;
import top.continew.starter.core.util.validation.ValidationUtils;
import top.continew.starter.storage.common.constant.StorageConstant;
@@ -47,7 +47,7 @@ public enum StorageTypeEnum implements BaseEnum {
@Override
public void validate(StorageReq req) {
ValidationUtils.validate(req, ValidationGroup.Storage.Local.class);
- ValidationUtils.throwIf(StrUtil.isNotBlank(req.getDomain()) && !URLUtils.isHttpUrl(req
+ ValidationUtils.throwIf(StrUtil.isNotBlank(req.getDomain()) && !UrlUtils.isHttpUrl(req
.getDomain()), "访问路径格式不正确");
}
diff --git a/continew-system/src/main/java/top/continew/admin/system/mapper/SmsConfigMapper.java b/continew-system/src/main/java/top/continew/admin/system/mapper/SmsConfigMapper.java
index 2d25ad273..0d5fbc232 100644
--- a/continew-system/src/main/java/top/continew/admin/system/mapper/SmsConfigMapper.java
+++ b/continew-system/src/main/java/top/continew/admin/system/mapper/SmsConfigMapper.java
@@ -16,8 +16,8 @@
package top.continew.admin.system.mapper;
-import top.continew.starter.data.mapper.BaseMapper;
import top.continew.admin.system.model.entity.SmsConfigDO;
+import top.continew.starter.data.mapper.BaseMapper;
/**
* 短信配置 Mapper
diff --git a/continew-system/src/main/java/top/continew/admin/system/mapper/SmsLogMapper.java b/continew-system/src/main/java/top/continew/admin/system/mapper/SmsLogMapper.java
index 5ed3c40d3..6427f1a20 100644
--- a/continew-system/src/main/java/top/continew/admin/system/mapper/SmsLogMapper.java
+++ b/continew-system/src/main/java/top/continew/admin/system/mapper/SmsLogMapper.java
@@ -16,8 +16,8 @@
package top.continew.admin.system.mapper;
-import top.continew.starter.data.mapper.BaseMapper;
import top.continew.admin.system.model.entity.SmsLogDO;
+import top.continew.starter.data.mapper.BaseMapper;
/**
* 短信日志 Mapper
diff --git a/continew-system/src/main/java/top/continew/admin/system/mapper/user/UserMapper.java b/continew-system/src/main/java/top/continew/admin/system/mapper/user/UserMapper.java
index b0d91cdb2..ce74c274e 100644
--- a/continew-system/src/main/java/top/continew/admin/system/mapper/user/UserMapper.java
+++ b/continew-system/src/main/java/top/continew/admin/system/mapper/user/UserMapper.java
@@ -24,8 +24,8 @@
import top.continew.admin.common.base.mapper.DataPermissionMapper;
import top.continew.admin.system.model.entity.user.UserDO;
import top.continew.admin.system.model.resp.user.UserDetailResp;
-import top.continew.starter.extension.datapermission.annotation.DataPermission;
import top.continew.starter.encrypt.field.annotation.FieldEncrypt;
+import top.continew.starter.extension.datapermission.annotation.DataPermission;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/ClientDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/ClientDO.java
index e473640ef..4c3a0acaf 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/entity/ClientDO.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/ClientDO.java
@@ -22,9 +22,9 @@
import lombok.Data;
import top.continew.admin.common.base.model.entity.BaseDO;
import top.continew.admin.common.enums.DisEnableStatusEnum;
-import top.continew.admin.auth.enums.RefreshTokenModeEnum;
import top.continew.admin.system.enums.LogoutModeEnum;
import top.continew.admin.system.enums.ReplacedRangeEnum;
+import top.continew.starter.auth.refresh.token.enums.RefreshTokenModeEnum;
import java.io.Serial;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/DeptDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/DeptDO.java
index 992c1d165..0af78423a 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/entity/DeptDO.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/DeptDO.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
-import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.common.base.model.entity.BaseDO;
+import top.continew.admin.common.enums.DisEnableStatusEnum;
import java.io.Serial;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/DictDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/DictDO.java
index 93122135d..0e3bddfb1 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/entity/DictDO.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/DictDO.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
-import top.continew.starter.extension.crud.annotation.DictModel;
import top.continew.admin.common.base.model.entity.BaseDO;
+import top.continew.starter.extension.crud.annotation.DictModel;
import java.io.Serial;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/DictItemDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/DictItemDO.java
index 90dc4f999..0d7a663c6 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/entity/DictItemDO.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/DictItemDO.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
-import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.common.base.model.entity.BaseDO;
+import top.continew.admin.common.enums.DisEnableStatusEnum;
import java.io.Serial;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/MenuDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/MenuDO.java
index 0f3f4b992..2ed52be47 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/entity/MenuDO.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/MenuDO.java
@@ -18,9 +18,9 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
+import top.continew.admin.common.base.model.entity.BaseDO;
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.system.enums.MenuTypeEnum;
-import top.continew.admin.common.base.model.entity.BaseDO;
import java.io.Serial;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/RoleDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/RoleDO.java
index 10b1025a7..44d4c74d3 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/entity/RoleDO.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/RoleDO.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
-import top.continew.admin.common.enums.DataScopeEnum;
import top.continew.admin.common.base.model.entity.BaseDO;
+import top.continew.admin.common.enums.DataScopeEnum;
import top.continew.starter.extension.crud.annotation.DictModel;
import java.io.Serial;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsConfigDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsConfigDO.java
index b887985c2..6b68ffe97 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsConfigDO.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsConfigDO.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
-import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.common.base.model.entity.BaseDO;
+import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.starter.encrypt.field.annotation.FieldEncrypt;
import java.io.Serial;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsLogDO.java b/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsLogDO.java
index f7ee3efef..2b0ee7346 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsLogDO.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/entity/SmsLogDO.java
@@ -18,8 +18,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
-import top.continew.admin.common.enums.SuccessFailureStatusEnum;
import top.continew.admin.common.base.model.entity.BaseCreateDO;
+import top.continew.admin.common.enums.SuccessFailureStatusEnum;
import java.io.Serial;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/query/LogQuery.java b/continew-system/src/main/java/top/continew/admin/system/model/query/LogQuery.java
index ae833c4ec..e7c7b0f51 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/query/LogQuery.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/query/LogQuery.java
@@ -17,10 +17,10 @@
package top.continew.admin.system.model.query;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Size;
import lombok.Data;
import top.continew.admin.common.enums.DisEnableStatusEnum;
+import jakarta.validation.constraints.Size;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/query/OptionQuery.java b/continew-system/src/main/java/top/continew/admin/system/model/query/OptionQuery.java
index 74035276f..c8b7c7756 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/query/OptionQuery.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/query/OptionQuery.java
@@ -19,9 +19,9 @@
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import top.continew.admin.system.enums.OptionCategoryEnum;
-import top.continew.starter.validation.constraints.EnumValue;
import top.continew.starter.data.annotation.Query;
import top.continew.starter.data.enums.QueryType;
+import top.continew.starter.validation.constraints.EnumValue;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/query/UserQuery.java b/continew-system/src/main/java/top/continew/admin/system/model/query/UserQuery.java
index 50f823ae2..fde6b7133 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/query/UserQuery.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/query/UserQuery.java
@@ -17,10 +17,10 @@
package top.continew.admin.system.model.query;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Size;
import lombok.Data;
import top.continew.admin.common.enums.DisEnableStatusEnum;
+import jakarta.validation.constraints.Size;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/ClientReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/ClientReq.java
index dd2f367f2..9792d7e0b 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/ClientReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/ClientReq.java
@@ -19,18 +19,18 @@
import cn.sticki.spel.validator.constrain.SpelNotNull;
import cn.sticki.spel.validator.jakarta.SpelValid;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Max;
-import jakarta.validation.constraints.Min;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.enums.DisEnableStatusEnum;
-import top.continew.admin.auth.enums.RefreshTokenModeEnum;
import top.continew.admin.system.enums.LogoutModeEnum;
import top.continew.admin.system.enums.ReplacedRangeEnum;
+import top.continew.starter.auth.refresh.token.enums.RefreshTokenModeEnum;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/DeptReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/DeptReq.java
index 63d3b0ab9..065600235 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/DeptReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/DeptReq.java
@@ -17,13 +17,13 @@
package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Min;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.enums.DisEnableStatusEnum;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/DictItemReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/DictItemReq.java
index 1504da408..596b1ab16 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/DictItemReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/DictItemReq.java
@@ -17,13 +17,13 @@
package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Min;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.enums.DisEnableStatusEnum;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/DictReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/DictReq.java
index 259f34dfa..9aa33f52c 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/DictReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/DictReq.java
@@ -17,12 +17,12 @@
package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Pattern;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.constant.RegexConstants;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Pattern;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/FileReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/FileReq.java
index 34293dd5e..e8cc32e79 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/FileReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/FileReq.java
@@ -17,10 +17,10 @@
package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/MenuReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/MenuReq.java
index 0d9d060c3..740adde7f 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/MenuReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/MenuReq.java
@@ -17,14 +17,14 @@
package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Min;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.system.enums.MenuTypeEnum;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/MessageReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/MessageReq.java
index 7bd7bb287..57c6bb946 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/MessageReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/MessageReq.java
@@ -17,13 +17,13 @@
package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.system.enums.MessageTypeEnum;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/MultipartUploadCreateReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/MultipartUploadCreateReq.java
index b426e37ac..85769d98a 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/MultipartUploadCreateReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/MultipartUploadCreateReq.java
@@ -17,11 +17,11 @@
package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Min;
import lombok.Data;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
import java.util.Map;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/NoticeReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/NoticeReq.java
index 3a6abd4a3..c1496b194 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/NoticeReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/NoticeReq.java
@@ -21,13 +21,13 @@
import cn.sticki.spel.validator.constrain.SpelNotNull;
import cn.sticki.spel.validator.jakarta.SpelValid;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.system.enums.NoticeScopeEnum;
import top.continew.admin.system.enums.NoticeStatusEnum;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/OptionReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/OptionReq.java
index 50bfd08dd..120e0c4a8 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/OptionReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/OptionReq.java
@@ -17,11 +17,11 @@
package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/RoleReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/RoleReq.java
index 24901f250..b4e78c98d 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/RoleReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/RoleReq.java
@@ -17,14 +17,14 @@
package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Min;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Pattern;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.constant.RegexConstants;
import top.continew.admin.common.enums.DataScopeEnum;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Pattern;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/SmsConfigReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/SmsConfigReq.java
index bc29e3556..63e005f7e 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/SmsConfigReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/SmsConfigReq.java
@@ -16,15 +16,13 @@
package top.continew.admin.system.model.req;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
import io.swagger.v3.oas.annotations.media.Schema;
-
+import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.enums.DisEnableStatusEnum;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/StorageReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/StorageReq.java
index 0003800d1..179b01293 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/StorageReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/StorageReq.java
@@ -20,10 +20,6 @@
import cn.sticki.spel.validator.jakarta.SpelValid;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Min;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Pattern;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.constant.RegexConstants;
@@ -31,6 +27,10 @@
import top.continew.admin.system.enums.StorageTypeEnum;
import top.continew.admin.system.validation.ValidationGroup;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserBasicInfoUpdateReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserBasicInfoUpdateReq.java
index f1e9d18ba..a6f20e798 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserBasicInfoUpdateReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserBasicInfoUpdateReq.java
@@ -17,13 +17,13 @@
package top.continew.admin.system.model.req.user;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Pattern;
import lombok.Data;
import top.continew.admin.common.constant.RegexConstants;
import top.continew.admin.common.enums.GenderEnum;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserEmailUpdateReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserEmailUpdateReq.java
index f80956692..d2e6f07b1 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserEmailUpdateReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserEmailUpdateReq.java
@@ -17,11 +17,11 @@
package top.continew.admin.system.model.req.user;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Email;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserImportReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserImportReq.java
index fb10d8937..08eff8331 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserImportReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserImportReq.java
@@ -17,12 +17,12 @@
package top.continew.admin.system.model.req.user;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.system.enums.ImportPolicyEnum;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserImportRowReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserImportRowReq.java
index 984ef64fd..5e8ddf8c2 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserImportRowReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserImportRowReq.java
@@ -17,15 +17,15 @@
package top.continew.admin.system.model.req.user;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Email;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Pattern;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.constant.RegexConstants;
-import top.continew.starter.validation.constraints.Mobile;
import top.continew.starter.extension.crud.validation.CrudValidationGroup;
+import top.continew.starter.validation.constraints.Mobile;
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Pattern;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordResetReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordResetReq.java
index 654cf8358..af09cb9da 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordResetReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordResetReq.java
@@ -17,9 +17,9 @@
package top.continew.admin.system.model.req.user;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordUpdateReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordUpdateReq.java
index f8f642de9..17e3acf40 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordUpdateReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPasswordUpdateReq.java
@@ -17,9 +17,9 @@
package top.continew.admin.system.model.req.user;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPhoneUpdateReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPhoneUpdateReq.java
index 8ce9a4b30..981a97341 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPhoneUpdateReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserPhoneUpdateReq.java
@@ -17,11 +17,11 @@
package top.continew.admin.system.model.req.user;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.starter.validation.constraints.Mobile;
+import jakarta.validation.constraints.NotBlank;
import java.io.Serial;
import java.io.Serializable;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserReq.java
index 13be07001..4d6b9f4b3 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserReq.java
@@ -17,19 +17,19 @@
package top.continew.admin.system.model.req.user;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Email;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Pattern;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import top.continew.admin.common.constant.RegexConstants;
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.common.enums.GenderEnum;
-import top.continew.starter.validation.constraints.Mobile;
import top.continew.starter.extension.crud.validation.CrudValidationGroup;
+import top.continew.starter.validation.constraints.Mobile;
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserRoleUpdateReq.java b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserRoleUpdateReq.java
index 948a60790..bf6d23bfa 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserRoleUpdateReq.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/req/user/UserRoleUpdateReq.java
@@ -17,9 +17,9 @@
package top.continew.admin.system.model.req.user;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
+import jakarta.validation.constraints.NotEmpty;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/resp/ClientResp.java b/continew-system/src/main/java/top/continew/admin/system/model/resp/ClientResp.java
index 8ef29f7c4..08014dbbc 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/resp/ClientResp.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/resp/ClientResp.java
@@ -24,9 +24,9 @@
import top.continew.admin.common.config.excel.DictExcelProperty;
import top.continew.admin.common.config.excel.ExcelDictConverter;
import top.continew.admin.common.enums.DisEnableStatusEnum;
-import top.continew.admin.auth.enums.RefreshTokenModeEnum;
import top.continew.admin.system.enums.LogoutModeEnum;
import top.continew.admin.system.enums.ReplacedRangeEnum;
+import top.continew.starter.auth.refresh.token.enums.RefreshTokenModeEnum;
import top.continew.starter.excel.converter.ExcelBaseEnumConverter;
import top.continew.starter.excel.converter.ExcelListConverter;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/resp/DeptResp.java b/continew-system/src/main/java/top/continew/admin/system/model/resp/DeptResp.java
index f00ffefaa..9f4129a9f 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/resp/DeptResp.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/resp/DeptResp.java
@@ -22,8 +22,8 @@
import lombok.Data;
import top.continew.admin.common.base.model.resp.BaseDetailResp;
import top.continew.admin.common.enums.DisEnableStatusEnum;
-import top.continew.starter.extension.crud.annotation.TreeField;
import top.continew.starter.excel.converter.ExcelBaseEnumConverter;
+import top.continew.starter.extension.crud.annotation.TreeField;
import java.io.Serial;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/resp/SmsConfigResp.java b/continew-system/src/main/java/top/continew/admin/system/model/resp/SmsConfigResp.java
index 813928fb8..4933b6fef 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/resp/SmsConfigResp.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/resp/SmsConfigResp.java
@@ -20,10 +20,10 @@
import cn.idev.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
+import top.continew.admin.common.base.model.resp.BaseDetailResp;
import top.continew.admin.common.config.excel.DictExcelProperty;
import top.continew.admin.common.config.excel.ExcelDictConverter;
import top.continew.admin.common.enums.DisEnableStatusEnum;
-import top.continew.admin.common.base.model.resp.BaseDetailResp;
import top.continew.starter.excel.converter.ExcelBaseEnumConverter;
import top.continew.starter.security.mask.annotation.JsonMask;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/resp/SmsLogResp.java b/continew-system/src/main/java/top/continew/admin/system/model/resp/SmsLogResp.java
index 8d15b65d0..16636c2c4 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/resp/SmsLogResp.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/resp/SmsLogResp.java
@@ -20,8 +20,8 @@
import cn.idev.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
-import top.continew.admin.common.enums.SuccessFailureStatusEnum;
import top.continew.admin.common.base.model.resp.BaseResp;
+import top.continew.admin.common.enums.SuccessFailureStatusEnum;
import top.continew.starter.excel.converter.ExcelBaseEnumConverter;
import java.io.Serial;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/resp/notice/NoticeDetailResp.java b/continew-system/src/main/java/top/continew/admin/system/model/resp/notice/NoticeDetailResp.java
index 31e113921..e02410d93 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/resp/notice/NoticeDetailResp.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/resp/notice/NoticeDetailResp.java
@@ -20,9 +20,9 @@
import cn.idev.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
+import top.continew.admin.common.base.model.resp.BaseDetailResp;
import top.continew.admin.common.config.excel.DictExcelProperty;
import top.continew.admin.common.config.excel.ExcelDictConverter;
-import top.continew.admin.common.base.model.resp.BaseDetailResp;
import top.continew.admin.system.enums.NoticeScopeEnum;
import top.continew.admin.system.enums.NoticeStatusEnum;
import top.continew.starter.excel.converter.ExcelBaseEnumConverter;
diff --git a/continew-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java b/continew-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java
index cd588266c..5d2e3f4df 100644
--- a/continew-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java
+++ b/continew-system/src/main/java/top/continew/admin/system/model/resp/user/UserDetailResp.java
@@ -34,9 +34,9 @@
import top.continew.admin.common.enums.GenderEnum;
import top.continew.admin.system.model.resp.DeptResp;
import top.continew.admin.system.service.DeptService;
+import top.continew.starter.encrypt.field.annotation.FieldEncrypt;
import top.continew.starter.excel.converter.ExcelBaseEnumConverter;
import top.continew.starter.excel.converter.ExcelListConverter;
-import top.continew.starter.encrypt.field.annotation.FieldEncrypt;
import java.io.Serial;
import java.time.LocalDateTime;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/FileRecycleService.java b/continew-system/src/main/java/top/continew/admin/system/service/FileRecycleService.java
index 79ea7872a..163e1a5de 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/FileRecycleService.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/FileRecycleService.java
@@ -16,12 +16,13 @@
package top.continew.admin.system.service;
-import jakarta.validation.Valid;
import top.continew.admin.system.model.query.FileQuery;
import top.continew.admin.system.model.resp.file.FileResp;
import top.continew.starter.extension.crud.model.query.PageQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
+import jakarta.validation.Valid;
+
/**
* 文件回收站业务接口
*
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/FileService.java b/continew-system/src/main/java/top/continew/admin/system/service/FileService.java
index 4d1443d49..eae847150 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/FileService.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/FileService.java
@@ -16,18 +16,17 @@
package top.continew.admin.system.service;
-import top.continew.admin.common.constant.GlobalConstants;
-
import cn.hutool.core.util.StrUtil;
import org.springframework.web.multipart.MultipartFile;
import top.continew.admin.common.base.service.BaseService;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.system.model.entity.FileDO;
import top.continew.admin.system.model.entity.StorageDO;
import top.continew.admin.system.model.query.FileQuery;
import top.continew.admin.system.model.req.FileReq;
-import top.continew.admin.system.model.resp.file.FileUploadProgressResp;
import top.continew.admin.system.model.resp.file.FileResp;
import top.continew.admin.system.model.resp.file.FileStatisticsResp;
+import top.continew.admin.system.model.resp.file.FileUploadProgressResp;
import top.continew.starter.core.constant.StringConstants;
import top.continew.starter.data.service.IService;
import top.continew.starter.storage.domain.model.resp.FileInfo;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/LogService.java b/continew-system/src/main/java/top/continew/admin/system/service/LogService.java
index b811e1ddc..d89a800c5 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/LogService.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/LogService.java
@@ -16,7 +16,6 @@
package top.continew.admin.system.service;
-import jakarta.servlet.http.HttpServletResponse;
import top.continew.admin.system.model.query.LogQuery;
import top.continew.admin.system.model.resp.log.LogDetailResp;
import top.continew.admin.system.model.resp.log.LogResp;
@@ -24,6 +23,8 @@
import top.continew.starter.extension.crud.model.query.SortQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
+import jakarta.servlet.http.HttpServletResponse;
+
/**
* 系统日志业务接口
*
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/RoleService.java b/continew-system/src/main/java/top/continew/admin/system/service/RoleService.java
index 1e896702d..b6d344e29 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/RoleService.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/RoleService.java
@@ -20,8 +20,8 @@
import top.continew.admin.common.context.RoleContext;
import top.continew.admin.system.model.entity.RoleDO;
import top.continew.admin.system.model.query.RoleQuery;
-import top.continew.admin.system.model.req.RoleReq;
import top.continew.admin.system.model.req.RolePermissionUpdateReq;
+import top.continew.admin.system.model.req.RoleReq;
import top.continew.admin.system.model.resp.role.RoleDetailResp;
import top.continew.admin.system.model.resp.role.RoleResp;
import top.continew.starter.data.service.IService;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/StorageService.java b/continew-system/src/main/java/top/continew/admin/system/service/StorageService.java
index a7b1e17f4..505360344 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/StorageService.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/StorageService.java
@@ -16,8 +16,8 @@
package top.continew.admin.system.service;
-import top.continew.admin.common.model.req.CommonStatusUpdateReq;
import top.continew.admin.common.base.service.BaseService;
+import top.continew.admin.common.model.req.CommonStatusUpdateReq;
import top.continew.admin.system.model.entity.StorageDO;
import top.continew.admin.system.model.query.StorageQuery;
import top.continew.admin.system.model.req.StorageReq;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/UserService.java b/continew-system/src/main/java/top/continew/admin/system/service/UserService.java
index c4b982be7..47d4e1e0f 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/UserService.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/UserService.java
@@ -16,7 +16,6 @@
package top.continew.admin.system.service;
-import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
import top.continew.admin.common.base.service.BaseService;
import top.continew.admin.system.model.entity.user.UserDO;
@@ -32,6 +31,7 @@
import top.continew.admin.system.model.resp.user.UserResp;
import top.continew.starter.data.service.IService;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/ClientServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/ClientServiceImpl.java
index 2e90c1c81..11001aae7 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/ClientServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/ClientServiceImpl.java
@@ -23,11 +23,9 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import top.continew.admin.auth.adapter.ClientPolicyLockTargetResolver;
import top.continew.admin.auth.model.query.OnlineUserQuery;
import top.continew.admin.auth.service.OnlineUserService;
-import top.continew.admin.auth.service.SessionInvalidationService;
-import top.continew.admin.auth.adapter.ClientPolicyLockTargetResolver;
-import top.continew.admin.auth.api.AuthPolicyWriteLocked;
import top.continew.admin.common.base.service.BaseServiceImpl;
import top.continew.admin.system.mapper.ClientMapper;
import top.continew.admin.system.model.entity.ClientDO;
@@ -35,6 +33,8 @@
import top.continew.admin.system.model.req.ClientReq;
import top.continew.admin.system.model.resp.ClientResp;
import top.continew.admin.system.service.ClientService;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyWriteLocked;
+import top.continew.starter.auth.refresh.token.service.SessionInvalidationService;
import top.continew.starter.core.constant.StringConstants;
import top.continew.starter.core.util.validation.CheckUtils;
@@ -56,6 +56,7 @@ public class ClientServiceImpl
private final OnlineUserService onlineUserService;
private final SessionInvalidationService sessionInvalidationService;
+
@Override
public void beforeCreate(ClientReq req) {
req.setClientId(SecureUtil.md5(Base64.encode(IdUtil.fastSimpleUUID())
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/DeptServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/DeptServiceImpl.java
index 955d5aa4d..428888e95 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/DeptServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/DeptServiceImpl.java
@@ -19,14 +19,12 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import top.continew.admin.auth.service.OnlineUserService;
import top.continew.admin.auth.adapter.DeptUserPolicyLockTargetResolver;
-import top.continew.admin.auth.api.AuthPolicyWriteLocked;
+import top.continew.admin.auth.service.OnlineUserService;
import top.continew.admin.common.base.service.BaseServiceImpl;
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.system.mapper.DeptMapper;
@@ -37,11 +35,12 @@
import top.continew.admin.system.service.DeptService;
import top.continew.admin.system.service.RoleDeptService;
import top.continew.admin.system.service.UserService;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyWriteLocked;
import top.continew.starter.core.util.validation.CheckUtils;
import top.continew.starter.data.enums.DatabaseType;
import top.continew.starter.data.util.MetaUtils;
-import javax.sql.DataSource;
+import jakarta.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -49,6 +48,7 @@
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import javax.sql.DataSource;
/**
* 部门业务实现
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/DictItemServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/DictItemServiceImpl.java
index b71eb9f52..cafb33517 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/DictItemServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/DictItemServiceImpl.java
@@ -20,7 +20,6 @@
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.StrUtil;
-import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -39,6 +38,7 @@
import top.continew.starter.core.util.validation.CheckUtils;
import top.continew.starter.extension.crud.model.resp.LabelValueResp;
+import jakarta.annotation.PostConstruct;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/FileRecycleServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/FileRecycleServiceImpl.java
index fd7172cf8..a41d8df7e 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/FileRecycleServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/FileRecycleServiceImpl.java
@@ -17,16 +17,16 @@
package top.continew.admin.system.service.impl;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.common.constant.GlobalConstants;
+import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.system.enums.FileTypeEnum;
import top.continew.admin.system.mapper.FileMapper;
import top.continew.admin.system.model.entity.FileDO;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/FileServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/FileServiceImpl.java
index dd9435a40..72e4c68c5 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/FileServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/FileServiceImpl.java
@@ -22,7 +22,6 @@
import cn.hutool.core.util.URLUtil;
import cn.hutool.crypto.digest.DigestUtil;
import cn.hutool.json.JSONUtil;
-import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
@@ -31,19 +30,19 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import top.continew.admin.common.base.service.BaseServiceImpl;
-import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.common.constant.GlobalConstants;
+import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.common.enums.DisEnableStatusEnum;
import top.continew.admin.system.enums.FileTypeEnum;
+import top.continew.admin.system.enums.FileUploadProgressStatusEnum;
import top.continew.admin.system.mapper.FileMapper;
import top.continew.admin.system.model.entity.FileDO;
import top.continew.admin.system.model.entity.StorageDO;
import top.continew.admin.system.model.query.FileQuery;
import top.continew.admin.system.model.req.FileReq;
-import top.continew.admin.system.model.resp.file.FileUploadProgressResp;
import top.continew.admin.system.model.resp.file.FileResp;
import top.continew.admin.system.model.resp.file.FileStatisticsResp;
-import top.continew.admin.system.enums.FileUploadProgressStatusEnum;
+import top.continew.admin.system.model.resp.file.FileUploadProgressResp;
import top.continew.admin.system.service.FileService;
import top.continew.admin.system.service.StorageService;
import top.continew.admin.system.util.FileNameGenerator;
@@ -60,6 +59,7 @@
import top.continew.starter.storage.domain.file.EnhancedMultipartFile;
import top.continew.starter.storage.domain.model.resp.FileInfo;
+import jakarta.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/LogServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/LogServiceImpl.java
index ef7304bb0..2e6f8b917 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/LogServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/LogServiceImpl.java
@@ -23,7 +23,6 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -38,11 +37,12 @@
import top.continew.admin.system.service.LogService;
import top.continew.starter.core.util.validation.CheckUtils;
import top.continew.starter.data.util.QueryWrapperHelper;
+import top.continew.starter.excel.util.ExcelUtils;
import top.continew.starter.extension.crud.model.query.PageQuery;
import top.continew.starter.extension.crud.model.query.SortQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
-import top.continew.starter.excel.util.ExcelUtils;
+import jakarta.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.List;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/MenuServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/MenuServiceImpl.java
index e8e36f54b..faf2917d9 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/MenuServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/MenuServiceImpl.java
@@ -21,7 +21,6 @@
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.StrUtil;
import com.alicp.jetcache.anno.Cached;
-import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -47,6 +46,7 @@
import top.continew.starter.extension.crud.model.query.SortQuery;
import top.continew.starter.extension.tenant.context.TenantContextHolder;
+import jakarta.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/MessageLogServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/MessageLogServiceImpl.java
index 91d1bb06a..37c6f91f7 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/MessageLogServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/MessageLogServiceImpl.java
@@ -16,11 +16,10 @@
package top.continew.admin.system.service.impl;
-import top.continew.admin.common.constant.GlobalConstants;
-
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.system.mapper.MessageLogMapper;
import top.continew.admin.system.model.entity.MessageLogDO;
import top.continew.admin.system.service.MessageLogService;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/MessageServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/MessageServiceImpl.java
index 55b2fd637..755c76b26 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/MessageServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/MessageServiceImpl.java
@@ -82,9 +82,11 @@ public void readMessage(List ids, Long userId) {
messageLogService.addWithUserId(CollUtil.isNotEmpty(ids)
? CollUtil.intersection(unreadIds, ids).stream().toList()
: unreadIds, userId);
- WebSocketUtils.sendMessage(StpUtil.getTokenValueByLoginId(userId), String.valueOf(baseMapper
- .selectUnreadListByUserId(userId)
- .size()));
+ // 遍历该用户全部在线令牌推送未读数:多会话并发时仅取最新令牌会遗漏其余会话;
+ // sendMessageToAll 覆盖同一令牌下多标签页的全部连接
+ String unreadCount = String.valueOf(baseMapper.selectUnreadListByUserId(userId).size());
+ StpUtil.getTokenValueListByLoginId(userId)
+ .forEach(token -> WebSocketUtils.sendMessageToAll(token, unreadCount));
}
@Override
@@ -123,7 +125,7 @@ public void add(MessageReq req, List userIdList) {
// 放到 ForkJoinPool 公共池上既拿不到事务与租户上下文,也会阻塞公共池
userIdList.forEach(userId -> {
List tokenList = StpUtil.getTokenValueListByLoginId(userId);
- tokenList.forEach(token -> WebSocketUtils.sendMessage(token, "1"));
+ tokenList.forEach(token -> WebSocketUtils.sendMessageToAll(token, "1"));
});
return;
}
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/MultipartUploadServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/MultipartUploadServiceImpl.java
index 646a86c61..2ff9b3f43 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/MultipartUploadServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/MultipartUploadServiceImpl.java
@@ -37,8 +37,8 @@
import top.continew.starter.core.exception.BaseException;
import top.continew.starter.core.util.validation.CheckUtils;
import top.continew.starter.storage.core.FileStorageService;
-import top.continew.starter.storage.domain.model.resp.FileInfo;
import top.continew.starter.storage.domain.model.req.MultipartUploadInitReq;
+import top.continew.starter.storage.domain.model.resp.FileInfo;
import top.continew.starter.storage.domain.model.resp.MultipartInitResp;
import top.continew.starter.storage.domain.model.resp.MultipartUploadResp;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/NoticeLogServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/NoticeLogServiceImpl.java
index 7056535ae..2f84db248 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/NoticeLogServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/NoticeLogServiceImpl.java
@@ -16,12 +16,11 @@
package top.continew.admin.system.service.impl;
-import top.continew.admin.common.constant.GlobalConstants;
-
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.system.mapper.NoticeLogMapper;
import top.continew.admin.system.model.entity.NoticeLogDO;
import top.continew.admin.system.service.NoticeLogService;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/NoticeServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/NoticeServiceImpl.java
index fe29dc9d4..66de9c8ed 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/NoticeServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/NoticeServiceImpl.java
@@ -16,14 +16,13 @@
package top.continew.admin.system.service.impl;
-import top.continew.admin.common.constant.GlobalConstants;
-
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import top.continew.admin.common.base.service.BaseServiceImpl;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.system.enums.MessageTemplateEnum;
import top.continew.admin.system.enums.MessageTypeEnum;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/RoleServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/RoleServiceImpl.java
index 2172bff64..2b5969e7c 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/RoleServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/RoleServiceImpl.java
@@ -20,7 +20,6 @@
import cn.hutool.core.util.ObjectUtil;
import com.alicp.jetcache.anno.CacheInvalidate;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -50,6 +49,7 @@
import top.continew.starter.extension.crud.model.query.SortQuery;
import top.continew.starter.extension.crud.model.resp.LabelValueResp;
+import jakarta.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/StorageServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/StorageServiceImpl.java
index d6950958f..e99d94f72 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/StorageServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/StorageServiceImpl.java
@@ -18,7 +18,6 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
-import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -46,6 +45,7 @@
import top.continew.starter.storage.strategy.impl.LocalStorageStrategy;
import top.continew.starter.storage.strategy.impl.OssStorageStrategy;
+import jakarta.annotation.Resource;
import java.util.List;
/**
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/UserRoleServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/UserRoleServiceImpl.java
index 1a898b293..dbd9ec2ff 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/UserRoleServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/UserRoleServiceImpl.java
@@ -22,7 +22,6 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -44,6 +43,7 @@
import top.continew.starter.extension.crud.model.query.PageQuery;
import top.continew.starter.extension.crud.model.resp.PageResp;
+import jakarta.annotation.Resource;
import java.util.Collection;
import java.util.List;
import java.util.Set;
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java
index 195ee9445..0ef00dfb1 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/UserServiceImpl.java
@@ -16,7 +16,13 @@
package top.continew.admin.system.service.impl;
-import top.continew.admin.common.constant.GlobalConstants;
+import static top.continew.admin.system.enums.ImportPolicyEnum.EXIT;
+import static top.continew.admin.system.enums.ImportPolicyEnum.SKIP;
+import static top.continew.admin.system.enums.ImportPolicyEnum.UPDATE;
+import static top.continew.admin.system.enums.PasswordPolicyEnum.PASSWORD_ALLOW_CONTAIN_USERNAME;
+import static top.continew.admin.system.enums.PasswordPolicyEnum.PASSWORD_MIN_LENGTH;
+import static top.continew.admin.system.enums.PasswordPolicyEnum.PASSWORD_REPETITION_TIMES;
+import static top.continew.admin.system.enums.PasswordPolicyEnum.PASSWORD_REQUIRE_SYMBOLS;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
@@ -39,8 +45,6 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import me.ahoo.cosid.IdGenerator;
@@ -52,10 +56,9 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import top.continew.admin.auth.service.OnlineUserService;
-import top.continew.admin.auth.support.UserArgumentPolicyLockTargetResolver;
-import top.continew.admin.auth.api.AuthPolicyWriteLocked;
import top.continew.admin.common.base.service.BaseServiceImpl;
import top.continew.admin.common.constant.CacheConstants;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.common.context.UserContext;
import top.continew.admin.common.context.UserContextHolder;
import top.continew.admin.common.enums.DisEnableStatusEnum;
@@ -86,6 +89,8 @@
import top.continew.admin.system.service.UserRoleService;
import top.continew.admin.system.service.UserService;
import top.continew.admin.system.service.UserSocialService;
+import top.continew.starter.auth.refresh.token.api.AuthPolicyWriteLocked;
+import top.continew.starter.auth.refresh.token.support.UserArgumentPolicyLockTargetResolver;
import top.continew.starter.cache.redisson.util.RedisUtils;
import top.continew.starter.core.constant.StringConstants;
import top.continew.starter.core.exception.BusinessException;
@@ -99,6 +104,8 @@
import top.continew.starter.storage.core.FileStorageService;
import top.continew.starter.storage.domain.model.resp.FileInfo;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.Duration;
import java.time.LocalDateTime;
@@ -114,14 +121,6 @@
import java.util.function.Function;
import java.util.stream.Collectors;
-import static top.continew.admin.system.enums.ImportPolicyEnum.EXIT;
-import static top.continew.admin.system.enums.ImportPolicyEnum.SKIP;
-import static top.continew.admin.system.enums.ImportPolicyEnum.UPDATE;
-import static top.continew.admin.system.enums.PasswordPolicyEnum.PASSWORD_ALLOW_CONTAIN_USERNAME;
-import static top.continew.admin.system.enums.PasswordPolicyEnum.PASSWORD_MIN_LENGTH;
-import static top.continew.admin.system.enums.PasswordPolicyEnum.PASSWORD_REPETITION_TIMES;
-import static top.continew.admin.system.enums.PasswordPolicyEnum.PASSWORD_REQUIRE_SYMBOLS;
-
/**
* 用户业务实现
*
diff --git a/continew-system/src/main/java/top/continew/admin/system/service/impl/UserSocialServiceImpl.java b/continew-system/src/main/java/top/continew/admin/system/service/impl/UserSocialServiceImpl.java
index 8ab7ba40f..6a2e890c7 100644
--- a/continew-system/src/main/java/top/continew/admin/system/service/impl/UserSocialServiceImpl.java
+++ b/continew-system/src/main/java/top/continew/admin/system/service/impl/UserSocialServiceImpl.java
@@ -16,13 +16,12 @@
package top.continew.admin.system.service.impl;
-import top.continew.admin.common.constant.GlobalConstants;
-
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import lombok.RequiredArgsConstructor;
import me.zhyd.oauth.model.AuthUser;
import org.springframework.stereotype.Service;
+import top.continew.admin.common.constant.GlobalConstants;
import top.continew.admin.system.enums.SocialSourceEnum;
import top.continew.admin.system.mapper.user.UserSocialMapper;
import top.continew.admin.system.model.entity.user.UserSocialDO;
diff --git a/continew-system/src/main/java/top/continew/admin/system/util/FileNameGenerator.java b/continew-system/src/main/java/top/continew/admin/system/util/FileNameGenerator.java
index 282282fa6..8aae04973 100644
--- a/continew-system/src/main/java/top/continew/admin/system/util/FileNameGenerator.java
+++ b/continew-system/src/main/java/top/continew/admin/system/util/FileNameGenerator.java
@@ -16,17 +16,15 @@
package top.continew.admin.system.util;
-import java.util.List;
-
-import lombok.extern.slf4j.Slf4j;
-
import cn.hutool.core.util.StrUtil;
-
+import lombok.extern.slf4j.Slf4j;
import top.continew.admin.system.enums.FileTypeEnum;
import top.continew.admin.system.mapper.FileMapper;
import top.continew.admin.system.model.entity.FileDO;
import top.continew.starter.core.util.CollUtils;
+import java.util.List;
+
/**
* 文件名生成工具类
*
diff --git a/continew-auth-refresh/src/test/java/top/continew/admin/auth/controller/SessionControllerTest.java b/continew-system/src/test/java/top/continew/admin/auth/controller/SessionControllerTest.java
similarity index 94%
rename from continew-auth-refresh/src/test/java/top/continew/admin/auth/controller/SessionControllerTest.java
rename to continew-system/src/test/java/top/continew/admin/auth/controller/SessionControllerTest.java
index 4ccc33b94..b846f70ad 100644
--- a/continew-auth-refresh/src/test/java/top/continew/admin/auth/controller/SessionControllerTest.java
+++ b/continew-system/src/test/java/top/continew/admin/auth/controller/SessionControllerTest.java
@@ -16,16 +16,6 @@
package top.continew.admin.auth.controller;
-import cn.dev33.satoken.stp.StpUtil;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import top.continew.admin.auth.service.RefreshAccessTokenIssuer;
-import top.continew.admin.auth.service.RefreshTokenService;
-import top.continew.admin.auth.exception.RefreshTokenException;
-
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doThrow;
@@ -35,6 +25,16 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import cn.dev33.satoken.stp.StpUtil;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+import top.continew.starter.auth.refresh.token.exception.RefreshTokenException;
+import top.continew.starter.auth.refresh.token.service.RefreshAccessTokenIssuer;
+import top.continew.starter.auth.refresh.token.service.RefreshTokenService;
+
/** logout Cookie 安全边界测试。 */
class SessionControllerTest {
diff --git a/pom.xml b/pom.xml
index f56419c4c..9e00463dc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
top.continew.starter
continew-starter
- 2.16.1
+ 2.17.0
top.continew.admin
@@ -27,7 +27,6 @@
continew-server
- continew-auth-refresh
continew-system
continew-plugin
continew-common
@@ -37,13 +36,6 @@
4.2.0-SNAPSHOT
-
-
- 11.0.0
- 3.6.0
- 4.9.4.0
- 3.5.0
- 1.9.0
@@ -63,13 +55,6 @@
${revision}
-
-