 DROP ALL OBJECTS;

DROP TABLE IF EXISTS sys_admin;
CREATE TABLE sys_admin
(
 id INT NOT NULL auto_increment,
 realname VARCHAR(50) NOT NULL,
 username VARCHAR(50) NOT NULL,
 password VARCHAR(70) NOT NULL COMMENT 'sha3_256Hex',
 islock INT DEFAULT 0 COMMENT '0正常,1锁定',
 PRIMARY KEY (id)
);

DROP TABLE IF EXISTS sys_role;
CREATE TABLE sys_role
(
 id INT NOT NULL auto_increment,
 rolename VARCHAR(50) NOT NULL,
 department VARCHAR(50) NOT NULL,
 PRIMARY KEY (id)
);

DROP TABLE IF EXISTS sys_admin_role;
CREATE TABLE sys_admin_role (
 id INT NOT NULL auto_increment,
 admin_id INT NOT NULL,
 role_id INT NOT NULL,
 PRIMARY KEY (id)
);

DROP TABLE IF EXISTS `sys_resource`;
CREATE TABLE `sys_resource` (
 id INT NOT NULL auto_increment,
 parent_id INT DEFAULT NULL,
 level smallint DEFAULT NULL COMMENT '菜单排列顺序',
 name VARCHAR(50) DEFAULT NULL,
 types VARCHAR(40) DEFAULT NULL COMMENT '资源类型',
 url VARCHAR(200) DEFAULT NULL,
 icon VARCHAR(100) DEFAULT NULL COMMENT '菜单图标',
 ishide tinyint DEFAULT '0' COMMENT '是否折叠隐藏',
 description VARCHAR(200) DEFAULT NULL,
 PRIMARY KEY (`id`)
);

DROP TABLE IF EXISTS `sys_role_resource`;
CREATE TABLE `sys_role_resource` (
 `role_id` INT NOT NULL,
 `res_id` INT NOT NULL,
 PRIMARY KEY (`role_id`,`res_id`)
);

DROP TABLE IF EXISTS SYS_URLS;
CREATE TABLE SYS_URLS (
 id INT NOT NULL auto_increment,
 pid INT COMMENT '父类ID',
 types INT DEFAULT 1 COMMENT '1:url,2:菜单',
 level INT DEFAULT 0 COMMENT '0:url,1:一级菜单, 2:二级菜单',
 url VARCHAR(300) DEFAULT NULL,
 name VARCHAR(200) DEFAULT NULL,
 method VARCHAR(200) DEFAULT NULL,
 PRIMARY KEY (id),
 UNIQUE (url)
);

DROP TABLE IF EXISTS sys_role_url;
CREATE TABLE sys_role_url (
 id INT NOT NULL auto_increment,
 role_id INT NOT NULL,
 url VARCHAR(300) NOT NULL COMMENT '对应SYS_URLS的url',
 urltypes INT NOT NULL COMMENT '1:url,2:菜单',
 PRIMARY KEY (id)
);









DROP TABLE IF EXISTS SCHOOL;
CREATE TABLE SCHOOL
(
 id INT NOT NULL AUTO_INCREMENT,
 name VARCHAR(200) COMMENT '学校名称',
 sort INT NOT NULL AUTO_INCREMENT COMMENT '学校排序',
 inshow INT DEFAULT 1 COMMENT '是否显示：0不显示，1显示',
 PRIMARY KEY (id)
);


DROP TABLE IF EXISTS SCHOOL_DISTRICT;
CREATE TABLE SCHOOL_DISTRICT
(
 id INT NOT NULL AUTO_INCREMENT,
 schoolid INT NOT NULL COMMENT '所属学校ID',
 district VARCHAR(200) COMMENT '校区名称',
 sort INT NOT NULL AUTO_INCREMENT COMMENT '校区排序',
 inshow INT DEFAULT 1 COMMENT '是否显示：0不显示，1显示',
 edittime DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后编辑时间',
 PRIMARY KEY (id)
);


DROP TABLE IF EXISTS SCHOOL_DISTRICT_BUILDING;
CREATE TABLE SCHOOL_DISTRICT_BUILDING
(
 id INT NOT NULL AUTO_INCREMENT,
 districtid INT COMMENT '所属分校ID',
 building VARCHAR(200) COMMENT '建筑名称',
 sort INT NOT NULL AUTO_INCREMENT COMMENT '楼排序',
 inshow int DEFAULT 1 COMMENT '是否显示：0不显示，1显示',
 PRIMARY KEY (id)
);


