Merge branch '1.0.x' into dev
This commit is contained in:
commit
e964c4cc4b
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,8 @@ public class QueryHelper {
|
|||||||
String property = queryAnnotation.property();
|
String property = queryAnnotation.property();
|
||||||
fieldName = StrUtil.blankToDefault(property, fieldName);
|
fieldName = StrUtil.blankToDefault(property, fieldName);
|
||||||
String columnName = StrUtil.toUnderlineCase(fieldName);
|
String columnName = StrUtil.toUnderlineCase(fieldName);
|
||||||
switch (queryAnnotation.type()) {
|
Query.Type queryType = queryAnnotation.type();
|
||||||
|
switch (queryType) {
|
||||||
case EQUAL:
|
case EQUAL:
|
||||||
queryWrapper.eq(columnName, fieldValue);
|
queryWrapper.eq(columnName, fieldValue);
|
||||||
break;
|
break;
|
||||||
@ -163,7 +164,9 @@ public class QueryHelper {
|
|||||||
break;
|
break;
|
||||||
case BETWEEN:
|
case BETWEEN:
|
||||||
List<Object> between = new ArrayList<>((List<Object>)fieldValue);
|
List<Object> between = new ArrayList<>((List<Object>)fieldValue);
|
||||||
queryWrapper.between(columnName, between.get(0), between.get(1));
|
if (between.size() >= 2) {
|
||||||
|
queryWrapper.between(columnName, between.get(0), between.get(1));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case LEFT_LIKE:
|
case LEFT_LIKE:
|
||||||
queryWrapper.likeLeft(columnName, fieldValue);
|
queryWrapper.likeLeft(columnName, fieldValue);
|
||||||
@ -191,7 +194,7 @@ public class QueryHelper {
|
|||||||
queryWrapper.isNotNull(columnName);
|
queryWrapper.isNotNull(columnName);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
throw new IllegalArgumentException(String.format("暂不支持 [%s] 查询类型", queryType));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ package top.charles7c.cnadmin.system.model.request;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Pattern;
|
import javax.validation.constraints.Pattern;
|
||||||
|
|
||||||
@ -86,12 +87,14 @@ public class UserRequest extends BaseRequest {
|
|||||||
* 所属部门
|
* 所属部门
|
||||||
*/
|
*/
|
||||||
@Schema(description = "所属部门")
|
@Schema(description = "所属部门")
|
||||||
|
@NotNull(message = "所属部门不能为空")
|
||||||
private Long deptId;
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 所属角色
|
* 所属角色
|
||||||
*/
|
*/
|
||||||
@Schema(description = "所属角色")
|
@Schema(description = "所属角色")
|
||||||
|
@NotEmpty(message = "所属角色不能为空")
|
||||||
private List<Long> roleIds;
|
private List<Long> roleIds;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -554,8 +554,8 @@
|
|||||||
rules: {
|
rules: {
|
||||||
username: [{ required: true, message: '请输入用户名' }],
|
username: [{ required: true, message: '请输入用户名' }],
|
||||||
nickname: [{ required: true, message: '请输入昵称' }],
|
nickname: [{ required: true, message: '请输入昵称' }],
|
||||||
roleIds: [{ required: true, message: '请选择所属角色' }],
|
|
||||||
deptId: [{ required: true, message: '请选择所属部门' }],
|
deptId: [{ required: true, message: '请选择所属部门' }],
|
||||||
|
roleIds: [{ required: true, message: '请选择所属角色' }],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const { queryParams, form, rules } = toRefs(data);
|
const { queryParams, form, rules } = toRefs(data);
|
||||||
|
@ -52,14 +52,14 @@ public class MenuController extends BaseController<MenuService, MenuVO, MenuVO,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SaCheckPermission("system:menu:add")
|
@SaCheckPermission("system:menu:add")
|
||||||
protected R<Long> add(@Validated(BaseRequest.Add.class) @RequestBody MenuRequest request) {
|
public R<Long> add(@Validated(BaseRequest.Add.class) @RequestBody MenuRequest request) {
|
||||||
this.checkPath(request);
|
this.checkPath(request);
|
||||||
return super.add(request);
|
return super.add(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SaCheckPermission("system:menu:update")
|
@SaCheckPermission("system:menu:update")
|
||||||
protected R update(@Validated(BaseRequest.Update.class) @RequestBody MenuRequest request, @PathVariable Long id) {
|
public R update(@Validated(BaseRequest.Update.class) @RequestBody MenuRequest request, @PathVariable Long id) {
|
||||||
this.checkPath(request);
|
this.checkPath(request);
|
||||||
return super.update(request, id);
|
return super.update(request, id);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -4,45 +4,44 @@ server:
|
|||||||
port: 8000
|
port: 8000
|
||||||
|
|
||||||
--- ### 数据源配置
|
--- ### 数据源配置
|
||||||
spring:
|
spring.datasource:
|
||||||
datasource:
|
type: com.zaxxer.hikari.HikariDataSource
|
||||||
type: com.zaxxer.hikari.HikariDataSource
|
## 动态数据源配置(可配多主多从:m1、s1...、纯粹多库:mysql、oracle...、混合配置:m1、s1、oracle...)
|
||||||
## 动态数据源配置(可配多主多从:m1、s1...、纯粹多库:mysql、oracle...、混合配置:m1、s1、oracle...)
|
dynamic:
|
||||||
dynamic:
|
# 是否启用 P6Spy(SQL 性能分析组件,默认 false,该插件有性能损耗,不建议生产环境使用)
|
||||||
# 是否启用 P6Spy(SQL 性能分析组件,默认 false,该插件有性能损耗,不建议生产环境使用)
|
p6spy: true
|
||||||
p6spy: true
|
# 设置默认的数据源或者数据源组(默认 master)
|
||||||
# 设置默认的数据源或者数据源组(默认 master)
|
primary: master
|
||||||
primary: master
|
# 严格匹配数据源(true 未匹配到指定数据源时抛异常;false 使用默认数据源;默认 false)
|
||||||
# 严格匹配数据源(true 未匹配到指定数据源时抛异常;false 使用默认数据源;默认 false)
|
strict: false
|
||||||
strict: false
|
datasource:
|
||||||
datasource:
|
# 主库配置(可配多个,构成多主)
|
||||||
# 主库配置(可配多个,构成多主)
|
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:123456}
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
# 从库配置(可配多个,构成多从)
|
||||||
# 从库配置(可配多个,构成多从)
|
slave_1:
|
||||||
slave_1:
|
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:
|
||||||
username:
|
password:
|
||||||
password:
|
lazy: true
|
||||||
lazy: true
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
type: ${spring.datasource.type}
|
||||||
type: ${spring.datasource.type}
|
# Hikari 连接池配置(完整配置请参阅:https://github.com/brettwooldridge/HikariCP)
|
||||||
# Hikari 连接池配置(完整配置请参阅:https://github.com/brettwooldridge/HikariCP)
|
hikari:
|
||||||
hikari:
|
# 最大连接数量(默认 10,根据实际环境调整)
|
||||||
# 最大连接数量(默认 10,根据实际环境调整)
|
# 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒
|
||||||
# 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒
|
max-pool-size: 20
|
||||||
max-pool-size: 20
|
# 获取连接超时时间(默认 30000 毫秒,30 秒)
|
||||||
# 获取连接超时时间(默认 30000 毫秒,30 秒)
|
connection-timeout: 30000
|
||||||
connection-timeout: 30000
|
# 空闲连接最大存活时间(默认 600000 毫秒,10 分钟)
|
||||||
# 空闲连接最大存活时间(默认 600000 毫秒,10 分钟)
|
idle-timeout: 600000
|
||||||
idle-timeout: 600000
|
# 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用)
|
||||||
# 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用)
|
keepaliveTime: 30000
|
||||||
keepaliveTime: 30000
|
# 连接最大生存时间(默认 1800000 毫秒,30 分钟)
|
||||||
# 连接最大生存时间(默认 1800000 毫秒,30 分钟)
|
max-lifetime: 1800000
|
||||||
max-lifetime: 1800000
|
|
||||||
|
|
||||||
--- ### Liquibase 配置
|
--- ### Liquibase 配置
|
||||||
spring.liquibase:
|
spring.liquibase:
|
||||||
@ -68,21 +67,20 @@ spring:
|
|||||||
ssl: false
|
ssl: false
|
||||||
|
|
||||||
--- ### 邮件配置
|
--- ### 邮件配置
|
||||||
spring:
|
spring.mail:
|
||||||
mail:
|
# 根据需要更换
|
||||||
# 根据需要更换
|
host: smtp.126.com
|
||||||
host: smtp.126.com
|
port: 465
|
||||||
port: 465
|
username: 你的邮箱
|
||||||
username: 你的邮箱
|
password: 你的邮箱授权码
|
||||||
password: 你的邮箱授权码
|
default-encoding: utf-8
|
||||||
default-encoding: utf-8
|
properties:
|
||||||
properties:
|
mail:
|
||||||
mail:
|
smtp:
|
||||||
smtp:
|
auth: true
|
||||||
auth: true
|
socketFactory:
|
||||||
socketFactory:
|
class: javax.net.ssl.SSLSocketFactory
|
||||||
class: javax.net.ssl.SSLSocketFactory
|
port: 465
|
||||||
port: 465
|
|
||||||
|
|
||||||
--- ### 验证码配置
|
--- ### 验证码配置
|
||||||
captcha:
|
captcha:
|
||||||
@ -109,26 +107,24 @@ captcha:
|
|||||||
# 模板路径
|
# 模板路径
|
||||||
templatePath: mail/captcha.ftl
|
templatePath: mail/captcha.ftl
|
||||||
|
|
||||||
--- ### 安全配置
|
--- ### 安全配置-排除路径配置
|
||||||
security:
|
security.excludes:
|
||||||
# 排除路径配置
|
# 静态资源
|
||||||
excludes:
|
- /*.html
|
||||||
# 静态资源
|
- /**/*.html
|
||||||
- /*.html
|
- /**/*.css
|
||||||
- /**/*.html
|
- /**/*.js
|
||||||
- /**/*.css
|
- /webSocket/**
|
||||||
- /**/*.js
|
# 接口文档相关资源
|
||||||
- /webSocket/**
|
- /favicon.ico
|
||||||
# 接口文档相关资源
|
- /doc.html
|
||||||
- /favicon.ico
|
- /webjars/**
|
||||||
- /doc.html
|
- /swagger-ui/**
|
||||||
- /webjars/**
|
- /swagger-resources/**
|
||||||
- /swagger-ui/**
|
- /*/api-docs/**
|
||||||
- /swagger-resources/**
|
# 本地存储资源
|
||||||
- /*/api-docs/**
|
- /avatar/**
|
||||||
# 本地存储资源
|
- /file/**
|
||||||
- /avatar/**
|
|
||||||
- /file/**
|
|
||||||
|
|
||||||
--- ### 非对称加密配置(例如:密码加密传输,前端公钥加密,后端私钥解密;在线生成 RSA 密钥对:http://web.chacuo.net/netrsakeypair)
|
--- ### 非对称加密配置(例如:密码加密传输,前端公钥加密,后端私钥解密;在线生成 RSA 密钥对:http://web.chacuo.net/netrsakeypair)
|
||||||
rsa:
|
rsa:
|
||||||
@ -141,14 +137,13 @@ springdoc:
|
|||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
--- ### 文件上传配置
|
--- ### 文件上传配置
|
||||||
spring:
|
spring.servlet:
|
||||||
servlet:
|
multipart:
|
||||||
multipart:
|
enabled: true
|
||||||
enabled: true
|
# 单文件上传大小限制
|
||||||
# 单文件上传大小限制
|
max-file-size: 10MB
|
||||||
max-file-size: 10MB
|
# 单次总上传文件大小限制
|
||||||
# 单次总上传文件大小限制
|
max-request-size: 20MB
|
||||||
max-request-size: 20MB
|
|
||||||
|
|
||||||
--- ### 本地存储配置
|
--- ### 本地存储配置
|
||||||
local-storage:
|
local-storage:
|
||||||
|
@ -4,45 +4,44 @@ server:
|
|||||||
port: 18000
|
port: 18000
|
||||||
|
|
||||||
--- ### 数据源配置
|
--- ### 数据源配置
|
||||||
spring:
|
spring.datasource:
|
||||||
datasource:
|
type: com.zaxxer.hikari.HikariDataSource
|
||||||
type: com.zaxxer.hikari.HikariDataSource
|
## 动态数据源配置(可配多主多从:m1、s1...、纯粹多库:mysql、oracle...、混合配置:m1、s1、oracle...)
|
||||||
## 动态数据源配置(可配多主多从:m1、s1...、纯粹多库:mysql、oracle...、混合配置:m1、s1、oracle...)
|
dynamic:
|
||||||
dynamic:
|
# 是否启用 P6Spy(SQL 性能分析组件,默认 false,该插件有性能损耗,不建议生产环境使用)
|
||||||
# 是否启用 P6Spy(SQL 性能分析组件,默认 false,该插件有性能损耗,不建议生产环境使用)
|
p6spy: false
|
||||||
p6spy: false
|
# 设置默认的数据源或者数据源组(默认 master)
|
||||||
# 设置默认的数据源或者数据源组(默认 master)
|
primary: master
|
||||||
primary: master
|
# 严格匹配数据源(true 未匹配到指定数据源时抛异常;false 使用默认数据源;默认 false)
|
||||||
# 严格匹配数据源(true 未匹配到指定数据源时抛异常;false 使用默认数据源;默认 false)
|
strict: false
|
||||||
strict: false
|
datasource:
|
||||||
datasource:
|
# 主库配置(可配多个,构成多主)
|
||||||
# 主库配置(可配多个,构成多主)
|
master:
|
||||||
master:
|
url: jdbc:mysql://${DB_HOST:localhost}:${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:localhost}:${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:123456}
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
# 从库配置(可配多个,构成多从)
|
||||||
# 从库配置(可配多个,构成多从)
|
slave_1:
|
||||||
slave_1:
|
url: jdbc:mysql://${DB_HOST:localhost}:${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:localhost}:${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:
|
||||||
username:
|
password:
|
||||||
password:
|
lazy: true
|
||||||
lazy: true
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
type: ${spring.datasource.type}
|
||||||
type: ${spring.datasource.type}
|
# Hikari 连接池配置(完整配置请参阅:https://github.com/brettwooldridge/HikariCP)
|
||||||
# Hikari 连接池配置(完整配置请参阅:https://github.com/brettwooldridge/HikariCP)
|
hikari:
|
||||||
hikari:
|
# 最大连接数量(默认 10,根据实际环境调整)
|
||||||
# 最大连接数量(默认 10,根据实际环境调整)
|
# 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒
|
||||||
# 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒
|
max-pool-size: 20
|
||||||
max-pool-size: 20
|
# 获取连接超时时间(默认 30000 毫秒,30 秒)
|
||||||
# 获取连接超时时间(默认 30000 毫秒,30 秒)
|
connection-timeout: 30000
|
||||||
connection-timeout: 30000
|
# 空闲连接最大存活时间(默认 600000 毫秒,10 分钟)
|
||||||
# 空闲连接最大存活时间(默认 600000 毫秒,10 分钟)
|
idle-timeout: 600000
|
||||||
idle-timeout: 600000
|
# 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用)
|
||||||
# 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用)
|
keepaliveTime: 30000
|
||||||
keepaliveTime: 30000
|
# 连接最大生存时间(默认 1800000 毫秒,30 分钟)
|
||||||
# 连接最大生存时间(默认 1800000 毫秒,30 分钟)
|
max-lifetime: 1800000
|
||||||
max-lifetime: 1800000
|
|
||||||
|
|
||||||
--- ### Liquibase 配置
|
--- ### Liquibase 配置
|
||||||
spring.liquibase:
|
spring.liquibase:
|
||||||
@ -68,21 +67,20 @@ spring:
|
|||||||
ssl: false
|
ssl: false
|
||||||
|
|
||||||
--- ### 邮件配置
|
--- ### 邮件配置
|
||||||
spring:
|
spring.mail:
|
||||||
mail:
|
# 根据需要更换
|
||||||
# 根据需要更换
|
host: smtp.126.com
|
||||||
host: smtp.126.com
|
port: 465
|
||||||
port: 465
|
username: 你的邮箱
|
||||||
username: 你的邮箱
|
password: 你的邮箱授权码
|
||||||
password: 你的邮箱授权码
|
default-encoding: utf-8
|
||||||
default-encoding: utf-8
|
properties:
|
||||||
properties:
|
mail:
|
||||||
mail:
|
smtp:
|
||||||
smtp:
|
auth: true
|
||||||
auth: true
|
socketFactory:
|
||||||
socketFactory:
|
class: javax.net.ssl.SSLSocketFactory
|
||||||
class: javax.net.ssl.SSLSocketFactory
|
port: 465
|
||||||
port: 465
|
|
||||||
|
|
||||||
--- ### 验证码配置
|
--- ### 验证码配置
|
||||||
captcha:
|
captcha:
|
||||||
@ -109,19 +107,17 @@ captcha:
|
|||||||
# 模板路径
|
# 模板路径
|
||||||
templatePath: mail/captcha.ftl
|
templatePath: mail/captcha.ftl
|
||||||
|
|
||||||
--- ### 安全配置
|
--- ### 安全配置-排除路径配置
|
||||||
security:
|
security.excludes:
|
||||||
# 排除路径配置
|
# 静态资源
|
||||||
excludes:
|
- /*.html
|
||||||
# 静态资源
|
- /**/*.html
|
||||||
- /*.html
|
- /**/*.css
|
||||||
- /**/*.html
|
- /**/*.js
|
||||||
- /**/*.css
|
- /webSocket/**
|
||||||
- /**/*.js
|
# 本地存储资源
|
||||||
- /webSocket/**
|
- /avatar/**
|
||||||
# 本地存储资源
|
- /file/**
|
||||||
- /avatar/**
|
|
||||||
- /file/**
|
|
||||||
|
|
||||||
--- ### 非对称加密配置(例如:密码加密传输,前端公钥加密,后端私钥解密;在线生成 RSA 密钥对:http://web.chacuo.net/netrsakeypair)
|
--- ### 非对称加密配置(例如:密码加密传输,前端公钥加密,后端私钥解密;在线生成 RSA 密钥对:http://web.chacuo.net/netrsakeypair)
|
||||||
rsa:
|
rsa:
|
||||||
@ -134,14 +130,13 @@ springdoc:
|
|||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
--- ### 文件上传配置
|
--- ### 文件上传配置
|
||||||
spring:
|
spring.servlet:
|
||||||
servlet:
|
multipart:
|
||||||
multipart:
|
enabled: true
|
||||||
enabled: true
|
# 单文件上传大小限制
|
||||||
# 单文件上传大小限制
|
max-file-size: 10MB
|
||||||
max-file-size: 10MB
|
# 单次总上传文件大小限制
|
||||||
# 单次总上传文件大小限制
|
max-request-size: 20MB
|
||||||
max-request-size: 20MB
|
|
||||||
|
|
||||||
--- ### 本地存储配置
|
--- ### 本地存储配置
|
||||||
local-storage:
|
local-storage:
|
||||||
|
@ -188,6 +188,12 @@ spring:
|
|||||||
# 允许反序列化不存在的属性
|
# 允许反序列化不存在的属性
|
||||||
FAIL_ON_UNKNOWN_PROPERTIES: false
|
FAIL_ON_UNKNOWN_PROPERTIES: false
|
||||||
|
|
||||||
|
--- ### 健康检查配置
|
||||||
|
management.health:
|
||||||
|
mail:
|
||||||
|
# 关闭邮箱健康检查(邮箱配置错误或邮箱服务器不可用时,健康检查会报错)
|
||||||
|
enabled: false
|
||||||
|
|
||||||
--- ### 线程池配置
|
--- ### 线程池配置
|
||||||
thread-pool:
|
thread-pool:
|
||||||
# 是否启用线程池
|
# 是否启用线程池
|
||||||
|
Loading…
Reference in New Issue
Block a user