Skip to content

技术栈

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_permission

users

  • 用户表
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/loginPOST普通用户登录
/user/registerPOST普通用户注册
/user/updatePOST普通用户个人信息修改
/user/update_passwordPOST普通用户修改密码
/user/admin/loginPOST管理员登录
/user/admin/update_passwordPOST管理员修改密码
/user/admin/updatePOST管理员个人信息修改
/user/listGET用户列表
/user/freezeGET冻结用户

会议室管理模块

接口路径请求方式描述
/meeting_room/listGET会议室列表
/meeting_room/delete/:idDELETE会议室删除
/meeting_room/update/:idPUT会议室更新
/meeting_room/createPOST会议室新增
/meeting_room/searchGET会议室搜索

预定管理模块

接口路径请求方式描述
/booking/listGET预订列表
/booking/approvePOST审批预订申请
/booking/addPOST申请预订
/booking/apply/:idGET通过预订
/booking/reject/:idGET取消预订
/booking/unbind/:idGET解除预订
/booking/historyGET预订历史
/booking/urgeGET催办

统计模块

接口路径请求方式描述
/statistics/meeting_room_usage_frequencyGET会议室使用频率统计
/statistics/user_booking_frequencyGET用户预订频率统计

总共 4 个模块

  • 用户管理模块

  • 会议室管理模块

  • 预定管理模块

  • 统计管理模块

角色划分

  • 第二部分
  • 第三部分