通過微信小程序來實(shí)現(xiàn) “釘釘打卡”

需求背景

產(chǎn)品希望統(tǒng)計(jì)我們公司線下人員的考勤情況,釘釘?shù)墓δ苣壳安荒軡M足一天多次外勤打卡的需求,于是我們打算自己開發(fā)一套打卡系統(tǒng)。我們的線下工作人員日常使用的是我們內(nèi)部的一個(gè)微信小程序,產(chǎn)品希望將外勤打卡的功能在小程序上實(shí)現(xiàn)。方便線下人員在同一個(gè)平臺(tái)上操作。

微信小程序外勤打卡

我們線下工作人員遍布全國(guó)各地,每個(gè)人的工作地點(diǎn)可能各不一樣,怎樣讓線下工作人員在指定的地方打卡呢?

1.如何確定打卡的對(duì)象和范圍

為了方便統(tǒng)一打卡管理,添加一個(gè)模塊給志愿者管理人員,由管理者添加外勤對(duì)象,線下工作者根據(jù)當(dāng)前的定位,選擇匹配到方圓1公里的外勤對(duì)象,選擇對(duì)應(yīng)要打卡的對(duì)象進(jìn)行打卡。

外勤對(duì)象: 線下工作者打卡的目標(biāo)地

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

外勤打卡呢,一個(gè)線下工作一天要跑多個(gè)工作地點(diǎn),每個(gè)地點(diǎn)都要進(jìn)行打卡,如何保證一天多次打卡呢?產(chǎn)品希望他們每次出勤都有對(duì)應(yīng)的簽到和簽退,沒完成簽退,不可以新建一次外勤,每次簽到成功就創(chuàng)建了一次外勤,簽退不限制地點(diǎn),可以進(jìn)行隨時(shí)簽退,這樣就保證了每次出勤都是成對(duì)的。

一次外勤:一對(duì)簽到和簽退,要先完成簽退,才能到下個(gè)地點(diǎn)進(jìn)行簽退。

3.打卡定位

針對(duì)打卡功能,我們選用微信小程序開發(fā)里面的位置api:定位、和選點(diǎn)定位。

位置所有api

位置api調(diào)用前需要 先 用戶授權(quán) scope.userLocation。

這次主要使用的兩個(gè)位置api:

  • wx.chooseLocation 打開地圖選擇位置;
  • wx.getLocation 獲取當(dāng)前的地理位置。

對(duì)經(jīng)緯度進(jìn)行逆解析需要申請(qǐng)騰訊地圖的 key申請(qǐng)開發(fā)者密鑰(Key)。

來來來,簽到了:

外勤簽到

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

  • MD5加密

考慮到有可能通過抓包提交經(jīng)緯度來進(jìn)行打卡,我們前后端統(tǒng)一指定了一套打卡加密機(jī)制。我們采用的 MD5加密,對(duì)經(jīng)緯度、時(shí)間戳、小程序密鑰等組合加密,前端每次打卡,都要加密后32密鑰傳給后端,后端校驗(yàn)通過后,才可以打卡。這樣就可以阻止部分通過接口打卡的騷操作了。

  • 打卡自拍

我們要求每次簽到簽退都要進(jìn)行自拍,雖然不能完全杜絕刷打卡,但卻可以 避免一部分作弊。

最終我們的打卡:

打卡啦

小結(jié)

最后對(duì)于開發(fā)團(tuán)隊(duì)的總結(jié), 前端主動(dòng)驅(qū)動(dòng),需求評(píng)估后,提前想好解決方案,盡量減少非預(yù)知問題,需求評(píng)估后可以提前做個(gè)demo,對(duì)技術(shù)選型、功能的實(shí)現(xiàn)程度,以及需求的開發(fā)周期的有個(gè)大致預(yù)期。

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容