LotteryEventsTypeScratch.class.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. namespace Cas\Module;
  3. use KIF\Verify;
  4. use Cas\Dao\LotteryEvents;
  5. use KIF\Core\Config;
  6. use Cas\Dao\LotteryPrize;
  7. use KIF\Cache\Memcached;
  8. use KIF\Dao\SqlHelper;
  9. use Cas\Dao\LotteryPrizeVirtualData;
  10. use Cas\Dao\LotteryData;
  11. use Cas\Module\LotteryLog;
  12. use Cas\Dao\LotteryEventsLog as DLog;
  13. use Cas\Module\Lottery;
  14. use Cas\Dao\LotteryEventsLetters;
  15. use Cas\Dao\LotteryEventsUserLetters;
  16. use Cas\Dao\LotteryEventsUserPrizeData;
  17. use KIF\Data\ResultWrapper;
  18. use KIF\Core\Request;
  19. use Cas\Dao\LotteryEventsVote;
  20. use Cas\Dao\LotteryEventsVoteUserLog;
  21. use Cas\Dao\LotteryEventsTry;
  22. use Cas\Dao\LotteryUserExpress;
  23. use KIF\Dao\AbstractDao;
  24. /**
  25. *
  26. * 刮刮卡 [模型]
  27. *
  28. * @author lihuanchun
  29. */
  30. class LotteryEventsTypeScratch {
  31. private $uid;
  32. private $events_id;
  33. private $objMlottery;
  34. private $objMLotteryLog;
  35. private $thisTime;
  36. private $objMLotteryEventsLimitations;
  37. public function __construct($uid=null , $events_id=null ) {
  38. $this->uid = $uid;
  39. $this->events_id = $events_id;
  40. $this->objMlottery = new Lottery();
  41. $this->objMLotteryLog = new LotteryLog($uid,$events_id);
  42. $this->thisTime = time();
  43. $this->objMLotteryEventsLimitations = new LotteryEventsLimitations();
  44. $this->objDLotteryUserExpress = new LotteryUserExpress();
  45. }
  46. /**
  47. * 获取当前“刮刮卡”信息
  48. */
  49. public function getEventsData(){
  50. return $this->objMlottery->getOneLotteryEventsAndPrize($this->events_id);
  51. }
  52. /**
  53. * 刮奖 操作
  54. */
  55. public function userScratch(){
  56. $eventsData = $this->objMlottery->getOneLotteryEvents($this->events_id);
  57. # 活动是否开始
  58. if($this->thisTime < $eventsData['begin_time'] || $this->thisTime > $eventsData['end_time']){
  59. return ResultWrapper::fail('当前活动未开始');
  60. }
  61. # 活动限制
  62. if(!$this->objMLotteryEventsLimitations->ckEventRestrictions($this->uid,Request::ip(), $this->events_id)){
  63. return ResultWrapper::fail('您不可以重复参与哦!');
  64. }
  65. # 抽奖
  66. $objMLotteryDraw = new LotteryDraw($this->uid,$this->events_id);
  67. $lotteryDataId = $objMLotteryDraw -> verifyPrize();
  68. // 测试
  69. //$lotteryDataId = 191;
  70. if(!$lotteryDataId){
  71. #######用户行为记录########
  72. #用户未中奖
  73. $other = array(
  74. '奖品:' => '未抽中'
  75. );
  76. $this->objMLotteryLog ->addUserParticipateLog($other);
  77. #########################
  78. return ResultWrapper::fail('没有中奖');
  79. }
  80. # 如果是默认此礼品用户未收取
  81. $info = array(
  82. 'scratch_receive' => LotteryData::EVENT_SCRATCH_RECEIVE_FALSE,
  83. );
  84. $this->objMlottery->upOneLetteryData($info,array('id' => $lotteryDataId));
  85. # 获奖数据
  86. $data = $this->objMlottery-> getOneLotteryData($lotteryDataId);
  87. #######用户行为记录########
  88. #用户抽中奖品
  89. $other = array(
  90. '奖品:' => $data['run_time_data']['prize'][$data['prize_id']]['prize_name']
  91. );
  92. $this->objMLotteryLog ->addUserParticipateLog($other);
  93. #########################
  94. return ResultWrapper::success($data);
  95. }
  96. /**
  97. * 用户领取此中奖数据操作
  98. */
  99. public function userReceive($lotteryDataId){
  100. # 记录参与日志
  101. $other = array();
  102. $this->objMLotteryLog ->addLog(DLog::LOG_TYPE_PARTICIPATION, $other);
  103. # 记录用户
  104. $this->objMLotteryEventsLimitations->setUserEventNum($this->uid, $this->events_id); // 记录用户参与UID(天)
  105. $this->objMLotteryEventsLimitations->setIpEventNum(Request::ip(), $this->events_id);// 记录用户参与IP(天)
  106. $this->objMLotteryEventsLimitations->setUserParticipationNum($this->uid, $this->events_id); // 记录用户参与次数
  107. $info = array(
  108. 'scratch_receive' => LotteryData::EVENT_SCRATCH_RECEIVE_TRUE,
  109. );
  110. $this->objMlottery->upOneLetteryData($info,array('id' => $lotteryDataId));
  111. return ResultWrapper::success('领取成功');
  112. }
  113. /**
  114. * 判断奖品是否需要快递
  115. * 需要用户 填写收货信息
  116. */
  117. public function userExpress($lotteryDataId,$user_name,$phone,$address){
  118. $objDLotteryData = new LotteryData();
  119. $tableInfo = array(
  120. 'user_name' => $user_name,
  121. 'phone' => $phone,
  122. 'address' => $address
  123. );
  124. $objDLotteryData -> update($tableInfo, array('id' => $lotteryDataId));
  125. $info = array(
  126. 'uid' => $this->uid,
  127. 'user_name' => $user_name,
  128. 'phone' => $phone,
  129. 'address' => $address
  130. );
  131. $this->objDLotteryUserExpress -> add($info,AbstractDao::PARAM_CREATE_ACTION_REPLACE);
  132. }
  133. }