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 88527826..55ebfc8f 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)); } } } 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 89393ee5..6f71f6be 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 jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import jakarta.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); diff --git a/continew-admin-webapi/src/main/resources/application-dev.yml b/continew-admin-webapi/src/main/resources/application-dev.yml index f9149c8e..79467ca3 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: @@ -69,21 +68,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: @@ -110,26 +108,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: @@ -142,14 +138,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 ca0a8268..e7a941a0 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: @@ -69,21 +68,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: @@ -110,19 +108,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: @@ -135,14 +131,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 22f860b6..c479a2c2 100644 --- a/continew-admin-webapi/src/main/resources/application.yml +++ b/continew-admin-webapi/src/main/resources/application.yml @@ -189,11 +189,10 @@ spring: FAIL_ON_UNKNOWN_PROPERTIES: false --- ### 健康检查配置 -management: - health: - mail: - # 关闭邮箱健康检查(邮箱配置错误或邮箱服务器不可用时,健康检查会报错) - enabled: false +management.health: + mail: + # 关闭邮箱健康检查(邮箱配置错误或邮箱服务器不可用时,健康检查会报错) + enabled: false --- ### 线程池配置 thread-pool: @@ -202,4 +201,4 @@ thread-pool: # 队列容量 queueCapacity: 128 # 活跃时间 - keepAliveSeconds: 300 \ No newline at end of file + keepAliveSeconds: 300