**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'=>'签到成功'];
}
}
}
~~~