DROP TABLE IF EXISTS SCHOOL_DISTRICT_BUILDING_FLOOR;
CREATE TABLE SCHOOL_DISTRICT_BUILDING_FLOOR
(
 id INT NOT NULL AUTO_INCREMENT,
 buildingid INT COMMENT '所属建筑ID',
 floor VARCHAR(200) COMMENT '楼层名称',
 sort INT NOT NULL AUTO_INCREMENT COMMENT '楼层排序',
 inshow int DEFAULT 1 COMMENT '是否显示：0不显示，1显示',
 PRIMARY KEY (id)
);



DROP TABLE IF EXISTS ROOM;
CREATE TABLE ROOM
(
 id INT NOT NULL AUTO_INCREMENT,

 districtid INT COMMENT '所属分校ID',
 districtname VARCHAR(200) COMMENT '分校名称',
 buildingid INT COMMENT '所属建筑ID',
 buildingname VARCHAR(200) COMMENT '建筑名称',
 floorid INT COMMENT '所属楼层ID',
 floorname VARCHAR(200) COMMENT '楼层名称',

 room VARCHAR(200) COMMENT '房间名称',
 frontname VARCHAR(200) COMMENT '正前方名称',
 sort INT NOT NULL AUTO_INCREMENT COMMENT '房间排序',
 inshow INT DEFAULT 1 COMMENT '是否显示：0不显示，1显示',
 rols INT DEFAULT 10 COMMENT '一共多少行',
 cols INT DEFAULT 10 COMMENT '一共多少列',
 seatscount INT DEFAULT 0 COMMENT '一共多少个座位',
 edittime DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后编辑时间',
 PRIMARY KEY (id)
);

-- 房间对应的座位
DROP TABLE IF EXISTS ROOM_SEATS;
CREATE TABLE ROOM_SEATS
(
 id INT NOT NULL AUTO_INCREMENT,
 seatname VARCHAR(200) COMMENT '座位名称',
 seatvalue VARCHAR(200) COMMENT '座位选中后的值',
 roomid INT NOT NULL COMMENT '房间ID',
 roomname VARCHAR(200) COMMENT '房间名称',
 typesid INT DEFAULT 0 COMMENT '关联SEATS_TYPE',
 inshow INT DEFAULT 1 COMMENT '是否显示：0禁用，1可用',
 rol INT COMMENT '行',
 col INT COMMENT '列',
 PRIMARY KEY (id)
);


-- 座位类型
DROP TABLE IF EXISTS SEATS_TYPE;
CREATE TABLE SEATS_TYPE
(
 id INT NOT NULL AUTO_INCREMENT,
 typename VARCHAR(50) COMMENT '名称: 普通,研究生,教师, 勤工助学区等',
 typeval VARCHAR(50) COMMENT '值: 1身份, 2座位区域，对应所有身份',
 colour VARCHAR(50) COMMENT '座位颜色',
 isapply INT DEFAULT 1 COMMENT '0不启用,1启用',
 PRIMARY KEY (id),
 UNIQUE (colour)
);

-- 座位相关设备
DROP TABLE IF EXISTS SEATS_DEVICE;
CREATE TABLE SEATS_DEVICE
(
 id INT NOT NULL AUTO_INCREMENT,
 seatsid INT NOT NULL COMMENT '座位ID',
 deviceid INT NOT NULL COMMENT '设备ID',
 devicename INT NOT NULL COMMENT '设备名称',
 PRIMARY KEY (id)
);

-- 设备表
DROP TABLE IF EXISTS DEVICE;
CREATE TABLE DEVICE
(
 id INT NOT NULL AUTO_INCREMENT,
 name VARCHAR(50) COMMENT '名称: 0电源, 1网口, ...',
 val INT DEFAULT 0 COMMENT '值: 0电源, 1网口, ...',
 isapply INT DEFAULT 1 COMMENT '0不启用,1启用',
 PRIMARY KEY (id)
);

-- 模板
DROP TABLE IF EXISTS TEMPLATE;
CREATE TABLE TEMPLATE
(
 id INT NOT NULL AUTO_INCREMENT,
 name VARCHAR(200) COMMENT '模板名称',
 frontname VARCHAR(200) COMMENT '正前方名称',
 rols INT COMMENT '一共多少行',
 cols INT COMMENT '一共多少列',
 seatscount INT DEFAULT 0 COMMENT '一共多少个座位',
 PRIMARY KEY (id)
);

