产品希望统计我们公司线下人员的考勤情况,钉钉的功能目前不能满足一天多次外勤打卡的需求,于是我们打算自己开发一套打卡系统。我们的线下工作人员日常使用的是我们内部的一个微信小程序,产品希望将外勤打卡的功能在小程序上实现。方便线下人员在同一个平台上 *** 作。
我们线下工作人员遍布全国各地,每个人的工作地点可能各不一样,怎样让线下工作人员在指定的地方打卡呢?
为了方便统一打卡管理,添加一个模块给志愿者管理人员,由管理者添加外勤对象,线下工作者根据当前的定位,选择匹配到方圆1公里的外勤对象,选择对应要打卡的对象进行打卡。
外勤打卡呢,一个线下工作一天要跑多个工作地点,每个地点都要进行打卡,如何保证一天多次打卡呢?产品希望他们每次出勤都有对应的签到和签退,没完成签退,不可以新建一次外勤,每次签到成功就创建了一次外勤,签退不限制地点,可以进行随时签退,这样就保证了每次出勤都是成对的。
针对打卡功能,我们选用微信小程序开发里面的位置api:定位、和选点定位。
这次主要使用的两个位置api:
来来来,签到了:
考虑到有可能通过抓包提交经纬度来进行打卡,我们前后端统一指定了一套打卡加密机制。我们采用的 MD5加密,对经纬度、时间戳、小程序密钥等组合加密,前端每次打卡,都要加密后32密钥传给后端,后端校验通过后,才可以打卡。这样就可以阻止部分通过接口打卡的骚 *** 作了。
我们要求每次签到签退都要进行自拍,虽然不能完全杜绝刷打卡,但却可以 避免一部分作弊。
最终我们的打卡:
最后对于开发团队的总结, 前端主动驱动,需求评估后,提前想好解决方案,尽量减少非预知问题,需求评估后可以提前做个demo,对技术选型、功能的实现程度,以及需求的开发周期的有个大致预期。
一、第一步,打开微信小程序开发工具,新建界面对应的JS文件,注意Page对象。
二、第二步,如果想要获取正在调试的手机或工具的品牌,可以使用brand。
三、第三步,微信小程序开发过程中,可以设置字体大小,使用fontSizeSetting查看。
四、第四步,查看使用的工具中使用的是哪种语言,可以使用language。
五、第五步,除了可以查看手机品牌,还可以查看手机型号,使用mode属性。
六、第六步,如果要查看设备像素比,可以使用pixelRatio属性。
扩展资料:
微信小程序如何找到?
一、打开手机微信,向下滑动屏幕就能看到你最近常用的小程序。
二、另外在发现页,最下面有“小程序”,可以找到使用过的小程序。
三、你也可以通过搜索和“附近的小程序”查找。
参考资料:
微信小程序提示短信配置填写的方法详细内容如下:
第一步:填写服务器配置
登录微信小程序官网后,在小程序官网的“设置-消息服务器”页面,管理员扫码启用消息服务,填写服务器地址(URL)、Token 和 EncodingAESKey。
URL是开发者用来接收微信消息和事件的接口URL。 Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。 EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥,同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。可以选择消息数据格式:XML格式或JSON格式。加密方式的默认状态是明文格式,而数据格式的默认状态是XML格式,模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。
第二步:验证消息来自微信服务端,开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:
参数描述
signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp时间戳
nonce随机数
echostr随机字符串
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下: 1、将token、timestamp、nonce三个参数进行字典序排序 2、将三个参数字符串拼接成一个字符串进行sha1加密 3、开发者获得加密后的字符串可与signature对比,标识该请求来源于微信,要注意的是签名验证通过之后,要返回的echostr字段是字符串,而不是对象。如果返回写的是 ctxbody = { echostr }就会显示token验证失败。
第三步:依据接口文档实现业务逻辑,验证URL有效性成功后即接入生效,成为开发者。至此用户向小程序客服发送消息、或者进入会话等情况时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应。祝您生活愉快,谢谢提问
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)