微信小程序签到功能


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关于页面焦点的定位(文本框获取焦点时改变样式 )
Sep 10 Javascript
js添加table的行和列 具体实现方法
Jul 22 Javascript
封装了一个支持匿名函数的Javascript事件监听器
Jun 05 Javascript
深入理解javascript作用域和闭包
Sep 23 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
Jun 20 Javascript
有关文件上传 非ajax提交 得到后台数据问题
Oct 12 Javascript
jquery获取下拉框中的循环值
Feb 08 Javascript
详解Angular5 服务端渲染实战
Jan 04 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
Jan 20 Javascript
微信小程序使用canvas的画图操作示例
Jan 18 Javascript
解决LayUI数据表格复选框不居中显示的问题
Sep 25 Javascript
JavaScript鼠标悬停事件用法解析
May 15 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 使用GD库为页面增加水印示例代码
2014/03/24 PHP
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
微信小程序实现九宫格抽奖
2020/04/15 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
详解element-ui中form验证杂记
2019/03/04 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
Python网络爬虫实例讲解
2016/04/28 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
Python实现二维数组输出为图片
2018/04/03 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
软件测试工程师结构化面试题库
2016/11/23 面试题
国际商务系学生个人的自我评价
2013/11/26 职场文书
幼儿园园长岗位职责
2013/11/26 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
学生宿舍管理制度
2014/01/30 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
运动会1000米加油稿
2015/07/21 职场文书
Python自动化爬取天眼查数据的实现
2021/06/15 Python