基於 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='會議室表'