微信小程序简单签到功能源码分享

简单的签到功能源码–运用了云数据库,基本上满足签到功能需求了

1-数据展示




2-数据库端

3-前端wxml部分:一个简单的签到

<button type="primary" bindtap="qianDao">签到</button>

3-后端js部分:注意数据库名需要改,openid需要在app.js中onShow获取(你也可以换成其它字段查找)

const DB=wx.cloud.database().collection("test");
const db=wx.cloud.database().command;
Page({
  data: {
    isQd:"",//今天签到日
    oldQd:"",//上次签到
    signLength:0,//连续签到长度
    openid:"",//where判断需要
  },
  onShow: function(){
    var myDate = new Date();
    var isQd=myDate.getDate();//获取当前日(1-31)
    var openid=wx.getStorageSync("openid");//获取用户标识
    var signLength=wx.getStorageSync("signLength");//连续签到天数
    var oldQd=wx.getStorageSync("oldQd");//获取缓存中上次签到日期
    this.setData({
      isQd,
      oldQd,
      signLength,
      openid
    })
    //无论缓存有没有,如果上次签到日期不与当天的isQd相等的话,就从数据库拉取上次签到数据
    if(oldQd!=isQd){
      DB.where({_openid:this.data.openid}).get({
        success:(res)=>{
          this.setData({
            oldQd:res.data[0].isQd,//获取上次签到日期
            signLength:res.data[0].signLength//获取连续签到天数
          })
          //将连续签到日期存储到本地缓存
          wx.setStorageSync("signLength",res.data[0].signLength);
          wx.setStorageSync("oldQd", res.data[0].isQd);
        }
      })
    }
      // wx.setStorageSync("isQd",this.data.isQd);
  },
  //点击签到
  qianDao(){
    //显示加载中效果
    wx.showLoading({
      title: '签到中',
      mask:true
    });
    this.sign();
  },
  //签到过程
  sign(){
    var isQd=this.data.isQd;//当天签到日期
    var oldQd=this.data.oldQd;//上次签到日期
    if(isQd==oldQd){
      //一样表示今天已经签过了
      wx.showToast({
        title: '已经签到了,无需签到~',
        icon: 'none',
        duration: 1000,
        mask: true
      });
    }else{
      //不一样表示需要签到
      if(isQd-oldQd===1){
        //昨天签到了
          //修改数据库
        DB.where({_openid:this.data.openid}).update({
            data:{
              signLength:db.inc(1),//连续签到日期加1
              isQd:isQd//上次签到日期变为当天日期
            }
        })
          //修改缓存中的数据
        wx.setStorageSync("oldQd", isQd);
        wx.setStorageSync("signLength",this.data.signLength+1);
          //修改data中的数据
          this.onShow();
      }else{
        //昨天没有签到
          //修改数据库
          DB.where({_openid:this.data.openid}).update({
            data:{
              signLength:1,//连续签到日期加1
              isQd:isQd//上次签到日期变为当天日期
            }
        })
          //修改缓存中的数据
        wx.setStorageSync("oldQd", isQd);
        wx.setStorageSync("signLength",1);
          //修改data中的数据
          this.onShow();
        }
      //签到成功显示
      wx.showToast({
        title: '签到成功',
        icon: 'none',
        duration: 1000,
        mask: true
      });
    }
    //关闭加载显示框
    wx.hideLoading();
  }
});

编辑 | sishen
来源 | 前端兔
审核 | @前端兔

关注公众号查看更多前端知识分享~~
在这里插入图片描述

  • 2
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
微信小程序签到功能是一种常见的应用场景,可以通过使用PHP编写后端接口来实现。下面是一个简单微信小程序签到的PHP源码示例: ```php <?php // 连接数据库 $servername = "localhost"; $username = "your_username"; $password = "your_password"; $dbname = "your_database"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 获取用户openid和签到日期 $openid = $_POST['openid']; $sign_date = date("Y-m-d"); // 查询用户当天是否已签到 $sql = "SELECT * FROM sign_records WHERE openid='{$openid}' AND sign_date='{$sign_date}'"; $result = $conn->query($sql); if ($result->num_rows > 0) { // 已签到 $response = array("status" => 0, "message" => "已签到"); } else { // 未签到,插入签到记录 $sql = "INSERT INTO sign_records (openid, sign_date) VALUES ('{$openid}', '{$sign_date}')"; if ($conn->query($sql) === TRUE) { $response = array("status" => 1, "message" => "签到成功"); } else { $response = array("status" => -1, "message" => "签到失败"); } } // 返回签到结果 echo json_encode($response); $conn->close(); ?> ``` 以上是一个简单微信小程序签到的PHP源码示例。其中,通过与数据库进行交互来存储和查询用户的签到记录。用户首先需要提供其openid和签到的日期,如果数据库中存在对应的记录,则表示已经签到过了,返回相应的提示信息;若不存在,则插入新的记录,并返回签到成功的提示信息。最后,通过JSON格式返回签到结果给小程序进行显示。 需要注意的是,该示例只提供了基础的签到功能,具体地方需要根据实际需求进行扩展和修改。另外,还需要根据自己的数据库配置和微信小程序的开发要求进行相应的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值