微信小程序签到功能


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 相关文章推荐
javascript hashtable 修正版 下载
Dec 30 Javascript
JScript分割字符串示例代码
Sep 04 Javascript
JS的参数传递示例介绍
Feb 08 Javascript
javascript常用的正则表达式实例
May 15 Javascript
jQuery使用height()获取高度需要注意的地方
Dec 13 Javascript
深入浅出理解javaScript原型链
May 09 Javascript
jquery验证手机号是否正确实例讲解
Nov 17 Javascript
Node.js 条形码识别程序构建思路详解
Feb 14 Javascript
几种tab切换详解
Feb 03 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
Aug 16 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
Nov 21 Javascript
JavaScript基础之this和箭头函数详析
Sep 05 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
php获取字段名示例分享
2014/03/03 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
跨浏览器的事件对象介绍
2012/06/27 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python执行时间的计算方法小结
2017/03/17 Python
Python查询IP地址归属完整代码
2017/06/21 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
python 内置函数汇总详解
2019/09/16 Python
使用python实现名片管理系统
2020/06/18 Python
Python实现区域填充的示例代码
2021/02/03 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
超市采购员岗位职责
2014/02/01 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
pandas中pd.groupby()的用法详解
2022/06/16 Python