-- 模板的座位
DROP TABLE IF EXISTS TEMPLATE_SEATS;
CREATE TABLE TEMPLATE_SEATS
(
 id INT NOT NULL AUTO_INCREMENT,
 templateid INT NOT NULL COMMENT '模板ID',
 seatname VARCHAR(200) COMMENT '座位名称',
 seatvalue VARCHAR(200) COMMENT '座位选中后的值',
 typesid INT DEFAULT 0 COMMENT '关联SEATS_TYPE',
 inshow INT DEFAULT 1 COMMENT '是否显示：0禁用，1可用',
 rol INT COMMENT '行',
 col INT COMMENT '列',
 PRIMARY KEY (id)
);



-- 用户信息
DROP TABLE IF EXISTS USER_INFO;
CREATE TABLE USER_INFO (
 id INT NOT NULL AUTO_INCREMENT,
 realname VARCHAR(200) NOT NULL,
 nickname VARCHAR(200) NOT NULL,
 username VARCHAR(200) NOT NULL,
 password VARCHAR(70) NOT NULL,
 usertypeid INT DEFAULT 0 COMMENT '0本科生,1研究生,2教师,3其他',
 islock INT DEFAULT 0 COMMENT '0正常,1锁定',
 source INT DEFAULT 0 COMMENT '0注册,1第三方,3管理员添加',
 head_img VARCHAR(1000),
 PRIMARY KEY (id),
 UNIQUE (username)
);

-- 用户类型
DROP TABLE IF EXISTS USER_INFO_TYPE;
CREATE TABLE USER_INFO_TYPE (
 id INT NOT NULL AUTO_INCREMENT,
 name VARCHAR(50) COMMENT '名称: 0本科生,1研究生,2教师,3其他',
 val VARCHAR(50) COMMENT '值: 0本科生,1研究生,2教师,3其他',
 isapply INT DEFAULT 1 COMMENT '0不启用,1启用',
 PRIMARY KEY (id)
);

-- 用户座位预约
DROP TABLE IF EXISTS USER_SEATS;
CREATE TABLE USER_SEATS (
 id INT NOT NULL AUTO_INCREMENT,
 userid INT NOT NULL,
 username VARCHAR(200) NOT NULL,
 roomid INT NOT NULL COMMENT '所属房间ID',
 room VARCHAR(200) COMMENT '房间名称',
 seatid INT NOT NULL COMMENT '座位ID',
 seatname VARCHAR(200) COMMENT '座位名称',
 seatvalue VARCHAR(200) COMMENT '座位选中后的值',
 duetime DATETIME COMMENT '预约下单时间',
 duestartime DATETIME COMMENT '预约座位开始时间',
 dueendtime DATETIME COMMENT '预约座位结束时间',
 duestatu INT DEFAULT 1 COMMENT '预约状态:1预约成功,2签到成功,3结束',
 PRIMARY KEY (id)
);

-- 用户投诉表
DROP TABLE IF EXISTS USER_COMPLAIN;
CREATE TABLE USER_COMPLAIN (
 id INT NOT NULL AUTO_INCREMENT,
 userid INT NOT NULL,
 username VARCHAR(200) NOT NULL,
 usertypeid INT DEFAULT 0 COMMENT '0本科生,1研究生,2教师,3职工',
 complain VARCHAR(4000),
 committime DATETIME COMMENT '提交时间',
 isdelete INT DEFAULT 0 COMMENT '0未删除,1已删除',
 PRIMARY KEY (id)
);

-- 用户座位维修表
DROP TABLE IF EXISTS USER_REPAIR;
CREATE TABLE USER_REPAIR (
 id INT NOT NULL AUTO_INCREMENT,
 userid INT NOT NULL,
 username VARCHAR(200) NOT NULL,
 usertypeid INT DEFAULT 0 COMMENT '0本科生,1研究生,2教师,3职工',
 repair VARCHAR(4000),
 committime DATETIME COMMENT '提交时间',
 isdelete INT DEFAULT 0 COMMENT '0未删除,1已删除',
 PRIMARY KEY (id)
);


