概述
这次的数据库采用了MYSQL,设计了6张表,其实还应该再细分多两三个表出来的,如果再改的话很多表和后台的代码也都要跟着改,都是多表联动,耦合性很强,比较麻烦,因为也能正常运作,索性就没再改了。接下来细说这6张表。
数据库表
数据库的话可以根据自己的习惯命名,我是直接命名为“test”,而对应的6张表分别命名为:
test_user,test_activity,test_handle,test_position,test_power,testdepartment。
需要注意的是这里表的前缀都是“ test ”,如果你命名为其他的话,都要保持一致的前缀,这个前缀会在后面的后台接口配置中使用。
具体如下:
test_user:用户表,一对多,存放用户信息,包括其具有的权限,pid指的是position_id,代表的是用户的职位,其他的都有注释
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20DROP TABLE IF EXISTS `test_user`;
CREATE TABLE `test_user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) CHARACTER SET utf8 NOT NULL,
`user_englishname` varchar(255) DEFAULT NULL,
`user_openid` varchar(255) DEFAULT NULL COMMENT '微信的openid',
`user_num` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '工号',
`user_pid` int(11) NOT NULL COMMENT 'posision id,职位id',
`user_powerid` int(11) NOT NULL COMMENT '权限id',
`user_departmentid` int(11) NOT NULL COMMENT 'department部门id',
`user_ischeck` int(11) NOT NULL DEFAULT '0' COMMENT '有无权限审核别人的活动',
PRIMARY KEY (`user_id`),
KEY `1` (`user_powerid`),
KEY `2` (`user_pid`),
KEY `3` (`user_departmentid`),
KEY `user_name` (`user_name`),
CONSTRAINT `1` FOREIGN KEY (`user_powerid`) REFERENCES `test_power` (`power_id`),
CONSTRAINT `2` FOREIGN KEY (`user_pid`) REFERENCES `test_position` (`position_id`),
CONSTRAINT `3` FOREIGN KEY (`user_departmentid`) REFERENCES `test_department` (`department_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;test_activity:我把请假、出差申请都统称为(活动)acivity,用type来区分它们,time为活动的时长。申请通常都会有初审和终审,并且初审不能为空,终审可以为空。因为有些申请只需要一个人审核就可以了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for test_activity
-- ----------------------------
DROP TABLE IF EXISTS `test_activity`;
CREATE TABLE `test_activity` (
`activity_id` int(11) NOT NULL AUTO_INCREMENT,
`activity_type` int(11) NOT NULL COMMENT 'type判断是请假还是出差。。。1或者2',
`activity_openid` varchar(255) NOT NULL COMMENT 'userid用户id',
`activity_st` datetime NOT NULL COMMENT '活动开始时间',
`activity_et` datetime NOT NULL COMMENT '活动结束时间',
`activity_createtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`activity_address` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '出差地点',
`activity_reson` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '活动事由',
`activity_fristcheck_openid` varchar(255) NOT NULL COMMENT '审核人1的id(用户表)',
`activity_secondcheck_openid` varchar(255) DEFAULT NULL COMMENT '审核人2 的id',
`activity_fristcheck_result` int(11) NOT NULL DEFAULT '0' COMMENT '审核人1的审核结果,同意还是拒绝0或1',
`activity_secondcheck_result` int(11) DEFAULT NULL COMMENT '审核人2的审核结果,同意还是拒绝1或是2',
`activity_allresult` int(11) NOT NULL DEFAULT '1' COMMENT '活动是否完成,默认1为未完成,2为完成,3为拒绝该申请(无效)',
`activity_time` float(11,0) NOT NULL,
PRIMARY KEY (`activity_id`),
KEY `activity_uid` (`activity_openid`)
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=latin1;test_handle:处理表,为审核人查询是否有向自己申请的活动,有的话就要去处理。这里需要注意,每当审核人处理完成后都会删除对应的数据,意思是处理完之后再查询,是查询不到的,因为已经处理完成。而申请人要查看自己的申请完成情况可以查询test_activity表
1
2
3
4
5
6
7
8
9
10
11
12
13SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for test_handle
-- ----------------------------
DROP TABLE IF EXISTS `test_handle`;
CREATE TABLE `test_handle` (
`handle_id` int(11) NOT NULL AUTO_INCREMENT,
`handle_check_uid` varchar(255) NOT NULL COMMENT '审核人id',
`handle_check_activityid` int(11) NOT NULL COMMENT '活动的id',
`handle_one_or_two` int(11) NOT NULL COMMENT '是初审还是终审',
PRIMARY KEY (`handle_id`),
KEY `handle_check_uid` (`handle_check_uid`)
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=latin1;test_position:职位表:代表着用户什么职位,这里可以参照我的测试数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for test_position
-- ----------------------------
DROP TABLE IF EXISTS `test_position`;
CREATE TABLE `test_position` (
`position_id` int(11) NOT NULL AUTO_INCREMENT,
`position_name` varchar(255) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`position_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of test_position
-- ----------------------------
INSERT INTO `test_position` VALUES ('1', '办事员');
INSERT INTO `test_position` VALUES ('2', '专员');
INSERT INTO `test_position` VALUES ('3', '中专');
INSERT INTO `test_position` VALUES ('4', '副经理');
INSERT INTO `test_position` VALUES ('5', '经理');
INSERT INTO `test_position` VALUES ('6', '总经理');test_power:权限表,,管理员有添加用户(新员工),删除用户(员工离职),修改员工权限的能力。这个不多做解释
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for test_power
-- ----------------------------
DROP TABLE IF EXISTS `test_power`;
CREATE TABLE `test_power` (
`power_id` int(11) NOT NULL AUTO_INCREMENT,
`power_name` varchar(255) NOT NULL COMMENT '权限名称',
PRIMARY KEY (`power_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of test_power
-- ----------------------------
INSERT INTO `test_power` VALUES ('1', 'admin');
INSERT INTO `test_power` VALUES ('2', 'user');test_department:部门
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for test_department
-- ----------------------------
DROP TABLE IF EXISTS `test_department`;
CREATE TABLE `test_department` (
`department_id` int(11) NOT NULL AUTO_INCREMENT,
`department_name` char(255) NOT NULL,
PRIMARY KEY (`department_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of test_department
-- ----------------------------
INSERT INTO `test_department` VALUES ('1', '人事组');
INSERT INTO `test_department` VALUES ('2', '电商组');
INSERT INTO `test_department` VALUES ('3', 'IT组');