签到 积分 管理系统

积分系统 用户注册 登录 验证器验证 // month/User/index <?php namespace app\month\controller; use think\Controller; use think\Request; use think\Validate; class User extends Controller { protected $user; protected $month; public function __construct(\a 阅读详情
<?php

?>
<center>
    <table border="1">
        <tr>
            <th>连续签到天数</th>
            <th>获得星星数量</th>
            <th>获得的积分</th>
            <th>最后一次签到时间</th>
        </tr>
        <tr align="center">
            <td class="sign_num"><?=$data['sign_num']?></td>
            <td class="start_num"><?=$data['start_num']?><span  class="img">
                    <?php if($data['start_num']>=1){?><img src="public/start.png"><?php }?>
                </span></td>
            <td class="integral"><?=$data['integral']?></td>
            <td class="time"><?=$data['sign_time']?></td>
        </tr>
    </table>
    <button class="btn">签到</button>

    <hr>
    <table border="1">
        <tr>
            <th>编号</th>
            <th>商品名称</th>
            <th>所需积分</th>
            <th>操作</th>
        </tr>
        <?php foreach($goods as $k=>$v){?>
            <tr>
                <td><?=$v['id']?></td>
                <td><?=$v['name']?></td>
                <td><?=$v['integral']?></td>
                <td><a href="javascript:void (0)" onclick="conversion(<?=$v['integral']?>)">兑换</a></td>
            </tr>
        <?php }?>
    </table>
</center>
<script src="public/jq.js"></script>
<script>
    function conversion(integral){
        var user_id=1;
        $.ajax({
            type: "POST",
            url: '<?=\Yii::$app->urlManager->createUrl('sign/integral');?>',
            data:{
                integral:integral,
                id:user_id
            },
            dataType: "json",
            async:false,
            success: function(msg){
                if(msg==1){
                    var integrals=$('.integral').text();
                    integrals=parseInt(integrals)-integral;
                    $('.integral').html(integrals);
                    alert('恭喜您!商品兑换成功!')
                }else if(msg==2){
                    alert('很遗憾!您的积分不足!')
                }else{
                    alert('对不起!商品兑换失败!')
                }
            }
        });
    }


    $('.btn').click(function(){
        var user_id=1;
        $.ajax({
            type: "POST",
            url: '<?=\Yii::$app->urlManager->createUrl('sign/ajax');?>',
            data:{
                id:user_id
            } ,
            dataType: "json",
            async:false,
            success: function(html){
                if(html==3){
                    alert('今天已经签过到了!')
                }else if(html==1){
                    alert('签到成功!');
                    getChange(html);
                }else if(html==2){
                    alert('签到成功!但是续签失败!')
                    getChange(html);
                }else{
                    alert('签到失败!')
                }
            }
        });
    });
    function getChange(html){
        var date=new Date();
        var year=date.getFullYear();
        var month=parseInt(date.getMonth())+1;
        if(month<10){
            month="0"+month;
        }
        var day=date.getDate();
        if(day<10){
            day="0"+day;
        }
        var hours=date.getHours();
        if(hours<10){
            hours="0"+hours;
        }
        var minutes=date.getMinutes();
        if(minutes<10){
            minutes="0"+minutes
        }
        var seconds=date.getSeconds();
        if(seconds<10){
            seconds="0"+seconds;
        }
        var sign_num=1;
        var start_num=0;
        if($('.sign_num').text()!=''){
            sign_num=parseInt($('.sign_num').text())+1;
        }else{
            $('.start_num').html(start_num);
        }
        if(html==1){
            if(sign_num>4){
                $('.sign_num').html(0);
                start_num=parseInt($('.start_num').text())+1;
                $('.start_num').html(start_num+'<img src="public/start.png">')
            }else{
                $('.sign_num').html(sign_num);
            }
        }else if(html==2){
            $('.sign_num').html(1);
        }

        var time=year+'-'+month+'-'+day+' '+hours+':'+minutes+':'+seconds;
        $('.time').html(time);
        var integral=10;
        if($('.integral').text()!=''){
            integral=parseInt($('.integral').text())+10;
        }
        $('.integral').html(integral);
    }
