123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- <?php
- namespace bibidd\Controller;
- use Bibidd\Controller\CommonBaseController;
- /**
- *
- * 用户充值100,签到30天免费领取100
- */
- class UserCz100SignController extends CommonBaseController
- {
- /**
- * 检查用户是否能签到,用户必须充值成功100元,注册时间实在30分钟内
- * @return void
- */
- public function can_sign_xx()
- {
- $this->addHeaders(); //添加头部请求
- $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
- $uid = $user_info['id'];
- $rs = $this->check_can_sign($user_info);
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['data'] = $rs;
- echo json_encode($data);
- }
- /**
- * 检查用户是否具备签到,返回状态信息
- * @return void
- */
- protected function check_can_sign($user_info)
- {
- $uid = $user_info['id'];
- $rs['canSign']=true;//是否能签到
- $rs['isShow']=true;//页面是否显示
- $rs['remark']='从未签到';
- //判断用户是否正在签到
- $user_free_cz100_sign_info = M("user_free_cz100_sign")->where("user_id='$uid'")->field("can_sign,remark")->find();
- if(!empty($user_free_cz100_sign_info) && $user_free_cz100_sign_info['can_sign']==0) //正在签到
- {
- $rs['canSign']=true;//是否能签到
- $rs['remark']=$user_free_cz100_sign_info['remark'];
- return $rs;
- }
- if(!empty($user_free_cz100_sign_info) && $user_free_cz100_sign_info['can_sign']==1) //不能签到,中断、已完成签到
- {
- $rs['canSign']=false;//是否能签到
- $rs['remark']=$user_free_cz100_sign_info['remark'];
- return $rs;
- }
- //判断用户是否查过24小时没签到
- $reg_time =$user_info['add_date'];
- if(empty($reg_time))
- {
- $this->returnDataAndSendMsg("非法用户");
- die();
- }
- $inputTime = strtotime($reg_time);
- $currentTime = time();
- //判断用户是否有充值100
- $haf_hs = $inputTime+1800;
- $pay_info = M("huidiao_test")->where("uid='$uid' AND amount='100.0000' AND time>=$inputTime AND time <= $haf_hs")->field("id")->find();
- if(empty($pay_info))
- {
- $rs['canSign']=false;//是否能签到
- $rs['isShow']=false;//页面是否显示
- $rs['remark']= '半小时内没有100充值记录';
- return $rs;
- }
- $difference = abs($currentTime - $inputTime);
- if($difference > 86400)
- {
- $rs['canSign']=false;//是否能签到
- $rs['remark']= '已超过24小时未签到';
- return $rs;
- }
- return $rs;
- }
- /**
- * 查询用户签到信息
- * @return void
- */
- public function query_sign_info()
- {
- $this->addHeaders(); //添加头部请求
- $this->checkUserIsExist($_POST['uid']); //检查用户
- $uid= $_POST['uid'];
- $last_time = date('Y-m-d 00:00:00');
- $data_list = M("user_free_cz100_sign")->where("user_id = '$uid'")->find();
- if(null != $data_list && $data_list['lianxu_days']>=20)
- {
- //连续20次签到则可以修改兑换
- $data_list['isFull'] = 'true';
- }
- //添加今天是否签
- $data['isSignTody'] = 'no';
- if(!empty($data_list['last_sign']) && $data_list['last_sign']==$last_time)
- {
- $data['isSignTody'] = 'yes';
- }
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['data'] = $data_list;
- echo json_encode($data);
- }
- /**
- * 签到
- * @return void
- */
- public function sign()
- {
- $this->addHeaders(); //添加头部请求
- $userInfo = $this->checkUserIsExist($_POST['uid']); //检查用户
- $uid= $userInfo['id'];
- $reg_time =$userInfo['add_date'];
- //判断用户是否可以继续签到
- $can_sign = $this->check_can_sign($userInfo);
- if(!$can_sign['canSign'])//用户不能签到
- {
- $data['code'] = '202';
- $data['message'] = 'ok';
- $data['data'] = $can_sign;
- echo json_encode($data);
- die();
- }
- //查看用户是否有签到,仅一次签到机会额
- $user_sign = M("user_free_cz100_sign")->where("user_id = '$uid'")->find();
- if(empty($user_sign))
- {
- $rs = $this->addNewSign($uid,$reg_time);
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['data'] = $rs;
- echo json_encode($data);
- die();
- }
- //判断重复签
- $last_sign_time = $user_sign['last_sign'];
- if($last_sign_time==date('Y-m-d 00:00:00'))
- {
- $this->returnDataAndSendMsg("请勿重复签到");
- die();
- }
- //查询昨天是否有签单记录,判断连续性
- $user_sign = M("user_free_cz100_sign")->where("user_id = '$uid' AND TO_DAYS(last_sign)=TO_DAYS(NOW()) - 1")->order("last_sign DESC")->find();
- if(empty($user_sign))
- {
- //没有连续,或没有签到记录
- $user_sign['can_sign']=1;
- $user_sign['remark']='签到中断';
- $rs = M("user_free_cz100_sign")->where("user_id=$uid")->save($user_sign);
- $this->returnDataAndSendMsg("签到中断");
- die();
- }
- $id = $user_sign["id"];
- $user_sign['last_sign']= date('Y-m-d 00:00:00');
- $user_sign['lianxu_money']+=5 ;
- $user_sign['lianxu_days']+=1;
- $user_sign['remark']='连续签到';
- if($user_sign['lianxu_days']>=20)
- {
- $user_sign["duihuan_status"]=1;
- $user_sign["lianxu_money"]=100;
- $user_sign['can_sign']=1;
- $user_sign['remark']='完成签到';
- $user_sign['duihuan_code']=$this->random_str(4).mt_rand(1000, 9999);
- //更新用户余额
- $user_balance = $userInfo['balance'];
- $u_info_update['balance'] = $user_balance+100;
- $rs = M("user_info")->where("id='$uid' AND balance=$user_balance")->save($u_info_update);
- if(!$rs)
- {
- $this->returnDataAndSendMsg("余额更新失败,请稍后重试.");
- die();
- }
- }
- $rs = M("user_free_cz100_sign")->where("id=$id")->save($user_sign);
- $data['code'] = '200';
- $data['message'] = 'ok';
- $data['data'] = $rs;
- echo json_encode($data);
- }
- /**
- * @param $uid
- * @param $reg_time 用户注册时间
- * @return false|float|int|mixed|string
- */
- private function addNewSign($uid,$reg_time)
- {
- $last_time = date('Y-m-d 00:00:00');
- //跳过重复签到
- $tmp_info = M("user_free_cz100_sign")->where("user_id = '$uid' AND last_sign='$last_time'")->find();
- if(!empty($tmp_info))
- {
- return 0;
- }
- $user_sign['user_id']=$uid;
- $user_sign['lianxu_days']=1;
- $user_sign['lianxu_money']=5;
- $user_sign['user_reg_time']=$reg_time;
- $user_sign['can_sign']=0;
- $user_sign['remark']='首次签到';
- $user_sign['last_sign']=$last_time;
- return M("user_free_cz100_sign")->add($user_sign);
- }
- }
|