/** * Job执行逻辑 * 剩余奖品总数>1000每一个小时发送一次邮件,<1000每十分钟发一次邮件 */ public function handle_request() { $time = $this->currentTime - 60 * 60; $total = Model_Activity_Res_eResActivityPrizeList::getPrizeTotalNum($this->prizeBatch); if ($total < 1000) { $flag = $this->getFlag(); if (!empty($flag)) { $time = $flag[0]; } if (strtotime($time) + 10 * 60 <= strtotime($this->currentTime)) { $prizeList = Model_Activity_Res_eResActivityPrizeList::getPrizeList(); $result = $this->buildTable($prizeList); $des = '<h3 style="color: red">' . $this->currentTime . '房源季活动第' . $this->prizeBatch . '批抽奖,奖品剩余个数' . $total . '</h3>'; $this->send_mail($this->mail, '房源季活动抽奖,奖品剩余个数统计', $des . $result); $this->setFlag(array($this->currentTime)); return true; } } else { $flag = $this->getFlag(); if (!empty($flag)) { $time = $flag[0]; } if (strtotime($time) + 60 * 60 <= strtotime($this->currentTime)) { $prizeList = Model_Activity_Res_eResActivityPrizeList::getPrizeList(); $result = $this->buildTable($prizeList); $des = '<h3>' . $this->currentTime . '房源季活动第' . $this->prizeBatch . '批抽奖,奖品剩余个数' . $total . '</h3>'; $this->send_mail($this->mail, '房源季活动抽奖,奖品剩余个数统计', $des . $result); $this->setFlag(array($this->currentTime)); return true; } } }
/** * 获取奖品清单 */ public static function getPrizeList() { //获取所有奖品数据 $PrizeList = Model_Activity_Res_eResActivityPrizeList::getPrizeList(true); $tmpPrizeList = array(); $minPrizeBatch = null; //过滤抽完的奖项&根据批次对奖项分类 foreach ($PrizeList as $list) { if ($list['prizeNum'] < 1) { //奖品数据不足 continue; } //奖项分批次 $tmpPrizeList[$list['prizeBatch']]['prizeList'][$list['id']] = $list; //用于计算中奖概率的 $tmpPrizeList[$list['prizeBatch']]['randList'][$list['id']] = $list['prizeNum']; //获取最小批次 if (!isset($minPrizeBatch)) { $minPrizeBatch = $list['prizeBatch']; } elseif ($minPrizeBatch > $list['prizeBatch']) { $minPrizeBatch = $list['prizeBatch']; } } //返回可抽奖list return isset($tmpPrizeList[$minPrizeBatch]) ? $tmpPrizeList[$minPrizeBatch] : array(); }