1 public function sign()
2 {
3 //取出用户id
4 $user_id = session('user.id');
5 //根据用户id查询签到记录表
6 $result = \app\home\model\Sign::where('user_id',$user_id)->find();
7 //如果表里面没有数据 第一次签到
8 if (!$result){
9 $data['user_id'] = $user_id;
10 $data['number'] = 1;
11 $data['integral'] = 200;
12 $data['sign_time'] = time();
13 $res = \app\home\model\Sign::create($data);
14 if ($res){
15 return getJsonData(200,'恭喜您完成首次签到 获得200积分',$res);
16 }
17 }else{
18 //表里有数据 获取上次签到时间 和当前时间
19 $sign_time = $result['sign_time'];//上次签到时间
20 $atNow = date('y-m-d');//当天时间的0点
21 //转化为时间戳
22 $newNow = strtotime($atNow);
23 //昨天的0点
24 $prevDay = $newNow - 86400;
25 //明天的0点
26 $nextDay = $newNow + 86400;
27 //现在签到的时间
28 $NowDay = time();
29 //当上次签到时间 在今天0点到明天0点之间 今天已经签到过
30 if ($sign_time>$newNow && $sign_time<$nextDay){
31 return getJsonData(500,'您今天已经签到过了!!不能重复签到');
32 }
33 //当上次签到时间在 昨天0点到今天0点之间 表示昨天已经签到 今天在签到为连续签到
34 if ($sign_time>$prevDay && $sign_time < $newNow){
35 //积分+50 签到天数+1
36 $data['integral'] = $result['integral'] + 50;
37 $data['number'] = $result['number'] + 1;
38 $data['sign_time'] = $NowDay;
39 $res = \app\home\model\Sign::update($data,['user_id'=>$user_id],false);
40 if ($res){
41 return getJsonData(200,'第'.$data['number'].'天签到,积分+50');
42 }
43 }
44 //上次签到时间 在昨天0点之前 表示昨天断签 积分变为200 连续签到天数为1
45 if ($sign_time<$prevDay){
46 $data['number'] = 1;
47 $data['integral'] = 200;
48 $data['sign_time'] = $NowDay;
49 $res = \app\home\model\Sign::update($data,['user_id'=>$user_id],false);
50 if ($res){
51 return getJsonData(200,'中途断签,此次签到后积分为200');
52 }
53 }
55 }
56 }