currMissionSeasonMeta = \mt\StarLevel::getCurrentSeason(); if (!$this->currMissionSeasonMeta) { $this->_rspErr(10, 'server internal error'); die(); } // $this->_setV(TN_MISSION_STAR_SEASON, 0, $this->currMissionSeasonMeta['id']); $this->propertyChgService = new services\PropertyChgService(); $this->awardService = new services\AwardService(); $this->userInfo = $this->_safeGetOrmUserInfo(); } public function getList(){ $list = array(); $countdown = strtotime($this->currMissionSeasonMeta['end_time']) - myself()->_getNowTime(); $defaultList = \mt\StarLevel::getDefaultList(); $lvUpMetaList = \mt\StarLevel::getListBySeason($this->currMissionSeasonMeta['id']); $collection = array_merge($defaultList,$lvUpMetaList); foreach ($collection as $meta){ $state = MissionStar::NOT_FINISHED_STATE; $target = getXVal($meta, 'need_star_num', 1); $missionStarDb = MissionStar::find($meta['season_id'],$meta['id']); if ($this->userInfo['star_num'] >= $target && !$missionStarDb){ $state = MissionStar::RECEIVEABLE_STATE; } if ($this->userInfo['star_num'] >= $target && $missionStarDb){ $state = MissionStar::RECEIVED_STATE; } array_push($list, array( 'mission_id' => $meta['id'], 'current' => $this->userInfo['star_num'], 'target' => $target, 'state' =>$state ) ); } $this->_rspData(array( 'countdown' => $countdown, 'data' => $list, )); } public function commit(){ $missionId = getReqVal('mission_id', 0); $meta = mt\StarLevel::get($missionId); if (!$meta) { $this->_rspErr(1, 'mission_id parameter error'); return; } if ($this->userInfo['star_num'] < $meta['need_star_num']){ $this->_rspErr(1, 'objectives not achieved'); return; } $missionStarDb = MissionStar::find($meta['season_id'],$missionId); if ($missionStarDb){ $this->_rspErr(1, "Can't get it again"); return; } $items = array( array( 'item_id' => $meta['item_id'], 'item_num' => $meta['item_num'], ) ); $this->_addItems($items,$this->awardService, $this->propertyChgService); // $dropMeta = mt\Drop::get($meta['drop_id']); // if (!$dropMeta) { // $this->_rspErr(10, 'server internal error:' . $meta['drop_id']); // return; // } // $this->_scatterDrop('missionStar:' . $missionId, $dropMeta, $this->awardService, $this->propertyChgService); MissionStar::add($meta['season_id'],$missionId); $this->_rspData(array( 'award' => $this->awardService->toDto(), 'property_chg' => $this->propertyChgService->toDto(), )); } public function commitAll(){ $defaultList = \mt\StarLevel::getDefaultList(); $lvUpMetaList = \mt\StarLevel::getListBySeason($this->currMissionSeasonMeta['id']); $collection = array_merge($defaultList,$lvUpMetaList); foreach ($collection as $meta){ $target = getXVal($meta, 'need_star_num', 1); $missionStarDb = MissionStar::find($meta['season_id'],$meta['id']); if ($this->userInfo['star_num'] >= $target && !$missionStarDb){ //可领取 $items = array( array( 'item_id' => $meta['item_id'], 'item_num' => $meta['item_num'], ) ); $this->_addItems($items,$this->awardService, $this->propertyChgService); MissionStar::add($meta['season_id'],$meta['id']); // $dropMeta = mt\Drop::get($meta['drop_id']); // if ($dropMeta) { // $this->_scatterDrop('missionStar:' . $meta['id'], $dropMeta, $this->awardService, $this->propertyChgService); // MissionStar::add($meta['season_id'],$meta['id']); // } } } $this->_rspData(array( 'award' => $this->awardService->toDto(), 'property_chg' => $this->propertyChgService->toDto(), )); } public function resetStar(){ error_log('request time :'.date('Y-m-d h:i:s',time())); $season = $this->_getV(TN_MISSION_STAR_SEASON, 0,1); if ( $this->currMissionSeasonMeta['id'] > $season){ $meta = mt\Parameter::getByName('starroad_restart_point'); $max_star_num = getXVal($meta, 'param_value',1000); $rows = myself()->_getSelfMysql()->execQuery( 'SELECT account_id,star_num FROM t_user WHERE star_num>:star_num', array( "star_num"=>$max_star_num ) ); if (count($rows) > 0){ foreach ($rows as $row){ myself()->_getSelfMysql()->execQuery( 'UPDATE t_user SET star_num=:star_num WHERE account_id=:account_id', array( "star_num"=>$max_star_num, "account_id"=>$row['account_id'], ) ); } } $this->_setV(TN_MISSION_STAR_SEASON, 0, $this->currMissionSeasonMeta['id']); } } }