要求:导入班级花名册Excel,发起考勤,生成考勤码,获取微信定位,签到后可以看到考勤结果,特殊情况老师可以手动帮学生签到。
数据库设计:分别为花名册表,没签到的人,签到的人,考勤信息设置表,学生表,老师表。
花名册表,groupid为老师的openid加六位随机数字,stuNum为学号,name为名字,cla为班级,state为签到状态。
没签到人表:day日期,courceTime课程节数,roomNum教室号这三个属性可以唯一定位一场考勤。用于后续查找考勤历史。
签到人表:
考勤信息设置表:
time为考勤截止时间,latitude为维度,longitude为经度,ma为考勤码,随机生成六位数字。
学生表:
老师表:
当时设计数据库时,主要感觉困难在于考勤信息的历史记录查询和最近一次考勤记录。开始想的是老师之间通过openid识别,同一老师的不同花名册通过groupid识别,hcmState用来标识同一老师的哪个花名册在使用。后面写代码做这个发现果然理想是美好的,现实是骨感的。这样,做历史和最近有点麻烦,后来就用day日期,courceTime课程节数,roomNum教室号这三个属性来做历史。最近是靠老师表的grouid和hmcstate来定位最近考勤的。
考勤成功是要在规定时间内和规定距离内才能做到。时间我是简单化处理的,当时设置考勤信息时,我就把考勤信息设置时间加有效时间作为截止时间,后面学生点击签到按钮时会判定距离是不是在50m内(微信定位我用着有点误差),在50m内,就判定当前时间是不是小于截止时间,小于就可以签到成功,并返回签到成功提示,失败就返回迟到提示。