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层)

       <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.14.3</version>
        </dependency>

12 创建新员工人脸模型数据(业务层)

13 创建新员工人脸模型数据(Web层)

14-1 实现人脸签到(移动端)

设计签到成功页面

  • 内容
    • 用户信息
    • 签到信息
    • 考勤统计
      • 总考勤天数
      • 本周考勤统计
        • 先查询出本周考勤记录、特殊工作日和节假日
        • 用DateUtil.range()生成本周的七天日期对象
        • 用本周每天日期查询当天的考勤情况
          • 先断定当天是工作日还是节假日
          • 未来的日子考勤结果为空字符串
          • 当天考勤结束前,没考勤的结果为空字符串
          • 工作日没有考勤记录就算旷工
  • 展示页面内容

15-2 实现人脸签到(移动端)

月考勤页面

  • 用户可以到月考勤页面查看自己的考勤
  • 用户页面
    • 进入到月考勤页面的链接
    • 移动端权限验证
      • 用户登陆后权限列表保存在Storage里面
      • 用Storage中的权限和目标权限做比较
    • 设计页面,加载数据

16 章节总结

posted @ 2021-11-05 11:10  小沈曰  阅读(510)  评论(0编辑  收藏  举报