Merge branch '1.0.x' into dev

This commit is contained in:
Charles7c 2023-03-31 21:53:09 +08:00
commit e964c4cc4b
9 changed files with 174 additions and 172 deletions

View File

@ -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);
} }

View File

@ -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);
if (between.size() >= 2) {
queryWrapper.between(columnName, between.get(0), between.get(1)); 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));
} }
} }
} }

View File

@ -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;
/** /**

View File

@ -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);

View File

@ -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);
} }

View File

@ -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);
} }

View File

@ -4,8 +4,7 @@ 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:
@ -68,8 +67,7 @@ spring:
ssl: false ssl: false
--- ### 邮件配置 --- ### 邮件配置
spring: spring.mail:
mail:
# 根据需要更换 # 根据需要更换
host: smtp.126.com host: smtp.126.com
port: 465 port: 465
@ -109,10 +107,8 @@ captcha:
# 模板路径 # 模板路径
templatePath: mail/captcha.ftl templatePath: mail/captcha.ftl
--- ### 安全配置 --- ### 安全配置-排除路径配置
security: security.excludes:
# 排除路径配置
excludes:
# 静态资源 # 静态资源
- /*.html - /*.html
- /**/*.html - /**/*.html
@ -141,8 +137,7 @@ springdoc:
enabled: true enabled: true
--- ### 文件上传配置 --- ### 文件上传配置
spring: spring.servlet:
servlet:
multipart: multipart:
enabled: true enabled: true
# 单文件上传大小限制 # 单文件上传大小限制

View File

@ -4,8 +4,7 @@ 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:
@ -68,8 +67,7 @@ spring:
ssl: false ssl: false
--- ### 邮件配置 --- ### 邮件配置
spring: spring.mail:
mail:
# 根据需要更换 # 根据需要更换
host: smtp.126.com host: smtp.126.com
port: 465 port: 465
@ -109,10 +107,8 @@ captcha:
# 模板路径 # 模板路径
templatePath: mail/captcha.ftl templatePath: mail/captcha.ftl
--- ### 安全配置 --- ### 安全配置-排除路径配置
security: security.excludes:
# 排除路径配置
excludes:
# 静态资源 # 静态资源
- /*.html - /*.html
- /**/*.html - /**/*.html
@ -134,8 +130,7 @@ springdoc:
enabled: false enabled: false
--- ### 文件上传配置 --- ### 文件上传配置
spring: spring.servlet:
servlet:
multipart: multipart:
enabled: true enabled: true
# 单文件上传大小限制 # 单文件上传大小限制

View File

@ -188,6 +188,12 @@ spring:
# 允许反序列化不存在的属性 # 允许反序列化不存在的属性
FAIL_ON_UNKNOWN_PROPERTIES: false FAIL_ON_UNKNOWN_PROPERTIES: false
--- ### 健康检查配置
management.health:
mail:
# 关闭邮箱健康检查(邮箱配置错误或邮箱服务器不可用时,健康检查会报错)
enabled: false
--- ### 线程池配置 --- ### 线程池配置
thread-pool: thread-pool:
# 是否启用线程池 # 是否启用线程池