微信小程序签到功能


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 相关文章推荐
jquery 经典动画菜单效果代码
Jan 26 Javascript
jQuery判断对象是否存在的方法
Feb 05 Javascript
Jquery结合HTML5实现文件上传
Jun 25 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
Apr 15 Javascript
使用jsonp实现跨域获取数据实例讲解
Dec 25 Javascript
JS给按钮添加跳转功能类似a标签
May 30 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
vue与TypeScript集成配置最简教程(推荐)
Oct 17 Javascript
vue获取当前点击的元素并传值的实例
Mar 09 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 Javascript
Vue简单实现原理详解
May 07 Javascript
uniapp实现可以左右滑动导航栏
Oct 21 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利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
WebPack配置vue多页面的技巧
2018/05/15 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
Python中使用不同编码读写txt文件详解
2015/05/28 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
巴西在线鞋店:Shoestock
2017/10/28 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
交通专业个人自荐信格式
2013/09/23 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
检讨书范文1000字
2015/01/28 职场文书
保姆聘用合同
2015/09/21 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技