/** * 获取数据 * @param $channel */ private function retrieveData($channel = null) { $ret = array('channel' => $channel, 'time' => $this->timestamp); // Load config $config = new ConfigModel(); $ret['config'] = $config->getConfig($this->lang); unset($config); // Load levels $level = new LevelModel(); $levels = array(); foreach ($level->getAllLevels() as $level) { $levels[$level->level] = array('min' => $level->min_exp, 'max' => $level->max_exp); } $ret['config']->levels = (object) $levels; unset($level, $levels); // Load Store Data $store = new StoreModel($this->lang); $ret['config']->store = $store->getData(); unset($store); $ret['data'] = new stdClass(); $ret['data']->state = 'ok'; $ret['data']->call_id = isset($this->input->call_id) ? substr($this->input->call_id, 4) : microtime(); $ret['data']->data_hash = md5(rand(100, 10000)); Session::instance()->set('data_hash', $ret['data']->data_hash); $ret['data']->swf_version = isset($this->input->swf_version) ? $this->input->swf_version : 85; $ret['data']->map = array(); $ret['data']->storage = array(); $ret['data']->gifts = array(); $ret['data']->neighbors = array(); $ret['data']->all_neighbors = array(); // Check User wether inited. $user = new UserModel(); $userinfo = $user->getUserById($this->uid); if ($userinfo) { $diff_time = $this->timestamp - strtotime($userinfo->logintime); // 用户每天登陆的奖励 if ($diff_time > self::EVERY_DAY_LOGIN_DIFF_TIME) { // 更新用户的钱 $this->debugMsg("diff_time=" . $diff_time); $userinfo->lottery_coins = self::EVERY_DAY_LOGIN_IN_AWARD; $updateData = array('coins' => $userinfo->coins + self::EVERY_DAY_LOGIN_IN_AWARD, 'logintime' => date('Y-m-d H:i:s')); $user->updateUser($this->uid, $updateData); //更新用户的金币 } else { $updateData = array('logintime' => date('Y-m-d H:i:s')); $user->updateUser($this->uid, $updateData); //更新用户的logintime } // Load User Maps $ret['data']->map = $this->getUserMaps($this->uid); // Load User storage $storage = new StorageModel(); $ret['data']->storage = (object) $storage->getUserStoragesByUid($this->uid); unset($storage); // Load User Gifts $gift = new GiftsModel(); $gifts_list = $gift->getNewGiftByUidForRetrieve($this->uid); $gifts_list_re = array(); foreach ($gifts_list as $k => $v) { $gifts_list_re[$v->itemid] = $v->qty; } $this->debugMsg($gifts_list); $ret['data']->gifts = (object) $gifts_list_re; $this->debugMsg($gift->getLastQuery()); unset($gift); // Load User Neighbors $ret['data']->all_neighbors[] = $this->syncUserNeighbors($this->input->fids); $neighbor = new NeighborsModel(); $ret['data']->neighbors = $neighbor->getNeighborsByUid($this->uid); unset($neighbor); $ret['data']->show_tutorial = 1; //TODO $ret['data']->items = array(); $ret['data']->coins = $userinfo->coins; $ret['data']->level = $userinfo->level; $ret['data']->experience = $userinfo->experience; $ret['data']->size_x = $userinfo->size_x; $ret['data']->size_y = $userinfo->size_x; $ret['data']->reward_points = $userinfo->reward_points; $ret['data']->op = $userinfo->op; $ret['data']->top_map_size = $userinfo->top_map_size; $ret['data']->max_work_area_size = $userinfo->max_work_area_size; $ret['data']->work_area_size = $userinfo->work_area_size; $ret['data']->lottery_coins = $userinfo->lottery_coins; $ret['data']->feed_data = false; $ret['data']->news = false; $ret['data']->show_gifts_page = false; $ret['data']->stories = array(); $ret['data']->items_received = array(); $ret['data']->ask_for_materials = array(); $ret['data']->ask_for_help = array(); $ret['data']->friend_helped = false; $ret['data']->gifts_received = array(); } else { $data = array('uid' => $this->uid, 'email' => '', 'level' => 1, 'experience' => 0, 'coins' => self::INIT_COINS, 'op' => 0, 'reward_points' => self::INIT_RC, 'logintime' => date('Y-m-d H:i:s'), 'loginip' => '', 'status' => 1); $user->add($data); $ret['data']->show_tutorial = 0; //TODO $ret['data']->coins = self::INIT_COINS; $ret['data']->items = array(); $ret['data']->level = 1; $ret['data']->experience = 0; $ret['data']->size_x = 60; $ret['data']->size_y = 60; $ret['data']->reward_points = self::INIT_RC; $ret['data']->op = 0; $ret['data']->top_map_size = 0; $ret['data']->max_work_area_size = 1; $ret['data']->work_area_size = 1; $ret['data']->lottery_coins = 0; $ret['data']->feed_data = false; $ret['data']->news = false; $ret['data']->show_gifts_page = false; $ret['data']->stories = array(); $ret['data']->items_received = array(); $ret['data']->ask_for_materials = array(); $ret['data']->ask_for_help = array(); $ret['data']->friend_helped = false; $ret['data']->gifts_received = array(); $ret['data']->storage = (object) array(15 => '5', 16 => '5'); // 将平台好友导入为邻居 $ret['data']->all_neighbors[] = $this->syncUserNeighbors($this->input->fids, true); $neighbor = new NeighborsModel(); $ret['data']->neighbors = $neighbor->getNeighborsByUid($this->uid); unset($neighbor); // $mapData = $this->initUserMapData(); $ret['data']->map = $mapData; } unset($model); if ($this->debug) { $ret['demsg'] = $this->demsg; } return $ret; }
public function dodo() { $file = 'data/retrieve_data.retrieve.1279381815334.response'; $content = file_get_contents($file); $data = unserialize($content); unset($content); echo '<pre>'; $store = new StoreModel(); $tmp = $store->getData(); foreach ($tmp as &$row) { // 单个产品为 数字,多个产品为 数组 $row->raw_material = trim($row->raw_material) && !is_numeric($row->raw_material) ? unserialize($row->raw_material) : ''; $row->product = trim($row->product) && !is_numeric($row->product) ? unserialize($row->product) : ''; $row->materials = trim($row->materials) && !is_numeric($row->materials) ? unserialize($row->materials) : ''; $row->upgrade_levels = trim($row->upgrade_levels) && !is_numeric($row->upgrade_levels) ? unserialize($row->upgrade_levels) : ''; foreach ($row as $key => $val) { if (is_string($val) && trim($val) == '' || is_null($val)) { unset($row->{$key}); } unset($row->status, $row->addtime); } } foreach ($data->config->store as $row) { //echo $row->id . "\t" . count((array)$row) . "\t" . count((array)$tmp[($row->id - 1)]) . "\n"; echo $row->id; print_r(array_diff((array) $row, (array) $tmp[$row->id - 1])); } unset($data->config); //echo var_export($data, true); echo '</pre>'; }