微信小程序签到功能


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 相关文章推荐
prototype 的说明 js类
Sep 07 Javascript
javascript模拟的Ping效果代码 (Web Ping)
Mar 13 Javascript
jquery插件制作 提示框插件实现代码
Aug 17 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
Jan 16 Javascript
jquery根据name属性查找的小例子
Nov 21 Javascript
jquery实现的下拉和收缩效果示例
Aug 21 Javascript
js实现图片点击左右轮播
Jul 08 Javascript
JavaScript判断DIV内容是否为空的方法
Jan 29 Javascript
JS实现显示当前日期的实例代码
Jul 03 Javascript
layui实现table加载的示例代码
Aug 14 Javascript
vue最简单的前后端交互示例详解
Oct 11 Javascript
JS实现排行榜文字向上滚动轮播效果
Nov 26 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
PDO::errorCode讲解
2019/01/28 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
Python基于分水岭算法解决走迷宫游戏示例
2017/09/26 Python
python实现windows下文件备份脚本
2018/05/27 Python
python实现扫描ip地址的小程序
2019/04/16 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
大学旷课检讨书
2014/01/28 职场文书
办公室岗位职责
2014/02/12 职场文书
银行职员自我鉴定
2014/04/20 职场文书
给校长的建议书300字
2014/05/16 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
《社戏》教学反思
2016/02/22 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
Python中第三方库Faker的使用详解
2022/04/02 Python
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL