diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index eade344f..7cb652f9 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -43,7 +43,7 @@ services: command: server /data --console-address ":9090" ports: - 9000:9000 - - 9090:9090 + - 9001:9001 environment: - TZ=Asia/Shanghai - LANG=en_US.UTF-8 diff --git a/docker/mysql/conf/my.cnf b/docker/mysql/conf/my.cnf index b71a794b..73981f81 100644 --- a/docker/mysql/conf/my.cnf +++ b/docker/mysql/conf/my.cnf @@ -1,41 +1,20 @@ -# 服务端参数配置 + + [mysqld] -skip-name-resolve -user=mysql # MySQL启动用户 -default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎 -character-set-server=utf8mb4 # 设置mysql服务端默认字符集 -collation-server = utf8mb4_general_ci # 数据库字符集对应一些排序等规则,注意要和character-set-server对应 +# 字符集与排序规则 +character-set-server = utf8mb4 # 服务端默认字符集 +collation-server = utf8mb4_0900_ai_ci # 服务端默认排序规则 -pid-file = /var/lib/mysql/mysqld.pid # pid文件所在目录 -socket = /var/lib/mysql/mysqld.sock # 用于本地连接的socket套接字 -datadir = /var/lib/mysql # 数据文件存放的目录 -bind-address = 0.0.0.0 # 允许本机及外部网络连接 -expire_logs_days= 7 # 定义清除过期日志的时间(这里设置为7天) +# 网络与路径 +datadir = /var/lib/mysql # 数据文件存放的目录 +bind-address = 0.0.0.0 # 允许远程连接,默认 127.0.0.1 只允许本地连接 +port = 3306 # 显式指定端口(默认3306可不写) -# 设置client连接mysql时的字符集,防止乱码 -init_connect='SET NAMES utf8mb4' - -# 是否对sql语句大小写敏感,1表示不敏感 -lower_case_table_names = 1 - -# 执行sql的模式,规定了sql的安全等级, 暂时屏蔽,my.cnf文件中配置报错 -#sql_mode = STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION - -# 事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能) -transaction_isolation = READ-COMMITTED - -# TIMESTAMP如果没有显示声明NOT NULL,允许NULL值 -explicit_defaults_for_timestamp = true - -#它控制着mysqld进程能使用的最大文件描述(FD)符数量。 -#需要注意的是这个变量的值并不一定是你设定的值,mysqld会在系统允许的情况下尽量获取更多的FD数量 -open_files_limit = 65535 - -# 允许最大连接数 -max_connections=200 - -#最大错误连接数 -max_connect_errors = 600 +# 客户端字符集同步(避免乱码) +init_connect = 'SET NAMES utf8mb4' # 连接初始化时设置字符集 [client] -default-character-set=utf8mb4 # 设置mysql客户端默认字符集 \ No newline at end of file +default-character-set = utf8mb4 # 客户端默认字符集 + +[mysql] +default-character-set = utf8mb4 # MySQL 命令行工具字符集 diff --git a/sql/mysql/youlai_boot.sql b/sql/mysql/youlai_boot.sql index 0fd3a84c..4b3e5c30 100644 --- a/sql/mysql/youlai_boot.sql +++ b/sql/mysql/youlai_boot.sql @@ -6,7 +6,7 @@ -- ---------------------------- -- 1. 创建数据库 -- ---------------------------- -CREATE DATABASE IF NOT EXISTS youlai_boot DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; +CREATE DATABASE IF NOT EXISTS youlai_boot CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; -- ---------------------------- @@ -14,11 +14,8 @@ CREATE DATABASE IF NOT EXISTS youlai_boot DEFAULT CHARACTER SET utf8mb4 DEFAULT -- ---------------------------- use youlai_boot; -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - - -- 开启事务 -START TRANSACTION; +SET NAMES utf8mb4; # 设置字符集 +SET FOREIGN_KEY_CHECKS = 0; # 关闭外键检查,加快导入速度 -- ---------------------------- -- Table structure for sys_dept @@ -39,7 +36,7 @@ CREATE TABLE `sys_dept` ( `is_deleted` tinyint DEFAULT 0 COMMENT '逻辑删除标识(1-已删除 0-未删除)', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_code`(`code` ASC) USING BTREE COMMENT '部门编号唯一索引' -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '部门表'; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '部门表'; -- ---------------------------- -- Records of sys_dept @@ -65,7 +62,7 @@ CREATE TABLE `sys_dict` ( `is_deleted` tinyint DEFAULT '0' COMMENT '是否删除(1-删除,0-未删除)', PRIMARY KEY (`id`) USING BTREE, KEY `idx_dict_code` (`dict_code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='字典表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典表'; -- ---------------------------- -- Records of sys_dict -- ---------------------------- @@ -92,7 +89,7 @@ CREATE TABLE `sys_dict_data` ( `update_time` datetime COMMENT '更新时间', `update_by` bigint COMMENT '修改人ID', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='字典数据表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典数据表'; -- ---------------------------- -- Records of sys_dict_data @@ -132,9 +129,9 @@ CREATE TABLE `sys_menu` ( `redirect` varchar(128) COMMENT '跳转路径', `create_time` datetime NULL COMMENT '创建时间', `update_time` datetime NULL COMMENT '更新时间', - `params` json NULL COMMENT '路由参数', + `params` varchar(255) NULL COMMENT '路由参数', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '菜单管理'; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '菜单管理'; -- ---------------------------- -- Records of sys_menu @@ -233,7 +230,7 @@ CREATE TABLE `sys_role` ( PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_name`(`name` ASC) USING BTREE COMMENT '角色名称唯一索引', UNIQUE INDEX `uk_code`(`code` ASC) USING BTREE COMMENT '角色编码唯一索引' -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色表'; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '角色表'; -- ---------------------------- -- Records of sys_role @@ -259,7 +256,7 @@ CREATE TABLE `sys_role_menu` ( `role_id` bigint NOT NULL COMMENT '角色ID', `menu_id` bigint NOT NULL COMMENT '菜单ID', UNIQUE INDEX `uk_roleid_menuid`(`role_id` ASC, `menu_id` ASC) USING BTREE COMMENT '角色菜单唯一索引' -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色和菜单关联表'; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '角色和菜单关联表'; -- ---------------------------- -- Records of sys_role_menu @@ -370,7 +367,7 @@ CREATE TABLE `sys_user` ( `openid` char(28) COMMENT '微信 openid', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `login_name`(`username` ASC) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息表'; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '用户信息表'; -- ---------------------------- -- Records of sys_user @@ -387,7 +384,7 @@ CREATE TABLE `sys_user_role` ( `user_id` bigint NOT NULL COMMENT '用户ID', `role_id` bigint NOT NULL COMMENT '角色ID', PRIMARY KEY (`user_id`, `role_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户和角色关联表'; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '用户和角色关联表'; -- ---------------------------- -- Records of sys_user_role @@ -403,14 +400,14 @@ INSERT INTO `sys_user_role` VALUES (3, 3); DROP TABLE IF EXISTS `sys_log`; CREATE TABLE `sys_log` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `module` varchar(50) CHARACTER SET utf8mb4 NOT NULL COMMENT '日志模块', + `module` varchar(50) NOT NULL COMMENT '日志模块', `request_method` varchar(64) NOT NULL COMMENT '请求方式', `request_params` text COMMENT '请求参数(批量请求参数可能会超过text)', `response_content` mediumtext COMMENT '返回参数', - `content` varchar(255) CHARACTER SET utf8mb4 NOT NULL COMMENT '日志内容', + `content` varchar(255) NOT NULL COMMENT '日志内容', `request_uri` varchar(255) COMMENT '请求路径', - `method` varchar(255) CHARACTER SET utf8mb4 COMMENT '方法名', - `ip` varchar(45) CHARACTER SET utf8mb4 COMMENT 'IP地址', + `method` varchar(255) COMMENT '方法名', + `ip` varchar(45) COMMENT 'IP地址', `province` varchar(100) COMMENT '省份', `city` varchar(100) COMMENT '城市', `execution_time` bigint COMMENT '执行时间(ms)', @@ -422,7 +419,7 @@ CREATE TABLE `sys_log` ( `is_deleted` tinyint DEFAULT '0' COMMENT '逻辑删除标识(1-已删除 0-未删除)', PRIMARY KEY (`id`) USING BTREE, KEY `idx_create_time` (`create_time`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统日志表'; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COMMENT='系统日志表'; -- ---------------------------- -- Table structure for gen_config @@ -442,7 +439,7 @@ CREATE TABLE `gen_config` ( `is_deleted` bit(1) DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_tablename` (`table_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代码生成基础配置表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代码生成基础配置表'; -- ---------------------------- -- Table structure for gen_field_config @@ -470,7 +467,7 @@ CREATE TABLE `gen_field_config` ( `update_time` datetime COMMENT '更新时间', PRIMARY KEY (`id`), KEY `config_id` (`config_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代码生成字段配置表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代码生成字段配置表'; -- ---------------------------- -- 系统配置表 @@ -514,7 +511,7 @@ CREATE TABLE `sys_notice` ( `update_time` datetime COMMENT '更新时间', `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除(0: 未删除, 1: 已删除)', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通知公告表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知公告表'; INSERT INTO `sys_notice` VALUES (1, 'v2.12.0 新增系统日志,访问趋势统计功能。', '