</script>

<?php
namespace frontend\models;

use yii\base\Model;
use common\models\User;

/**
 * Signup form
 */
class SignupForm extends Model
{
    public $username;
    public $email;
    public $password;


    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            ['username', 'trim'],
            ['username', 'required'],
            ['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'],
            ['username', 'string', 'min' => 2, 'max' => 255],

            ['email', 'trim'],
            ['email', 'required'],
            ['email', 'email'],
            ['email', 'string', 'max' => 255],
            ['email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This email address has already been taken.'],

            ['password', 'required'],
            ['password', 'string', 'min' => 6],
        ];
    }

    /**
     * Signs user up.
     *
     * @return User|null the saved model or null if saving fails
     */
    public function signup()
    {
        if (!$this->validate()) {
            return null;
        }
        
        $user = new User();
        $user->username = $this->username;
        $user->email = $this->email;
        $user->setPassword($this->password);
        $user->generateAuthKey();
        
        return $user->save() ? $user : null;
    }
}


<?php
namespace frontend\controllers;

use Yii;
use yii\web\Controller;
use app\models\Sign;
use app\models\Goods;

/**
 * Site controller
 */
class SignController extends Controller
{
    public function actionIndex(){
        $sign=new Sign();
        $good=new Goods();
        $goods=$good->_get();
        $data=$sign->_getWhere('user_id=1');
        return $this->render('index',['data'=>$data,'goods'=>$goods]);
    }

    public function actionIntegral(){
        $id=\Yii::$app->request->post('id');
        $integral=\Yii::$app->request->post('integral');
        $sign=new Sign();
        $integralOld=$sign->_getWhere('user_id = '.$id);
        if(intval($integral) > intval($integralOld['integral'])){
            $result=2;
        }else{
            $result=$sign->_deduct($integral,'user_id = '.$id);
        }
        return $result;
    }

    public function actionAjax(){
        $id=\Yii::$app->request->post('id');
        $sign=new Sign();
        $data=$sign->_getWhere('user_id='.$id);
        if(!$data){
            $result=$sign->_set($id);
        }else{
            if($data['sign_num']>=4){
                $sign_num=0;
                $start=$data['start_num']+1;
            }else{
                $sign_num=$data['sign_num']+1;
                $start=0;
            }
            $integral=(intval($data['integral'])+10);
            $signDay=$this->getTime($data['sign_time']);
            $thisDay=$this->getTime(date('Y-m-d H:i:s',time()));
            if($thisDay-$signDay==24*3600){
                $result=$sign->_save('user_id='.$id,$sign_num,$start,$integral);
            }else if($thisDay-$signDay > 24*3600){
                $result=$sign->_save('user_id='.$id,1,$data['start_num'],$integral);
                if($result){
                    $result=2;
                }
            }else{
                $result=3;
            }
        }
        echo json_encode($result);
    }

    public function getTime($data){
        $str=strtotime(date('Ymd',strtotime($data)));
        return $str;
    }
}

<?php

namespace app\models;

use Yii;


