微信小程序签到功能


Posted in Javascript onOctober 31, 2018

本文实例为大家分享了简易微信小程序签到功能的具体代码,供大家参考,具体内容如下

一、效果图

微信小程序签到功能

点击签到后

微信小程序签到功能

二、数据库

用一张数据表存用户签到的信息,每次用户签到都会往表中添加一条记录了用户id和签到日期的数据,如下图

微信小程序签到功能

三、后端

后端写两个接口,一个用于查询用户今日是否签到和签到记录总数,一个用于添加用户签到信息到数据库。这里用的是python的flask框架。

(1)查询用户签到信息接口:

@app.route('/get_sign/<user_id>')
def get_sign(user_id):
 try:
 data=get_sign_info(user_id)
 except Exception as e:
 return jsonify({'status':0,'Exception':str(e)})
 return jsonify({'status':1,'data':data})

def get_sign_info(user_id):
 conn = sqlite3.connect('test.sqlite')
 cursor = conn.cursor()
 cursor.execute('select date from sign where user_id=?',(user_id,))
 all_date=set([x[0] for x in cursor.fetchall()])
 now_date=date.today().strftime('%Y-%m-%d')//将日期字符串化
 if now_date in all_date:
 signed=True
 else:
 signed=False
 total=len(all_date)
 conn.close()
 return {'total':total,'signed':signed}

查询到所有签到日期后用set去除重复项,然后判断一下当天的日期是否在其中,如果不在其中,signed=False表示今日未签到。签到总数就是all_date的长度

使用了datetime库来获取日期信息。from datetime import date

(2)添加用户签到信息接口:

@app.route('/sign/<user_id>')
def sign(user_id):
 try:
 update_sign(user_id)
 except Exception as e:
 return jsonify({'status':0,'Exception':str(e)})
 return jsonify({'status':1})

def update_sign(user_id):
 now_date=date.today().strftime('%Y-%m-%d')
 conn = sqlite3.connect('test.sqlite')
 cursor = conn.cursor()
 cursor.execute('insert into sign (user_id,date) values(?,?)',\
  (user_id,now_date))
 conn.commit()
 conn.close()

 四、小程序前端

wxml文件

<view class="sign" wx:if="{{isLogin == true}}">
 <image class="image" src='../../dist/images/sign.png'></image>
 <view class="sign_info">
 <view wx:if="{{signed==false}}" bindtap='sign'>点击此处签到</view>
 <view wx:if="{{signed==true}}">今日已签到</view>
 <view>已签到{{total_sign}}天</view>
 </view>
 </view>

wxss文件

.image{
 float:left;
 width: 140rpx;
 height: 140rpx;
 margin-right: 7%;
 margin-left:20%;
}


.sign{
 margin-top: 10%;
}

.sign_info{
 width: 100%;
 color: #666;
 font-size: 43rpx;
}

js文件

get_sign: function(){
 var that = this;
 var userId = wx.getStorageSync("userId");
 wx.request({
 url: 'http://服务器公网ip:80/get_sign/'+userId,
 method: "GET",
 success: function (res) {
 if (res.data.status == 1) {
  that.setData({
  total_sign: res.data.data.total,
  signed: res.data.data.signed,
  })
  }
 else{
  console.log("status error: " + res.data.Exception)
  }
 },
 })
 },

 sign:function(){
 var that = this;
 var userId = wx.getStorageSync("userId");
 wx.request({
 url: 'http://服务器公网ip:80/sign/' + userId,
 method: "GET",
 success: function (res) {
 if (res.data.status == 1) {
  that.setData({
  total_sign: that.data.total_sign+1,
  signed: true,
  })
  wx.showToast({
  title: '成功',
  icon: 'success',
  duration: 2000
  })
 }
 else {
  console.log("status error: " + res.data.Exception)
 }
 },
 })
 },

用户登录后,会立即触发get_sign函数,从数据库获取用户签到信息存到page的data中,页面也会显示用户今日是否签到和签到总数。

用户点击签到后,会保存签到信息,并更新data。用showToast弹窗提示签到成功。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
不错的asp中显示新闻的功能
Oct 13 Javascript
JQuery 学习笔记 选择器之六
Jul 23 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
Jan 06 Javascript
jquery实现点击弹出层效果的简单实例
Mar 03 Javascript
100个不能错过的实用JS自定义函数
Mar 05 Javascript
jquery.cookie.js用法实例详解
Dec 25 Javascript
jQuery获得字体颜色16位码的方法
Feb 20 Javascript
基于jPlayer三分屏的制作方法
Dec 21 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
Feb 08 Javascript
vue elementui form表单验证的实现
Nov 11 Javascript
vue用BMap百度地图实现即时搜索功能
Sep 26 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
Mar 31 Javascript
vue+element-ui实现表格编辑的三种实现方式
Oct 31 #Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
Oct 31 #Javascript
微信小程序实现签到功能
Oct 31 #Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
Oct 31 #Javascript
微信小程序实现自动定位功能
Oct 31 #Javascript
iview在vue-cli3如何按需加载的方法
Oct 31 #Javascript
jQuery+PHP实现上传裁剪图片
Jun 29 #jQuery
You might like
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
JavaScript OOP类与继承
2009/11/15 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
VUEX-action可以修改state吗
2019/11/19 Javascript
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
Python函数中的函数(闭包)用法实例
2016/03/15 Python
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
Python中property函数用法实例分析
2018/06/04 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
微信公众号token验证失败解决方案
2019/07/22 Python
python实现最大优先队列
2019/08/29 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
100句拼搏进取的名言警句,值得一读!
2019/10/07 职场文书
2022漫威和DC电影上映作品
2022/04/05 欧美动漫
MySQL数据库 安全管理
2022/05/06 MySQL