EMOS个人教程-第7章 人脸考勤签到进阶篇
1 章节介绍
2 签到业务流程
3 开通腾讯位置服务
- 开通腾讯位置服务
- 特点
- 免费注册
- 每天提供1万次的API调用
- 可以把GPS坐标转换成地址
- 提供了JavaScript接口
- 创建密钥
- 在小程序中添加腾讯位置服务为合法域名
- 特点
- 获取GPS坐标
- 把坐标转换成地址
4 把定位坐标转换成真实地址
5 在Docker中安装人脸识别镜像
[root@localhost ~]# cd /etc/sysconfig/
[root@localhost sysconfig]# cat selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
SELINUX=enforcing 改为 disabled
修改完重启 reboot
安装docker并启动
yum install docker -y
systemctl start docker
上传影像
docker load < face.tar.gz
解压配置文件
tar -xvf demo.tar
创建容器
docker run -itd -p 3000:3000 -v ~/demo:/demo --name st_face face
docker rm st_face
docker start st_face
docker stop st_face
进入容器后,进入demo文件夹,运行python命令
docker exec -it st_face /bin/sh
cd demo
nohup python3 -c "from app import app;" > log.out 2>&1 &
查看进程
ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 169072 13236 pts/0 Ssl+ 02:07 0:00 /usr/bin/qemu-x
root 10 0.0 0.3 152532 6684 pts/1 Ssl 02:07 0:00 /usr/bin/qemu-x
root 37 0.0 0.4 187200 9684 ? Rl+ Oct30 0:00 /bin/ps -aux
[1] + Illegal instruction nohup python3 -c "from app import app;" 1>log.out 2>&1
查看网络端口
ip addr
6 运行人脸识别程序
7 实现人脸签到(持久层)
- 先判断签到用户是否存在人脸模型?
- 用签到照片比对人脸模型,识别签到人
- 根据签到地址判断新冠疫情风险等级
- 向本地宝H5页面传入URL参数查询疫情风险等级
- 理由jsoup解析HTML页面中的数据
- 高风险则发出告警邮件
- 异步多线程发送邮件
- 不会阻塞签到业务
- 多线程发送邮件,速度更快
- 导入Email库
- 配置SMTP服务器
- 定义常用企业邮箱
- 发送邮件
- 创建线程池
- 创建线程任务
- 异步多线程发送邮件
- 存储签到结果
- 每天只能签到1次
- 测试的时候要删除当天已有的签到记录
8 实现人脸签到(业务层)
9 查询签到所在地区新冠疫情风险等级
10 发送疫情高风险地区告警邮件
11 实现人脸签到(Web层)
org.jsoup
jsoup
1.14.3
12 创建新员工人脸模型数据(业务层)
13 创建新员工人脸模型数据(Web层)
14-1 实现人脸签到(移动端)
设计签到成功页面
- 内容
- 用户信息
- 签到信息
- 考勤统计
- 总考勤天数
- 本周考勤统计
- 先查询出本周考勤记录、特殊工作日和节假日
- 用DateUtil.range()生成本周的七天日期对象
- 用本周每天日期查询当天的考勤情况
- 先断定当天是工作日还是节假日
- 未来的日子考勤结果为空字符串
- 当天考勤结束前,没考勤的结果为空字符串
- 工作日没有考勤记录就算旷工
- 展示页面内容
15-2 实现人脸签到(移动端)
月考勤页面
- 用户可以到月考勤页面查看自己的考勤
- 用户页面
- 进入到月考勤页面的链接
- 移动端权限验证
- 用户登陆后权限列表保存在Storage里面
- 用Storage中的权限和目标权限做比较
- 设计页面,加载数据