基于 Lumen 的会议室预约 API 设计
基本功能设计
- 设计分为手机mobile端和电脑pc端
- 在会议室张贴二维码,手机扫描二维码即可加入手机预定页面
- 手机端只能进行会议室的预约和查看个人预约情况
- 电脑端即可以预约,也可以登陆管理员账号,管理预约请求
- 只能在整点和半点进行预约,每次会议最小时间为半小时,最大为两小时
数据库设计
一个建立四张表(这里不建立用户表,大家根据需求可以自己建立)
- 预定表
books
CREATE TABLE `meeting_books` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '预定id', `user` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '用户姓名', `phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户手机号', `email` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '用户邮箱', `topic` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '会议主题', `room_id` int(11) NOT NULL COMMENT '会议室编号', `from_type` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '订单来源', `day` date NOT NULL COMMENT '会议日期', `start` time DEFAULT NULL COMMENT '会议开始时间', `end` time DEFAULT NULL COMMENT '会议结束时间', `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '预定状态', `remark` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '备注', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '预定创建时间', `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '预定修改时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='预定会议室表'
- 已占用时间表
used_times
(如用户选择 08:00—09:00 则插入 08:00 08:30 ps:08:00 代表的是时间段08:00~08:30)
CREATE TABLE `used_times` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '已占用时间id', `day` date NOT NULL COMMENT '占用日期', `time` time NOT NULL COMMENT '占用时间', `book_id` int(10) NOT NULL COMMENT '预定id', `room_id` int(10) NOT NULL COMMENT '会议室id', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='时间占用表'
- 可选择时间表
select_times
(不能24小时都可可以开会,只能在规定的范围内选择)
CREATE TABLE `meeting_select_times` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '可预定时间id', `time` time NOT NULL COMMENT '可预定时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COMMENT='可预定时间表'
- 会议室表
CREATE TABLE `meeting_rooms` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '会议室id', `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '会议室名称', `size` tinyint(2) NOT NULL COMMENT '会议室容纳人数', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='会议室表'
- 预定表