微信小程序签到功能


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 相关文章推荐
很酷的javascript loading效果代码
Jun 18 Javascript
jqTransform form表单美化插件使用方法
Jul 05 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
Jul 15 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
Sep 21 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
Aug 23 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
Jan 09 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
Mar 29 Javascript
jQuery实现轮播图及其原理详解
Apr 12 jQuery
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
Mar 16 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
Mar 19 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
Dec 16 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
Jul 30 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 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
Node.js编码规范
2014/07/14 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
小程序实现多列选择器
2019/02/15 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
在Python中使用元类的教程
2015/04/28 Python
pygame播放音乐的方法
2015/05/19 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
Python 转换文本编码实现解析
2019/08/27 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
Python更新所有已安装包的操作
2020/02/13 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
哈理工毕业生的求职信
2013/12/22 职场文书
个人向公司借款协议书
2014/10/09 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers