public function handle_request() { //todo 时间限制打开 if (time() < strtotime("2013-12-16 00:00:00")) { APF::get_instance()->get_response()->redirect(Uri_ChristmasUrl::advance_url()); } //是否登录 $broker_id = APF::get_instance()->get_request()->getBrokerId(); if (!$broker_id) { $current_url = APF::get_instance()->get_request()->get_request_url(); $login_url = Uri_ChristmasUrl::login_url($current_url); $this->setAttribute('login_url', $login_url); } //愿望列表 $wish_list = Model_Christmas_BrokerWish::get_wish_list($broker_id); //愿望滚动列表 $limit = 100; $wish_list_scroll = Model_Christmas_BrokerWish::get_wish_list_scroll($limit); //获奖名单 //$award_list = Model_Christmas_WishAward::get_award_list(); $award_list = array('孙绍光 137****9280 (北京) 获得 移动电源', '叶剑锋 136****6215 (上海) 获得 移动电源', '王毓秀 151****0593 (苏州) 获得 移动电源', '谢超华 132****1293 (郑州) 获得 移动电源', '杨红伟 189****5973 (成都) 获得 移动电源', '曾美林 186****6391 (杭州) 获得 移动电源', '沈政 182****9657 (上海) 获得 剃须刀', '李淑园 139****4069 (大连) 获得 移动电源', '缪宏冰 137****1143 (福州) 获得 剃须刀', '林俊泉 136****8440 (深圳) 获得 移动电源', '周燕芳 186****1587 (长沙) 获得 移动电源', '杨玉梅 159****2794 (珠海) 获得 移动电源', '刘智聪 180****9828 (厦门) 获得 剃须刀', '王甲甲 135****9917 (青岛) 获得 移动电源', '冉学文 151****7214 (重庆) 获得 移动电源', '李红 182****8269 (南京) 获得 移动电源', '陈勇鑫 135****0959 (广州) 获得 剃须刀', '李彦龙 182****6207 (上海) 获得 移动电源', '李鑫博 155****4944 (天津) 获得 移动电源', '张海洋 182****1449 (北京) 获得 剃须刀'); //是否显示许愿框 //是否发表过 $my_wish = Model_Christmas_BrokerWish::get_my_wish($broker_id); $broker_flag = empty($my_wish) ? true : false; $this->setAttribute('broker_id', $broker_id); $this->setAttribute('wish_list', $wish_list['text']); $this->setAttribute('wish_list_scroll', $wish_list_scroll); $this->setAttribute('broker_flag', $broker_flag); $this->setAttribute('award_list', $award_list); return 'Christmas_Wish'; }
public function handle_request() { // 是否登陆判断 if (!$this->isBrokerLogin()) { $current_url = $this->request->get_request_url(); $login_url = Uri_ChristmasUrl::login_url($current_url); $this->response->redirect($login_url); exit; } $this->out['brokerId'] = $this->request->getBrokerId(); $this->out['cityId'] = $this->request->getBrokerCityId(); $this->out['userId'] = $this->request->getUserId(); // 是否登陆判断 /*if(!$this->out['brokerId']){ $current_url = $this->request->get_request_url(); $login_url = Uri_ChristmasUrl::login_url($current_url); $this->response->redirect($login_url);exit; }*/ $weiLiaoInfo = Model_WeiLiao_WeiLiao::getInfoByBrokerId($this->out['brokerId']); // 是否参加城市 $this->out['isJoinCity'] = in_array($this->out['cityId'], $this->config['join_citys']); // 不参加城市跳转 if (in_array($this->out['cityId'], $this->config['no_join_citys'])) { $this->response->redirect('http://pages.anjuke.com/broker/flashman/flashman_noact.html'); } // 获取已申请位数 $hasApplysNum = Model_WeiLiao_FlashMan::getWeekHasApplysNum($this->out['cityId']); $hasApplys = Model_WeiLiao_FlashMan::getWeekApplys($this->out['cityId']); // 本轮是否参加过 $this->out['isNoJoin'] = true; if ($hasApplys) { foreach ($hasApplys as $key => $apply) { if ((int) $apply['brokerId'] == (int) $this->out['brokerId']) { $this->out['isNoJoin'] = false; $temp = date('H:i', $apply['startTime']) . '~' . date('H:i', $apply['endTime']) . ',' . date('H:i', $hasApplys[$key + 1]['startTime']) . '~' . date('H:i', $hasApplys[$key + 1]['endTime']); $this->out['isJointip'] = '展示时间 ' . date('m', strtotime($apply['onDay'])) . '月' . date('d', strtotime($apply['onDay'])) . '日:' . $temp; break; } } } $this->out['shengNum'] = $hasApplysNum ? 84 - $hasApplysNum : 84; // 活动是否开启 $this->out['isOpen'] = false; if (time() > strtotime($this->config['start_time']) && time() < strtotime($this->config['end_time'])) { if (isset($_GET['debug'])) { $this->out['isOpen'] = true; } else { if (date("w") == 5) { $this->out['isOpen'] = true; } } } // 是否闪电侠 $this->out['isFlashMan'] = $weiLiaoInfo && number_format($weiLiaoInfo['reply5minRate'], 3) >= 0.9 ? true : false; if (isset($_GET['debug'])) { print_r($this->out); } // ajax if (isset($_GET['method']) && $_GET['method'] == 'ajax') { if ($this->out['isOpen'] && $this->out['isFlashMan'] && $this->out['shengNum'] > 0 && $this->out['isJoinCity'] && $this->out['isNoJoin']) { // 申请 $this->doApply($hasApplys); } echo json_encode($this->out); die; } $this->setAttribute('out', $this->out); return 'WeiLiao_FlashMan'; }
/** * 逻辑 * 插入前,判断 排名 < 1000,执行插入。 * 插入后,判断 排名 < 1000,更新总数;否则,删除。 */ public function handle_request() { $apf = APF::get_instance(); $request = $apf->get_request(); $response = $apf->get_response(); $cache = APF_Cache_Factory::get_instance()->get_memcache(); // CurrentRoundTime & NextRoundTime $currentRoundTime = null; $nextRoundTime = null; $startDate = Util_Christmas::hammerRushStartDate(); $endDate = Util_Christmas::hammerRushEndDate(); if (!Util_Christmas::hammerRushStarted()) { $currentRoundTime = null; $nextRoundTime = date("{$startDate} 10:00:00"); } elseif (!Util_Christmas::hammerRushEnded()) { $currentHour = date('H'); if ($currentHour < 10) { if (date('Y-m-d') != $startDate) { $currentRoundTime = date('Y-m-d 18:00:00', strtotime('-1 day')); } $nextRoundTime = date('Y-m-d 10:00:00'); } elseif ($currentHour >= 10 && $currentHour < 14) { $currentRoundTime = date('Y-m-d 10:00:00'); $nextRoundTime = date('Y-m-d 14:00:00'); } elseif ($currentHour >= 14 && $currentHour < 18) { $currentRoundTime = date('Y-m-d 14:00:00'); $nextRoundTime = date('Y-m-d 18:00:00'); } elseif ($currentHour >= 18) { $currentRoundTime = date('Y-m-d 18:00:00'); if (date('Y-m-d') != $endDate) { $nextRoundTime = date('Y-m-d 10:00:00', strtotime('+1 day')); } } } // IsRushable $isRushable = false; // 当前在可抢时间范围内 if ($currentRoundTime && time() < strtotime($currentRoundTime) + 30 * 60) { $isRushable = true; } // 当前可抢开关 $result = $cache->get(Util_Christmas::hammerIsRushableCacheKey($currentRoundTime)); if ($result !== FALSE) { $isRushable = (bool) $result; } try { // Not Rushable if (!$isRushable) { throw new Exception_ChristmasException('Not rushable.', self::CODE_FAILED); } // 判断活动是否已开始 if (!Util_Christmas::hammerRushStarted()) { throw new Exception_ChristmasException('Hammer rush is not started.', self::CODE_NOT_START); } // 判断活动是否已结束 if (Util_Christmas::hammerRushEnded()) { throw new Exception_ChristmasException('Hammer rush is ended.', self::CODE_ENDED); } // 判断经纪人是否已经登陆 if (!$this->isBrokerLogin()) { throw new Exception_ChristmasException('Login first.', self::CODE_NOT_LOGIN); } // 获取经纪人详情 self::$BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info(self::$intBrokerID); $brokerId = self::$BrokerInfo['BaseInfo'][strtoupper('brokerid')]; $userId = self::$BrokerInfo['BaseInfo'][strtoupper('userId')]; // 判断经纪人是否通过双证验证 if (self::$BrokerInfo['BaseInfo'][strtoupper('checkstate')] == 0) { throw new Exception_ChristmasException('Check state first.', self::CODE_NOT_CHECK_STATE); } // 插入前,判断是否本轮是否已经抢过 try { $hammerLog = Model_Christmas_HammerLog::data_access()->force_master()->filter_by_op('brokerId', '=', $brokerId)->filter_by_op('type', '=', Model_Christmas_HammerLog::TYPE_HAMMER_RUSH)->filter_by_op('createdAt', '>=', $currentRoundTime)->find_one(); } catch (Exception $e) { $hammerLog = false; } if ($hammerLog) { throw new Exception_ChristmasException('Already rushed.', self::CODE_RUSHED); } // 经纪人添加1把锤子 $hammerLog = new Model_Christmas_HammerLog(); $hammerLog->brokerId = $brokerId; $hammerLog->type = Model_Christmas_HammerLog::TYPE_HAMMER_RUSH; $hammerLog->number = 1; $hammerLog->memo = '整点抢锤子'; $hammerLog->createdAt = date('Y-m-d H:i:s'); $hammerLog->updatedAt = $hammerLog->createdAt; $hammerLog->save(); // 本轮有效锤子数 $hammerRoundNumber = 1000; // 插入后,判断 排名 < 1000,更新总数;否则,删除。 $rank = $this->current_round_rank($hammerLog->id, $currentRoundTime); if ($rank >= $hammerRoundNumber) { $hammerLog->delete(); $isRushable = false; $cache->set(Util_Christmas::hammerIsRushableCacheKey($currentRoundTime), false); throw new Exception_ChristmasException('Not rushed.', self::CODE_FAILED); } // 更新经纪人总锤子 $brokerHammer = Model_Christmas_BrokerHammer::incrBrokerHammerNumber($brokerId, 1); // 发送系统消息 $messages = Util_Christmas::messages(); if (isset($messages[Model_Christmas_HammerLog::TYPE_HAMMER_RUSH])) { Bll_Service_Message::sendSystem(array('receiverIds' => $userId, 'message' => $messages[Model_Christmas_HammerLog::TYPE_HAMMER_RUSH])); } $result = array('code' => self::CODE_SUCCESS, 'message' => 'Success.', 'number' => $brokerHammer->number, 'currentTime' => strtotime($currentRoundTime) * 1000, 'nextTime' => $isRushable ? strtotime($currentRoundTime) * 1000 : strtotime($nextRoundTime) * 1000, 'isRushable' => intval($isRushable)); } catch (Exception_ChristmasException $e) { $result = array('code' => $e->getCode(), 'message' => $e->getMessage(), 'nextTime' => $isRushable ? strtotime($currentRoundTime) * 1000 : strtotime($nextRoundTime) * 1000, 'isRushable' => intval($isRushable), 'isLogin' => intval($this->isBrokerLogin()), 'loginUrl' => Uri_ChristmasUrl::login_url(Uri_ChristmasUrl::hammer_url())); } catch (Exception $e) { // 500 Error // http_response_code('500'); $result = array('code' => '500', 'message' => 'Server Error.'); } $response->set_content_type('application/json', 'UTF-8'); $response->add_header('Cache-Control', 'no-cache, no-store, must-revalidate'); $response->add_header('Pragma', 'no-cache'); $response->add_header('Expires', 0); echo json_encode($result); die; }
public function handle_request() { $apf = APF::get_instance(); $request = $apf->get_request(); $response = $apf->get_response(); try { // 判断经纪人是否已经登陆 if (!$this->isBrokerLogin()) { throw new Exception_ChristmasException('Login first.', self::CODE_NOT_LOGIN); } // 获取经纪人详情 self::$BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info(self::$intBrokerID, true); $brokerId = self::$BrokerInfo['BaseInfo'][strtoupper('brokerid')]; $userId = self::$BrokerInfo['BaseInfo'][strtoupper('userId')]; // 判断经纪人是否通过双证验证 /*if (self::$BrokerInfo['BaseInfo'][strtoupper('checkstate')] == 0) { throw new Exception_ChristmasException('Check state first.', self::CODE_NOT_CHECK_STATE); }*/ // 判断经纪人兑换的锤子是否已经多于3把 $brokerExchangeHammers = Model_Christmas_HammerLog::data_access()->force_master()->filter('type', Model_Christmas_HammerLog::TYPE_GRADE_EXCHANGE)->filter('brokerId', $brokerId)->count(); if ($brokerExchangeHammers >= self::EXCHANGE_HAMMER_LIMIT) { throw new Exception_ChristmasException('Reach exchange limit.', self::CODE_REACH_EXCHANGE_LIMIT); } // 判断经纪人的积分是否足否兑换锤子 $brokerGradeScore = self::$BrokerInfo['BaseInfo'][strtoupper('gradescore')]; if ($brokerGradeScore < self::EXCHANGE_GRADE_SCORE) { throw new Exception_ChristmasException('Grade not enough', self::CODE_GRADE_NOT_ENOUGH); } // 积分换锤子 $brokerHammer = Model_Christmas_BrokerHammer::incrBrokerHammerForGrade($brokerId, 1); // 发送系统消息 $messages = Util_Christmas::messages(); if (isset($messages[Model_Christmas_HammerLog::TYPE_GRADE_EXCHANGE])) { Bll_Service_Message::sendSystem(array('receiverIds' => $userId, 'message' => $messages[Model_Christmas_HammerLog::TYPE_GRADE_EXCHANGE])); } // 添加积分消费记录 $gradeLog = new Model_Grade_Log(date('Ym')); $gradeLog->itemId = self::GRADE_ITEM; $gradeLog->operateType = 1; $gradeLog->time = time(); $gradeLog->date = date('Ymd', $gradeLog->time); $gradeLog->data = serialize(array('time' => date('Y年m月d日 H时i分s秒'))); $gradeLog->score = 300; $gradeLog->brokerId = $brokerId; $gradeLog->adminId = 0; $gradeLog->flag = 0; // 未处理 $gradeLog->appId = 1; // 经纪人 $gradeLog->save(); $brokerGradeScore -= self::EXCHANGE_GRADE_SCORE; $result = array('code' => self::CODE_SUCCESS, 'message' => 'Success.', 'coin' => $brokerGradeScore, 'number' => $brokerHammer->number); } catch (Exception_ChristmasException $e) { $result = array('code' => $e->getCode(), 'message' => $e->getMessage(), 'isLogin' => intval($this->isBrokerLogin()), 'loginUrl' => Uri_ChristmasUrl::login_url(Uri_ChristmasUrl::hammer_url())); } catch (Exception $e) { // 500 Error // http_response_code('500'); $result = array('code' => '500', 'message' => 'Server Error.'); } $response->set_content_type('application/json', 'UTF-8'); $response->add_header('Cache-Control', 'no-cache, no-store, must-revalidate'); $response->add_header('Pragma', 'no-cache'); $response->add_header('Expires', 0); echo json_encode($result); die; }
public function handle_request() { $is_christmas_test = APF::get_instance()->get_config('is_christmas_test', 'christmas'); if (!$is_christmas_test) { if (time() < strtotime("2013-12-16 00:00:00")) { APF::get_instance()->get_response()->redirect(Uri_ChristmasUrl::advance_url()); } } $isLoggedIn = $this->isBrokerLogin(); $this->setAttribute('BrokerIsLoggedIn', $isLoggedIn); // 获取缓存实例 $cache = APF_Cache_Factory::get_instance()->get_memcache(); // CurrentRoundTime & NextRoundTime $currentRoundTime = null; $nextRoundTime = null; $startDate = Util_Christmas::hammerRushStartDate(); $endDate = Util_Christmas::hammerRushEndDate(); if (!Util_Christmas::hammerRushStarted()) { $currentRoundTime = null; $nextRoundTime = date("{$startDate} 10:00:00"); } elseif (!Util_Christmas::hammerRushEnded()) { $currentHour = date('H'); if ($currentHour < 10) { if (date('Y-m-d') != $startDate) { $currentRoundTime = date('Y-m-d 18:00:00', strtotime('-1 day')); } $nextRoundTime = date('Y-m-d 10:00:00'); } elseif ($currentHour >= 10 && $currentHour < 14) { $currentRoundTime = date('Y-m-d 10:00:00'); $nextRoundTime = date('Y-m-d 14:00:00'); } elseif ($currentHour >= 14 && $currentHour < 18) { $currentRoundTime = date('Y-m-d 14:00:00'); $nextRoundTime = date('Y-m-d 18:00:00'); } elseif ($currentHour >= 18) { $currentRoundTime = date('Y-m-d 18:00:00'); if (date('Y-m-d') != $endDate) { $nextRoundTime = date('Y-m-d 10:00:00', strtotime('+1 day')); } } } $this->setAttribute('CurrentRoundTime', $currentRoundTime); $this->setAttribute('NextRoundTime', $nextRoundTime); // IsRushable $isRushable = false; // 当前在可抢时间范围内 if ($currentRoundTime && time() < strtotime($currentRoundTime) + 30 * 60) { $isRushable = true; } // 当前可抢开关 $result = $cache->get(Util_Christmas::hammerIsRushableCacheKey($currentRoundTime)); if ($result !== FALSE) { $isRushable = (bool) $result; } $this->setAttribute('IsRushable', $isRushable); $this->setAttribute('IsEnd', Util_Christmas::hammerRushEnded()); if ($isLoggedIn) { $brokerId = self::$intBrokerID; self::$BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId, true); $this->setAttribute('BrokerName', $this->request->getUserName()); $isCheckedState = isset(self::$BrokerInfo['BaseInfo'][strtoupper('checkstate')]) && self::$BrokerInfo['BaseInfo'][strtoupper('checkstate')]; $this->setAttribute('BrokerIsCheckedState', $isCheckedState); $gradeScore = isset(self::$BrokerInfo['BaseInfo'][strtoupper('gradescore')]) ? self::$BrokerInfo['BaseInfo'][strtoupper('gradescore')] : 0; $this->setAttribute('BrokerGradeScore', $gradeScore); $exchangeHammerNumber = Model_Christmas_HammerLog::data_access()->filter_by_op('brokerId', '=', $brokerId)->filter_by_op('type', '=', Model_Christmas_HammerLog::TYPE_GRADE_EXCHANGE)->count(); $isExchangeable = $exchangeHammerNumber < 3; $this->setAttribute('IsExchangeAble', $isExchangeable); $brokerHammer = Model_Christmas_BrokerHammer::fetchBrokerHammerByBrokerId($brokerId, true); $this->setAttribute('BrokerHammerNumber', $brokerHammer->number); } else { $this->setAttribute('BrokerLoginUrl', Uri_ChristmasUrl::login_url($this->request->get_request_url())); } return 'Christmas_Hammer'; }