php 签到送积分功能,积分签到功能

**1.后台界面渲染判断今天前未签到则显示状态0** 注:status为0时“未签到” status为1时“已签到”

~~~

$this->title = '打卡记录';

$yes_end = date('Y-m-d'." 23:59:59",strtotime('-1 day')); //昨天结束时间(2020-12-01 21:41:49)

$datasmall = \Db::table('wechat_signin')->where('create_time', '<=',$yes_end)->select(); //小于昨天结束时间的数据

$databig = \Db::table('wechat_signin')->where('create_time', '>',$yes_end)->select(); //大于昨天结束时间的数据

for ($x=0; $x

$test = $data[$x]["status"]=0;

$db = new IntegralSigninModel();

$db->_updateStatus($test,$datasmall[$x]["id"]);

};

for ($y=0; $y

$test2 = $data[$x]["status"]=1;

$db = new IntegralSigninModel();

$db->_updateStatus($test2,$databig[$y]["id"]);

};

$query = $this->_query($this->table);

$query->dateBetween('create_at')->order('id desc')->page();

~~~

**2.IntegralSigninModel传入数据和id进行更改**

~~~

public function _updateStatus($data,$id)

{

$result = $this->where('id', $id)->find();

$result->save([

'status' => $data

]);

}

~~~

**3.将openid传入指定的签到方法进行逻辑操作**

~~~

public function qiandao(Request $request)

{

$data = $request->param(); //接收传入的值

$openid = $data['openid']; //将openid提取出来

$username = $data['username']; //将username提取出来

$now_time = date('Y-m-d H:i:s',time()); //当前北京时间

$data = \Db::table('wechat_signin')->where('openid', $openid)->select(); //查询该用户的所有签到记录

if (count($data) == 0) //没有该用户的签到记录

{

\Db::table('wechat_signin')->insert(['username' => $username, 'create_time' => $now_time, 'openid' => $openid, 'number' => '1', 'status' => '1']); //插入用户签到数据

return ['code'=>1, 'msg'=>'签到成功'];

} else { //判断今天是否签到

$todayBegin = date('Y-m-d'." 00:00:00"); //当前日期开始时间

$todayEnd = date('Y-m-d'." 23:59:59"); //当前日期结束时间

$isexit = \Db::table('wechat_signin')->field('create_time')->where('openid', $openid)->where('create_time', 'between', [$todayBegin, $todayEnd])->select(); //between 查询条件支持字符串或者数组 查询今天是否有签到记录

if (count($isexit) >= 1) { //今日已签到

return ['code'=>0, 'msg'=>'该用户今日已签到'];

} else //今日未签到

{

if(count($data) == 30){ //如果该用户有30条签到记录

$res = (int)\Db::table('wechat_signin')->where('openid','=',$openid)->sum('number'); //遍历该用户的number值得到number的总和

\Db::table('wechat_signin')->where('openid','=',$openid)->delete(); //删除前30条记录

\Db::table('wechat_signin')->insert(['username' => $username, 'create_time' => $now_time, 'openid' => $openid, 'number' => $res, 'status' => '1']); //插入新的签到记录,并将number传入

return ['code'=>1, 'msg'=>'签到成功'];

}

\Db::table('wechat_signin')->insert(['username' => $username, 'create_time' => $now_time, 'openid' => $openid, 'number' => '1', 'status' => '1']);

return ['code'=>1, 'msg'=>'签到成功'];

}

}

}

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值