微信小程序--每日签到
前言
小程序在版本更新的时候,海轰准备添加一个每日签到的功能,也就是每个用户每天可以进行一次签到,获得一个积分。看似挺简单的每日签到,海轰还是琢磨了一下午的。
整体思路
- 第一步肯定是要判断用户是否授权了小程序,因为后面需要用到用户的详细信息,不授权,无法进行判断。判断是否授权,可以参考微信开发文档
- 第二步是判断用户是否在users记录中(users:用来存储登录小程序的用户集),若不存在,则上传用户信息到users中,存在则更新信息。
- 第三步,判断用户今日是否签到,这里海轰采用了一种比较笨的方法,在每一个用户信息记录中,额外增加了time字段,用来存入用户签到小程序的时间(年-月-日)。每一次签到之前,需要判断今日日期是否与time中的日期一致,一致则代表已签到。
程序运行界面
代码讲解
1.判断用户是否授权
// 查看是否授权wx.getSetting({success(res) {if (res.authSetting['scope.userInfo']) {// 已经授权,可以直接调用 getUserInfo 获取头像昵称wx.getUserInfo({success: function (res) {console.log(res.userInfo)k.setData({name: res.userInfo.nickName,img: res.userInfo.avatarUrl})}})}else{k.setData({isempower:false})}}})
2.判断用户是否存在于users记录中
db.collection('users').where({_openid: openid // 填入当前用户 openid}).count().then(res => {console.log(res.total)// 若users记录中没有该用户 则上传用户信息if(res.total==0){db.collection('users').add({// data 字段表示需新增的 JSON 数据data: {user_openid:openid,user_name:name,user_img:img,time:time,nums:0}}).then(res => {console.log("上传用户成功")wx.hideLoading()}).catch(console.error)}// 存在该用户else{console.log("存在该用户,不用重新上传")wx.hideLoading()}})k.setData({isempower: true,name:name,img:img})}
3.签到
// 签到signed(e){var k=thisvar openid=k.data.openidvar name=k.data.namevar img=k.data.imgvar time=k.data.timewx.showLoading({title: '签到中...',mask: true})// 防止老用户 已经授权 但users记录中没有该用户信息db.collection('users').where({_openid: openid // 填入当前用户 openid}).count().then(res => {console.log(res.total)// 没有该用户if(res.total==0){db.collection('users').add({// data 字段表示需新增的 JSON 数据data: {user_openid: openid,user_name: name,user_img: img,time:time}}).then(res => {console.log("上传用户成功,下一步进行积分更新")wx.cloud.callFunction({// 要调用的云函数名称name: 'HHPro_functions',// 传递给云函数的event参数data: {function_name: "update_nums",time: time,openid:openid}}).then(res => {console.log("积分+1")wx.hideLoading()k.setData({issigned: true})k.onLoad()}).catch(err => {})}).catch(console.error)}// 有该用户 则更新积分 +1else{wx.cloud.callFunction({// 要调用的云函数名称name: 'HHPro_functions',// 传递给云函数的event参数data: {function_name:"update_nums",time:time,openid: openid}}).then(res => {console.log("积分+1")k.setData({issigned: true})wx.hideLoading()k.onLoad()}).catch(err => {})}})},
总结
开始的时候,感觉也是不好做,但是仔细思考,其实并不难。
只需要弄清楚一些逻辑关系即可。
有一些用户授权了,之后可能存在于users记录,也有可能不在
有些用户未授权,也有可能存在users记录(授权过期等情况)…
总之,逻辑一定要理清楚!!!
项目源码
需要源码的小伙伴
请前往海轰的微信公众号:海轰Pro
回复:海轰
即可
微信小程序--每日签到相关推荐
- python玩微信小程序游戏_使用python实现微信小程序自动签到功能
功能描述目标 完成多账号微信小程序每天自动签到 输出 签到成功则向微信群发送签到成功的信息 否则提示用户签到失败,需手动签到 包管理 requests itchat time threading 程序 ...
- 使用python实现微信小程序自动签到2.0
微信小程序自动签到 功能描述 目标 输出 包管理 程序的结构设计 步骤1 步骤2 步骤3 步骤4 代码实现 使用findler抓包工具查看请求类型 再次使用findler抓包,查看请求内容 使用多线程 ...
- 毕业设计-基于微信小程序的签到系统
目录 前言 课题背景与简介 实现设计思路 一.微信公众号和微信小程序 二.基于微信小程序的签到系统设计 三.签到系统应用流程 实现效果样例 更多帮助 前言
- 微信小程序 考勤签到助手 源码demo
#微信小程序 考勤签到助手 此小程序已经上线,大家可以去微信小程序搜索 "桂电考勤小助手" 体验一下实际效果! 此小程序完全自己独立开发,对于真正的大牛来说不算什么,所以还是决定开 ...
- php后台 微信小程序 考勤签到助手
下载地址:https://download.csdn.net/download/a13689028602/20665932 项目介绍 php后台 微信小程序 考勤签到助手 系统说明 Client 文件 ...
- 微信小程序——每日卡路里
0.前言 这一个多月从零开始做了一个微信小程序,主要是决定深入学习前端知识,恰逢腾讯举办了第一届微信小程序大赛,参加了比赛做了一个简单的微信小程序作为练手,下面正式介绍这个小程序. 1.开始 开始是快 ...
- 微信小程序日历签到组件(原创)
微信小程序日历签到组件(原创) 开发原因: 为满足定制需要,市面上又找不到车子和轮子,干脆自己撸了并开源分享有需要的人用 其他说明: 该组件js日期均已使用yyyy/MM/dd格式连接解决ios不兼容 ...
- 基于微信小程序的签到平台的研究与设计
0 引言 为解决传统签到耗时长. 效率低等问题, 出现了多种签到形式, 包含硬件和软件两种, 但是现存的技术存在一定的缺陷. 为此, 设计出实现高效率.高可信度的签到平台是非常重要的. 手机安装最多. ...
- 微信小程序考勤签到管理系统
<微信小程序考勤管理系统+后台管理系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序做的考勤前台和Java做的后台管理系统: 微信小程序-- ...
最新文章
- R语言在可视化图像中添加文本(Adding Text to plot)
- 大咖来信|浪潮刘军:AI计算将成为“新基建”核心支撑之一
- Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐[转]
- Writing a Tile Engine in JavaFX
- CPU 到底是怎么认识代码的?涨姿势了!
- Couchbase 介绍 - 更好的 Cache 系统
- java.lang.ClassNotFoundException: com.sap.exception.GlobalDefaultExceptionHandler
- iOS绘圆形图-CGContextAddArc各参数说明
- C# 代码生成器 (存储过程生成方法)
- 目前为止最全的微信小程序项目实例
- Photoshop插件-删除所有亮度通道蒙板-脚本开发-PS插件
- MAC和IP地址伪造发包
- Nginx 412 Precondition Failed
- 同一台电脑安装两个版本的jdk和jre
- 二元函数最大最小值定理证明_求函数最小最大值定理的证明
- 获取客户端真实ip的方法
- docker最全笔记速查,逻辑清晰
- android textview 显示表情和文字 表情带超链接
- 因果推断1:Counterfactual Prediction for Bundle Treatment(NeurIPS 2020)
- 网页视频直播、微信视频直播技术解决方案:EasyNVR与EasyDSS流媒体服务器组合之区分不同场景下的直播接入需求
热门文章
- 中文乱码解决及中文编码成UTF8
- Android 5.1 - 7.1 系统(framework)定制、修改、移植、总结 - 上篇
- 【电赛合集】19电磁炮.zip、17板球.zip、15风力摆.zip、13倒立摆.zip、(1994-2021)全国大学生电子设计竞赛历年真题.zip
- poj3208 Apocalypse Someday 题解报告
- 如何使用origin求图线交点坐标
- matlab矩阵处理实验二,实验二MATLAB矩阵分析与处理
- 1、迪文屏基于T5L_C51开发手势6宫格解锁
- scala中object和class的理解---apply方法是初始化方法
- 【博主已解决】win10系统wlan消失 网络适配器出现黄色感叹号(代码56)
- PayPal个人户可以绑定义乌个体户结汇是真的吗