LotteryEventsTypeCode.class.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. namespace Cas\Module;
  3. use Cas\Dao\LotteryEventsCodeData;
  4. use KIF\Verify;
  5. use Cas\Dao\LotteryEvents;
  6. use KIF\Core\Config;
  7. use Cas\Dao\LotteryPrize;
  8. use KIF\Cache\Memcached;
  9. use KIF\Dao\SqlHelper;
  10. use Cas\Dao\LotteryPrizeVirtualData;
  11. use Cas\Dao\LotteryData;
  12. use Cas\Module\LotteryLog;
  13. use Cas\Dao\LotteryEventsLog as DLog;
  14. use Cas\Module\Lottery;
  15. use Cas\Dao\LotteryEventsLetters;
  16. use Cas\Dao\LotteryEventsUserLetters;
  17. use Cas\Dao\LotteryEventsUserPrizeData;
  18. use KIF\Data\ResultWrapper;
  19. use KIF\Core\Request;
  20. use Cas\Dao\LotteryEventsVote;
  21. use Cas\Dao\LotteryEventsVoteUserLog;
  22. use Cas\Dao\LotteryEventsTry;
  23. use Cas\Dao\LotteryUserExpress;
  24. use KIF\Dao\AbstractDao;
  25. /**
  26. *
  27. * 领码 [模型]
  28. *
  29. * @author lihuanchun
  30. */
  31. class LotteryEventsTypeCode {
  32. private $uid;
  33. private $events_id;
  34. private $objMlottery;
  35. private $objMLotteryLog;
  36. private $thisTime;
  37. private $objMLotteryEventsLimitations;
  38. private $objDLotteryEventsCode;
  39. private $objDLotteryUserExpress;
  40. public function __construct($uid=null , $events_id=null ) {
  41. $this->uid = $uid;
  42. $this->events_id = $events_id;
  43. $this->objMlottery = new Lottery();
  44. $this->objMLotteryLog = new LotteryLog($uid,$events_id);
  45. $this->thisTime = time();
  46. $this->objMLotteryEventsLimitations = new LotteryEventsLimitations();
  47. $this->objDLotteryEventsCode = new LotteryEventsCodeData();
  48. }
  49. /**
  50. * 获取当前“领编码信息”信息
  51. */
  52. public function getEventsData(){
  53. return $this->objMlottery->getOneLotteryEvents($this->events_id);
  54. }
  55. /**
  56. * 填写信息领取 “码”
  57. * $userMsg = array();
  58. */
  59. public function userCode($userMsg){
  60. $eventsData = $this->objMlottery->getOneLotteryEvents($this->events_id);
  61. $objDLotteryEventsCodeData= new LotteryEventsCodeData();
  62. $condition = "events_id = {$this->events_id} AND uid = 0 " ;
  63. $code_id = $objDLotteryEventsCodeData->findIdsBy ( $condition, '0,1' ,'id desc');
  64. $code_id = array_pop($code_id);
  65. if(!$code_id){
  66. return ResultWrapper::fail('没有券了');
  67. }
  68. $userMsg['uid'] = $this->uid;
  69. $objDLotteryEventsCodeData -> modify($userMsg,array('id' =>$code_id));
  70. $thisCodeData = $objDLotteryEventsCodeData -> get($code_id);
  71. // 模拟数据进入 我的获奖信息表中
  72. $objDLotteryData = new LotteryData();
  73. $info = array(
  74. 'events_id' => $this->eventsId,
  75. 'prize_id' => 0,
  76. 'uid' => $this->uid,
  77. 'winners_time' => $this->thisTime,
  78. 'winning_time' => $this->thisTime,
  79. 'run_time_data' => array(
  80. 'events' => $eventsData,
  81. 'prize' => array(
  82. 0 => array(
  83. 'events_id' => $this->eventsId,
  84. 'prize_name' => $eventsData['code_name'],
  85. 'img_url' => $eventsData['code_img_url'],
  86. 'type' => LotteryPrize::TYPE_ENTITY,
  87. )
  88. ),
  89. ),
  90. 'virtual_data' => $thisCodeData['data'],
  91. );
  92. $objDLotteryData -> add($info);
  93. $returnData = array();
  94. $returnData['codeData'] = $thisCodeData;
  95. $returnData['eventData'] = $eventsData;
  96. return ResultWrapper::success($returnData);
  97. }
  98. /**
  99. * 验证活动&用户行为
  100. */
  101. public function ckUserEventsCode(){
  102. $eventsData = $this->objMlottery->getOneLotteryEvents($this->events_id);
  103. # 活动是否开始
  104. if($this->thisTime < $eventsData['begin_time'] || $this->thisTime > $eventsData['end_time']){
  105. return ResultWrapper::fail('当前活动未开始');
  106. }
  107. # 活动限制
  108. if(!$this->objMLotteryEventsLimitations->ckEventRestrictions($this->uid,Request::ip(), $this->events_id)){
  109. return ResultWrapper::fail('您不可以重复参与哦!');
  110. }
  111. # 判断是否有奖券了
  112. $objDLotteryEventsCodeData= new LotteryEventsCodeData();
  113. $condition = "events_id = {$this->events_id} AND uid = 0 " ;
  114. $code_id = $objDLotteryEventsCodeData->findIdsBy ( $condition, '0,1' ,'id desc');
  115. $code_id = array_pop($code_id);
  116. if(!$code_id){
  117. return ResultWrapper::fail('没有券了');
  118. }
  119. # 记录参与日志
  120. $other = array(
  121. 'postData' => $_POST,
  122. 'getData' => $_GET
  123. );
  124. $this->objMLotteryLog ->addLog(DLog::LOG_TYPE_PARTICIPATION, $other);
  125. return ResultWrapper::success('通过');
  126. }
  127. /**
  128. * 增加行为记录
  129. */
  130. public function setLimitations($code=null){
  131. $this->objMLotteryEventsLimitations->setUserEventNum($this->uid, $this->events_id); // 记录用户参与UID(天)
  132. $this->objMLotteryEventsLimitations->setIpEventNum(Request::ip(), $this->events_id);// 记录用户参与IP(天)
  133. $this->objMLotteryEventsLimitations->setUserParticipationNum($this->uid, $this->events_id); // 记录用户参与次数
  134. $this->objMLotteryEventsLimitations->setUserWinningNum($this->uid, $this->events_id);// 记录用户和获奖次数
  135. # 记录"参与成功"日志
  136. $other = array();
  137. $this->objMLotteryLog ->addLog(DLog::LOG_TYPE_PARTICIPATION_TRUE, $other);
  138. # 记录"用户参与" other 表单内容
  139. $other = array(
  140. '表单内容:' => join(',', $_POST),
  141. '券信息:' =>$code,
  142. );
  143. $this->objMLotteryLog ->addUserParticipateLog($other);
  144. }
  145. }