美文网首页微信小程序开发
通过微信小程序来实现 “钉钉打卡”

通过微信小程序来实现 “钉钉打卡”

作者: 尤小小 | 来源:发表于2020-04-28 11:04 被阅读0次

    需求背景

    产品希望统计我们公司线下人员的考勤情况,钉钉的功能目前不能满足一天多次外勤打卡的需求,于是我们打算自己开发一套打卡系统。我们的线下工作人员日常使用的是我们内部的一个微信小程序,产品希望将外勤打卡的功能在小程序上实现。方便线下人员在同一个平台上操作。

    微信小程序外勤打卡

    我们线下工作人员遍布全国各地,每个人的工作地点可能各不一样,怎样让线下工作人员在指定的地方打卡呢?

    1.如何确定打卡的对象和范围

    为了方便统一打卡管理,添加一个模块给志愿者管理人员,由管理者添加外勤对象,线下工作者根据当前的定位,选择匹配到方圆1公里的外勤对象,选择对应要打卡的对象进行打卡。

    外勤对象: 线下工作者打卡的目标地

    2.如何保证一天多次打卡

    外勤打卡呢,一个线下工作一天要跑多个工作地点,每个地点都要进行打卡,如何保证一天多次打卡呢?产品希望他们每次出勤都有对应的签到和签退,没完成签退,不可以新建一次外勤,每次签到成功就创建了一次外勤,签退不限制地点,可以进行随时签退,这样就保证了每次出勤都是成对的。

    一次外勤:一对签到和签退,要先完成签退,才能到下个地点进行签退。

    3.打卡定位

    针对打卡功能,我们选用微信小程序开发里面的位置api:定位、和选点定位。

    位置所有api

    位置api调用前需要 先 用户授权 scope.userLocation。

    这次主要使用的两个位置api:

    • wx.chooseLocation 打开地图选择位置;
    • wx.getLocation 获取当前的地理位置。

    对经纬度进行逆解析需要申请腾讯地图的 key申请开发者密钥(Key)

    来来来,签到了:

    外勤签到

    4.如何防止通过刷接口打卡?

    • MD5加密

    考虑到有可能通过抓包提交经纬度来进行打卡,我们前后端统一指定了一套打卡加密机制。我们采用的 MD5加密,对经纬度、时间戳、小程序密钥等组合加密,前端每次打卡,都要加密后32密钥传给后端,后端校验通过后,才可以打卡。这样就可以阻止部分通过接口打卡的骚操作了。

    • 打卡自拍

    我们要求每次签到签退都要进行自拍,虽然不能完全杜绝刷打卡,但却可以 避免一部分作弊。

    最终我们的打卡:

    打卡啦

    小结

    最后对于开发团队的总结, 前端主动驱动,需求评估后,提前想好解决方案,尽量减少非预知问题,需求评估后可以提前做个demo,对技术选型、功能的实现程度,以及需求的开发周期的有个大致预期。

    参考

    相关文章

      网友评论

        本文标题:通过微信小程序来实现 “钉钉打卡”

        本文链接:https://www.haomeiwen.com/subject/rafvwhtx.html