EventsScratch.class.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <?php
  2. namespace Cas\Controller;
  3. use Cas\Dao\LotteryData;
  4. use Cas\Module\Lottery;
  5. use Cas\Module\LotteryEventsLimitations;
  6. use Cas\Module\LotteryEventsTypeScratch;
  7. use KIF\Core\Request;
  8. use KIF\Verify;
  9. use Cas\Dao\UserInfo;
  10. use Cas\Module\Count;
  11. /**
  12. * 刮刮卡
  13. * lihuanchun
  14. */
  15. class EventsScratch extends EventsController {
  16. /**
  17. * 页面:默认刮刮卡首页
  18. */
  19. public function doDefault() {
  20. # 获取活动ID
  21. //$events_id = Request::g('events_id');
  22. $events_id = $this->getEventsCreateTimeToId();
  23. if (!Verify::unsignedInt($events_id)) {
  24. self::fail_exit('无效id');
  25. }
  26. # 获取用户信息
  27. $objUserData = new UserInfo();
  28. $uid = $this->getRunTimeUid();
  29. $userData = $objUserData -> get($uid);
  30. $this->setOutput('userData', $userData);
  31. # 获取当前活动数据
  32. $objLotteryEventsTypeScratch = new LotteryEventsTypeScratch($uid, $events_id);
  33. $scratchData = $objLotteryEventsTypeScratch->getEventsData();
  34. # 检查是否移动端
  35. $title = $scratchData['events']['weixinShare']['title'] ? $scratchData['events']['weixinShare']['title'] : $scratchData['events']['events_name'];
  36. $this->checkIsFromMobile($title);
  37. # 获取登录地址
  38. $url = Request::g('url');
  39. $plat_form_id = $this->getPlatFormId();
  40. $objMLottery = new Lottery();
  41. $thisUrl = $objMLottery -> getEventsUrl($scratchData['events']['type'],$scratchData['events']['create_time'],$url);
  42. $loginUrl = $this -> getLoginUrl($thisUrl);
  43. $this->setOutput('loginUrl', $loginUrl);
  44. # 判断是否需要登录
  45. $ckLogin = $this->ckLogin();
  46. $this->setOutput('ckLogin', $ckLogin);
  47. # 检查当前活动是否需要登录
  48. $authorize =$scratchData['events']['authorize'];
  49. if ($authorize && $loginUrl) {
  50. if($ckLogin==true){
  51. self::redirect($loginUrl);
  52. }
  53. }
  54. # 活动状态
  55. $TIME = time();
  56. $eventsStatus = false;
  57. $objMLotteryEventsLimitations = new LotteryEventsLimitations();
  58. if($TIME < $scratchData['events']['begin_time'] ){
  59. $eventsStatus = 'STATUS_NOT_START';
  60. } elseif ($TIME > $scratchData['events']['end_time']){
  61. $eventsStatus = 'STATUS_HAS_END';
  62. } elseif (!$objMLotteryEventsLimitations -> ckEventRestrictions($uid, Request::ip(), $events_id)){
  63. $eventsStatus = 'STATUS_HAS_RESTRTICTIONS';
  64. }
  65. # 记录PV UV日志 访问
  66. $objCount = new Count();
  67. $objCount->setPassLog( $events_id,$plat_form_id);
  68. $this->tpl = 'events_scratch';
  69. $this->setOutput('title', $scratchData['events']['weixinShare']['title'] ? $scratchData['events']['weixinShare']['title'] : $scratchData['events']['events_name']);
  70. $this->setOutput('scratchData', $scratchData);
  71. $this->setOutput('uid', $uid);
  72. $this->setOutput('weixinShare', $scratchData['events']['weixinShare']);
  73. $this->setOutput('eventsStatus', $eventsStatus);
  74. }
  75. /**
  76. * 事件:判断当前用户是否能继续参与
  77. */
  78. public function doCKEventRestrictions(){
  79. $uid = $this->getRunTimeUid();
  80. if (!Verify::unsignedInt($uid)) {
  81. self::ajax_fail_exit('无效uid');
  82. }
  83. $events_id = Request::g('events_id');
  84. if (!Verify::unsignedInt($events_id)) {
  85. self::ajax_fail_exit('无效events_id');
  86. }
  87. $objMLotteryEventsLimitations = new LotteryEventsLimitations();
  88. # 记录用户
  89. $objMLotteryEventsLimitations->setUserEventNum($uid, $events_id); // 记录用户参与UID(天)
  90. $objMLotteryEventsLimitations->setIpEventNum(Request::ip(), $events_id);// 记录用户参与IP(天)
  91. $objMLotteryEventsLimitations->setUserParticipationNum($uid, $events_id); // 记录用户参与次数
  92. $objMLotteryEventsLimitations = new LotteryEventsLimitations();
  93. if(!$objMLotteryEventsLimitations -> ckEventRestrictions($uid, Request::ip(), $events_id)){
  94. self::ajax_fail_exit('达到了上线');
  95. }
  96. self::ajax_success_exit('还可以参与');
  97. }
  98. /**
  99. * 操作:ajax用户领取 礼品
  100. */
  101. public function doUserRestrictions(){
  102. $uid = $this->getRunTimeUid();
  103. if(!$uid){
  104. self::ajax_fail_exit('UID错误');
  105. }
  106. # 获取活动ID
  107. $events_id = Request::g('events_id');
  108. if (!Verify::unsignedInt($events_id)) {
  109. self::ajax_fail_exit('无效id');
  110. }
  111. $lottery_data_id = Request::g('lottery_data_id');
  112. if (!Verify::unsignedInt($events_id)) {
  113. self::ajax_fail_exit('无效lottery_data_id');
  114. }
  115. $objMlottery = new Lottery();
  116. $lotteryData = $objMlottery -> getOneLotteryData($lottery_data_id);
  117. if($lotteryData['uid'] != $uid || $lotteryData['events_id']!=$events_id ){
  118. self::ajax_fail_exit('领取失败');
  119. }
  120. $objLotteryEventsTypeScratch = new LotteryEventsTypeScratch($uid, $events_id);
  121. $objLotteryEventsTypeScratch ->userReceive($lottery_data_id);
  122. # 修改当前获奖记录 标记为 已领取
  123. $info = array(
  124. 'scratch_receive' => LotteryData::EVENT_SCRATCH_RECEIVE_TRUE,
  125. );
  126. $objMlottery->upOneLetteryData($info,array('id' => $lottery_data_id));
  127. self::ajax_success_exit('领取成功') ;
  128. }
  129. /**
  130. * 操作:页面初始化 ajax请求操作
  131. */
  132. public function doScratch() {
  133. # 检查用户UID & 获取用户ID
  134. $events_id = Request::g('events_id');
  135. if (!Verify::unsignedInt($events_id)) {
  136. self::ajax_fail_exit(array(
  137. 'errcode' => 'INVALID_ID',
  138. ));
  139. }
  140. $uid = $this->getRunTimeUid();
  141. # 获取当前活动数据
  142. $objLotteryEventsTypeScratch = new LotteryEventsTypeScratch($uid, $events_id);
  143. $scratchData = $objLotteryEventsTypeScratch->getEventsData();
  144. # 抽奖操作
  145. $winData = array();
  146. $tmpWinData = $objLotteryEventsTypeScratch->userScratch();
  147. if ($tmpWinData->isSuccess()) {
  148. $winData = $tmpWinData->getData();
  149. $lottery_data_id = $winData['id'];
  150. $newWinData = $winData['run_time_data']['prize'][$winData['prize_id']];
  151. $newWinData['lottery_data_id'] = $lottery_data_id;
  152. if(isset($winData['virtual_data']) && !empty($winData['virtual_data'])){
  153. $newWinData['virtual_data'] = $winData['virtual_data'];
  154. }
  155. }
  156. self::ajax_success_exit($newWinData);
  157. }
  158. /**
  159. * 显示
  160. */
  161. public function display() {
  162. return $this->render();
  163. }
  164. }