refactor: 重构系统参数相关接口

This commit is contained in:
2024-05-28 23:04:03 +08:00
parent a07aedbf35
commit 6d0060b21c
8 changed files with 78 additions and 50 deletions

View File

@@ -41,7 +41,7 @@ public class OptionQuery implements Serializable {
/** /**
* 键列表 * 键列表
*/ */
@Schema(description = "键列表", example = "site_title,site_copyright") @Schema(description = "键列表", example = "SITE_TITLE,SITE_COPYRIGHT")
@Query(type = QueryType.IN) @Query(type = QueryType.IN)
private List<String> code; private List<String> code;
@@ -49,6 +49,5 @@ public class OptionQuery implements Serializable {
* 类别 * 类别
*/ */
@Schema(description = "类别", example = "SITE") @Schema(description = "类别", example = "SITE")
@Query
private String category; private String category;
} }

View File

@@ -18,6 +18,7 @@ package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import top.continew.starter.extension.crud.model.req.BaseReq; import top.continew.starter.extension.crud.model.req.BaseReq;
@@ -37,6 +38,13 @@ public class OptionReq extends BaseReq {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* ID
*/
@Schema(description = "ID", example = "1")
@NotNull(message = "ID不能为空")
private Long id;
/** /**
* 键 * 键
*/ */

View File

@@ -17,7 +17,6 @@
package top.continew.admin.system.model.req; package top.continew.admin.system.model.req;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
@@ -40,7 +39,12 @@ public class OptionResetValueReq implements Serializable {
/** /**
* 键列表 * 键列表
*/ */
@Schema(description = "键列表", example = "site_title,site_copyright") @Schema(description = "键列表", example = "SITE_TITLE,SITE_COPYRIGHT")
@NotEmpty(message = "键不能为空")
private List<String> code; private List<String> code;
/**
* 类别
*/
@Schema(description = "类别", example = "SITE")
private String category;
} }

View File

@@ -37,6 +37,12 @@ public class OptionResp implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* ID
*/
@Schema(description = "ID", example = "1")
private Long id;
/** /**
* 名称 * 名称
*/ */

View File

