thinkphp5签到功能获取奖励

本文详细介绍了如何使用ThinkPHP5框架来开发一个签到功能,包括用户每日签到的逻辑实现、签到记录的存储以及根据签到情况给予用户相应的奖励机制。通过实例代码和步骤解析,帮助开发者理解整个签到系统的构建过程。
摘要由CSDN通过智能技术生成
<?php
/**
 * 用户签到
 */
namespace app\index\controller;

use app\common\controller\Frontend;
use app\index\controller\Common as Base;
use think\Db;
use think\Session;

class ClickSign extends Frontend
{
   

    protected $noNeedLogin = '*';
    protected $noNeedRight = '*';
    protected $layout = '';

    public function index()
    {
   
        $user_id = 1;
        $data = Db::name('web_news')->where('status',2)->order('weigh desc')->field('id,title,memo,createtime,image')->select();
        $qiandao_array = Db::name('integral_setup')->field('day_checkin,three_day,seven_day,fifteen_day,twenty_five_day,thirty_day')->find(1);
        //获取今日签到状态
        $res_status = $this->check_day_qiandao($user_id);
        //获取本月签到次数
        $month_count = $this->check_month_day($user_id);
        //获取今天签到能获取到的积分
        $day_jifen = $this->check_continuous_qiandao($user_id,$month_count);
        return $this->view->fetch('',[
           'data'=>$data,
           'res_status'=>$res_status,
           'month_count'=>$month_count,
           'day_jifen' => $day_jifen,
           'qiandao_array'=>$qiandao_array
        ]);
    }

    public function info(){
   
        $id = $_GET['id'];
        $data = Db::name('web_news')->field('id,title,content,createtime,image')->find($id);

        return $this->view->fetch('',[
            'data'=>$data
        ]);
    }

    //用户签到
    public function qiandao(){
   
            $user_id = 1;
            $this->del_qiandao($user_id);
            $day_check = $this->check_day_qiandao($user_id);
            if(true == $day_check){
   
                return Rjson('202','您今天已经签到过了');
            }else{
   
                //添加今日签到数据
                //检查昨天是否有签到过,如果有,则为连续签到,根据签到规则,设置相对应积分
                //获取签到积分和连续签到积分
//                $yestaday = $this->getLastTime(1,'before');
                //验证昨天是否签到
                $check_before_qiandao = $this->check_qiandao($user_id);
                //为false 则昨天没有签到
                //为true 昨天有签到
                //获取用户签到最大和连续签到时间
                $user = new \app\index\model\User();
                $member_info = $user->get($user_id);
                //获取签到积分

                Db::startTrans();
                try {
   
                    //说明昨天有签到,则获取连续签到天数
                    $add_day = $this->check_month_day($user_id)+1;
                    if($check_before_qiandao == true){
   
                        //签到成功后+1
                        //更新连续签到次数
                        $member_info->save(['continuity_day'=>$add_day],['id'=>$user_id]);
                    }else{
   
                        //签到成功后+1
                        //则连续签到时间改为1
                        $member_info->save(['continuity_day'=>1],['id'=>$user_id]);
                    }
                    //更新积分
                    //如果连续签到天数,大于最大签到次数,则更新最大签到天数
                    if( $add_day > intval($member_info['max_days'])){
   
                        $member_info->save(['max_days'=>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值