-- 预约规则
DROP TABLE IF EXISTS RULE;
CREATE TABLE RULE (
 id INT NOT NULL AUTO_INCREMENT,
 name VARCHAR(200) NOT NULL,
 startime DATETIME COMMENT '规则开始时间',
 endtime DATETIME COMMENT '规则结束时间',
 circle INT DEFAULT 0 COMMENT '0单次,1每年循环',
 types INT DEFAULT 0 COMMENT '0网络预约,1现场预约',
 signedtimeout INT COMMENT '签到超时分钟',
 stepawaytimeout INT COMMENT '可以暂时离开分钟',
 bookdate INT COMMENT '可预约天数',
 opentime DATETIME COMMENT '可预约放号时间',
 renewaltime INT COMMENT '续座时间分钟',
 canceltime INT DEFAULT 20 COMMENT '预约后可以取消的时间',
 cancelnumber INT DEFAULT 5 COMMENT '预约后可以取消次数',
 PRIMARY KEY (id)
);

-- 预约规则对应的用户类型
DROP TABLE IF EXISTS RULE_USERTYPE;
CREATE TABLE RULE_USERTYPE (
 id INT NOT NULL AUTO_INCREMENT,
 ruleid INT NOT NULL COMMENT '预约规则ID',
 usertypeid INT NOT NULL COMMENT '用户类型ID',
 PRIMARY KEY (id)
);


-- 预约规则违约对应的访问区域
DROP TABLE IF EXISTS RULE_REGION;
CREATE TABLE RULE_REGION (
 id INT NOT NULL AUTO_INCREMENT,
 ruleid INT NOT NULL COMMENT '预约规则ID',
 roomid INT NOT NULL COMMENT '所属房间ID',
 PRIMARY KEY (id)
);

-- 房间对应的预约规则
DROP TABLE IF EXISTS ROOM_RULE;
CREATE TABLE ROOM_RULE (
 id INT NOT NULL AUTO_INCREMENT,
 roomid INT NOT NULL COMMENT '房间ID',
 ruleid INT NOT NULL COMMENT '预约规则ID',
 PRIMARY KEY (id)
);



-- 违反预约规则记录
DROP TABLE IF EXISTS ILLEGA_RECORD;
CREATE TABLE ILLEGA_RECORD (
 id INT NOT NULL AUTO_INCREMENT,
 userid INT NOT NULL,
 username VARCHAR(200) NOT NULL,
 ruleid INT NOT NULL COMMENT '预约规则ID',
 reason VARCHAR(200) COMMENT '违规原因',
 illegatime DATETIME COMMENT '违规时间',
 PRIMARY KEY (id)
);

-- 黑名单列表
DROP TABLE IF EXISTS USER_BLACKLIST;
CREATE TABLE USER_BLACKLIST (
 id INT NOT NULL AUTO_INCREMENT,
 userid INT NOT NULL,
 username VARCHAR(200) NOT NULL,
 types INT DEFAULT 0 COMMENT '0本科生,1研究生,2教师,3其他',
 reason VARCHAR(500) COMMENT '拉黑原因',
 committime DATETIME COMMENT '提交时间',
 isrelease INT DEFAULT 0 COMMENT '是否释放:0否，1释放',
 PRIMARY KEY (id)
);

-- 用户消息
DROP TABLE IF EXISTS MESSAGE_USER;
CREATE TABLE MESSAGE_USER (
 id INT NOT NULL AUTO_INCREMENT,
 userid INT NOT NULL,
 username VARCHAR(200) NOT NULL,
 types INT DEFAULT 0 COMMENT '0本科生,1研究生,2教师,3职工',
 messagetypes INT DEFAULT 0 COMMENT '0系统,1短信',
 message VARCHAR(4000),
 committime DATETIME COMMENT '提交时间',
 isdelete INT DEFAULT 0 COMMENT '0未删除,1已删除',
 PRIMARY KEY (id)
);

-- 管理员消息
DROP TABLE IF EXISTS MESSAGE_ADMIN;
CREATE TABLE MESSAGE_ADMIN (
 id INT NOT NULL AUTO_INCREMENT,
 adminid INT NOT NULL,
 adminname VARCHAR(200) NOT NULL,
 types INT DEFAULT 0 COMMENT '0本科生,1研究生,2教师,3职工',
 messagetypes INT DEFAULT 0 COMMENT '0系统,1短信',
 message VARCHAR(4000),
 committime DATETIME COMMENT '提交时间',
 isdelete INT DEFAULT 0 COMMENT '0未删除,1已删除',
 PRIMARY KEY (id)
);

-- 门禁打卡记录
DROP TABLE IF EXISTS ACCESS_CONTROL_RECORD;
CREATE TABLE ACCESS_CONTROL_RECORD (
 id INT NOT NULL AUTO_INCREMENT,
 accesstime DATETIME COMMENT '刷卡时间',
 PRIMARY KEY (id)
);