class Sign extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'signIn';
    }

    /**
     * @inheritdoc
     */
    public function _get()
    {
        $connection = \Yii::$app->db;
        $command = $connection->createCommand('SELECT * FROM '.$this->tableName());
        $data = $command->queryAll();
        return $data;
    }

    /**
     * @inheritdoc
     */
    public function _getWhere($where)
    {
        $connection = \Yii::$app->db;
        $command = $connection->createCommand('SELECT * FROM '.$this->tableName().' where '.$where);
        $data = $command->queryOne();
        return $data;
    }
    /**
     * @inheritdoc
     */
    public function _set($user_id,$sign=1,$start=0)
    {
        $connection = \Yii::$app->db;
        $command = $connection->createCommand('insert into '.$this->tableName().' values(\'\','.$sign.','.$start.',"'.date('Y-m-d H:i:s',time()).'", '.$user_id.',10)');
        $data = $command->execute();
        return $data;
    }

    /**
     * @inheritdoc
     */
    public function _deduct($integral,$where)
    {
        $connection = \Yii::$app->db;
        $command = $connection->createCommand('update '.$this->tableName().' set integral=integral-'.$integral.' where '.$where);
        $result = $command->execute();
        return $result;
    }
    /**
     * @inheritdoc
     */
    public function _save($where,$sign=1,$start=0,$integral=10)
    {
        $connection = \Yii::$app->db;
        $command=$connection->createCommand('update '.$this->tableName().' set sign_num='.$sign.',start_num='.$start.',sign_time="'.date('Y-m-d H:i:s',time()).'",integral='.$integral.'  where '.$where);
        if($start==0){
            $command = $connection->createCommand('update '.$this->tableName().' set sign_num='.$sign.',sign_time="'.date('Y-m-d H:i:s',time()).'",integral='.$integral.'  where '.$where);
        }
        $data = $command->execute();
        return $data;
    }
}
Vue.js 实战项目:构建签到积分系统 从零到一:用 Vue.js 打造积分签到和任务管理系统 Vue.js 前端开发实例:积分签到和任务页面 新手友好!用 Vue 实现签到积分系统 Vue.js 在这个教程中,我们将用 Vue.js 创建一个简单的“签到有礼”页面。该页面实现了以下功能:这将是一个新手友好的项目,帮助你快速上手 Vue.js 数据绑定、事件处理等基础概念。在开始编码之前,请确保你已安装好一个基本的开发环境,比如 VS Code,同时确保浏览器支持 Vue.js。我们将所有代码放在一个 HTML 文件中,这样方便在本地运行和测试。我们将使用 Vue.js CDN 以便于新手直接引入 Vue.js。首先,在 HTML 文件中设置页面的基本结构和样式。 4. 使用 Vue.js 数据绑定实 阅读详情

相关推荐

c++签到系统源码

可以实现教师机要求点名,学生机进行点名,软件有缺陷,正想办法补齐。

如何实现一个排行榜

如何实现一个排行榜 场景 1:用户签到可以获得积分,需要按照用户维度每天进行用户总积分排行榜 2:需要近实时更新排行榜 3:在积分相同的情况下,需要按照先注册的用户排在前面 4:用户量100w 5:排行前20名称 设计 1:排行榜的实现可以借助redis的SortedSet数据结构实现排行榜,sortedSet可以按照我们给的score进行排序, 但是SortedSet的性能会随着元素的数量急剧下降。这里每次写入新的移除旧的数据,保证排行的数量在100个 2:用户每次签到都去更新排行榜,可能导致redis

flw7758的博客 4797

微信小程序日历积分签到源码包.zip

自己写的微信小程序日历签到模块;只需修改接口地址和对应返回参数就能动态生成整个模块; 1、签到功能 2、本日已签到、未签到文字提示; 3、已签到积分文字提示; 4、本月日历每日展示,表格头部展示每周的星期几; 5、本月日历每天签到背景色提示;

签到和积分管理

<?php?><center> <table border="1"> <tr> <th>连续签到天数</th> <th>获得星星数量</th> <th>获得的积分</th> ...

weixin_30305735的博客 356

从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(12)

今天是本系列的最后一期,完整代码呈现Huggingface transformers平台上微调BERT-wwm-ext的过程方法。

weixin_49518391的博客 3764

汇川EASY521 PLC实战指南:从硬件选型到程序架构与故障排查

可编程逻辑控制器(PLC)是工业自动化系统的核心大脑,其工作原理基于循环扫描机制,持续读取输入、执行用户程序并更新输出。这种确定性控制方式,使其在逻辑控制、顺序控制和运动控制中具有不可替代的技术价值,广泛应用于机械设备、生产线和过程控制等场景。对于汇川EASY521这类紧凑型高性能PLC,其核心优势在于集成了运动控制与丰富通讯接口,为中小型设备提供了高性价比的一站式解决方案。在实际应用中,工程师常需处理如“汇川sv660n”伺服驱动器的集成调试,或利用“hslcommunication”等开源库实现C#上位

