基于 Gin 的会议室预约 API 设计
基本功能设计
- 设计分为手机mobile端和电脑pc端
- 在会议室张贴二维码,手机扫描二维码即可加入手机预定页面
- 手机端只能进行会议室的预约和查看个人预约情况
- 电脑端即可以预约,也可以登陆管理员账号,管理预约请求
- 只能在整点和半点进行预约,每次会议最小时间为半小时,最大为两小时
数据库设计
- 一个建立四张表(这里不建立用户表,大家根据需求可以自己建立)
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='会议室表'