1. 消息通知

2. 字典重构

3. 代码生成

', 1, 'L', 1, '2', 1, 1, now(), now(), 2, now(), 1, now(), 0); INSERT INTO `sys_notice` VALUES (2, 'v2.13.0 新增菜单搜索。', '

1. 消息通知

2. 字典重构

3. 代码生成

', 1, 'L', 1, '2', 1, 1, now(), now(), 2, now(), 1, now(), 0); @@ -541,7 +538,7 @@ CREATE TABLE `sys_user_notice` ( `update_time` datetime COMMENT '更新时间', `is_deleted` tinyint DEFAULT '0' COMMENT '逻辑删除(0: 未删除, 1: 已删除)', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户通知公告表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户通知公告表'; INSERT INTO `sys_user_notice` VALUES (1, 1, 2, 1, NULL, now(), now(), 0); INSERT INTO `sys_user_notice` VALUES (2, 2, 2, 1, NULL, now(), now(), 0); @@ -554,7 +551,4 @@ INSERT INTO `sys_user_notice` VALUES (8, 8, 2, 1, NULL, now(), now(), 0); INSERT INTO `sys_user_notice` VALUES (9, 9, 2, 1, NULL, now(), now(), 0); INSERT INTO `sys_user_notice` VALUES (10, 10, 2, 1, NULL, now(), now(), 0); -SET FOREIGN_KEY_CHECKS = 1; - - -- 提交事务 -COMMIT; +SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file diff --git a/src/main/java/com/youlai/boot/core/security/manager/JwtTokenManager.java b/src/main/java/com/youlai/boot/core/security/manager/JwtTokenManager.java index 6bb06473..4da6987b 100644 --- a/src/main/java/com/youlai/boot/core/security/manager/JwtTokenManager.java +++ b/src/main/java/com/youlai/boot/core/security/manager/JwtTokenManager.java @@ -188,7 +188,7 @@ public class JwtTokenManager implements TokenManager { * * @param authentication 认证信息 * @param ttl 过期时间 - * @return + * @return JWT Token */ private String generateToken(Authentication authentication, int ttl) { diff --git a/src/main/java/com/youlai/boot/system/controller/UserController.java b/src/main/java/com/youlai/boot/system/controller/UserController.java index 2e2b626a..0b5e39fa 100644 --- a/src/main/java/com/youlai/boot/system/controller/UserController.java +++ b/src/main/java/com/youlai/boot/system/controller/UserController.java @@ -1,6 +1,5 @@ package com.youlai.boot.system.controller; -import cn.hutool.json.JSONUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -64,7 +63,6 @@ public class UserController { @Valid UserPageQuery queryParams ) { IPage result = userService.getUserPage(queryParams); - return PageResult.success(result); } diff --git a/src/main/java/com/youlai/boot/system/mapper/UserMapper.java b/src/main/java/com/youlai/boot/system/mapper/UserMapper.java index c087d453..690e74ec 100644 --- a/src/main/java/com/youlai/boot/system/mapper/UserMapper.java +++ b/src/main/java/com/youlai/boot/system/mapper/UserMapper.java @@ -25,11 +25,11 @@ public interface UserMapper extends BaseMapper { /** * 获取用户分页列表 * - * @param page 分页参数 + * @param page 分页参数 * @param queryParams 查询参数 * @return 用户分页列表 */ - @DataPermission(deptAlias = "u") + @DataPermission(deptAlias = "u", userAlias = "u") Page getUserPage(Page page, UserPageQuery queryParams); /** @@ -70,7 +70,7 @@ public interface UserMapper extends BaseMapper { * @param queryParams 查询参数 * @return 导出用户列表 */ - @DataPermission(deptAlias = "u") + @DataPermission(deptAlias = "u", userAlias = "u") List listExportUsers(UserPageQuery queryParams); /** diff --git a/src/main/java/com/youlai/boot/system/model/form/PasswordResetForm.java b/src/main/java/com/youlai/boot/system/model/form/PasswordResetForm.java deleted file mode 100644 index a1acca63..00000000 --- a/src/main/java/com/youlai/boot/system/model/form/PasswordResetForm.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.youlai.boot.system.model.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * 重置密码表单 - * - * @author Ray - * @since 2024/8/13 - */ -@Schema(description = "重置密码表单") -@Data -public class PasswordResetForm { - - @Schema(description = "用户ID") - private Long userId; - - @Schema(description = "密码") - private String password; - - -} diff --git a/src/main/java/com/youlai/boot/system/service/impl/MenuServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/MenuServiceImpl.java index fc27d8da..cf71ebeb 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/MenuServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/MenuServiceImpl.java @@ -241,13 +241,13 @@ public class MenuServiceImpl extends ServiceImpl implements Me MenuTypeEnum menuType = menuForm.getType(); - if (menuType == MenuTypeEnum.CATALOG) { // 如果是外链 + if (menuType == MenuTypeEnum.CATALOG) { // 如果是目录 String path = menuForm.getRoutePath(); if (menuForm.getParentId() == 0 && !path.startsWith("/")) { menuForm.setRoutePath("/" + path); // 一级目录需以 / 开头 } menuForm.setComponent("Layout"); - } else if (menuType == MenuTypeEnum.EXTLINK) { // 如果是目录 + } else if (menuType == MenuTypeEnum.EXTLINK) { // 如果是外链 menuForm.setComponent(null); } diff --git a/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java index e986f0f0..a05f3051 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java @@ -50,11 +50,8 @@ import java.util.stream.Collectors; public class NoticeServiceImpl extends ServiceImpl implements NoticeService { private final NoticeConverter noticeConverter; - private final UserNoticeService userNoticeService; - private final UserService userService; - private final SimpMessagingTemplate messagingTemplate; private final OnlineUserService onlineUserService; @@ -266,10 +263,9 @@ public class NoticeServiceImpl extends ServiceImpl impleme } /** - * 阅读获取通知公告详情 * * @param id 通知公告ID - * @return + * @return NoticeDetailVO 通知公告详情 */ @Override public NoticeDetailVO getNoticeDetail(Long id) { diff --git a/src/main/resources/mapper/system/UserMapper.xml b/src/main/resources/mapper/system/UserMapper.xml index 0940c488..2ce46ee6 100644 --- a/src/main/resources/mapper/system/UserMapper.xml +++ b/src/main/resources/mapper/system/UserMapper.xml @@ -24,7 +24,9 @@ LEFT JOIN sys_user_role sur ON u.id = sur.user_id LEFT JOIN sys_role r ON sur.role_id = r.id - u.is_deleted = 0 AND u.username != 'root' + u.is_deleted = 0 + + AND r.name != '${@com.youlai.boot.common.constant.SystemConstants@ROOT_ROLE_CODE}' AND ( u.username LIKE CONCAT('%',#{queryParams.keywords},'%') @@ -118,9 +120,9 @@ - + - + @@ -191,7 +193,7 @@ sys_user u LEFT JOIN sys_dept d ON u.dept_id = d.id - u.is_deleted = 0 AND u.username != 'root' + u.is_deleted = 0 AND (u.username LIKE CONCAT('%',#{keywords},'%') OR u.nickname LIKE CONCAT('%',#{keywords},'%')