weixin_42525264的博客 737

签到积分c++/c语言代码+解析

现在,有许多应用程序为了吸引用户访问,都有签到送积分的活动,若用户连续多天签到,应用程序会阶梯式地赠送更多的积分。解析:本题只要简单模拟就好,设一个变量s表示当天得到的积分数量,ans每次+=s即可。给定一个字符序列 s,s 表示一个用户每天签到的情况,若某天签到,记为。设 ∣s∣ 表示字符序列的长度,有 1≤∣s∣≤100000。其次,若用户在前一天也登录了,当天得分为前一天得分加1分;注意事项: 1.每次签到最多得到5积分,所以ans要。单个正整数,表示用户获得的积分之和。,若某天没有签到,记为。

清梦的博客 675

可乐学习NVMe之一:为什么SSD需要NVMe

1. NVMe SSD 结构简图 整体来看,NVMe SSD可以分为三部分,host端的驱动NVMe Driver、PCIe+NVMe实现的控制器以及NAND Flash+DDR4/DDR5存储介质。 芯片回片后Host侧软件或者驱动开发主要在应用层,通过一些测试工具进行benchmark跑分测试,performance性能分析,latency分析、stress-testing等等: 那么,接下来阐述为什么SSD需要NVMe,并再后续的文章介绍NVMe协议分析,个人针对协议的理解,如果有不当之处,还请各

Lucky 3169

C语言 计算签到所得积分

某网站为了赢取访问量,现推出连续签到送积分活动,赚取积分的规则:第一天签到给1积分;第二天和第三天签到每天给2积分,第四天第五天和第六天签到每天给3积分,第七天,第八天,第九天和第十天签到每天给4积分……以此类推。 根据题目所给的赚取积分规则,编程实现求某人在连续签到n天后,所赚取的积分数,要求严格按照输出效果输出。 运行效果如下: 输出效果1: 请输入连续签到的天数:6 所获得的积分为:14 输出效果2: 请输入连续签到的天数:9 所获得的积分为:26 #include<std

m0_60777589的博客 1141

苏州大学自动化考研842自动控制原理:手把手教你用胡寿松《自控》高效备考(附复试电工/电子/微机原理攻略)

本文详细解析苏州大学自动化考研842自动控制原理备考策略,以胡寿松《自动控制原理》为核心教材,提供三阶段高效学习路径和实战技巧。重点涵盖频域分析、根轨迹绘制等高频考点,并针对机电、光电、轨道三个学院的复试科目(电工电子技术、电子技术基础、微机原理与接口技术)给出差异化备考方案,助力考生全面提升笔试和面试表现。

weixin_42638178的博客 402

Spring Authorization Server实战:从零搭建OAuth2.1授权中心(含数据库改造)

本文详细介绍了如何从零开始使用Spring Authorization Server搭建符合OAuth2.1规范的授权中心,并完成关键的数据库持久化改造。内容涵盖微服务架构下的统一认证需求、基础配置、数据库表设计、高级特性(如令牌自定义、性能优化)以及与现有系统(如SSO、Gateway网关)的集成实战,为构建生产级授权服务提供完整指南。

weixin_29315091的博客 254

签到积分#C++

给定一个字符序列 s,s 表示一个用户每天签到的情况,若某天签到,记为 Y,若某天没有签到,记为 N。现在,有许多应用程序为了吸引用户访问,都有签到送积分的活动,若用户连续多天签到,应用程序会阶梯式地赠送更多的积分。其次,若用户在前一天也登录了,当天得分为前一天得分加一分;设 |s|表示字符序列的长度,有1≤∣s∣≤100000。第二段连续签到:1+2+3+4+5+5=20分。单个正整数,表示用户获得的积分之和。最后,每天得分的上限为 5 分。第三段连续签到:1+2+3=6分。

