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); } }