微信小程序签到功能


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+CSS 实现随滚动条增减的汽水瓶中的液体效果
Sep 26 Javascript
JavaScript 产生不重复的随机数三种实现思路
Dec 13 Javascript
JS跨域解决方案之使用CORS实现跨域
Apr 14 Javascript
深入浅析JavaScript中with语句的理解
May 12 Javascript
微信小程序 表单Form实例详解(附源码)
Dec 22 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
Jan 05 Javascript
Vue弹出菜单功能的实现代码
Sep 12 Javascript
Vue通过配置WebSocket并实现群聊功能
Dec 31 Javascript
vue实现户籍管理系统
May 29 Javascript
详谈vue中router-link和传统a链接的区别
Jul 22 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
Nov 16 Javascript
vue3.0 数字翻牌组件的使用方法详解
Apr 20 Vue.js
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通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
微信小程序实现签字功能
2019/12/23 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
Python中psutil的介绍与用法
2019/05/02 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
C语言编程练习
2012/04/02 面试题
体育教师个人的自我评价
2014/02/16 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
人民教师求职自荐信
2014/03/12 职场文书
城市创卫标语
2014/06/17 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
文体活动总结
2015/02/04 职场文书
先进个人总结范文
2015/02/15 职场文书
降价通知函
2015/04/23 职场文书
画展观后感
2015/06/17 职场文书