2302_80010222的博客 595

川崎机器人 AS语言基础运动指令表

    功能简介 动作方式 参考坐标系 位置特性 X,Y,Z 角度特性 O,A,T 指令格式(距离单位毫米,时间单位秒,角度单位度 示例1 示例2 运 动 指 令 JMOVE 以关节移动到目标点 关节移动方式 基础坐标系 不受控 伪随机动作 JMOVE 目标点 JMOVE #yd JMOVE put1 LMOVE 以直线移动到目标点 直线移动方式

喜欢自学并分享经验的技术宅 9353

springboot197超市活动报名签到积分商城管理系统的设计与实现

随着信息技术的快速发展,超市行业逐渐向数字化、智能化转型。传统的超市活动管理方式存在效率低、数据分散、人工成本高等问题,难以满足现代超市高效运营的需求。基于此,设计并实现了一套基于SpringBoot框架的超市活动报名签到积分商城管理系统,旨在提升超市活动的管理效率,增强顾客互动体验,并优化积分商城的运营模式。该系统采用SpringBoot作为后端开发框架,结合MyBatis-Plus进行数据持久化操作,前端使用Vue.js实现动态交互界面,数据库选用MySQL确保数据存储的稳定性和扩展性。

豆包程序员 625

库存管理系统项目部署方案(基于jdk8)

不需要安装到服务器,运维本地安装就行,主要是用来编译前端代码的。构建完成后将dist文件夹复制到服务器内。

程序员诚哥 2576

基于 YOLOv26 的金属表面缺陷检测系统:智能视觉质检方案

摘要: 基于YOLOv26的金属表面缺陷检测系统采用深度学习技术,实现对划痕、裂纹、腐蚀等8类常见缺陷的自动化检测。系统通过数据增强预处理和YOLOv26模型的高精度识别能力,具备多类别分类、实时推理和强鲁棒性特点,适用于不同金属材质与光照条件。架构包含数据采集、预处理、YOLOv26检测和后处理模块,代码实现采用PyTorch框架,支持训练数据增强与标准化处理,为工业质检提供高效智能解决方案。

一键难忘的博客 589

python积分管理系统_python实现每天自动签到领积分的示例代码

自动签到的python脚本源码新建一个python文件,checkin.py,保存到电脑上某个位置,我这里保存到的是E:\pyproject\checkin.py# 引入3个包from selenium import webdriverfrom time import sleepimport random# 程序启动后先休眠1-4秒sleep(random.randint(1, 4))# 调用Se...

weixin_39599830的博客 757

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

培训机构积分管理系统的使用场景

前面小编给大家分析了培训机构使用积分管理系统的好处,大家也都明白了机构为何要使用一个积分系统,这篇文章主要给大家介绍一下积分系统的使用场景。 1.学员报名缴费续费赠送积分 当我们在进行后台操作学员报名时,可以手动输入设置的积分额度,报名成功之后积分到账。当学员进行续费时,后台可以根据缴费的金额赠送相应的积分,提高学员的续费率。 2.购买课程赠送积分 当我们在后台添加课程的时候,可以为这个课程设置上固定的积分,当学员报名学习购买此课程时,系统可以自动赠送相应积...

szzhiluo的博客 571

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

php会员签到送积分程序,PHP用户连续签到赠送额外积分

class IntegralService{/*** [积分赠送日志]公共方法* @param $userId 用户ID* @param $fkType 赠送类型:1:新用户注册;2用户签到;3用户消费;4邀请新用户;...* @param int $fkId 关联ID:如果类型为用户消费,则关联ID为订单的ID;如果类型为邀请新用户,则关联ID为新用户的ID...* @return array ...

weixin_42449422的博客 483

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ssmspringboot超市活动报名签到积分商城管理系统

注册登录界面用户需要输入正确的用户名和密码后才可以登录系统并正常使用。如果是第一次使用的新用户,应当先进行账户的注册。注册和登录的界面应当设置便捷的跳转按钮。当用户输入的信息不正确时应当进行相应的提示。如登录时输入的账户有误,应当提示用户该账户不存在。同样的,操作时应该提供积极的反馈,避免用户重复操作。如新用户注册账户时,如果注册成功应该提示“注册成功”的消息栏。当用户成功登录后,应该进入到系统的导航界面。

qq_840612233的博客 1496

dede首页php调用会员积分,DEDECMS会员签到加积分的实现方法

本文实例讲述了DEDECMS会员签到加积分的实现方法。分享给大家供大家参考。具体实现方法如下:1、修改模板页面member\templets\index.htm头部加入js:复制代码代码如下:function ajaxSign() {$.ajax({type:"get",url:"https://www.jb51.net/member/ajax_sign.php",data:{uid:...

weixin_31001069的博客 199

基于Redis实现用户签到、积分完整系统实战

本文介绍了基于Redis的签到系统设计方案。采用BitMap存储每日签到记录(年占用仅40字节),Hash结构维护用户积分数据,ZSet实现积分排行榜。核心流程包括:签到状态判断、连续天数计算、积分发放及数据更新。方案优势在于:内存占用极低(支持百万级用户)、操作响应快速,并天然支持连续签到统计和历史查询功能。系统实现了签到记录、积分管理和排行榜等完整业务场景。

2402_87794035的博客 160

大学生志愿者管理系统的设计与实现|SSM 活动推荐、报名签到与积分兑换

大学生志愿者管理系统面向志愿者和管理员两类角色。志愿者端负责活动浏览、报名、签到记录、积分兑换、荣誉信息和个人资料管理;管理员端负责活动、报名、用户、提醒、资讯和积分相关数据的维护。系统基于 SSM 框架实现分层开发,适合展示传统 Java Web 项目的完整工程结构。

weixin_bysj1330的博客 426

Java中Springboot实战之签到功能详解(超全面)

签到功能、SpringBoot实战、MyBatisPlus、微服务、Java项目实战、分布式任务调度

qq_57469718的博客 1万+

计算机毕业设计springboot校园志愿服务管理系统 SpringBoot高校志愿活动智慧管理平台 SpringBoot大学生公益服务一体化运营系统

在“互联网+”时代,高校志愿活动从线下纸质登记转向线上数字化运营已成为必然趋势。传统人工统计、微信群接龙、Excel汇总等方式不仅效率低、易出错,还难以沉淀数据、形成可持续的志愿文化。借助SpringBoot敏捷开发优势,结合MySQL高性能存储与B/S免安装特性,可在一学期内快速落地一套覆盖“发布—报名—签到—评价—激励”全链路的校园志愿服务生态,让志愿时长、信用积分、活动干货一键可查,为第二课堂成绩单、评优评先、社会实践提供可信数据支撑。 系统核心功能清单(不分角色,穷尽罗列) 登录/注册(验证码、学号

毕设源码-周学姐 1267

java-springboot内蒙古电子信息职业技术学院图书馆自习室预约管理系统 基于SpringBoot的高校图书馆座位预约与签到平台 JavaWeb智慧自习室预约与积分管理系统计算机毕业设计

【摘要】针对高校图书馆自习室占座乱象,本文设计了一套基于SpringBoot+Vue的线上预约管理系统,通过数字化手段解决座位资源分配问题。系统采用B/S架构,后端使用Java+SpringBoot+MySQL,前端采用Vue+ElementUI实现多端适配。核心功能包括:可视化选座、时段预约、人脸识别签到、积分激励机制、论坛交流等模块,形成完整的"预约-使用-评价"闭环。通过技术可行性分析验证了系统在安全性、扩展性和维护性方面的优势,流程设计覆盖用户从注册到签退的全生命周期管理。系统将

程序员一枚 936
上一篇: php对称加密
下一篇: 正则
apollo__
博客等级 码龄9年 4粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值