简易微信小程序签到功能

一、效果图

  点击签到后

二、数据库

  用一张数据表存用户签到的信息,每次用户签到都会往表中添加一条记录了用户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弹窗提示签到成功。

原文地址:https://www.cnblogs.com/luozx207/p/9525042.html

时间: 2024-07-28 13:51:48

简易微信小程序签到功能的相关文章

[转] 扩展微信小程序框架功能

通过第三方 JavaScript 库,扩展微信小程序框架功能. 扩展微信小程序框架功能(1)——Promise ES6 对 Promise 有了原生的支持,但微信开发者工具更新版本(0.11.112200)后, 移除了开发者工具对 ES6 中Promise 特性原生的支持, 需要引入第三方的 Promise 库. 扩展微信小程序框架功能(2)——Generator Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同. 扩展微信小程序框架功能(3)——函数功能增强

微信小程序支付功能 C# .NET开发

微信小程序支付功能的开发的时候坑比较多,不过对于钱的事谨慎也是好事.网上关于小程序支付的实例很多,但是大多多少有些问题,C#开发的更少.此篇文档的目的是讲开发过程中遇到的问题做一个备注,也方便其他开发的同学作为参考! 1.首先建议把官方文档支付部分看上三遍,每个细节都不要放过,因为任何一个点和微信要求不符都会导致支付不成功.https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=3_1 2.经过验证的微信支付功能,会需要一些商

微信小程序超强功能,震惊了十亿微民!

微信小程序(应用号)就是用户关注了一个应用号,就像安装了一个App一样.这样微信将被打造成一个全新的appstore,而每一个应用号就是一个个的webapp. 怎么理解这个概念? 下载安装 app 太麻烦了,微信的小程序就可以满足你:安装 / 卸载 / 使用小程序,就像关注 / 取关 / 进入公众号一样简单:你用完就可以走,不用担心装个 app 占你空间. 微信小程序(应用号)有几个功能? 1.微信小程序(应用号)能实现对App个性功能的完美支持.这项服务就是将App的独立功能通过微信应用号开放

店铺无缝对接一号旺铺小程序 盘点微信小程序新增功能

前段时间,笔者写过一篇<不开发,商家店铺如何快速接入微信一号旺铺小程序>的文章.结果反响平平,无人问津.所以,笔者就在想,也许小程序真的大势已去. 盘点迄今为止微信小程序增加的功能:价值提升,商家福音到了! 盘点迄今为止微信小程序增加的功能:价值提升,商家福音到了! 但是,就在本人下定决心以后少关注小程序的当口,腾讯似乎终于觉醒了,张小龙也终于向现实低头妥协,微信官方宣布的小程序新增功能绝地反击,热乎了众多商家的心,也活跃了个人创业开发者的兴奋基因.其实,自小程序面市已来,其功能一直在不断完善

微信小程序 支付功能(前端)的实现

只提供微信小程序端代码: 1 var app = getApp(); 2 Page({ 3 data: {}, 4 onLoad: function (options) { 5 // 页面初始化 options为页面跳转所带来的参数 6 var that = this 7 //登陆获取code 8 wx.login({ 9 success: function (res) { 10 console.log(res.code) 11 //获取openid 12 that.getOpenId(res.

微信小程序转发功能

微信小程序转发涉及以下4个方法: 1.Page.onShareAppMessage({}) 设置右上角“转发”配置,及转发后回调函数返回 shareTicket 票据 2.wx.showSahreMenu() 用户点击右上角后,显示“转发”按钮 3.wx.hideShareMenu() 隐藏转发按钮,无视 Page.onShareAppMessage({}) 4.wx.getShareInfo({}) 根据 shareTicket 获取已加密的群信息 把转发流程切分:转发前配置->转发时->转

微信小程序——倒计时功能

做小程序项目中,需要做一个倒计时功能,如下图: 记录一下实现步骤: 1.考虑到这个功能可能会有多处用到,所以把倒计时的函数写在utils.js里面: const formatNumber = n => { n = n.toString() return n[1] ? n : '0' + n } // 倒计时 function countDown(that) { //倒计时函数 let newTime = new Date().getTime(); let endTime = that.data.

微信小程序 支付功能 服务器端(TP5.1)实现

首先下载微信支付SDK ,将整个目录的文件放在 /application/extend/WxPay 目录下 在使用SDK之前我们需要对 WxPay.Config.php 进行配置 <?php namespace app\api\service; use app\api\model\Order as OrderModel; use app\lib\exception\OrderException; use app\lib\exception\TokenException; use think\Ex

微信小程序实现简易留言板

微信小程序现在很火,于是也就玩玩,做了一个简易的留言板,让大家看看,你们会说no picture you say a j8 a,好吧先上图. 样子就是的,功能一目了然,下面我们就贴实现的代码,首先是HTML页面,好吧,其实微信小程序的是wxml(微信ml)总感觉怪怪的,有木有. 1 <!--index.wxml--> 2 <view class="msg-box"> 3 <!--留言--> 4 <view class="send-bo