chore: Spring Boot 2.7.8 => 3.0.3
1.Spring Boot 2.7.8 => 3.0.3 2.Knife4j 适配 Spring Boot 3.x 3.ServletUtil => JakartaServletUtil 4.javax.* => jakarta.*
This commit is contained in:
parent
9bbff7f22c
commit
dea160a7b2
@ -130,12 +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>
|
|
||||||
<!-- Spring Doc OpenAPI(可以结合 Spring Boot 使用的,基于 OpenAPI3 的 API 文档生成工具) -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springdoc</groupId>
|
|
||||||
<artifactId>springdoc-openapi-ui</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 @RequestBody C request) {
|
public R<Long> add(@Validated @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 @RequestBody C request, @PathVariable Long id) {
|
public R update(@Validated @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 top.charles7c.cnadmin.common.constant.CacheConsts;
|
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||||
import top.charles7c.cnadmin.common.model.dto.LogContext;
|
import top.charles7c.cnadmin.common.model.dto.LogContext;
|
||||||
@ -57,7 +57,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();
|
||||||
|
@ -82,7 +82,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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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;
|
||||||
|
|
@ -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,8 +16,8 @@
|
|||||||
|
|
||||||
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 lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
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 lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -18,8 +18,8 @@ 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 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.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
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,7 +18,7 @@ package top.charles7c.cnadmin.system.model.request;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import java.io.File;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
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,13 +53,14 @@ spring.liquibase:
|
|||||||
|
|
||||||
--- ### Redis 单机配置
|
--- ### Redis 单机配置
|
||||||
spring:
|
spring:
|
||||||
|
data:
|
||||||
redis:
|
redis:
|
||||||
# 地址
|
# 地址
|
||||||
host: ${REDIS_HOST:127.0.0.1}
|
host: ${REDIS_HOST:127.0.0.1}
|
||||||
# 端口(默认 6379)
|
# 端口(默认 6379)
|
||||||
port: ${REDIS_PORT:6379}
|
port: ${REDIS_PORT:6379}
|
||||||
# 密码(未设置密码时可为空或注释掉)
|
# 密码(未设置密码时可为空或注释掉)
|
||||||
password: ${REDIS_PWD:123456}
|
# password: ${REDIS_PWD:123456}
|
||||||
# 数据库索引
|
# 数据库索引
|
||||||
database: ${REDIS_DB:0}
|
database: ${REDIS_DB:0}
|
||||||
# 连接超时时间
|
# 连接超时时间
|
||||||
|
@ -195,3 +195,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
|
45
pom.xml
45
pom.xml
@ -14,8 +14,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||||||
See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@ -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.8</version>
|
<version>3.0.3</version>
|
||||||
<relativePath/> <!-- lookup parent from repository -->
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
@ -54,17 +54,21 @@ limitations under the License.
|
|||||||
<easyexcel.version>3.2.0</easyexcel.version>
|
<easyexcel.version>3.2.0</easyexcel.version>
|
||||||
<ip2region.version>2.7.6</ip2region.version>
|
<ip2region.version>2.7.6</ip2region.version>
|
||||||
<knife4j.version>4.0.0</knife4j.version>
|
<knife4j.version>4.0.0</knife4j.version>
|
||||||
<redisson.version>3.19.0</redisson.version>
|
<redisson.version>3.19.2</redisson.version>
|
||||||
<easy-captcha.version>1.6.2</easy-captcha.version>
|
<easy-captcha.version>1.6.2</easy-captcha.version>
|
||||||
<hutool.version>5.8.11</hutool.version>
|
<hutool.version>5.8.15</hutool.version>
|
||||||
|
<okhttp.version>4.10.0</okhttp.version>
|
||||||
|
|
||||||
<!-- ### 基础环境相关 ### -->
|
<!-- ### 基础环境相关 ### -->
|
||||||
<revision>0.0.1-SNAPSHOT</revision>
|
<revision>3.0.0</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>
|
<!-- <skipTests>true</skipTests>-->
|
||||||
<maven.compiler.target>8</maven.compiler.target>
|
<!-- ### 下面的这些属性spring-boot-starter-parent里<properties>已经有定义, 无需重复定义 ### -->
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<!-- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>-->
|
||||||
|
<!-- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>-->
|
||||||
|
<!-- <java.version>17</java.version>-->
|
||||||
|
<!-- <maven.compiler.source>17</maven.compiler.source>-->
|
||||||
|
<!-- <maven.compiler.target>17</maven.compiler.target>-->
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<profiles>
|
<profiles>
|
||||||
@ -146,6 +150,12 @@ limitations under the License.
|
|||||||
<groupId>com.alibaba</groupId>
|
<groupId>com.alibaba</groupId>
|
||||||
<artifactId>easyexcel</artifactId>
|
<artifactId>easyexcel</artifactId>
|
||||||
<version>${easyexcel.version}</version>
|
<version>${easyexcel.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi-ooxml-schemas</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 第三方封装 Ip2region(离线 IP 数据管理框架和定位库,支持亿级别的数据段,10 微秒级别的查询性能,提供了许多主流编程语言的 xdb 数据管理引擎的实现) -->
|
<!-- 第三方封装 Ip2region(离线 IP 数据管理框架和定位库,支持亿级别的数据段,10 微秒级别的查询性能,提供了许多主流编程语言的 xdb 数据管理引擎的实现) -->
|
||||||
@ -185,6 +195,13 @@ limitations under the License.
|
|||||||
<version>${hutool.version}</version>
|
<version>${hutool.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- OkHttp(网络请求库)-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.squareup.okhttp3</groupId>
|
||||||
|
<artifactId>okhttp</artifactId>
|
||||||
|
<version>${okhttp.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- ################ 本项目子模块相关 ################ -->
|
<!-- ################ 本项目子模块相关 ################ -->
|
||||||
<!-- API 模块(存放 Controller 层代码,打包部署的模块) -->
|
<!-- API 模块(存放 Controller 层代码,打包部署的模块) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -291,8 +308,8 @@ limitations under the License.
|
|||||||
<!-- 远程仓库配置:阿里云 Maven 中央仓库(公共代理仓库,Central 仓和 JCenter 仓的聚合仓,帮助研发人员提高研发生产效率,使用阿里云 Maven 中央仓库作为下载源,速度更快更稳定) -->
|
<!-- 远程仓库配置:阿里云 Maven 中央仓库(公共代理仓库,Central 仓和 JCenter 仓的聚合仓,帮助研发人员提高研发生产效率,使用阿里云 Maven 中央仓库作为下载源,速度更快更稳定) -->
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
<id>public</id>
|
<id>aliyun-public</id>
|
||||||
<name>aliyun maven</name>
|
<name>aliyun maven public</name>
|
||||||
<url>https://maven.aliyun.com/repository/public/</url>
|
<url>https://maven.aliyun.com/repository/public/</url>
|
||||||
<releases>
|
<releases>
|
||||||
<enabled>true</enabled>
|
<enabled>true</enabled>
|
||||||
@ -302,8 +319,8 @@ limitations under the License.
|
|||||||
|
|
||||||
<pluginRepositories>
|
<pluginRepositories>
|
||||||
<pluginRepository>
|
<pluginRepository>
|
||||||
<id>public</id>
|
<id>aliyun-public</id>
|
||||||
<name>aliyun maven</name>
|
<name>aliyun maven public</name>
|
||||||
<url>https://maven.aliyun.com/repository/public/</url>
|
<url>https://maven.aliyun.com/repository/public/</url>
|
||||||
<releases>
|
<releases>
|
||||||
<enabled>true</enabled>
|
<enabled>true</enabled>
|
||||||
|
Loading…
Reference in New Issue
Block a user