Merge branch 'pr_2' into 2.0.x
# Conflicts: # continew-admin-common/pom.xml # continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java # continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/LoginHelper.java # continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/DeptRequest.java # continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/MenuRequest.java # continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/RoleRequest.java # continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UpdateBasicInfoRequest.java # continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java # pom.xml
This commit is contained in:
commit
0aafcc015c
@ -130,7 +130,7 @@ limitations under the License.
|
|||||||
<!-- Knife4j(前身是 swagger-bootstrap-ui,集 Swagger2 和 OpenAPI3 为一体的增强解决方案) -->
|
<!-- Knife4j(前身是 swagger-bootstrap-ui,集 Swagger2 和 OpenAPI3 为一体的增强解决方案) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.xiaoymin</groupId>
|
<groupId>com.github.xiaoymin</groupId>
|
||||||
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
|
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Redisson(不仅仅是一个 Redis Java 客户端) -->
|
<!-- Redisson(不仅仅是一个 Redis Java 客户端) -->
|
||||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.common.base;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
|||||||
@Operation(summary = "分页查询列表")
|
@Operation(summary = "分页查询列表")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@GetMapping
|
@GetMapping
|
||||||
protected R<PageDataVO<V>> page(@Validated Q query, @Validated PageQuery pageQuery) {
|
public R<PageDataVO<V>> page(@Validated Q query, @Validated PageQuery pageQuery) {
|
||||||
this.checkPermission("list");
|
this.checkPermission("list");
|
||||||
PageDataVO<V> pageDataVO = baseService.page(query, pageQuery);
|
PageDataVO<V> pageDataVO = baseService.page(query, pageQuery);
|
||||||
return R.ok(pageDataVO);
|
return R.ok(pageDataVO);
|
||||||
@ -93,7 +93,7 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
|||||||
@Operation(summary = "查询树列表")
|
@Operation(summary = "查询树列表")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@GetMapping("/tree")
|
@GetMapping("/tree")
|
||||||
protected R<List<Tree<Long>>> tree(@Validated Q query, @Validated SortQuery sortQuery) {
|
public R<List<Tree<Long>>> tree(@Validated Q query, @Validated SortQuery sortQuery) {
|
||||||
this.checkPermission("list");
|
this.checkPermission("list");
|
||||||
List<Tree<Long>> list = baseService.tree(query, sortQuery, false);
|
List<Tree<Long>> list = baseService.tree(query, sortQuery, false);
|
||||||
return R.ok(list);
|
return R.ok(list);
|
||||||
@ -111,7 +111,7 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
|||||||
@Operation(summary = "查询列表")
|
@Operation(summary = "查询列表")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
protected R<List<V>> list(@Validated Q query, @Validated SortQuery sortQuery) {
|
public R<List<V>> list(@Validated Q query, @Validated SortQuery sortQuery) {
|
||||||
this.checkPermission("list");
|
this.checkPermission("list");
|
||||||
List<V> list = baseService.list(query, sortQuery);
|
List<V> list = baseService.list(query, sortQuery);
|
||||||
return R.ok(list);
|
return R.ok(list);
|
||||||
@ -128,7 +128,7 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
|||||||
@Parameter(name = "id", description = "ID", in = ParameterIn.PATH)
|
@Parameter(name = "id", description = "ID", in = ParameterIn.PATH)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
protected R<D> get(@PathVariable Long id) {
|
public R<D> get(@PathVariable Long id) {
|
||||||
this.checkPermission("list");
|
this.checkPermission("list");
|
||||||
D detail = baseService.get(id);
|
D detail = baseService.get(id);
|
||||||
return R.ok(detail);
|
return R.ok(detail);
|
||||||
@ -144,7 +144,7 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
|||||||
@Operation(summary = "新增数据")
|
@Operation(summary = "新增数据")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@PostMapping
|
@PostMapping
|
||||||
protected R<Long> add(@Validated(BaseRequest.Add.class) @RequestBody C request) {
|
public R<Long> add(@Validated(BaseRequest.Add.class) @RequestBody C request) {
|
||||||
this.checkPermission("add");
|
this.checkPermission("add");
|
||||||
Long id = baseService.add(request);
|
Long id = baseService.add(request);
|
||||||
return R.ok("新增成功", id);
|
return R.ok("新增成功", id);
|
||||||
@ -162,7 +162,7 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
|||||||
@Operation(summary = "修改数据")
|
@Operation(summary = "修改数据")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@PutMapping("/{id}")
|
@PutMapping("/{id}")
|
||||||
protected R update(@Validated(BaseRequest.Update.class) @RequestBody C request, @PathVariable Long id) {
|
public R update(@Validated(BaseRequest.Update.class) @RequestBody C request, @PathVariable Long id) {
|
||||||
this.checkPermission("update");
|
this.checkPermission("update");
|
||||||
baseService.update(request, id);
|
baseService.update(request, id);
|
||||||
return R.ok("修改成功");
|
return R.ok("修改成功");
|
||||||
@ -179,7 +179,7 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
|||||||
@Parameter(name = "ids", description = "ID 列表", in = ParameterIn.PATH)
|
@Parameter(name = "ids", description = "ID 列表", in = ParameterIn.PATH)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@DeleteMapping("/{ids}")
|
@DeleteMapping("/{ids}")
|
||||||
protected R delete(@PathVariable List<Long> ids) {
|
public R delete(@PathVariable List<Long> ids) {
|
||||||
this.checkPermission("delete");
|
this.checkPermission("delete");
|
||||||
baseService.delete(ids);
|
baseService.delete(ids);
|
||||||
return R.ok("删除成功");
|
return R.ok("删除成功");
|
||||||
@ -197,7 +197,7 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
|||||||
*/
|
*/
|
||||||
@Operation(summary = "导出数据")
|
@Operation(summary = "导出数据")
|
||||||
@GetMapping("/export")
|
@GetMapping("/export")
|
||||||
protected void export(@Validated Q query, @Validated SortQuery sortQuery, HttpServletResponse response) {
|
public void export(@Validated Q query, @Validated SortQuery sortQuery, HttpServletResponse response) {
|
||||||
this.checkPermission("export");
|
this.checkPermission("export");
|
||||||
baseService.export(query, sortQuery, response);
|
baseService.export(query, sortQuery, response);
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.common.base;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import javax.validation.groups.Default;
|
import jakarta.validation.groups.Default;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.common.base;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import java.lang.reflect.Field;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
|
@ -23,6 +23,7 @@ import java.lang.reflect.Method;
|
|||||||
import org.springframework.lang.NonNull;
|
import org.springframework.lang.NonNull;
|
||||||
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
|
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
|
||||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
||||||
|
import org.springframework.web.util.pattern.PathPatternParser;
|
||||||
|
|
||||||
import cn.hutool.core.util.ArrayUtil;
|
import cn.hutool.core.util.ArrayUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@ -55,7 +56,14 @@ public class CrudRequestMappingHandlerMapping extends RequestMappingHandlerMappi
|
|||||||
// 拼接路径前缀(合并了 @RequestMapping 的部分能力)
|
// 拼接路径前缀(合并了 @RequestMapping 的部分能力)
|
||||||
String pathPrefix = crudRequestMapping.value();
|
String pathPrefix = crudRequestMapping.value();
|
||||||
if (StrUtil.isNotBlank(pathPrefix)) {
|
if (StrUtil.isNotBlank(pathPrefix)) {
|
||||||
requestMappingInfo = RequestMappingInfo.paths(pathPrefix).build().combine(requestMappingInfo);
|
/**
|
||||||
|
* 问题:RequestMappingInfo.paths(pathPrefix)返回的RequestMappingInfo对象里pathPatternsCondition = null
|
||||||
|
* 导致combine()方法抛出断言异常!
|
||||||
|
* 修复: 创建options对象, 并设置PatternParser
|
||||||
|
*/
|
||||||
|
RequestMappingInfo.BuilderConfiguration options = new RequestMappingInfo.BuilderConfiguration();
|
||||||
|
options.setPatternParser(PathPatternParser.defaultInstance);
|
||||||
|
requestMappingInfo = RequestMappingInfo.paths(pathPrefix).options(options).build().combine(requestMappingInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 过滤 API
|
// 过滤 API
|
||||||
|
@ -18,9 +18,9 @@ package top.charles7c.cnadmin.common.handler;
|
|||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.validation.ConstraintViolation;
|
import jakarta.validation.ConstraintViolation;
|
||||||
import javax.validation.ConstraintViolationException;
|
import jakarta.validation.ConstraintViolationException;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package top.charles7c.cnadmin.common.model.query;
|
package top.charles7c.cnadmin.common.model.query;
|
||||||
|
|
||||||
import javax.validation.constraints.Min;
|
import jakarta.validation.constraints.Min;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@ -24,7 +24,7 @@ import lombok.NoArgsConstructor;
|
|||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import org.hibernate.validator.constraints.Range;
|
import org.hibernate.validator.constraints.Range;
|
||||||
import org.springdoc.api.annotations.ParameterObject;
|
import org.springdoc.core.annotations.ParameterObject;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
@ -24,7 +24,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import org.springdoc.api.annotations.ParameterObject;
|
import org.springdoc.core.annotations.ParameterObject;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
|
|
||||||
import cn.hutool.core.util.ArrayUtil;
|
import cn.hutool.core.util.ArrayUtil;
|
||||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.common.model.request;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ package top.charles7c.cnadmin.common.util;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
@ -22,8 +22,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.mail.MessagingException;
|
import jakarta.mail.MessagingException;
|
||||||
import javax.mail.internet.MimeMessage;
|
import jakarta.mail.internet.MimeMessage;
|
||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -18,8 +18,8 @@ package top.charles7c.cnadmin.common.util;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
@ -18,14 +18,14 @@ package top.charles7c.cnadmin.common.util.helper;
|
|||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import cn.dev33.satoken.context.SaHolder;
|
import cn.dev33.satoken.context.SaHolder;
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.hutool.extra.servlet.ServletUtil;
|
import cn.hutool.extra.servlet.JakartaServletUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||||
@ -60,7 +60,7 @@ public class LoginHelper {
|
|||||||
|
|
||||||
// 记录登录信息
|
// 记录登录信息
|
||||||
HttpServletRequest request = ServletUtils.getRequest();
|
HttpServletRequest request = ServletUtils.getRequest();
|
||||||
loginUser.setClientIp(ServletUtil.getClientIP(request));
|
loginUser.setClientIp(JakartaServletUtil.getClientIP(request));
|
||||||
loginUser.setLocation(IpUtils.getCityInfo(loginUser.getClientIp()));
|
loginUser.setLocation(IpUtils.getCityInfo(loginUser.getClientIp()));
|
||||||
loginUser.setBrowser(ServletUtils.getBrowser(request));
|
loginUser.setBrowser(ServletUtils.getBrowser(request));
|
||||||
LogContext logContext = LogContextHolder.get();
|
LogContext logContext = LogContextHolder.get();
|
||||||
|
@ -83,7 +83,7 @@ public class QueryHelper {
|
|||||||
* 查询数据类型
|
* 查询数据类型
|
||||||
*/
|
*/
|
||||||
private static <Q, R> void buildQuery(Q query, Field field, QueryWrapper<R> queryWrapper) {
|
private static <Q, R> void buildQuery(Q query, Field field, QueryWrapper<R> queryWrapper) {
|
||||||
boolean accessible = field.isAccessible();
|
boolean accessible = field.canAccess(null);
|
||||||
try {
|
try {
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
// 没有 @Query,直接返回
|
// 没有 @Query,直接返回
|
||||||
|
@ -19,10 +19,10 @@ package top.charles7c.cnadmin.monitor.filter;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.servlet.FilterChain;
|
import jakarta.servlet.FilterChain;
|
||||||
import javax.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.springframework.core.Ordered;
|
import org.springframework.core.Ordered;
|
||||||
import org.springframework.lang.NonNull;
|
import org.springframework.lang.NonNull;
|
||||||
|
@ -19,8 +19,8 @@ package top.charles7c.cnadmin.monitor.interceptor;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -41,7 +41,7 @@ import cn.hutool.core.date.LocalDateTimeUtil;
|
|||||||
import cn.hutool.core.exceptions.ExceptionUtil;
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.extra.servlet.ServletUtil;
|
import cn.hutool.extra.servlet.JakartaServletUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import cn.hutool.http.HttpStatus;
|
import cn.hutool.http.HttpStatus;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
@ -215,13 +215,13 @@ public class LogInterceptor implements HandlerInterceptor {
|
|||||||
logDO.setRequestUrl(StrUtil.isBlank(request.getQueryString()) ? request.getRequestURL().toString()
|
logDO.setRequestUrl(StrUtil.isBlank(request.getQueryString()) ? request.getRequestURL().toString()
|
||||||
: request.getRequestURL().append("?").append(request.getQueryString()).toString());
|
: request.getRequestURL().append("?").append(request.getQueryString()).toString());
|
||||||
logDO.setRequestMethod(request.getMethod());
|
logDO.setRequestMethod(request.getMethod());
|
||||||
logDO.setRequestHeaders(this.desensitize(ServletUtil.getHeaderMap(request)));
|
logDO.setRequestHeaders(this.desensitize(JakartaServletUtil.getHeaderMap(request)));
|
||||||
String requestBody = this.getRequestBody(request);
|
String requestBody = this.getRequestBody(request);
|
||||||
if (StrUtil.isNotBlank(requestBody)) {
|
if (StrUtil.isNotBlank(requestBody)) {
|
||||||
logDO.setRequestBody(this.desensitize(
|
logDO.setRequestBody(this.desensitize(
|
||||||
JSONUtil.isTypeJSON(requestBody) ? JSONUtil.parseObj(requestBody) : ServletUtil.getParamMap(request)));
|
JSONUtil.isTypeJSON(requestBody) ? JSONUtil.parseObj(requestBody) : JakartaServletUtil.getParamMap(request)));
|
||||||
}
|
}
|
||||||
logDO.setClientIp(ServletUtil.getClientIP(request));
|
logDO.setClientIp(JakartaServletUtil.getClientIP(request));
|
||||||
logDO.setLocation(IpUtils.getCityInfo(logDO.getClientIp()));
|
logDO.setLocation(IpUtils.getCityInfo(logDO.getClientIp()));
|
||||||
logDO.setBrowser(ServletUtils.getBrowser(request));
|
logDO.setBrowser(ServletUtils.getBrowser(request));
|
||||||
logDO.setCreateUser(ObjectUtil.defaultIfNull(logDO.getCreateUser(), LoginHelper.getUserId()));
|
logDO.setCreateUser(ObjectUtil.defaultIfNull(logDO.getCreateUser(), LoginHelper.getUserId()));
|
||||||
@ -243,7 +243,7 @@ public class LogInterceptor implements HandlerInterceptor {
|
|||||||
private void logResponse(LogDO logDO, HttpServletResponse response) {
|
private void logResponse(LogDO logDO, HttpServletResponse response) {
|
||||||
int status = response.getStatus();
|
int status = response.getStatus();
|
||||||
logDO.setStatusCode(status);
|
logDO.setStatusCode(status);
|
||||||
logDO.setResponseHeaders(this.desensitize(ServletUtil.getHeadersMap(response)));
|
logDO.setResponseHeaders(this.desensitize(JakartaServletUtil.getHeadersMap(response)));
|
||||||
// 响应体(不记录非 JSON 响应数据)
|
// 响应体(不记录非 JSON 响应数据)
|
||||||
String responseBody = this.getResponseBody(response);
|
String responseBody = this.getResponseBody(response);
|
||||||
if (StrUtil.isNotBlank(responseBody) && JSONUtil.isTypeJSON(responseBody)) {
|
if (StrUtil.isNotBlank(responseBody) && JSONUtil.isTypeJSON(responseBody)) {
|
||||||
@ -328,7 +328,7 @@ public class LogInterceptor implements HandlerInterceptor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2、检查是否需要记录内网 IP 操作
|
// 2、检查是否需要记录内网 IP 操作
|
||||||
boolean isInnerIp = IpUtils.isInnerIp(ServletUtil.getClientIP(request));
|
boolean isInnerIp = IpUtils.isInnerIp(JakartaServletUtil.getClientIP(request));
|
||||||
if (isInnerIp && Boolean.FALSE.equals(operationLogProperties.getIncludeInnerIp())) {
|
if (isInnerIp && Boolean.FALSE.equals(operationLogProperties.getIncludeInnerIp())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import org.springdoc.api.annotations.ParameterObject;
|
import org.springdoc.core.annotations.ParameterObject;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.annotation.Query;
|
import top.charles7c.cnadmin.common.annotation.Query;
|
||||||
|
@ -24,7 +24,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import org.springdoc.api.annotations.ParameterObject;
|
import org.springdoc.core.annotations.ParameterObject;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.annotation.Query;
|
import top.charles7c.cnadmin.common.annotation.Query;
|
||||||
|
@ -24,7 +24,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import org.springdoc.api.annotations.ParameterObject;
|
import org.springdoc.core.annotations.ParameterObject;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.annotation.Query;
|
import top.charles7c.cnadmin.common.annotation.Query;
|
||||||
|
@ -30,6 +30,7 @@ import cn.dev33.satoken.jwt.StpLogicJwtForSimple;
|
|||||||
import cn.dev33.satoken.stp.StpInterface;
|
import cn.dev33.satoken.stp.StpInterface;
|
||||||
import cn.dev33.satoken.stp.StpLogic;
|
import cn.dev33.satoken.stp.StpLogic;
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import top.charles7c.cnadmin.auth.config.satoken.properties.SecurityProperties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sa-Token 配置
|
* Sa-Token 配置
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package top.charles7c.cnadmin.auth.config.satoken;
|
package top.charles7c.cnadmin.auth.config.satoken.properties;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -24,7 +24,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import org.springdoc.api.annotations.ParameterObject;
|
import org.springdoc.core.annotations.ParameterObject;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.auth.model.request;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import org.springdoc.api.annotations.ParameterObject;
|
import org.springdoc.core.annotations.ParameterObject;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.annotation.Query;
|
import top.charles7c.cnadmin.common.annotation.Query;
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import org.springdoc.api.annotations.ParameterObject;
|
import org.springdoc.core.annotations.ParameterObject;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.annotation.Query;
|
import top.charles7c.cnadmin.common.annotation.Query;
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import org.springdoc.api.annotations.ParameterObject;
|
import org.springdoc.core.annotations.ParameterObject;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.annotation.Query;
|
import top.charles7c.cnadmin.common.annotation.Query;
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import org.springdoc.api.annotations.ParameterObject;
|
import org.springdoc.core.annotations.ParameterObject;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.annotation.Query;
|
import top.charles7c.cnadmin.common.annotation.Query;
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package top.charles7c.cnadmin.system.model.request;
|
package top.charles7c.cnadmin.system.model.request;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package top.charles7c.cnadmin.system.model.request;
|
package top.charles7c.cnadmin.system.model.request;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -19,9 +19,9 @@ package top.charles7c.cnadmin.system.model.request;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -18,9 +18,9 @@ package top.charles7c.cnadmin.system.model.request;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -18,8 +18,8 @@ package top.charles7c.cnadmin.system.model.request;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.system.model.request;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ package top.charles7c.cnadmin.system.model.request;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -18,9 +18,9 @@ package top.charles7c.cnadmin.system.model.request;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ import java.util.List;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import java.util.Collection;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
@ -18,9 +18,9 @@ package top.charles7c.cnadmin.webapi.controller.common;
|
|||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
||||||
import javax.mail.MessagingException;
|
import jakarta.mail.MessagingException;
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package top.charles7c.cnadmin.webapi.controller.system;
|
package top.charles7c.cnadmin.webapi.controller.system;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ public class UserController extends BaseController<UserService, UserVO, UserDeta
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SaCheckPermission("system:user:add")
|
@SaCheckPermission("system:user:add")
|
||||||
protected R<Long> add(@Validated(BaseRequest.Add.class) @RequestBody UserRequest request) {
|
public R<Long> add(@Validated(BaseRequest.Add.class) @RequestBody UserRequest request) {
|
||||||
Long id = baseService.add(request);
|
Long id = baseService.add(request);
|
||||||
return R.ok(String.format("新增成功,请牢记默认密码:%s", SysConsts.DEFAULT_PASSWORD), id);
|
return R.ok(String.format("新增成功,请牢记默认密码:%s", SysConsts.DEFAULT_PASSWORD), id);
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ spring:
|
|||||||
master:
|
master:
|
||||||
url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:continew_admin}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&rewriteBatchedStatements=true&autoReconnect=true&maxReconnects=10&failOverReadOnly=false
|
url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:continew_admin}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&rewriteBatchedStatements=true&autoReconnect=true&maxReconnects=10&failOverReadOnly=false
|
||||||
username: ${DB_USER:root}
|
username: ${DB_USER:root}
|
||||||
password: ${DB_PWD:123456}
|
password: ${DB_PWD:root}
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
# 从库配置(可配多个,构成多从)
|
# 从库配置(可配多个,构成多从)
|
||||||
slave_1:
|
slave_1:
|
||||||
@ -53,19 +53,20 @@ spring.liquibase:
|
|||||||
|
|
||||||
--- ### Redis 单机配置
|
--- ### Redis 单机配置
|
||||||
spring:
|
spring:
|
||||||
redis:
|
data:
|
||||||
# 地址
|
redis:
|
||||||
host: ${REDIS_HOST:127.0.0.1}
|
# 地址
|
||||||
# 端口(默认 6379)
|
host: ${REDIS_HOST:127.0.0.1}
|
||||||
port: ${REDIS_PORT:6379}
|
# 端口(默认 6379)
|
||||||
# 密码(未设置密码时可为空或注释掉)
|
port: ${REDIS_PORT:6379}
|
||||||
password: ${REDIS_PWD:123456}
|
# 密码(未设置密码时可为空或注释掉)
|
||||||
# 数据库索引
|
# password: ${REDIS_PWD:123456}
|
||||||
database: ${REDIS_DB:0}
|
# 数据库索引
|
||||||
# 连接超时时间
|
database: ${REDIS_DB:0}
|
||||||
timeout: 10s
|
# 连接超时时间
|
||||||
# 是否开启 SSL
|
timeout: 10s
|
||||||
ssl: false
|
# 是否开启 SSL
|
||||||
|
ssl: false
|
||||||
|
|
||||||
--- ### 邮件配置
|
--- ### 邮件配置
|
||||||
spring:
|
spring:
|
||||||
|
@ -196,3 +196,22 @@ thread-pool:
|
|||||||
queueCapacity: 128
|
queueCapacity: 128
|
||||||
# 活跃时间
|
# 活跃时间
|
||||||
keepAliveSeconds: 300
|
keepAliveSeconds: 300
|
||||||
|
|
||||||
|
management:
|
||||||
|
health:
|
||||||
|
mail:
|
||||||
|
# 临时关闭邮箱健康检查
|
||||||
|
# 注: 邮箱参数没有正确配置会出现mail health异常
|
||||||
|
enabled: false
|
||||||
|
# redis:
|
||||||
|
# # redis
|
||||||
|
# enabled: false
|
||||||
|
# mongo:
|
||||||
|
# # 关闭mongodb健康检查
|
||||||
|
# enabled: false
|
||||||
|
# solr:
|
||||||
|
# # 关闭solr健康检查
|
||||||
|
# enabled: false
|
||||||
|
# elasticsearch:
|
||||||
|
# # 关闭es健康检查
|
||||||
|
# enabled: false
|
6
pom.xml
6
pom.xml
@ -38,7 +38,7 @@ limitations under the License.
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-parent</artifactId>
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
<version>2.7.10</version>
|
<version>3.0.3</version>
|
||||||
<relativePath/> <!-- lookup parent from repository -->
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
@ -60,11 +60,7 @@ limitations under the License.
|
|||||||
|
|
||||||
<!-- ### 基础环境相关 ### -->
|
<!-- ### 基础环境相关 ### -->
|
||||||
<revision>2.0.0-SNAPSHOT</revision>
|
<revision>2.0.0-SNAPSHOT</revision>
|
||||||
<java.version>1.8</java.version>
|
|
||||||
<spotless.version>2.28.0</spotless.version>
|
<spotless.version>2.28.0</spotless.version>
|
||||||
<maven.compiler.source>8</maven.compiler.source>
|
|
||||||
<maven.compiler.target>8</maven.compiler.target>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<profiles>
|
<profiles>
|
||||||
|
Loading…
Reference in New Issue
Block a user