diff --git a/README.md b/README.md index f1092476..20b46675 100644 --- a/README.md +++ b/README.md @@ -1,143 +1,117 @@ -# 项目简述 -项目基于 SpringBoot3、SpringSecurity6 、 JWT 、 Redis 、 Mybatis-Plus 、 Knife4j 等技术栈搭建的前后端分离开源权限管理系统。 +

+ 有来技术 + 有来技术 + + 有来技术 + + + 有来技术 + +
+ 有来技术 + + 有来技术 + +

+ +

+ 👀 在线预览 | + 📖 官方博客 | + 🦄 Gitee | + 🚢 Github +

+ +## 📢 项目简介 + +**在线预览**: [https://vue3.youlai.tech](https://vue3.youlai.tech) + +基于 JDK 17、Spring Boot 3、Spring Security 6、JWT、Redis、Mybatis-Plus、Knife4j、Vue 3、Element-Plus 构建的前后端分离单体权限管理系统。 + +- **🚀 开发框架**: 使用 Spring Boot 3.0 和 Vue 3,以及 Element-Plus 等主流技术栈,实时更新。 + +- **🔐 安全认证**: 结合 Spring Security 和 JWT 提供安全、无状态、分布式友好的身份验证和授权机制。 + +- **🔑 权限管理**: 基于 RBAC 模型,实现细粒度的权限控制,涵盖接口方法和按钮级别。 + +- **🛠️ 功能模块**: 包括用户管理、角色管理、菜单管理、部门管理、字典管理等多个功能。 + +- **📘 接口文档**: 自动生成接口文档,支持在线调试,提高开发效率。 + +## 📁 项目目录 +``` +youlai-boot +├── sql # SQL脚本 + ├── mysql5 # MySQL5 脚本 + ├── mysql8 # MySQL8 脚本 +├── src # 源码目录 + ├── common # 公共模块 + ├── config # 自动装配配置 + ├── CorsConfig # 跨域共享配置 + ├── RedisConfig # Redis 配置 + ├── SwaggerConfig # API 接口文档配置 + ├── WebMvcConfig # WebMvc 配置 + ├── controller # 控制层 + ├── converter # MapStruct转换器 + ├── core # 核心模块 + ├── mybatisplus # Mybatis-Plus 配置和插件 + ├── security # Spring Security 安全配置和扩展 + ├── filter # 过滤器 + ├── RequestLogFilter # 请求日志过滤器 + ├── VerifyCodeFilter # 验证码过滤器 + ├── model # 模型层 + ├── bo # 业务对象 + ├── dto # 数据传输对象 + ├── entity # 实体对象 + ├── form # 表单对象 + ├── query # 查询参数对象 + ├── vo # 视图对象 + ├── mapper # 数据库访问层 + ├── plugin # 插件(可选) + ├── dupsubmit # 防重提交插件,用于防止表单重复提交 + ├── easyexcel # EasyExcel 插件,Excel 文件的读写 + ├── rabbitmq # RabbitMQ 插件,消息队列交互 + ├── websocket # WebSocket 插件,实时双向通信 + ├── xxljob # XXL-JOB 插件,分布式任务调度和执行 + ├── service # 业务逻辑层 +└── end +``` + +## 🌺 前端工程 +| Gitee | Github | +|-------|------| +| [vue3-element-admin](https://gitee.com/youlaiorg/vue3-element-admin) | [vue3-element-admin](https://github.com/youlaitech/vue3-element-admin) | -## 项目预览 -**在线预览地址** - -[http://vue3.youlai.tech/](http://vue3.youlai.tech/) - -**首页控制台** - -| ![明亮模式](https://s2.loli.net/2023/03/26/oltnAHfFcbw18GL.png) | -|-------------------------------------------------------------| -| ![暗黑模式](https://s2.loli.net/2023/03/13/QvjY4zf3VCGteNF.png) | - -**接口文档** - -![接口文档](https://s2.loli.net/2023/03/13/bH4J3O6WRgCUpwt.png) - -**权限管理系统** - -| ![用户管理](https://s2.loli.net/2023/03/13/L9xgT5sSMVZukQj.png) | ![角色管理](https://s2.loli.net/2023/03/13/nQg6HmrtFUkPDYv.png) | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| ![菜单管理](https://s2.loli.net/2023/03/13/C4fDRJeTuUO7gPI.png) | ![字典管理](https://s2.loli.net/2023/03/13/BzqjHpa64wfeWhE.png) | - - - -## 项目特色 -- Spring Boot 3.0 + Vue3 前后端分离单体应用,适合快速开发; -- Spring Security + JWT 认证鉴权方案; -- 基于 RBAC 模型的权限设计,细粒度接口方法、按钮级别权限控制。 - -## 运行环境 -- JDK 17 -- IDEA Lombok 插件 -- IDEA MapStruct Support 插件 -- MySQL 8.x - -## 项目地址 - -| 项目名称 | 项目地址 | -|------|------------------------------------------------| -| 后端工程 | https://gitee.com/youlaiorg/youlai-boot | -| 前端工程 | https://gitee.com/youlaiorg/vue3-element-admin | - - - -## 接口文档 +## 🌈 接口文档 - `knife4j` 接口文档:[http://localhost:8989/doc.html](http://localhost:8989/doc.html) - - `swagger` 接口文档:[http://localhost:8989/swagger-ui/index.html](http://localhost:8989/swagger-ui/index.html) - -## 项目运行 - -### 1. 数据库创建 - -执行 [youlai_boot.sql](sql/youlai_boot.sql) 脚本完成数据库创建、表结构和基础数据的初始化。 - -### 2. 配置修改 - -[application-dev.yml](src/main/resources/application-dev.yml) 修改MySQL、Redis连接配置; - -### 3. 后端启动 -执行 [SystemApplication.java](src/main/java/com/youlai/system/SystemApplication.java) 的 main 方法完成后端项目启动; - -访问接口文档地址 [http://localhost:8989/doc.html](http://localhost:8989/doc.html) 验证项目启动。 - -### 4. 前端启动 - -文档:[README.md](https://gitee.com/youlaiorg/vue3-element-admin#%E9%A1%B9%E7%9B%AE%E5%90%AF%E5%8A%A8) - -## 开发规范 - -### 方法命名 - -以下命名涵盖了Controller、Service和Mapper层 - -|作用|示例| -|---|---| -|分页查询|getUserPage| -|列表查询|listUsers| -|单个查询|getUser/getUserDetail/getUserInfo ...| -|新增|saveUser| -|修改|updateUser| -|删除|deleteUser/removeUser| +- `apifox` 在线接口文档:[https://www.apifox.cn/apidoc](https://www.apifox.cn/apidoc/shared-195e783f-4d85-4235-a038-eec696de4ea5) -### 实体命名 +## 🚀 项目启动 -| 名称 | 定义 | 示例 | -|--------|------------------|-----------| -| entity | 映射数据库实体,字段属性完全对应 | SysUser | -| bo | 多表关联查询的业务实体 | UserBO | -| query | 查询传参,建议参数≥3使用 | UserQuery | -| form | 表单对象 | UserForm | -| dto | RPC调用,可替代VO | UserDTO | -| vo | 视图层对象 | UserVO | +1. **数据库初始化** -### API规范 -在RESTFul架构中,每个URL代表一种资源,所以不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合",所以API中的名词也应该使用复数。 + 执行 [youlai_boot.sql](sql/mysql8/youlai_boot.sql) 脚本完成数据库创建、表结构和基础数据的初始化。 -**请求示例:** +2. **修改配置** -|请求描述|请求方法|请求路径| -|---|---|---| -|获取所有用户信息|GET|/api/v1/users| -|获取标识为1用户信息|GET|/api/v1/users/1| -|删除标识为1用户信息|DELETE|/api/v1/users/1| -|新增用户|POST|/api/v1/users| -|修改标识为1用户信息|PUT|/api/v1/users/1| -|修改标识为1用户状态|PATCH|/api/v1/users/1/status| -|获取当前登录用户信息|GET|/api/v1/users/{me,current}| + [application-dev.yml](src/main/resources/application-dev.yml) 修改MySQL、Redis连接配置; + +3. **启动项目** + + 执行 [SystemApplication.java](src/main/java/com/youlai/system/SystemApplication.java) 的 main 方法完成后端项目启动; + + 访问接口文档地址 [http://ip:port/doc.html](http://localhost:8989/doc.html) 验证项目启动是否成功。 -## 请求状态码规范 +## 💖 加交流群 -参考 [阿里Java开发手册](https://developer.aliyun.com/topic/java2020?utm_content=g_1000113416) +> 关注公众号【有来技术】,获取交流群二维码,不想关注公众号或二维码过期欢迎加我微信(`haoxianrui`)备注【有来】即可,拉你进群。 -## Git 提交规范 +| ![](https://s2.loli.net/2022/11/19/OGjum9wr8f6idLX.png) | +|---------------------------------------------------------| -参考 ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular)) 社区规范,建议 IDEA 安装 Git Commit Template 插件 - -- `feat` 增加新功能 -- `fix` 修复问题/BUG -- `style` 代码风格相关无影响运行结果的 -- `perf` 优化/性能提升 -- `refactor` 重构 -- `revert` 撤销修改 -- `test` 测试相关 -- `docs` 文档/注释 -- `chore` 依赖更新/脚手架配置修改等 -- `workflow` 工作流改进 -- `ci` 持续集成 - -## 联系我们 - -> 欢迎添加开发者微信,备注「有来」进群 - -| ![郝先瑞](https://s2.loli.net/2022/04/06/yRx8uzj4emA5QVr.jpg) | ![张川](https://s2.loli.net/2022/04/06/cQihGv9uPsTjXk1.jpg) | -| --- | --- | diff --git a/pom.xml b/pom.xml index 3d7fb1e6..9db5828e 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 3.16.3 - 3.21.0 + 3.24.3 diff --git a/sql/mysql5/youlai_boot.sql b/sql/mysql5/youlai_boot.sql new file mode 100644 index 00000000..8cba53da --- /dev/null +++ b/sql/mysql5/youlai_boot.sql @@ -0,0 +1,353 @@ +/* +* youlai_boot 权限系统数据库(MySQL5.7) +* @author haoxr +*/ + +-- ---------------------------- +-- 1. 创建数据库 +-- ---------------------------- +CREATE DATABASE IF NOT EXISTS youlai_boot DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; + + +-- ---------------------------- +-- 2. 创建表 && 数据初始化 +-- ---------------------------- +use youlai_boot; + +SET NAMES utf8; +SET FOREIGN_KEY_CHECKS = 0; + + +-- ---------------------------- +-- Table structure for sys_dept +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dept`; +CREATE TABLE `sys_dept` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '部门名称', + `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '父节点id', + `tree_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '父节点id路径', + `sort` int NULL DEFAULT 0 COMMENT '显示顺序', + `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态(1:正常;0:禁用)', + `deleted` tinyint NULL DEFAULT 0 COMMENT '逻辑删除标识(1:已删除;0:未删除)', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `create_by` bigint NULL DEFAULT NULL COMMENT '创建人ID', + `update_by` bigint NULL DEFAULT NULL COMMENT '修改人ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 171 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of sys_dept +-- ---------------------------- +INSERT INTO `sys_dept` VALUES (1, '有来技术', 0, '0', 1, 1, 0, NULL, NULL, 1, 1); +INSERT INTO `sys_dept` VALUES (2, '研发部门', 1, '0,1', 1, 1, 0, NULL, '2022-04-19 12:46:37', 2, 2); +INSERT INTO `sys_dept` VALUES (3, '测试部门', 1, '0,1', 1, 1, 0, NULL, '2022-04-19 12:46:37', 2, 2); + +-- ---------------------------- +-- Table structure for sys_dict +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dict`; +CREATE TABLE `sys_dict` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `type_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典类型编码', + `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典项名称', + `value` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典项值', + `sort` int NULL DEFAULT 0 COMMENT '排序', + `status` tinyint NULL DEFAULT 0 COMMENT '状态(1:正常;0:禁用)', + `defaulted` tinyint NULL DEFAULT 0 COMMENT '是否默认(1:是;0:否)', + `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 69 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典数据表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of sys_dict +-- ---------------------------- +INSERT INTO `sys_dict` VALUES (1, 'gender', '男', '1', 1, 1, 0, NULL, '2019-05-05 13:07:52', '2022-06-12 23:20:39'); +INSERT INTO `sys_dict` VALUES (2, 'gender', '女', '2', 2, 1, 0, NULL, '2019-04-19 11:33:00', '2019-07-02 14:23:05'); +INSERT INTO `sys_dict` VALUES (3, 'gender', '未知', '0', 1, 1, 0, NULL, '2020-10-17 08:09:31', '2020-10-17 08:09:31'); + +-- ---------------------------- +-- Table structure for sys_dict_type +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dict_type`; +CREATE TABLE `sys_dict_type` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键 ', + `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '类型名称', + `code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '类型编码', + `status` tinyint(1) NULL DEFAULT 0 COMMENT '状态(0:正常;1:禁用)', + `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `type_code`(`code` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 89 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典类型表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of sys_dict_type +-- ---------------------------- +INSERT INTO `sys_dict_type` VALUES (1, '性别', 'gender', 1, NULL, '2019-12-06 19:03:32', '2022-06-12 16:21:28'); + +-- ---------------------------- +-- Table structure for sys_menu +-- ---------------------------- +DROP TABLE IF EXISTS `sys_menu`; +CREATE TABLE `sys_menu` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `parent_id` bigint NOT NULL COMMENT '父菜单ID', + `tree_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '父节点ID路径', + `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '菜单名称', + `type` tinyint NOT NULL COMMENT '菜单类型(1:菜单 2:目录 3:外链 4:按钮)', + `path` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '路由路径(浏览器地址栏路径)', + `component` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '组件路径(vue页面完整路径,省略.vue后缀)', + `perm` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '权限标识', + `visible` tinyint(1) NOT NULL DEFAULT '1' COMMENT '显示状态(1-显示;0-隐藏)', + `sort` int DEFAULT '0' COMMENT '排序', + `icon` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '菜单图标', + `redirect` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '跳转路径', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `always_show` tinyint DEFAULT NULL COMMENT '【目录】只有一个子路由是否始终显示(1:是 0:否)', + `keep_alive` tinyint DEFAULT NULL COMMENT '【菜单】是否开启页面缓存(1:是 0:否)', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=DYNAMIC COMMENT='菜单管理'; + +-- ---------------------------- +-- Records of sys_menu +-- ---------------------------- +INSERT INTO `sys_menu` VALUES (1, 0, '0', '系统管理', 2, '/system', 'Layout', NULL, 1, 1, 'system', '/system/user', '2021-08-28 09:12:21', '2021-08-28 09:12:21', NULL, NULL); +INSERT INTO `sys_menu` VALUES (2, 1, '0,1', '用户管理', 1, 'user', 'system/user/index', NULL, 1, 1, 'user', NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', NULL, 1); +INSERT INTO `sys_menu` VALUES (3, 1, '0,1', '角色管理', 1, 'role', 'system/role/index', NULL, 1, 2, 'role', NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', NULL, 1); +INSERT INTO `sys_menu` VALUES (4, 1, '0,1', '菜单管理', 1, 'menu', 'system/menu/index', NULL, 1, 3, 'menu', NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', NULL, 1); +INSERT INTO `sys_menu` VALUES (5, 1, '0,1', '部门管理', 1, 'dept', 'system/dept/index', NULL, 1, 4, 'tree', NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', NULL, 1); +INSERT INTO `sys_menu` VALUES (6, 1, '0,1', '字典管理', 1, 'dict', 'system/dict/index', NULL, 1, 5, 'dict', NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', NULL, 1); +INSERT INTO `sys_menu` VALUES (20, 0, '0', '多级菜单', 2, '/multi-level', 'Layout', NULL, 1, 9, 'cascader', '/multi-level/multi-level1', '2022-02-16 23:11:00', '2022-02-16 23:11:00', NULL, NULL); +INSERT INTO `sys_menu` VALUES (21, 20, '0,20', '菜单一级', 1, 'multi-level1', 'demo/multi-level/level1', NULL, 1, 1, '', '/multi-level/multi-level2', '2022-02-16 23:13:38', '2022-02-16 23:13:38', NULL, 1); +INSERT INTO `sys_menu` VALUES (22, 21, '0,20,21', '菜单二级', 1, 'multi-level2', 'demo/multi-level/children/level2', NULL, 1, 1, '', '/multi-level/multi-level2/multi-level3-1', '2022-02-16 23:14:23', '2022-02-16 23:14:23', NULL, 1); +INSERT INTO `sys_menu` VALUES (23, 22, '0,20,21,22', '菜单三级-1', 1, 'multi-level3-1', 'demo/multi-level/children/children/level3-1', NULL, 1, 1, '', '', '2022-02-16 23:14:51', '2022-02-16 23:14:51', NULL, 1); +INSERT INTO `sys_menu` VALUES (24, 22, '0,20,21,22', '菜单三级-2', 1, 'multi-level3-2', 'demo/multi-level/children/children/level3-2', NULL, 1, 2, '', '', '2022-02-16 23:15:08', '2022-02-16 23:15:08', NULL, 1); +INSERT INTO `sys_menu` VALUES (26, 0, '0', '平台文档', 2, '/doc', 'Layout', NULL, 1, 8, 'document', NULL, '2022-02-17 22:51:20', '2022-02-17 22:51:20', NULL, NULL); +INSERT INTO `sys_menu` VALUES (30, 26, '0,26', '平台文档(外链)', 3, 'https://juejin.cn/post/7228990409909108793', '', NULL, 1, 2, 'link', '', '2022-02-18 00:01:40', '2022-02-18 00:01:40', NULL, NULL); +INSERT INTO `sys_menu` VALUES (31, 2, '0,1,2', '用户新增', 4, '', NULL, 'sys:user:add', 1, 1, '', '', '2022-10-23 11:04:08', '2022-10-23 11:04:11', NULL, NULL); +INSERT INTO `sys_menu` VALUES (32, 2, '0,1,2', '用户编辑', 4, '', NULL, 'sys:user:edit', 1, 2, '', '', '2022-10-23 11:04:08', '2022-10-23 11:04:11', NULL, NULL); +INSERT INTO `sys_menu` VALUES (33, 2, '0,1,2', '用户删除', 4, '', NULL, 'sys:user:delete', 1, 3, '', '', '2022-10-23 11:04:08', '2022-10-23 11:04:11', NULL, NULL); +INSERT INTO `sys_menu` VALUES (36, 0, '0', '组件封装', 2, '/component', 'Layout', NULL, 1, 10, 'menu', '', '2022-10-31 09:18:44', '2022-10-31 09:18:47', NULL, NULL); +INSERT INTO `sys_menu` VALUES (37, 36, '0,36', '富文本编辑器', 1, 'wang-editor', 'demo/wang-editor', NULL, 1, 1, '', '', NULL, NULL, NULL, 1); +INSERT INTO `sys_menu` VALUES (38, 36, '0,36', '图片上传', 1, 'upload', 'demo/upload', NULL, 1, 2, '', '', '2022-11-20 23:16:30', '2022-11-20 23:16:32', NULL, 1); +INSERT INTO `sys_menu` VALUES (39, 36, '0,36', '图标选择器', 1, 'icon-selector', 'demo/icon-selector', NULL, 1, 3, '', '', '2022-11-20 23:16:30', '2022-11-20 23:16:32', NULL, 1); +INSERT INTO `sys_menu` VALUES (40, 0, '0', '接口', 2, '/api', 'Layout', NULL, 1, 7, 'api', '', '2022-02-17 22:51:20', '2022-02-17 22:51:20', 1, NULL); +INSERT INTO `sys_menu` VALUES (41, 40, '0,40', '接口文档', 1, 'api-doc', 'demo/api-doc', NULL, 1, 1, 'api', '', '2022-02-17 22:51:20', '2022-02-17 22:51:20', NULL, 1); +INSERT INTO `sys_menu` VALUES (70, 3, '0,1,3', '角色新增', 4, '', NULL, 'sys:role:add', 1, 1, '', NULL, '2023-05-20 23:39:09', '2023-05-20 23:39:09', NULL, NULL); +INSERT INTO `sys_menu` VALUES (71, 3, '0,1,3', '角色编辑', 4, '', NULL, 'sys:role:edit', 1, 2, '', NULL, '2023-05-20 23:40:31', '2023-05-20 23:40:31', NULL, NULL); +INSERT INTO `sys_menu` VALUES (72, 3, '0,1,3', '角色删除', 4, '', NULL, 'sys:role:delete', 1, 3, '', NULL, '2023-05-20 23:41:08', '2023-05-20 23:41:08', NULL, NULL); +INSERT INTO `sys_menu` VALUES (73, 4, '0,1,4', '菜单新增', 4, '', NULL, 'sys:menu:add', 1, 1, '', NULL, '2023-05-20 23:41:35', '2023-05-20 23:41:35', NULL, NULL); +INSERT INTO `sys_menu` VALUES (74, 4, '0,1,4', '菜单编辑', 4, '', NULL, 'sys:menu:edit', 1, 3, '', NULL, '2023-05-20 23:41:58', '2023-05-20 23:41:58', NULL, NULL); +INSERT INTO `sys_menu` VALUES (75, 4, '0,1,4', '菜单删除', 4, '', NULL, 'sys:menu:delete', 1, 3, '', NULL, '2023-05-20 23:44:18', '2023-05-20 23:44:18', NULL, NULL); +INSERT INTO `sys_menu` VALUES (76, 5, '0,1,5', '部门新增', 4, '', NULL, 'sys:dept:add', 1, 1, '', NULL, '2023-05-20 23:45:00', '2023-05-20 23:45:00', NULL, NULL); +INSERT INTO `sys_menu` VALUES (77, 5, '0,1,5', '部门编辑', 4, '', NULL, 'sys:dept:edit', 1, 2, '', NULL, '2023-05-20 23:46:16', '2023-05-20 23:46:16', NULL, NULL); +INSERT INTO `sys_menu` VALUES (78, 5, '0,1,5', '部门删除', 4, '', NULL, 'sys:dept:delete', 1, 3, '', NULL, '2023-05-20 23:46:36', '2023-05-20 23:46:36', NULL, NULL); +INSERT INTO `sys_menu` VALUES (79, 6, '0,1,6', '字典类型新增', 4, '', NULL, 'sys:dict_type:add', 1, 1, '', NULL, '2023-05-21 00:16:06', '2023-05-21 00:16:06', NULL, NULL); +INSERT INTO `sys_menu` VALUES (81, 6, '0,1,6', '字典类型编辑', 4, '', NULL, 'sys:dict_type:edit', 1, 2, '', NULL, '2023-05-21 00:27:37', '2023-05-21 00:27:37', NULL, NULL); +INSERT INTO `sys_menu` VALUES (84, 6, '0,1,6', '字典类型删除', 4, '', NULL, 'sys:dict_type:delete', 1, 3, '', NULL, '2023-05-21 00:29:39', '2023-05-21 00:29:39', NULL, NULL); +INSERT INTO `sys_menu` VALUES (85, 6, '0,1,6', '字典数据新增', 4, '', NULL, 'sys:dict:add', 1, 4, '', NULL, '2023-05-21 00:46:56', '2023-05-21 00:47:06', NULL, NULL); +INSERT INTO `sys_menu` VALUES (86, 6, '0,1,6', '字典数据编辑', 4, '', NULL, 'sys:dict:edit', 1, 5, '', NULL, '2023-05-21 00:47:36', '2023-05-21 00:47:36', NULL, NULL); +INSERT INTO `sys_menu` VALUES (87, 6, '0,1,6', '字典数据删除', 4, '', NULL, 'sys:dict:delete', 1, 6, '', NULL, '2023-05-21 00:48:10', '2023-05-21 00:48:20', NULL, NULL); +INSERT INTO `sys_menu` VALUES (88, 2, '0,1,2', '重置密码', 4, '', NULL, 'sys:user:reset_pwd', 1, 4, '', NULL, '2023-05-21 00:49:18', '2023-05-21 00:49:18', NULL, NULL); +INSERT INTO `sys_menu` VALUES (89, 0, '0', '功能演示', 2, '/function', 'Layout', NULL, 1, 11, 'menu', '', '2022-10-31 09:18:44', '2022-10-31 09:18:47', NULL, NULL); +INSERT INTO `sys_menu` VALUES (90, 89, '0,89', 'Websocket', 1, 'websocket', 'demo/websocket', NULL, 1, 3, '', '', '2022-11-20 23:16:30', '2022-11-20 23:16:32', NULL, 1); +INSERT INTO `sys_menu` VALUES (91, 89, '0,89', '敬请期待...', 2, 'other', 'demo/other', NULL, 1, 4, '', '', '2022-11-20 23:16:30', '2022-11-20 23:16:32', NULL, NULL); +INSERT INTO `sys_menu` VALUES (93, 36, '0,36', '签名', 1, 'signature', 'demo/signature', NULL, 1, 6, '', '', '2022-11-20 23:16:30', '2022-11-20 23:16:32', NULL, 1); +INSERT INTO `sys_menu` VALUES (94, 36, '0,36', '表格', 1, 'table', 'demo/table', NULL, 1, 7, '', '', '2022-11-20 23:16:30', '2022-11-20 23:16:32', NULL, 1); +INSERT INTO `sys_menu` VALUES (95, 36, '0,36', '字典组件', 1, 'dict-demo', 'demo/dict', NULL, 1, 4, '', '', '2022-11-20 23:16:30', '2022-11-20 23:16:32', NULL, 1); +INSERT INTO `sys_menu` VALUES (96, 89, '0,89', 'Permission', 1, 'permission', 'demo/permission/page', NULL, 1, 1, '', '', '2022-11-20 23:16:30', '2022-11-20 23:16:32', NULL, 1); +INSERT INTO `sys_menu` VALUES (97, 89, '0,89', 'Icons', 1, 'icon-demo', 'demo/icons', NULL, 1, 2, '', '', '2022-11-20 23:16:30', '2022-11-20 23:16:32', NULL, 1); +INSERT INTO `sys_menu` VALUES (98, 0, '0', 'Table', 2, '/table', 'Layout', NULL, 0, 10, 'table', '', '2023-08-08 20:49:50', '2023-08-08 20:49:50', NULL, NULL); +INSERT INTO `sys_menu` VALUES (99, 98, '0,98', '动态Table', 1, 'dynamic-table', 'table/dynamic-table/index', NULL, 0, 1, '', '', '2023-08-08 20:54:42', '2023-08-08 20:54:42', NULL, 1); +INSERT INTO `sys_menu` VALUES (100, 98, '0,98', '拖拽Table', 1, 'drag-table', 'table/drag-table', NULL, 0, 2, '', '', '2023-08-08 20:54:42', '2023-08-08 20:54:42', NULL, 1); +INSERT INTO `sys_menu` VALUES (101, 98, '0,98', '综合Table', 1, 'complex-table', 'table/complex-table', NULL, 0, 3, '', '', '2023-08-08 20:54:42', '2023-08-08 20:54:42', NULL, 1); +INSERT INTO `sys_menu` VALUES (102, 26, '0,26', '平台文档(内嵌)', 3, 'internal-doc', 'demo/internal-doc', NULL, 1, 1, 'document', '', '2022-02-18 00:01:40', '2022-02-18 00:01:40', NULL, NULL); + +-- -------------------- +-- Table structure for sys_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role`; +CREATE TABLE `sys_role` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '角色名称', + `code` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色编码', + `sort` int NULL DEFAULT NULL COMMENT '显示顺序', + `status` tinyint(1) NULL DEFAULT 1 COMMENT '角色状态(1-正常;0-停用)', + `data_scope` tinyint NULL DEFAULT NULL COMMENT '数据权限(0-所有数据;1-部门及子部门数据;2-本部门数据;3-本人数据)', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识(0-未删除;1-已删除)', + `create_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `name`(`name` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 128 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of sys_role +-- ---------------------------- +INSERT INTO `sys_role` VALUES (1, '超级管理员', 'ROOT', 1, 1, 0, 0, '2021-05-21 14:56:51', '2018-12-23 16:00:00'); +INSERT INTO `sys_role` VALUES (2, '系统管理员', 'ADMIN', 2, 1, 1, 0, '2021-03-25 12:39:54', NULL); +INSERT INTO `sys_role` VALUES (3, '访问游客', 'GUEST', 3, 1, 2, 0, '2021-05-26 15:49:05', '2019-05-05 16:00:00'); +INSERT INTO `sys_role` VALUES (4, '系统管理员1', 'ADMIN1', 2, 1, 1, 0, '2021-03-25 12:39:54', NULL); +INSERT INTO `sys_role` VALUES (5, '系统管理员2', 'ADMIN1', 2, 1, 1, 0, '2021-03-25 12:39:54', NULL); +INSERT INTO `sys_role` VALUES (6, '系统管理员3', 'ADMIN1', 2, 1, 1, 0, '2021-03-25 12:39:54', NULL); +INSERT INTO `sys_role` VALUES (7, '系统管理员4', 'ADMIN1', 2, 1, 1, 0, '2021-03-25 12:39:54', NULL); +INSERT INTO `sys_role` VALUES (8, '系统管理员5', 'ADMIN1', 2, 1, 1, 0, '2021-03-25 12:39:54', NULL); +INSERT INTO `sys_role` VALUES (9, '系统管理员6', 'ADMIN1', 2, 1, 1, 0, '2021-03-25 12:39:54', NULL); +INSERT INTO `sys_role` VALUES (10, '系统管理员7', 'ADMIN1', 2, 1, 1, 0, '2021-03-25 12:39:54', NULL); +INSERT INTO `sys_role` VALUES (11, '系统管理员8', 'ADMIN1', 2, 1, 1, 0, '2021-03-25 12:39:54', NULL); +INSERT INTO `sys_role` VALUES (12, '系统管理员9', 'ADMIN1', 2, 1, 1, 0, '2021-03-25 12:39:54', NULL); + +-- ---------------------------- +-- Table structure for sys_role_menu +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role_menu`; +CREATE TABLE `sys_role_menu` ( + `role_id` bigint NOT NULL COMMENT '角色ID', + `menu_id` bigint NOT NULL COMMENT '菜单ID' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of sys_role_menu +-- ---------------------------- +INSERT INTO `sys_role_menu` VALUES (2, 1); +INSERT INTO `sys_role_menu` VALUES (2, 2); +INSERT INTO `sys_role_menu` VALUES (2, 3); +INSERT INTO `sys_role_menu` VALUES (2, 4); +INSERT INTO `sys_role_menu` VALUES (2, 5); +INSERT INTO `sys_role_menu` VALUES (2, 6); +INSERT INTO `sys_role_menu` VALUES (2, 11); +INSERT INTO `sys_role_menu` VALUES (2, 12); +INSERT INTO `sys_role_menu` VALUES (2, 19); +INSERT INTO `sys_role_menu` VALUES (2, 18); +INSERT INTO `sys_role_menu` VALUES (2, 17); +INSERT INTO `sys_role_menu` VALUES (2, 13); +INSERT INTO `sys_role_menu` VALUES (2, 14); +INSERT INTO `sys_role_menu` VALUES (2, 15); +INSERT INTO `sys_role_menu` VALUES (2, 16); +INSERT INTO `sys_role_menu` VALUES (2, 9); +INSERT INTO `sys_role_menu` VALUES (2, 10); +INSERT INTO `sys_role_menu` VALUES (2, 37); +INSERT INTO `sys_role_menu` VALUES (2, 20); +INSERT INTO `sys_role_menu` VALUES (2, 21); +INSERT INTO `sys_role_menu` VALUES (2, 22); +INSERT INTO `sys_role_menu` VALUES (2, 23); +INSERT INTO `sys_role_menu` VALUES (2, 24); +INSERT INTO `sys_role_menu` VALUES (2, 32); +INSERT INTO `sys_role_menu` VALUES (2, 33); +INSERT INTO `sys_role_menu` VALUES (2, 39); +INSERT INTO `sys_role_menu` VALUES (2, 34); +INSERT INTO `sys_role_menu` VALUES (2, 26); +INSERT INTO `sys_role_menu` VALUES (2, 30); +INSERT INTO `sys_role_menu` VALUES (2, 31); +INSERT INTO `sys_role_menu` VALUES (2, 36); +INSERT INTO `sys_role_menu` VALUES (2, 38); +INSERT INTO `sys_role_menu` VALUES (2, 39); +INSERT INTO `sys_role_menu` VALUES (2, 40); +INSERT INTO `sys_role_menu` VALUES (2, 41); +INSERT INTO `sys_role_menu` VALUES (2, 1); +INSERT INTO `sys_role_menu` VALUES (2, 2); +INSERT INTO `sys_role_menu` VALUES (2, 3); +INSERT INTO `sys_role_menu` VALUES (2, 4); +INSERT INTO `sys_role_menu` VALUES (2, 5); +INSERT INTO `sys_role_menu` VALUES (2, 6); +INSERT INTO `sys_role_menu` VALUES (2, 20); +INSERT INTO `sys_role_menu` VALUES (2, 21); +INSERT INTO `sys_role_menu` VALUES (2, 22); +INSERT INTO `sys_role_menu` VALUES (2, 23); +INSERT INTO `sys_role_menu` VALUES (2, 24); +INSERT INTO `sys_role_menu` VALUES (2, 26); +INSERT INTO `sys_role_menu` VALUES (2, 30); +INSERT INTO `sys_role_menu` VALUES (2, 31); +INSERT INTO `sys_role_menu` VALUES (2, 32); +INSERT INTO `sys_role_menu` VALUES (2, 33); +INSERT INTO `sys_role_menu` VALUES (2, 36); +INSERT INTO `sys_role_menu` VALUES (2, 37); +INSERT INTO `sys_role_menu` VALUES (2, 38); +INSERT INTO `sys_role_menu` VALUES (2, 39); +INSERT INTO `sys_role_menu` VALUES (2, 40); +INSERT INTO `sys_role_menu` VALUES (2, 41); +INSERT INTO `sys_role_menu` VALUES (2, 70); +INSERT INTO `sys_role_menu` VALUES (2, 71); +INSERT INTO `sys_role_menu` VALUES (2, 72); +INSERT INTO `sys_role_menu` VALUES (2, 73); +INSERT INTO `sys_role_menu` VALUES (2, 74); +INSERT INTO `sys_role_menu` VALUES (2, 75); +INSERT INTO `sys_role_menu` VALUES (2, 76); +INSERT INTO `sys_role_menu` VALUES (2, 77); +INSERT INTO `sys_role_menu` VALUES (2, 78); +INSERT INTO `sys_role_menu` VALUES (2, 79); +INSERT INTO `sys_role_menu` VALUES (2, 81); +INSERT INTO `sys_role_menu` VALUES (2, 84); +INSERT INTO `sys_role_menu` VALUES (2, 85); +INSERT INTO `sys_role_menu` VALUES (2, 86); +INSERT INTO `sys_role_menu` VALUES (2, 87); +INSERT INTO `sys_role_menu` VALUES (2, 88); +INSERT INTO `youlai_boot`.`sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 89); +INSERT INTO `youlai_boot`.`sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 90); +INSERT INTO `youlai_boot`.`sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 91); +INSERT INTO `youlai_boot`.`sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 92); +INSERT INTO `youlai_boot`.`sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 93); +INSERT INTO `youlai_boot`.`sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 94); +INSERT INTO `youlai_boot`.`sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 95); +INSERT INTO `youlai_boot`.`sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 96); +INSERT INTO `youlai_boot`.`sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 97); +INSERT INTO `youlai_boot`.`sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 102); + + + +-- ---------------------------- +-- Table structure for sys_user +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user`; +CREATE TABLE `sys_user` ( + `id` int NOT NULL AUTO_INCREMENT, + `username` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名', + `nickname` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称', + `gender` tinyint(1) NULL DEFAULT 1 COMMENT '性别((1:男;2:女))', + `password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码', + `dept_id` int NULL DEFAULT NULL COMMENT '部门ID', + `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户头像', + `mobile` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系方式', + `status` tinyint(1) NULL DEFAULT 1 COMMENT '用户状态((1:正常;0:禁用))', + `email` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户邮箱', + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标识(0:未删除;1:已删除)', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `login_name`(`username` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 288 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of sys_user +-- ---------------------------- +INSERT INTO `sys_user` VALUES (1, 'root', '有来技术', 0, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', NULL, 'https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif', '17621590365', 1, 'youlaitech@163.com', 0, NULL, NULL); +INSERT INTO `sys_user` VALUES (2, 'admin', '系统管理员', 1, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', 1, 'https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif', '17621210366', 1, '', 0, '2019-10-10 13:41:22', '2022-07-31 12:39:30'); +INSERT INTO `sys_user` VALUES (3, 'test', '测试小用户', 1, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', 3, 'https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif', '17621210366', 1, 'youlaitech@163.com', 0, '2021-06-05 01:31:29', '2021-06-05 01:31:29'); +INSERT INTO `sys_user` VALUES (287, '123', '123', 1, '$2a$10$mVoBVqm1837huf7kcN0wS.GVYKEFv0arb7GvzfFXoTyqDlcRzT.6i', 1, '', NULL, 1, NULL, 1, '2023-05-21 14:11:19', '2023-05-21 14:11:25'); + +-- ---------------------------- +-- Table structure for sys_user_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user_role`; +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 = utf8 COLLATE = utf8_general_ci COMMENT = '用户和角色关联表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of sys_user_role +-- ---------------------------- +INSERT INTO `sys_user_role` VALUES (1, 1); +INSERT INTO `sys_user_role` VALUES (2, 2); +INSERT INTO `sys_user_role` VALUES (3, 3); +INSERT INTO `sys_user_role` VALUES (287, 2); + +SET FOREIGN_KEY_CHECKS = 1; + diff --git a/sql/youlai_boot.sql b/sql/mysql8/youlai_boot.sql similarity index 100% rename from sql/youlai_boot.sql rename to sql/mysql8/youlai_boot.sql diff --git a/src/main/java/com/youlai/system/config/SwaggerConfig.java b/src/main/java/com/youlai/system/config/SwaggerConfig.java index c19bee29..e557f3e8 100644 --- a/src/main/java/com/youlai/system/config/SwaggerConfig.java +++ b/src/main/java/com/youlai/system/config/SwaggerConfig.java @@ -31,7 +31,7 @@ public class SwaggerConfig { .title("系统接口文档") .version("2.4.0") ) - //全局安全校验项,也可以在对应的controller上加注解SecurityRequirement + // 全局安全校验项,也可以在对应的controller上加注解SecurityRequirement .components(new Components() .addSecuritySchemes(HttpHeaders.AUTHORIZATION, new SecurityScheme() diff --git a/src/main/java/com/youlai/system/controller/AuthController.java b/src/main/java/com/youlai/system/controller/AuthController.java index 33678798..70400f7b 100644 --- a/src/main/java/com/youlai/system/controller/AuthController.java +++ b/src/main/java/com/youlai/system/controller/AuthController.java @@ -1,13 +1,11 @@ package com.youlai.system.controller; -import com.youlai.system.common.constant.SecurityConstants; import com.youlai.system.common.result.Result; import com.youlai.system.model.dto.CaptchaResult; import com.youlai.system.model.dto.LoginResult; import com.youlai.system.service.AuthService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -32,7 +30,7 @@ public class AuthController { return Result.success(loginResult); } - @Operation(summary = "注销", security = {@SecurityRequirement(name = SecurityConstants.TOKEN_KEY)}) + @Operation(summary = "注销") @DeleteMapping("/logout") public Result logout() { authService.logout(); diff --git a/src/main/java/com/youlai/system/controller/SysDeptController.java b/src/main/java/com/youlai/system/controller/SysDeptController.java index 8c185aac..346180b2 100644 --- a/src/main/java/com/youlai/system/controller/SysDeptController.java +++ b/src/main/java/com/youlai/system/controller/SysDeptController.java @@ -1,6 +1,6 @@ package com.youlai.system.controller; -import com.youlai.system.common.annotation.PreventDuplicateSubmit; +import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.youlai.system.common.model.Option; import com.youlai.system.common.result.Result; import com.youlai.system.model.form.DeptForm; @@ -8,7 +8,6 @@ import com.youlai.system.model.query.DeptQuery; import com.youlai.system.model.vo.DeptVO; import com.youlai.system.service.SysDeptService; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/youlai/system/controller/SysDictController.java b/src/main/java/com/youlai/system/controller/SysDictController.java index 4d099d75..e0753224 100644 --- a/src/main/java/com/youlai/system/controller/SysDictController.java +++ b/src/main/java/com/youlai/system/controller/SysDictController.java @@ -3,7 +3,7 @@ package com.youlai.system.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.youlai.system.common.result.PageResult; import com.youlai.system.common.result.Result; -import com.youlai.system.common.annotation.PreventDuplicateSubmit; +import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.youlai.system.model.form.DictForm; import com.youlai.system.model.form.DictTypeForm; import com.youlai.system.model.query.DictPageQuery; @@ -14,7 +14,6 @@ import com.youlai.system.common.model.Option; import com.youlai.system.service.SysDictService; import com.youlai.system.service.SysDictTypeService; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/youlai/system/controller/SysMenuController.java b/src/main/java/com/youlai/system/controller/SysMenuController.java index 16f48c78..cc699c5a 100644 --- a/src/main/java/com/youlai/system/controller/SysMenuController.java +++ b/src/main/java/com/youlai/system/controller/SysMenuController.java @@ -1,7 +1,7 @@ package com.youlai.system.controller; import com.youlai.system.common.result.Result; -import com.youlai.system.common.annotation.PreventDuplicateSubmit; +import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.youlai.system.model.form.MenuForm; import com.youlai.system.model.query.MenuQuery; import com.youlai.system.model.vo.MenuVO; diff --git a/src/main/java/com/youlai/system/controller/SysRoleController.java b/src/main/java/com/youlai/system/controller/SysRoleController.java index 5d1c5251..bfe03da6 100644 --- a/src/main/java/com/youlai/system/controller/SysRoleController.java +++ b/src/main/java/com/youlai/system/controller/SysRoleController.java @@ -1,7 +1,7 @@ package com.youlai.system.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.youlai.system.common.annotation.PreventDuplicateSubmit; +import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.youlai.system.common.model.Option; import com.youlai.system.common.result.PageResult; import com.youlai.system.common.result.Result; diff --git a/src/main/java/com/youlai/system/controller/SysUserController.java b/src/main/java/com/youlai/system/controller/SysUserController.java index 505e48d8..c9164997 100644 --- a/src/main/java/com/youlai/system/controller/SysUserController.java +++ b/src/main/java/com/youlai/system/controller/SysUserController.java @@ -8,7 +8,7 @@ import com.youlai.system.common.constant.ExcelConstants; import com.youlai.system.common.result.PageResult; import com.youlai.system.common.result.Result; import com.youlai.system.common.util.ExcelUtils; -import com.youlai.system.common.annotation.PreventDuplicateSubmit; +import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.youlai.system.plugin.easyexcel.UserImportListener; import com.youlai.system.model.vo.UserImportVO; import com.youlai.system.model.form.UserForm; diff --git a/src/main/java/com/youlai/system/common/annotation/DataPermission.java b/src/main/java/com/youlai/system/core/mybatisplus/annotation/DataPermission.java similarity index 90% rename from src/main/java/com/youlai/system/common/annotation/DataPermission.java rename to src/main/java/com/youlai/system/core/mybatisplus/annotation/DataPermission.java index 50789b5c..66eff5b5 100644 --- a/src/main/java/com/youlai/system/common/annotation/DataPermission.java +++ b/src/main/java/com/youlai/system/core/mybatisplus/annotation/DataPermission.java @@ -1,4 +1,4 @@ -package com.youlai.system.common.annotation; +package com.youlai.system.core.mybatisplus.annotation; import java.lang.annotation.*; diff --git a/src/main/java/com/youlai/system/core/mybatisplus/handler/MyDataPermissionHandler.java b/src/main/java/com/youlai/system/core/mybatisplus/handler/MyDataPermissionHandler.java index 6bb8454a..9c15f703 100644 --- a/src/main/java/com/youlai/system/core/mybatisplus/handler/MyDataPermissionHandler.java +++ b/src/main/java/com/youlai/system/core/mybatisplus/handler/MyDataPermissionHandler.java @@ -4,7 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler; -import com.youlai.system.common.annotation.DataPermission; +import com.youlai.system.core.mybatisplus.annotation.DataPermission; import com.youlai.system.common.base.IBaseEnum; import com.youlai.system.common.enums.DataScopeEnum; import com.youlai.system.common.util.SecurityUtils; diff --git a/src/main/java/com/youlai/system/mapper/SysDeptMapper.java b/src/main/java/com/youlai/system/mapper/SysDeptMapper.java index 280e78bb..61759bb1 100644 --- a/src/main/java/com/youlai/system/mapper/SysDeptMapper.java +++ b/src/main/java/com/youlai/system/mapper/SysDeptMapper.java @@ -3,7 +3,7 @@ package com.youlai.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.Constants; -import com.youlai.system.common.annotation.DataPermission; +import com.youlai.system.core.mybatisplus.annotation.DataPermission; import com.youlai.system.model.entity.SysDept; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; diff --git a/src/main/java/com/youlai/system/mapper/SysUserMapper.java b/src/main/java/com/youlai/system/mapper/SysUserMapper.java index 05a7b6c7..e3680af5 100644 --- a/src/main/java/com/youlai/system/mapper/SysUserMapper.java +++ b/src/main/java/com/youlai/system/mapper/SysUserMapper.java @@ -2,7 +2,7 @@ package com.youlai.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.youlai.system.common.annotation.DataPermission; +import com.youlai.system.core.mybatisplus.annotation.DataPermission; import com.youlai.system.model.bo.UserBO; import com.youlai.system.model.entity.SysUser; import com.youlai.system.model.dto.UserAuthInfo; diff --git a/src/main/java/com/youlai/system/common/annotation/PreventDuplicateSubmit.java b/src/main/java/com/youlai/system/plugin/dupsubmit/annotation/PreventDuplicateSubmit.java similarity index 87% rename from src/main/java/com/youlai/system/common/annotation/PreventDuplicateSubmit.java rename to src/main/java/com/youlai/system/plugin/dupsubmit/annotation/PreventDuplicateSubmit.java index b7bcdb87..d23ce1b4 100644 --- a/src/main/java/com/youlai/system/common/annotation/PreventDuplicateSubmit.java +++ b/src/main/java/com/youlai/system/plugin/dupsubmit/annotation/PreventDuplicateSubmit.java @@ -1,4 +1,4 @@ -package com.youlai.system.common.annotation; +package com.youlai.system.plugin.dupsubmit.annotation; import java.lang.annotation.*; diff --git a/src/main/java/com/youlai/system/aspect/DuplicateSubmitAspect.java b/src/main/java/com/youlai/system/plugin/dupsubmit/aspect/DuplicateSubmitAspect.java similarity index 95% rename from src/main/java/com/youlai/system/aspect/DuplicateSubmitAspect.java rename to src/main/java/com/youlai/system/plugin/dupsubmit/aspect/DuplicateSubmitAspect.java index 7617fba1..0c5a3fad 100644 --- a/src/main/java/com/youlai/system/aspect/DuplicateSubmitAspect.java +++ b/src/main/java/com/youlai/system/plugin/dupsubmit/aspect/DuplicateSubmitAspect.java @@ -1,7 +1,7 @@ -package com.youlai.system.aspect; +package com.youlai.system.plugin.dupsubmit.aspect; import cn.hutool.core.util.StrUtil; -import com.youlai.system.common.annotation.PreventDuplicateSubmit; +import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.youlai.system.common.result.ResultCode; import com.youlai.system.common.exception.BusinessException; import com.youlai.system.core.security.jwt.JwtTokenProvider; diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 4dd3b6b1..f254ca1b 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -16,7 +16,7 @@ spring: data: redis: database: 6 - host: 47.117.115.107 + host: www.youlai.tech port: 6379 password: 123456 timeout: 10s