微信小程序签到功能


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 相关文章推荐
大家未必知道的Js技巧收藏
Apr 07 Javascript
node.js中的fs.renameSync方法使用说明
Dec 16 Javascript
jQuery中:disabled选择器用法实例
Jan 04 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
Vue源码学习之初始化模块init.js解析
Nov 02 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
Nov 20 Javascript
angularjs 动态从后台获取下拉框的值方法
Aug 13 Javascript
15分钟深入了解JS继承分类、原理与用法
Jan 19 Javascript
Vue批量图片显示时遇到的路径被解析问题
Mar 28 Javascript
js利用iframe实现选项卡效果
Aug 09 Javascript
Vue与React的区别和优势对比
Dec 18 Vue.js
如何用Node.js编写内存效率高的应用程序
Apr 30 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
php生成静态文件的多种方法分享
2012/07/17 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
基于JQuery的多标签实现代码
2012/09/19 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
javascript特殊用法示例介绍
2013/11/29 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
python轻松实现代码编码格式转换
2015/03/26 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
Django组件cookie与session的具体使用
2019/06/05 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
安阳殷墟导游词
2015/02/10 职场文书
护林员个人总结
2015/03/04 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript