基于 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 = '会议室表'