UserCz100SignController.class.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?php
  2. namespace bibidd\Controller;
  3. use Bibidd\Controller\CommonBaseController;
  4. /**
  5. *
  6. * 用户充值100,签到30天免费领取100
  7. */
  8. class UserCz100SignController extends CommonBaseController
  9. {
  10. /**
  11. * 检查用户是否能签到,用户必须充值成功100元,注册时间实在30分钟内
  12. * @return void
  13. */
  14. public function can_sign_xx()
  15. {
  16. $this->addHeaders(); //添加头部请求
  17. $user_info = $this->checkUserIsExist($_POST['uid']); //检查用户
  18. $uid = $user_info['id'];
  19. $rs = $this->check_can_sign($user_info);
  20. $data['code'] = '200';
  21. $data['message'] = 'ok';
  22. $data['data'] = $rs;
  23. echo json_encode($data);
  24. }
  25. /**
  26. * 检查用户是否具备签到,返回状态信息
  27. * @return void
  28. */
  29. protected function check_can_sign($user_info)
  30. {
  31. $uid = $user_info['id'];
  32. $rs['canSign']=true;//是否能签到
  33. $rs['isShow']=true;//页面是否显示
  34. $rs['remark']='从未签到';
  35. //判断用户是否正在签到
  36. $user_free_cz100_sign_info = M("user_free_cz100_sign")->where("user_id='$uid'")->field("can_sign,remark")->find();
  37. if(!empty($user_free_cz100_sign_info) && $user_free_cz100_sign_info['can_sign']==0) //正在签到
  38. {
  39. $rs['canSign']=true;//是否能签到
  40. $rs['remark']=$user_free_cz100_sign_info['remark'];
  41. return $rs;
  42. }
  43. if(!empty($user_free_cz100_sign_info) && $user_free_cz100_sign_info['can_sign']==1) //不能签到,中断、已完成签到
  44. {
  45. $rs['canSign']=false;//是否能签到
  46. $rs['remark']=$user_free_cz100_sign_info['remark'];
  47. return $rs;
  48. }
  49. //判断用户是否查过24小时没签到
  50. $reg_time =$user_info['add_date'];
  51. if(empty($reg_time))
  52. {
  53. $this->returnDataAndSendMsg("非法用户");
  54. die();
  55. }
  56. $inputTime = strtotime($reg_time);
  57. $currentTime = time();
  58. //判断用户是否有充值100
  59. $haf_hs = $inputTime+1800;
  60. $pay_info = M("huidiao_test")->where("uid='$uid' AND amount='100.0000' AND time>=$inputTime AND time <= $haf_hs")->field("id")->find();
  61. if(empty($pay_info))
  62. {
  63. $rs['canSign']=false;//是否能签到
  64. $rs['isShow']=false;//页面是否显示
  65. $rs['remark']= '半小时内没有100充值记录';
  66. return $rs;
  67. }
  68. $difference = abs($currentTime - $inputTime);
  69. if($difference > 86400)
  70. {
  71. $rs['canSign']=false;//是否能签到
  72. $rs['remark']= '已超过24小时未签到';
  73. return $rs;
  74. }
  75. return $rs;
  76. }
  77. /**
  78. * 查询用户签到信息
  79. * @return void
  80. */
  81. public function query_sign_info()
  82. {
  83. $this->addHeaders(); //添加头部请求
  84. $this->checkUserIsExist($_POST['uid']); //检查用户
  85. $uid= $_POST['uid'];
  86. $last_time = date('Y-m-d 00:00:00');
  87. $data_list = M("user_free_cz100_sign")->where("user_id = '$uid'")->find();
  88. if(null != $data_list && $data_list['lianxu_days']>=20)
  89. {
  90. //连续20次签到则可以修改兑换
  91. $data_list['isFull'] = 'true';
  92. }
  93. //添加今天是否签
  94. $data['isSignTody'] = 'no';
  95. if(!empty($data_list['last_sign']) && $data_list['last_sign']==$last_time)
  96. {
  97. $data['isSignTody'] = 'yes';
  98. }
  99. $data['code'] = '200';
  100. $data['message'] = 'ok';
  101. $data['data'] = $data_list;
  102. echo json_encode($data);
  103. }
  104. /**
  105. * 签到
  106. * @return void
  107. */
  108. public function sign()
  109. {
  110. $this->addHeaders(); //添加头部请求
  111. $userInfo = $this->checkUserIsExist($_POST['uid']); //检查用户
  112. $uid= $userInfo['id'];
  113. $reg_time =$userInfo['add_date'];
  114. //判断用户是否可以继续签到
  115. $can_sign = $this->check_can_sign($userInfo);
  116. if(!$can_sign['canSign'])//用户不能签到
  117. {
  118. $data['code'] = '202';
  119. $data['message'] = 'ok';
  120. $data['data'] = $can_sign;
  121. echo json_encode($data);
  122. die();
  123. }
  124. //查看用户是否有签到,仅一次签到机会额
  125. $user_sign = M("user_free_cz100_sign")->where("user_id = '$uid'")->find();
  126. if(empty($user_sign))
  127. {
  128. $rs = $this->addNewSign($uid,$reg_time);
  129. $data['code'] = '200';
  130. $data['message'] = 'ok';
  131. $data['data'] = $rs;
  132. echo json_encode($data);
  133. die();
  134. }
  135. //判断重复签
  136. $last_sign_time = $user_sign['last_sign'];
  137. if($last_sign_time==date('Y-m-d 00:00:00'))
  138. {
  139. $this->returnDataAndSendMsg("请勿重复签到");
  140. die();
  141. }
  142. //查询昨天是否有签单记录,判断连续性
  143. $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();
  144. if(empty($user_sign))
  145. {
  146. //没有连续,或没有签到记录
  147. $user_sign['can_sign']=1;
  148. $user_sign['remark']='签到中断';
  149. $rs = M("user_free_cz100_sign")->where("user_id=$uid")->save($user_sign);
  150. $this->returnDataAndSendMsg("签到中断");
  151. die();
  152. }
  153. $id = $user_sign["id"];
  154. $user_sign['last_sign']= date('Y-m-d 00:00:00');
  155. $user_sign['lianxu_money']+=5 ;
  156. $user_sign['lianxu_days']+=1;
  157. $user_sign['remark']='连续签到';
  158. if($user_sign['lianxu_days']>=20)
  159. {
  160. $user_sign["duihuan_status"]=1;
  161. $user_sign["lianxu_money"]=100;
  162. $user_sign['can_sign']=1;
  163. $user_sign['remark']='完成签到';
  164. $user_sign['duihuan_code']=$this->random_str(4).mt_rand(1000, 9999);
  165. //更新用户余额
  166. $user_balance = $userInfo['balance'];
  167. $u_info_update['balance'] = $user_balance+100;
  168. $rs = M("user_info")->where("id='$uid' AND balance=$user_balance")->save($u_info_update);
  169. if(!$rs)
  170. {
  171. $this->returnDataAndSendMsg("余额更新失败,请稍后重试.");
  172. die();
  173. }
  174. }
  175. $rs = M("user_free_cz100_sign")->where("id=$id")->save($user_sign);
  176. $data['code'] = '200';
  177. $data['message'] = 'ok';
  178. $data['data'] = $rs;
  179. echo json_encode($data);
  180. }
  181. /**
  182. * @param $uid
  183. * @param $reg_time 用户注册时间
  184. * @return false|float|int|mixed|string
  185. */
  186. private function addNewSign($uid,$reg_time)
  187. {
  188. $last_time = date('Y-m-d 00:00:00');
  189. //跳过重复签到
  190. $tmp_info = M("user_free_cz100_sign")->where("user_id = '$uid' AND last_sign='$last_time'")->find();
  191. if(!empty($tmp_info))
  192. {
  193. return 0;
  194. }
  195. $user_sign['user_id']=$uid;
  196. $user_sign['lianxu_days']=1;
  197. $user_sign['lianxu_money']=5;
  198. $user_sign['user_reg_time']=$reg_time;
  199. $user_sign['can_sign']=0;
  200. $user_sign['remark']='首次签到';
  201. $user_sign['last_sign']=$last_time;
  202. return M("user_free_cz100_sign")->add($user_sign);
  203. }
  204. }