技术栈
bash
1. 前端:Vue + VueElementuiplus + Axios + Echarts
2. 后端 nestjs + Prisma + MySQL
3. 数据库 mysql + redis
4. Api文档 seagger
5. 服务器:Docker + Nginx + Linux + PM2数据库设计
RBAC 权限设计
- 凡是 RBAC 都会涉及到这 5 张表.
sql
1. 用户表:user
2. 角色表:role
3. 权限表:permission
4. 用户角色关联表:user_role
5. 角色权限关联表:role_permissionusers
- 用户表
sql
CREATE TABLE `users` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名',
`password` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户密码',
`nick_name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户昵称',
`email` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '邮箱',
`head_pic` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户头像',
`phone_number` varchar(20) COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号',
`is_frozen` int NOT NULL DEFAULT '1' COMMENT '是否被冻结 1表示没有 2表示有',
`is_admin` int NOT NULL DEFAULT '1' COMMENT '是否是管理员 1表示没有 2表示有',
`creat_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;meeting_rooms
- 会议室表
sql
CREATE TABLE `meeting_rooms` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '会议室ID',
`name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '会议室名字',
`capacity` int NOT NULL COMMENT '会议室容量',
`location` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '会议室位置',
`equipment` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设备',
`description` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '会议室描述',
`is_booked` int NOT NULL DEFAULT '1' COMMENT '是否被预订 1就是没有预定 2 就是已经被预定',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`upadte_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;bookings
- 预定表
sql
CREATE TABLE `bookings` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '预定ID',
`user_id` int NOT NULL COMMENT '预定用户ID',
`room_id` int NOT NULL COMMENT '会议室ID',
`start_time` timestamp NOT NULL COMMENT '会议开始时间',
`end_time` timestamp NOT NULL COMMENT '会议结束时间',
`status` int NOT NULL DEFAULT '0' COMMENT '状态(申请中 0 ,审批通过 1,审批驳回 2 ,已解除3)',
`note` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;booking_attendees
预订-参会人表
sql
CREATE TABLE `booking_attendees` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`user_id` int NOT NULL COMMENT '参会用户ID',
`booking_id` int NOT NULL COMMENT '预定会议ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;roles
角色表
sql
CREATE TABLE `roles` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(20) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '角色名',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;permissions
权限表
sql
CREATE TABLE `permissions` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
`code` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '权限代码',
`description` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '权限描述',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;user_roles
用户角色关联表
sql
CREATE TABLE `user_roles` (
`id` int NOT NULL COMMENT 'ID',
`user_id` int DEFAULT NULL COMMENT '用户ID',
`role_id` int DEFAULT NULL COMMENT '角色ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;role_permissions
角色权限关联表
sql
CREATE TABLE `role_permissions` (
`id` int NOT NULL COMMENT 'ID',
`role_id` int DEFAULT NULL COMMENT '角色id',
`permission_id` int DEFAULT NULL COMMENT '权限id',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;模块划分
用户管理模块
| 接口路径 | 请求方式 | 描述 |
|---|---|---|
| /user/login | POST | 普通用户登录 |
| /user/register | POST | 普通用户注册 |
| /user/update | POST | 普通用户个人信息修改 |
| /user/update_password | POST | 普通用户修改密码 |
| /user/admin/login | POST | 管理员登录 |
| /user/admin/update_password | POST | 管理员修改密码 |
| /user/admin/update | POST | 管理员个人信息修改 |
| /user/list | GET | 用户列表 |
| /user/freeze | GET | 冻结用户 |
会议室管理模块
| 接口路径 | 请求方式 | 描述 |
|---|---|---|
| /meeting_room/list | GET | 会议室列表 |
| /meeting_room/delete/:id | DELETE | 会议室删除 |
| /meeting_room/update/:id | PUT | 会议室更新 |
| /meeting_room/create | POST | 会议室新增 |
| /meeting_room/search | GET | 会议室搜索 |
预定管理模块
| 接口路径 | 请求方式 | 描述 |
|---|---|---|
| /booking/list | GET | 预订列表 |
| /booking/approve | POST | 审批预订申请 |
| /booking/add | POST | 申请预订 |
| /booking/apply/:id | GET | 通过预订 |
| /booking/reject/:id | GET | 取消预订 |
| /booking/unbind/:id | GET | 解除预订 |
| /booking/history | GET | 预订历史 |
| /booking/urge | GET | 催办 |
统计模块
| 接口路径 | 请求方式 | 描述 |
|---|---|---|
| /statistics/meeting_room_usage_frequency | GET | 会议室使用频率统计 |
| /statistics/user_booking_frequency | GET | 用户预订频率统计 |
总共 4 个模块
用户管理模块
会议室管理模块
预定管理模块
统计管理模块
角色划分
- 第二部分
- 第三部分