From 331491dd5dce598fe52eec9423f3f3a51abc787a Mon Sep 17 00:00:00 2001 From: Charles7c Date: Fri, 31 Mar 2023 21:13:30 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=84=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8F=82=E6=95=B0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../charles7c/cnadmin/system/model/request/UserRequest.java | 3 +++ continew-admin-ui/src/views/system/user/index.vue | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java index 0589b823..47f77916 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/request/UserRequest.java @@ -19,6 +19,7 @@ package top.charles7c.cnadmin.system.model.request; import java.util.List; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; @@ -86,12 +87,14 @@ public class UserRequest extends BaseRequest { * 所属部门 */ @Schema(description = "所属部门") + @NotNull(message = "所属部门不能为空") private Long deptId; /** * 所属角色 */ @Schema(description = "所属角色") + @NotEmpty(message = "所属角色不能为空") private List roleIds; /** diff --git a/continew-admin-ui/src/views/system/user/index.vue b/continew-admin-ui/src/views/system/user/index.vue index f40a768e..6740bca2 100644 --- a/continew-admin-ui/src/views/system/user/index.vue +++ b/continew-admin-ui/src/views/system/user/index.vue @@ -554,8 +554,8 @@ rules: { username: [{ required: true, message: '请输入用户名' }], nickname: [{ required: true, message: '请输入昵称' }], - roleIds: [{ required: true, message: '请选择所属角色' }], deptId: [{ required: true, message: '请选择所属部门' }], + roleIds: [{ required: true, message: '请选择所属角色' }], }, }); const { queryParams, form, rules } = toRefs(data); From 9f25925d4694e709a33f995c395d1a12c4af15cf Mon Sep 17 00:00:00 2001 From: Charles7c Date: Fri, 31 Mar 2023 21:17:55 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E8=B0=83=E6=95=B4=20BaseController?= =?UTF-8?q?=20API=20=E6=96=B9=E6=B3=95=E7=9A=84=E8=AE=BF=E9=97=AE=E6=9D=83?= =?UTF-8?q?=E9=99=90=E4=BF=AE=E9=A5=B0=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cnadmin/common/base/BaseController.java | 16 ++++++++-------- .../webapi/controller/system/MenuController.java | 4 ++-- .../webapi/controller/system/UserController.java | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java index 7fdb41d6..08de753c 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java @@ -75,7 +75,7 @@ public abstract class BaseController, V, D, Q, @Operation(summary = "分页查询列表") @ResponseBody @GetMapping - protected R> page(@Validated Q query, @Validated PageQuery pageQuery) { + public R> page(@Validated Q query, @Validated PageQuery pageQuery) { this.checkPermission("list"); PageDataVO pageDataVO = baseService.page(query, pageQuery); return R.ok(pageDataVO); @@ -93,7 +93,7 @@ public abstract class BaseController, V, D, Q, @Operation(summary = "查询树列表") @ResponseBody @GetMapping("/tree") - protected R>> tree(@Validated Q query, @Validated SortQuery sortQuery) { + public R>> tree(@Validated Q query, @Validated SortQuery sortQuery) { this.checkPermission("list"); List> list = baseService.tree(query, sortQuery, false); return R.ok(list); @@ -111,7 +111,7 @@ public abstract class BaseController, V, D, Q, @Operation(summary = "查询列表") @ResponseBody @GetMapping("/list") - protected R> list(@Validated Q query, @Validated SortQuery sortQuery) { + public R> list(@Validated Q query, @Validated SortQuery sortQuery) { this.checkPermission("list"); List list = baseService.list(query, sortQuery); return R.ok(list); @@ -128,7 +128,7 @@ public abstract class BaseController, V, D, Q, @Parameter(name = "id", description = "ID", in = ParameterIn.PATH) @ResponseBody @GetMapping("/{id}") - protected R get(@PathVariable Long id) { + public R get(@PathVariable Long id) { this.checkPermission("list"); D detail = baseService.get(id); return R.ok(detail); @@ -144,7 +144,7 @@ public abstract class BaseController, V, D, Q, @Operation(summary = "新增数据") @ResponseBody @PostMapping - protected R add(@Validated(BaseRequest.Add.class) @RequestBody C request) { + public R add(@Validated(BaseRequest.Add.class) @RequestBody C request) { this.checkPermission("add"); Long id = baseService.add(request); return R.ok("新增成功", id); @@ -162,7 +162,7 @@ public abstract class BaseController, V, D, Q, @Operation(summary = "修改数据") @ResponseBody @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"); baseService.update(request, id); return R.ok("修改成功"); @@ -179,7 +179,7 @@ public abstract class BaseController, V, D, Q, @Parameter(name = "ids", description = "ID 列表", in = ParameterIn.PATH) @ResponseBody @DeleteMapping("/{ids}") - protected R delete(@PathVariable List ids) { + public R delete(@PathVariable List ids) { this.checkPermission("delete"); baseService.delete(ids); return R.ok("删除成功"); @@ -197,7 +197,7 @@ public abstract class BaseController, V, D, Q, */ @Operation(summary = "导出数据") @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"); baseService.export(query, sortQuery, response); } diff --git a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/MenuController.java b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/MenuController.java index 8a840c5a..d93fe16b 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/MenuController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/MenuController.java @@ -52,14 +52,14 @@ public class MenuController extends BaseController add(@Validated(BaseRequest.Add.class) @RequestBody MenuRequest request) { + public R add(@Validated(BaseRequest.Add.class) @RequestBody MenuRequest request) { this.checkPath(request); return super.add(request); } @Override @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); return super.update(request, id); } diff --git a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserController.java b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserController.java index 66a27fb9..69147174 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/system/UserController.java @@ -53,7 +53,7 @@ public class UserController extends BaseController add(@Validated(BaseRequest.Add.class) @RequestBody UserRequest request) { + public R add(@Validated(BaseRequest.Add.class) @RequestBody UserRequest request) { Long id = baseService.add(request); return R.ok(String.format("新增成功,请牢记默认密码:%s", SysConsts.DEFAULT_PASSWORD), id); } From a623acd4a5529ae42898ec359f595716acc5bab8 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Fri, 31 Mar 2023 21:31:07 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=B3=A8=E8=A7=A3=E8=A7=A3=E6=9E=90=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cnadmin/common/util/helper/QueryHelper.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java index 5c5371d1..70871873 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java @@ -142,7 +142,8 @@ public class QueryHelper { String property = queryAnnotation.property(); fieldName = StrUtil.blankToDefault(property, fieldName); String columnName = StrUtil.toUnderlineCase(fieldName); - switch (queryAnnotation.type()) { + Query.Type queryType = queryAnnotation.type(); + switch (queryType) { case EQUAL: queryWrapper.eq(columnName, fieldValue); break; @@ -163,7 +164,9 @@ public class QueryHelper { break; case BETWEEN: List between = new ArrayList<>((List)fieldValue); - queryWrapper.between(columnName, between.get(0), between.get(1)); + if (between.size() >= 2) { + queryWrapper.between(columnName, between.get(0), between.get(1)); + } break; case LEFT_LIKE: queryWrapper.likeLeft(columnName, fieldValue); @@ -191,7 +194,7 @@ public class QueryHelper { queryWrapper.isNotNull(columnName); break; default: - break; + throw new IllegalArgumentException(String.format("暂不支持 [%s] 查询类型", queryType)); } } } From 5968f402ed478244d36f5825373190ed00d8c1f1 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Fri, 31 Mar 2023 21:50:41 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=82=AE=E7=AE=B1?= =?UTF-8?q?=E5=81=A5=E5=BA=B7=E6=A3=80=E6=9F=A5=E6=8A=A5=E9=94=99=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=B9=B6=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关于邮箱健康检查的问题,作者一直忽略了这部分,倒不是诚心如此,而是作者没遇到过这个检查报错。原因是作者虽然没在本地单独调整配置文件,但作者在 IDEA 中给启动程序配置了 Program arguments:--spring.mail.username=xxx --spring.mail.password=xxx,所以实际配置也没问题,但各位小伙伴拉下代码后没注意到邮箱配置的话,那可就没那么友好了。所以作为一个非核心服务,干脆关闭邮箱的健康检查,如果哪个小伙伴真的有需要自行再打开就可以。 --- .../src/main/resources/application-dev.yml | 159 +++++++++--------- .../src/main/resources/application-prod.yml | 145 ++++++++-------- .../src/main/resources/application.yml | 6 + 3 files changed, 153 insertions(+), 157 deletions(-) diff --git a/continew-admin-webapi/src/main/resources/application-dev.yml b/continew-admin-webapi/src/main/resources/application-dev.yml index f6b5d3fb..becb7dd1 100644 --- a/continew-admin-webapi/src/main/resources/application-dev.yml +++ b/continew-admin-webapi/src/main/resources/application-dev.yml @@ -4,45 +4,44 @@ server: port: 8000 --- ### 数据源配置 -spring: - datasource: - type: com.zaxxer.hikari.HikariDataSource - ## 动态数据源配置(可配多主多从:m1、s1...、纯粹多库:mysql、oracle...、混合配置:m1、s1、oracle...) - dynamic: - # 是否启用 P6Spy(SQL 性能分析组件,默认 false,该插件有性能损耗,不建议生产环境使用) - p6spy: true - # 设置默认的数据源或者数据源组(默认 master) - primary: master - # 严格匹配数据源(true 未匹配到指定数据源时抛异常;false 使用默认数据源;默认 false) - strict: false - datasource: - # 主库配置(可配多个,构成多主) - 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 - username: ${DB_USER:root} - password: ${DB_PWD:123456} - driver-class-name: com.mysql.cj.jdbc.Driver - # 从库配置(可配多个,构成多从) - 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 - username: - password: - lazy: true - driver-class-name: com.mysql.cj.jdbc.Driver - type: ${spring.datasource.type} - # Hikari 连接池配置(完整配置请参阅:https://github.com/brettwooldridge/HikariCP) - hikari: - # 最大连接数量(默认 10,根据实际环境调整) - # 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒 - max-pool-size: 20 - # 获取连接超时时间(默认 30000 毫秒,30 秒) - connection-timeout: 30000 - # 空闲连接最大存活时间(默认 600000 毫秒,10 分钟) - idle-timeout: 600000 - # 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用) - keepaliveTime: 30000 - # 连接最大生存时间(默认 1800000 毫秒,30 分钟) - max-lifetime: 1800000 +spring.datasource: + type: com.zaxxer.hikari.HikariDataSource + ## 动态数据源配置(可配多主多从:m1、s1...、纯粹多库:mysql、oracle...、混合配置:m1、s1、oracle...) + dynamic: + # 是否启用 P6Spy(SQL 性能分析组件,默认 false,该插件有性能损耗,不建议生产环境使用) + p6spy: true + # 设置默认的数据源或者数据源组(默认 master) + primary: master + # 严格匹配数据源(true 未匹配到指定数据源时抛异常;false 使用默认数据源;默认 false) + strict: false + datasource: + # 主库配置(可配多个,构成多主) + 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 + username: ${DB_USER:root} + password: ${DB_PWD:123456} + driver-class-name: com.mysql.cj.jdbc.Driver + # 从库配置(可配多个,构成多从) + 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 + username: + password: + lazy: true + driver-class-name: com.mysql.cj.jdbc.Driver + type: ${spring.datasource.type} + # Hikari 连接池配置(完整配置请参阅:https://github.com/brettwooldridge/HikariCP) + hikari: + # 最大连接数量(默认 10,根据实际环境调整) + # 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒 + max-pool-size: 20 + # 获取连接超时时间(默认 30000 毫秒,30 秒) + connection-timeout: 30000 + # 空闲连接最大存活时间(默认 600000 毫秒,10 分钟) + idle-timeout: 600000 + # 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用) + keepaliveTime: 30000 + # 连接最大生存时间(默认 1800000 毫秒,30 分钟) + max-lifetime: 1800000 --- ### Liquibase 配置 spring.liquibase: @@ -68,21 +67,20 @@ spring: ssl: false --- ### 邮件配置 -spring: - mail: - # 根据需要更换 - host: smtp.126.com - port: 465 - username: 你的邮箱 - password: 你的邮箱授权码 - default-encoding: utf-8 - properties: - mail: - smtp: - auth: true - socketFactory: - class: javax.net.ssl.SSLSocketFactory - port: 465 +spring.mail: + # 根据需要更换 + host: smtp.126.com + port: 465 + username: 你的邮箱 + password: 你的邮箱授权码 + default-encoding: utf-8 + properties: + mail: + smtp: + auth: true + socketFactory: + class: javax.net.ssl.SSLSocketFactory + port: 465 --- ### 验证码配置 captcha: @@ -109,26 +107,24 @@ captcha: # 模板路径 templatePath: mail/captcha.ftl ---- ### 安全配置 -security: - # 排除路径配置 - excludes: - # 静态资源 - - /*.html - - /**/*.html - - /**/*.css - - /**/*.js - - /webSocket/** - # 接口文档相关资源 - - /favicon.ico - - /doc.html - - /webjars/** - - /swagger-ui/** - - /swagger-resources/** - - /*/api-docs/** - # 本地存储资源 - - /avatar/** - - /file/** +--- ### 安全配置-排除路径配置 +security.excludes: + # 静态资源 + - /*.html + - /**/*.html + - /**/*.css + - /**/*.js + - /webSocket/** + # 接口文档相关资源 + - /favicon.ico + - /doc.html + - /webjars/** + - /swagger-ui/** + - /swagger-resources/** + - /*/api-docs/** + # 本地存储资源 + - /avatar/** + - /file/** --- ### 非对称加密配置(例如:密码加密传输,前端公钥加密,后端私钥解密;在线生成 RSA 密钥对:http://web.chacuo.net/netrsakeypair) rsa: @@ -141,14 +137,13 @@ springdoc: enabled: true --- ### 文件上传配置 -spring: - servlet: - multipart: - enabled: true - # 单文件上传大小限制 - max-file-size: 10MB - # 单次总上传文件大小限制 - max-request-size: 20MB +spring.servlet: + multipart: + enabled: true + # 单文件上传大小限制 + max-file-size: 10MB + # 单次总上传文件大小限制 + max-request-size: 20MB --- ### 本地存储配置 local-storage: diff --git a/continew-admin-webapi/src/main/resources/application-prod.yml b/continew-admin-webapi/src/main/resources/application-prod.yml index fb81290d..55ffc391 100644 --- a/continew-admin-webapi/src/main/resources/application-prod.yml +++ b/continew-admin-webapi/src/main/resources/application-prod.yml @@ -4,45 +4,44 @@ server: port: 18000 --- ### 数据源配置 -spring: - datasource: - type: com.zaxxer.hikari.HikariDataSource - ## 动态数据源配置(可配多主多从:m1、s1...、纯粹多库:mysql、oracle...、混合配置:m1、s1、oracle...) - dynamic: - # 是否启用 P6Spy(SQL 性能分析组件,默认 false,该插件有性能损耗,不建议生产环境使用) - p6spy: false - # 设置默认的数据源或者数据源组(默认 master) - primary: master - # 严格匹配数据源(true 未匹配到指定数据源时抛异常;false 使用默认数据源;默认 false) - strict: false - datasource: - # 主库配置(可配多个,构成多主) - 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 - username: ${DB_USER:root} - password: ${DB_PWD:123456} - driver-class-name: com.mysql.cj.jdbc.Driver - # 从库配置(可配多个,构成多从) - 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 - username: - password: - lazy: true - driver-class-name: com.mysql.cj.jdbc.Driver - type: ${spring.datasource.type} - # Hikari 连接池配置(完整配置请参阅:https://github.com/brettwooldridge/HikariCP) - hikari: - # 最大连接数量(默认 10,根据实际环境调整) - # 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒 - max-pool-size: 20 - # 获取连接超时时间(默认 30000 毫秒,30 秒) - connection-timeout: 30000 - # 空闲连接最大存活时间(默认 600000 毫秒,10 分钟) - idle-timeout: 600000 - # 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用) - keepaliveTime: 30000 - # 连接最大生存时间(默认 1800000 毫秒,30 分钟) - max-lifetime: 1800000 +spring.datasource: + type: com.zaxxer.hikari.HikariDataSource + ## 动态数据源配置(可配多主多从:m1、s1...、纯粹多库:mysql、oracle...、混合配置:m1、s1、oracle...) + dynamic: + # 是否启用 P6Spy(SQL 性能分析组件,默认 false,该插件有性能损耗,不建议生产环境使用) + p6spy: false + # 设置默认的数据源或者数据源组(默认 master) + primary: master + # 严格匹配数据源(true 未匹配到指定数据源时抛异常;false 使用默认数据源;默认 false) + strict: false + datasource: + # 主库配置(可配多个,构成多主) + 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 + username: ${DB_USER:root} + password: ${DB_PWD:123456} + driver-class-name: com.mysql.cj.jdbc.Driver + # 从库配置(可配多个,构成多从) + 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 + username: + password: + lazy: true + driver-class-name: com.mysql.cj.jdbc.Driver + type: ${spring.datasource.type} + # Hikari 连接池配置(完整配置请参阅:https://github.com/brettwooldridge/HikariCP) + hikari: + # 最大连接数量(默认 10,根据实际环境调整) + # 注意:当连接达到上限,并且没有空闲连接可用时,获取连接将在超时前阻塞最多 connectionTimeout 毫秒 + max-pool-size: 20 + # 获取连接超时时间(默认 30000 毫秒,30 秒) + connection-timeout: 30000 + # 空闲连接最大存活时间(默认 600000 毫秒,10 分钟) + idle-timeout: 600000 + # 保持连接活动的频率,以防止它被数据库或网络基础设施超时。该值必须小于 maxLifetime(默认 0,禁用) + keepaliveTime: 30000 + # 连接最大生存时间(默认 1800000 毫秒,30 分钟) + max-lifetime: 1800000 --- ### Liquibase 配置 spring.liquibase: @@ -68,21 +67,20 @@ spring: ssl: false --- ### 邮件配置 -spring: - mail: - # 根据需要更换 - host: smtp.126.com - port: 465 - username: 你的邮箱 - password: 你的邮箱授权码 - default-encoding: utf-8 - properties: - mail: - smtp: - auth: true - socketFactory: - class: javax.net.ssl.SSLSocketFactory - port: 465 +spring.mail: + # 根据需要更换 + host: smtp.126.com + port: 465 + username: 你的邮箱 + password: 你的邮箱授权码 + default-encoding: utf-8 + properties: + mail: + smtp: + auth: true + socketFactory: + class: javax.net.ssl.SSLSocketFactory + port: 465 --- ### 验证码配置 captcha: @@ -109,19 +107,17 @@ captcha: # 模板路径 templatePath: mail/captcha.ftl ---- ### 安全配置 -security: - # 排除路径配置 - excludes: - # 静态资源 - - /*.html - - /**/*.html - - /**/*.css - - /**/*.js - - /webSocket/** - # 本地存储资源 - - /avatar/** - - /file/** +--- ### 安全配置-排除路径配置 +security.excludes: + # 静态资源 + - /*.html + - /**/*.html + - /**/*.css + - /**/*.js + - /webSocket/** + # 本地存储资源 + - /avatar/** + - /file/** --- ### 非对称加密配置(例如:密码加密传输,前端公钥加密,后端私钥解密;在线生成 RSA 密钥对:http://web.chacuo.net/netrsakeypair) rsa: @@ -134,14 +130,13 @@ springdoc: enabled: false --- ### 文件上传配置 -spring: - servlet: - multipart: - enabled: true - # 单文件上传大小限制 - max-file-size: 10MB - # 单次总上传文件大小限制 - max-request-size: 20MB +spring.servlet: + multipart: + enabled: true + # 单文件上传大小限制 + max-file-size: 10MB + # 单次总上传文件大小限制 + max-request-size: 20MB --- ### 本地存储配置 local-storage: diff --git a/continew-admin-webapi/src/main/resources/application.yml b/continew-admin-webapi/src/main/resources/application.yml index cba67d46..761b3d01 100644 --- a/continew-admin-webapi/src/main/resources/application.yml +++ b/continew-admin-webapi/src/main/resources/application.yml @@ -187,6 +187,12 @@ spring: # 允许反序列化不存在的属性 FAIL_ON_UNKNOWN_PROPERTIES: false +--- ### 健康检查配置 +management.health: + mail: + # 关闭邮箱健康检查(邮箱配置错误或邮箱服务器不可用时,健康检查会报错) + enabled: false + --- ### 线程池配置 thread-pool: # 是否启用线程池