微信小程序签到功能


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代码
Jan 01 Javascript
ExtJS下grid的一些属性说明
Dec 13 Javascript
JavaScript中合并数组的N种方法
Sep 16 Javascript
jQuery中unbind()方法用法实例
Jan 19 Javascript
jQuery实现跨域iframe接口方法调用
Mar 14 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
Mar 18 Javascript
Bootstrap每天必学之简单入门
Nov 19 Javascript
JavaScript轮播图简单制作方法
Feb 20 Javascript
vue父组件中获取子组件中的数据(实例讲解)
Sep 27 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
Dec 25 Javascript
Vue 使用formData方式向后台发送数据的实现
Apr 14 Javascript
vue 使用高德地图vue-amap组件过程解析
Sep 07 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
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
详解Python的Django框架中的模版相关知识
2015/07/15 Python
JSON Web Tokens的实现原理
2017/04/02 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
Python中的默认参数实例分析
2018/01/29 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
详解python里的命名规范
2018/07/16 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
工程地质勘察专业大学生求职信
2013/10/13 职场文书
教师自我反思材料
2014/02/14 职场文书
《三峡》教学反思
2014/03/01 职场文书
人力资源管理求职信
2014/08/07 职场文书
教师暑期培训感言
2014/08/15 职场文书
房屋认购协议书
2015/01/29 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS