<?php
|
include_once '/Common/CommFunc.php';
|
include_once '/Common/Logging.php';
|
include_once "/db/DBOper.php";
|
include_once "/Common/ServerOPS.php";
|
|
header("Content-type: text/html; charset=utf-8");
|
|
// 请求最近登录
|
\Logging\CreateLogging("center.region_player.php");
|
// ?game=xbqy&channel=test&branch=1&player=yn1233
|
// \Logging\LogInfo("_GET: " . print_r($_GET, true));
|
|
$game = $_GET["game"];
|
$channel = $_GET["channel"];
|
$branch = intval($_GET["branch"]);
|
$player = $_GET["player"];
|
$lang = $_GET["lang"]; // 标题语言,默认中文 "zh_CN" => "中文", "vi_VN" => "越南"
|
|
// \Logging\LogInfo("_GET:" . print_r($_GET, true));
|
|
$gameName = \CommFunc\GetGameName();
|
if ($game != $gameName || !$channel || $branch <= 0 || !$player) {
|
echo "{}";
|
\Logging\LogError("param error!" . print_r($_GET, true));
|
exit;
|
}
|
|
if (!$lang) {
|
\CommFunc\GetConfig("ServerInfo", "ServerDefaultLang", $lang);; // 默认语言
|
}
|
|
$playerServers = array(); // 最近服 - 直接取该账号的所有服角色
|
$find = array("Channel" => $channel, "AccountID" => $player);
|
if (\DBOper\FindOne("GameRoles", $find, $findData) && isset($findData)) {
|
foreach ($findData as $field => $value) {
|
$serverID = \CommFunc\GetServerIDBySid($field);
|
if ($serverID <= 0) {
|
continue;
|
}
|
if (!array_key_exists("PlayerName", $value)) {
|
continue;
|
}
|
$playerServers[$serverID] = array(
|
"region_id" => $serverID,
|
"roleid" => $value["PlayerName"],
|
"level" => $value["LV"],
|
"job" => ($channel == "qkbt52") ? $value["Job"] . "" : $value["Job"],
|
"last_login_time" => isset($value["LoginTime"]) ? $value["LoginTime"] : "",
|
);
|
}
|
}
|
|
$whiteList = \ServerOPS\GetWhiteList();
|
$white = in_array($player, $whiteList) ? 1 : 0;
|
|
$player_group_list = array(); // 最近服所有信息
|
$gametest_group_list = array(); // 内部服所有信息
|
|
// 有最近服 或 白名单账号 才取服务器信息
|
if (count($playerServers) > 0 || $white == 1) {
|
\DBOper\Find("GameServers", array("Channel" => $channel), $serverList);
|
|
foreach ($serverList as $serverInfo) {
|
$ServerID = $serverInfo["ServerID"];
|
$Statue = $serverInfo["Statue"];
|
|
// 非最近服 或 内部服白名单 则不需要该服务器信息
|
if (
|
!(array_key_exists($ServerID, $playerServers)
|
|| ($Statue == \ServerOPS\ServerStatue::InternalOpen && $white == 1)
|
)
|
) {
|
continue;
|
}
|
|
$serverJson = array(
|
"login_port" => $serverInfo["LoginPort"],
|
"region_domain" => $serverInfo["RegionDomain"],
|
"name" => $serverInfo["ServerName"],
|
"running_status" => $serverInfo["RunningStatus"],
|
"game_port" => $serverInfo["GamePort"],
|
"is_recommend" => $serverInfo["Recommend"],
|
"region_flag" => $serverInfo["ServerID"],
|
"statue" => $serverInfo["Statue"],
|
"start_date" => $serverInfo["StartDate"],
|
);
|
|
if (array_key_exists($ServerID, $playerServers)) {
|
array_push($player_group_list, array_merge($playerServers[$ServerID], $serverJson));
|
}
|
|
if ($Statue == \ServerOPS\ServerStatue::InternalOpen && $white == 1) {
|
array_push($gametest_group_list, $serverJson);
|
}
|
}
|
}
|
|
$ret = array(
|
"white" => $white,
|
|
"player" => array(
|
"group_title" => get_server_group_title("recently", $lang),
|
"group_size" => count($player_group_list),
|
"group_list" => $player_group_list,
|
),
|
);
|
|
if ($white == 1) {
|
$ret["gametest"] = array(
|
"group_title" => get_server_group_title("test", $lang),
|
"group_size" => count($gametest_group_list),
|
"group_list" => $gametest_group_list,
|
);
|
}
|
|
echo \CommFunc\MyJson_encode($ret);
|
exit;
|
|
function get_server_group_title($group, $lang)
|
{
|
// 兼容旧lang参数值
|
if ($lang == "zh_CN") {
|
$lang = "cn";
|
} elseif ($lang == "vi_VN") {
|
$lang = "vi";
|
}
|
\CommFunc\GetConfig("ServerInfo", "Server_" . $group, $groupTitles);
|
$groupTitleArray = json_decode($groupTitles, true);
|
if (isset($groupTitleArray) && array_key_exists($lang, $groupTitleArray)) {
|
return $groupTitleArray[$lang];
|
}
|
return $group;
|
}
|