uid = $uid; $this->events_id = $events_id; $this->objMlottery = new Lottery(); $this->objDLotteryEventsLetters = new LotteryEventsLetters(); $this->objMLotteryLog = new LotteryLog($uid,$events_id); $this->thisTime = time(); $this->objMLotteryEventsLimitations = new LotteryEventsLimitations(); $this->objDLotteryEventsUserLetters = new LotteryEventsUserLetters(); } /** * 获取当前“收集字母”信息 */ public function getEventsData(){ $data = $this->objMlottery->getOneLotteryEventsAndPrize($this->events_id); $data['letters'] = $this->objDLotteryEventsLetters-> getEventData($this->events_id); return $data; } /** * 获取当前用户“收集字母”信息 */ public function getUserLetters(){ $userLettersData = $this->objDLotteryEventsUserLetters -> getOneUserData($this->events_id,$this->uid); return $userLettersData; } /** * 抽奖【抽字母 & 抽奖品】 */ public function sweepstakes(){ # 记录参与日志 $other = array(); $this->objMLotteryLog ->addLog(DLog::LOG_TYPE_PARTICIPATION, $other); $objDLotteryEventsUserLetters = new LotteryEventsUserLetters(); $objDLotteryEventsLetters = new LotteryEventsLetters(); $userLettersData = $objDLotteryEventsUserLetters -> getOneUserData($this->events_id,$this->uid); $eventsLettersData = $objDLotteryEventsLetters -> getEventData($this->events_id); $eventsAndPrize = $this->objMlottery->getOneLotteryEventsAndPrize($this->events_id); # 活动是否开始 if($this->thisTime < $eventsAndPrize['events']['begin_time'] || $this->thisTime > $eventsAndPrize['events']['end_time']){ return ResultWrapper::fail('当前活动未开始'); } # 检查用户是否完成此活动 if(count($userLettersData['ABC_data'])==count($eventsLettersData)){ return ResultWrapper::fail('已达到今日活动参与上限。'); } # 活动限制 if(!$this->objMLotteryEventsLimitations->ckEventRestrictions($this->uid,Request::ip(), $this->events_id)){ return ResultWrapper::fail('已达到今日活动参与上限。'); } # 记录用户 $this->objMLotteryEventsLimitations->setUserEventNum($this->uid, $this->events_id); // 记录用户参与UID(天) $this->objMLotteryEventsLimitations->setIpEventNum(Request::ip(), $this->events_id);// 记录用户参与IP(天) $this->objMLotteryEventsLimitations->setUserParticipationNum($this->uid, $this->events_id); // 记录用户参与次数 $objMLotteryDrawLetters = new LotteryDrawLetters($this->uid,$this->events_id); if(isset($userLettersData['ABC_data']) && (count($userLettersData['ABC_data'])+1)==count($eventsLettersData)){ //print '走抽奖品逻辑'."; // 抽奖品逻辑 $objMLotteryDraw = new LotteryDraw($this->uid,$this->events_id); $lotteryDataId = $objMLotteryDraw -> verifyPrize(); if(!$lotteryDataId){ #######用户行为记录######## #用户抽没有抽中字母 $other = array( '字母:' => '未抽中', ); $this->objMLotteryLog ->addUserParticipateLog($other); ######################### return ResultWrapper::fail(array('No_drawn' => '抱歉没有抽中哦!')); } // 给用户最后一个字母 //print '中奖给用户最后一个字母'."
"; $lottery_id = false; foreach ($eventsLettersData as $key=>$letters){ if(!isset($userLettersData['ABC_data'][$key])){ $lottery_id = $key; break; } } $info = array( 'events_id' => $this->events_id, 'uid' => $this->uid, 'ABC_data' => $lottery_id, ); $objDLotteryEventsUserLetters -> addLetters($info); $objDLotteryEventsLetters -> upLettersWinningNum($lottery_id ,1); $objDLotteryEventsLetters -> cumulativeTodayHasWinTotal($lottery_id); $objMLotteryDrawLetters -> clear_draw_next_time($letters_id); $objDLotteryData = new LotteryData(); $lotteryData = $objDLotteryData -> get($lotteryDataId); # 记录一条获奖日志 $other = $info; $this->objMLotteryLog ->addLog(DLog::LOG_TYPE_RECEIVE, $other); #######用户行为记录######## #用户抽中奖品 & 收集到最后一个字母 $letters_data= $objDLotteryEventsLetters -> get($lottery_id); $other = array( '字母:' => $letters_data['ABC_name'], '奖品:' => $lotteryData['run_time_data']['prize'][$lotteryData['prize_id']]['prize_name'] ); $this->objMLotteryLog ->addUserParticipateLog($other); ######################### return ResultWrapper::success(array( 'lottery_id' => $lottery_id, 'lotteryData' => $lotteryData )); } //print '走抽字母逻辑'."; // 抽字母逻辑 $lottery_id = $objMLotteryDrawLetters->verifyPrize($userLettersData['ABC_data']); if(!$lottery_id){ #######用户行为记录######## #用户抽没有抽中字母 $other = array( '字母:' => '未抽中', ); $this->objMLotteryLog ->addUserParticipateLog($other); ######################### return ResultWrapper::fail(array('No_drawn' => '抱歉没有抽中哦!')); } # 记录一条获奖日志 $info = array( 'events_id' => $this->events_id, 'uid' => $this->uid, 'ABC_data' => $lottery_id, ); $this->objMLotteryLog ->addLog(DLog::LOG_TYPE_RECEIVE, $info); #######用户行为记录######## #用户抽中字母 $letters_data= $objDLotteryEventsLetters -> get($lottery_id); $other = array( '字母:' => $letters_data['ABC_name'], ); $this->objMLotteryLog ->addUserParticipateLog($other); ######################### return ResultWrapper::success(array('lottery_id' => $lottery_id)); } }