@@ -17,8 +17,10 @@
package top.continew.admin.system.service.impl; package top.continew.admin.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import top.continew.admin.common.constant.CacheConstants; import top.continew.admin.common.constant.CacheConstants;
@@ -78,7 +80,16 @@ public class OptionServiceImpl implements OptionService {
@Override @Override
public void resetValue(OptionResetValueReq req) { public void resetValue(OptionResetValueReq req) {
RedisUtils.deleteByPattern(CacheConstants.OPTION_KEY_PREFIX + StringConstants.ASTERISK); RedisUtils.deleteByPattern(CacheConstants.OPTION_KEY_PREFIX + StringConstants.ASTERISK);
baseMapper.lambdaUpdate().set(OptionDO::getValue, null).in(OptionDO::getCode, req.getCode()).update(); String category = req.getCategory();
List<String> codeList = req.getCode();
ValidationUtils.throwIf(StrUtil.isBlank(category) && CollUtil.isEmpty(codeList), "键列表不能为空");
LambdaUpdateChainWrapper<OptionDO> chainWrapper = baseMapper.lambdaUpdate().set(OptionDO::getValue, null);
if (StrUtil.isNotBlank(category)) {
chainWrapper.eq(OptionDO::getCategory, category);
} else {
chainWrapper.in(OptionDO::getCode, req.getCode());
}
chainWrapper.update();
} }
@Override @Override

View File

@@ -112,7 +112,7 @@ public class CommonController {
@SaIgnore @SaIgnore
@Operation(summary = "查询参数字典", description = "查询参数字典") @Operation(summary = "查询参数字典", description = "查询参数字典")
@GetMapping("/dict/option") @GetMapping("/dict/option")
@Cached(key = "#query.code", name = CacheConstants.OPTION_KEY_PREFIX) @Cached(key = "#query.category", name = CacheConstants.OPTION_KEY_PREFIX)
public R<List<LabelValueResp<String>>> listOptionDict(@Validated OptionQuery query) { public R<List<LabelValueResp<String>>> listOptionDict(@Validated OptionQuery query) {
return R.ok(optionService.list(query) return R.ok(optionService.list(query)
.stream() .stream()

View File

@@ -3,7 +3,7 @@
-- changeset Charles7c:1 -- changeset Charles7c:1
-- comment 初始化表结构 -- comment 初始化表结构
CREATE TABLE IF NOT EXISTS `sys_menu` ( CREATE TABLE IF NOT EXISTS `sys_menu` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`title` varchar(30) NOT NULL COMMENT '标题', `title` varchar(30) NOT NULL COMMENT '标题',
`parent_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '上级菜单ID', `parent_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '上级菜单ID',
`type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型1目录2菜单3按钮', `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型1目录2菜单3按钮',
@@ -30,7 +30,7 @@ CREATE TABLE IF NOT EXISTS `sys_menu` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';
CREATE TABLE IF NOT EXISTS `sys_dept` ( CREATE TABLE IF NOT EXISTS `sys_dept` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(30) NOT NULL COMMENT '名称', `name` varchar(30) NOT NULL COMMENT '名称',
`parent_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '上级部门ID', `parent_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '上级部门ID',
`ancestors` varchar(512) NOT NULL DEFAULT '' COMMENT '祖级列表', `ancestors` varchar(512) NOT NULL DEFAULT '' COMMENT '祖级列表',
@@ -50,7 +50,7 @@ CREATE TABLE IF NOT EXISTS `sys_dept` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
CREATE TABLE IF NOT EXISTS `sys_role` ( CREATE TABLE IF NOT EXISTS `sys_role` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(30) NOT NULL COMMENT '名称', `name` varchar(30) NOT NULL COMMENT '名称',
`code` varchar(30) NOT NULL COMMENT '编码', `code` varchar(30) NOT NULL COMMENT '编码',
`data_scope` tinyint(1) NOT NULL DEFAULT 4 COMMENT '数据权限1全部数据权限2本部门及以下数据权限3本部门数据权限4仅本人数据权限5自定义数据权限', `data_scope` tinyint(1) NOT NULL DEFAULT 4 COMMENT '数据权限1全部数据权限2本部门及以下数据权限3本部门数据权限4仅本人数据权限5自定义数据权限',
@@ -69,7 +69,7 @@ CREATE TABLE IF NOT EXISTS `sys_role` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
CREATE TABLE IF NOT EXISTS `sys_user` ( CREATE TABLE IF NOT EXISTS `sys_user` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`username` varchar(64) NOT NULL COMMENT '用户名', `username` varchar(64) NOT NULL COMMENT '用户名',
`nickname` varchar(30) NOT NULL COMMENT '昵称', `nickname` varchar(30) NOT NULL COMMENT '昵称',
`password` varchar(255) DEFAULT NULL COMMENT '密码', `password` varchar(255) DEFAULT NULL COMMENT '密码',
@@ -96,10 +96,10 @@ CREATE TABLE IF NOT EXISTS `sys_user` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
CREATE TABLE IF NOT EXISTS `sys_user_password_history` ( CREATE TABLE IF NOT EXISTS `sys_user_password_history` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`user_id` bigint(20) NOT NULL COMMENT '用户ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID',
`password` varchar(255) NOT NULL COMMENT '密码', `password` varchar(255) NOT NULL COMMENT '密码',
`create_time` datetime NOT NULL COMMENT '创建时间', `create_time` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_user_id`(`user_id`) USING BTREE INDEX `idx_user_id`(`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户历史密码表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户历史密码表';
@@ -133,36 +133,36 @@ CREATE TABLE IF NOT EXISTS `sys_role_dept` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色和部门关联表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色和部门关联表';
CREATE TABLE IF NOT EXISTS `sys_option` ( CREATE TABLE IF NOT EXISTS `sys_option` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`category` varchar(50) DEFAULT NULL COMMENT '类别', `category` varchar(50) NOT NULL COMMENT '类别',
`name` varchar(50) NOT NULL COMMENT '名称', `name` varchar(50) NOT NULL COMMENT '名称',
`code` varchar(100) NOT NULL COMMENT '', `code` varchar(100) NOT NULL COMMENT '',
`value` text DEFAULT NULL COMMENT '', `value` text DEFAULT NULL COMMENT '',
`default_value` text DEFAULT NULL COMMENT '默认值', `default_value` text DEFAULT NULL COMMENT '默认值',
`description` varchar(200) DEFAULT NULL COMMENT '描述', `description` varchar(200) DEFAULT NULL COMMENT '描述',
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人', `update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
`update_time` datetime DEFAULT NULL COMMENT '修改时间', `update_time` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_category_code`(`category`, `code`) USING BTREE UNIQUE INDEX `uk_category_code`(`category`, `code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='参数表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='参数表';
CREATE TABLE IF NOT EXISTS `sys_dict` ( CREATE TABLE IF NOT EXISTS `sys_dict` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(30) NOT NULL COMMENT '名称', `name` varchar(30) NOT NULL COMMENT '名称',
`code` varchar(30) NOT NULL COMMENT '编码', `code` varchar(30) NOT NULL COMMENT '编码',
`description` varchar(200) DEFAULT NULL COMMENT '描述', `description` varchar(200) DEFAULT NULL COMMENT '描述',
`is_system` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否为系统内置数据', `is_system` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否为系统内置数据',
`create_user` bigint(20) NOT NULL COMMENT '创建人', `create_user` bigint(20) NOT NULL COMMENT '创建人',
`create_time` datetime NOT NULL COMMENT '创建时间', `create_time` datetime NOT NULL COMMENT '创建时间',
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人', `update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
`update_time` datetime DEFAULT NULL COMMENT '修改时间', `update_time` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_name`(`name`) USING BTREE, UNIQUE INDEX `uk_name`(`name`) USING BTREE,
UNIQUE INDEX `uk_code`(`code`) USING BTREE UNIQUE INDEX `uk_code`(`code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典表';
CREATE TABLE IF NOT EXISTS `sys_dict_item` ( CREATE TABLE IF NOT EXISTS `sys_dict_item` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`label` varchar(30) NOT NULL COMMENT '标签', `label` varchar(30) NOT NULL COMMENT '标签',
`value` varchar(30) NOT NULL COMMENT '', `value` varchar(30) NOT NULL COMMENT '',
`color` varchar(30) DEFAULT NULL COMMENT '标签颜色', `color` varchar(30) DEFAULT NULL COMMENT '标签颜色',
@@ -182,7 +182,7 @@ CREATE TABLE IF NOT EXISTS `sys_dict_item` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典项表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典项表';
CREATE TABLE IF NOT EXISTS `sys_log` ( CREATE TABLE IF NOT EXISTS `sys_log` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`trace_id` varchar(255) DEFAULT NULL COMMENT '链路ID', `trace_id` varchar(255) DEFAULT NULL COMMENT '链路ID',
`description` varchar(255) NOT NULL COMMENT '日志描述', `description` varchar(255) NOT NULL COMMENT '日志描述',
`module` varchar(50) NOT NULL COMMENT '所属模块', `module` varchar(50) NOT NULL COMMENT '所属模块',
@@ -209,7 +209,7 @@ CREATE TABLE IF NOT EXISTS `sys_log` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统日志表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统日志表';
CREATE TABLE IF NOT EXISTS `sys_message` ( CREATE TABLE IF NOT EXISTS `sys_message` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`title` varchar(50) NOT NULL COMMENT '标题', `title` varchar(50) NOT NULL COMMENT '标题',
`content` varchar(255) DEFAULT NULL COMMENT '内容', `content` varchar(255) DEFAULT NULL COMMENT '内容',
`type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型1系统消息', `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型1系统消息',
@@ -227,24 +227,24 @@ CREATE TABLE IF NOT EXISTS `sys_message_user` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息和用户关联表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息和用户关联表';
CREATE TABLE IF NOT EXISTS `sys_notice` ( CREATE TABLE IF NOT EXISTS `sys_notice` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`title` varchar(150) NOT NULL COMMENT '标题', `title` varchar(150) NOT NULL COMMENT '标题',
`content` mediumtext NOT NULL COMMENT '内容', `content` mediumtext NOT NULL COMMENT '内容',
`type` varchar(30) NOT NULL COMMENT '类型', `type` varchar(30) NOT NULL COMMENT '类型',
`effective_time` datetime DEFAULT NULL COMMENT '生效时间', `effective_time` datetime DEFAULT NULL COMMENT '生效时间',
`terminate_time` datetime DEFAULT NULL COMMENT '终止时间', `terminate_time` datetime DEFAULT NULL COMMENT '终止时间',
`sort` int NOT NULL DEFAULT 999 COMMENT '排序', `sort` int NOT NULL DEFAULT 999 COMMENT '排序',
`create_user` bigint(20) NOT NULL COMMENT '创建人', `create_user` bigint(20) NOT NULL COMMENT '创建人',
`create_time` datetime NOT NULL COMMENT '创建时间', `create_time` datetime NOT NULL COMMENT '创建时间',
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人', `update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
`update_time` datetime DEFAULT NULL COMMENT '修改时间', `update_time` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_create_user`(`create_user`) USING BTREE, INDEX `idx_create_user`(`create_user`) USING BTREE,
INDEX `idx_update_user`(`update_user`) USING BTREE INDEX `idx_update_user`(`update_user`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公告表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公告表';
CREATE TABLE IF NOT EXISTS `sys_storage` ( CREATE TABLE IF NOT EXISTS `sys_storage` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(100) NOT NULL COMMENT '名称', `name` varchar(100) NOT NULL COMMENT '名称',
`code` varchar(30) NOT NULL COMMENT '编码', `code` varchar(30) NOT NULL COMMENT '编码',
`type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型1兼容S3协议存储2本地存储', `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '类型1兼容S3协议存储2本地存储',
@@ -268,7 +268,7 @@ CREATE TABLE IF NOT EXISTS `sys_storage` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储表';
CREATE TABLE IF NOT EXISTS `sys_file` ( CREATE TABLE IF NOT EXISTS `sys_file` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(255) NOT NULL COMMENT '名称', `name` varchar(255) NOT NULL COMMENT '名称',
`size` bigint(20) NOT NULL COMMENT '大小(字节)', `size` bigint(20) NOT NULL COMMENT '大小(字节)',
`url` varchar(512) NOT NULL COMMENT 'URL', `url` varchar(512) NOT NULL COMMENT 'URL',

View File

@@ -218,7 +218,7 @@ COMMENT ON TABLE "sys_role_dept" IS '角色和部门关联表';
CREATE TABLE IF NOT EXISTS "sys_option" ( CREATE TABLE IF NOT EXISTS "sys_option" (
"id" int8 NOT NULL, "id" int8 NOT NULL,
"category" varchar(50) DEFAULT NULL, "category" varchar(50) NOT NULL,
"name" varchar(50) NOT NULL, "name" varchar(50) NOT NULL,
"code" varchar(100) NOT NULL, "code" varchar(100) NOT NULL,
"value" text DEFAULT NULL, "value" text DEFAULT NULL,