using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using LitJson; public class OperationLogCollect : Singleton { const string bugReportUrl = "http://xssgcenter.secondworld.net.cn:11000/center/eventreport.php?"; public void BugReport(string _title, string _content) { var tables = new Dictionary(); tables["OperatorID"] = VersionConfig.Get().appId; tables["RegionName"] = "data"; tables["RegionID"] = ServerListCenter.Instance.currentServer.region_flag.ToString(); tables["EventID"] = 9002.ToString(); tables["ProductID"] = VersionConfig.Get().gameId; tables["Time"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); tables["IP"] = DeviceUtility.GetIp(); tables["AccountID"] = LoginManager.Instance.sdkLoginResult.account; tables["Level"] = PlayerDatas.Instance.baseData.LV.ToString(); tables["RoleID"] = PlayerDatas.Instance.baseData.PlayerName; tables["VIPLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString(); tables["DeviceFlag"] = SDKUtils.Instance.Device.uniqueID; var contentPrefix = StringUtility.Concat("IMEI:", DeviceUtility.GetDeviceUniquenessIdentify(), ";"); contentPrefix = StringUtility.Concat(contentPrefix, "Version:", StringUtility.Concat(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex.ToString(), "-", LoginManager.Instance.hotVersion), Language.Id, ";"); contentPrefix = StringUtility.Concat(contentPrefix, "Brand:", DeviceUtility.GetDeviceName(), ";"); contentPrefix = StringUtility.Concat(contentPrefix, "MI5:", DeviceUtility.GetDeviceModel(), ";"); contentPrefix = StringUtility.Concat(contentPrefix, "os_version:", DeviceUtility.GetDeviceOSLevel(), ";"); tables["Title"] = _title; tables["Content"] = _content; tables["ClientInfo"] = contentPrefix; HttpRequest.Instance.RequestHttpGet(StringUtility.Concat(bugReportUrl, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType); } //10000 战场报错, 10001 封包错误, 10002 界面操作 public void BugReportSys(string _content, string sid = "10000") { #if !UNITY_EDITOR try { var tables = new Dictionary(); tables["OperatorID"] = VersionConfig.Get().appId; tables["RegionName"] = "data"; tables["RegionID"] = sid; tables["EventID"] = 9002.ToString(); tables["ProductID"] = VersionConfig.Get().gameId; tables["Time"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); tables["IP"] = DeviceUtility.GetIp(); tables["AccountID"] = "system"; tables["Level"] = "1"; tables["RoleID"] = "system"; tables["VIPLevel"] = "1"; tables["DeviceFlag"] = SDKUtils.Instance.Device.uniqueID; var contentPrefix = StringUtility.Concat("IMEI:", DeviceUtility.GetDeviceUniquenessIdentify(), ";"); contentPrefix = StringUtility.Concat(contentPrefix, "Version:", StringUtility.Concat(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex.ToString(), "-", LoginManager.Instance.hotVersion), Language.Id, ";"); contentPrefix = StringUtility.Concat(contentPrefix, "Brand:", DeviceUtility.GetDeviceName(), ";"); contentPrefix = StringUtility.Concat(contentPrefix, "MI5:", DeviceUtility.GetDeviceModel(), ";"); contentPrefix = StringUtility.Concat(contentPrefix, "os_version:", DeviceUtility.GetDeviceOSLevel(), ";"); tables["Title"] = "system"; _content = _content.Replace("0000", ""); if (ConfigManager.Instance.isLoadFinished && DTC0102_tagCDBPlayer.playerIdBuf != 0 && LoginManager.Instance.sdkLoginResult != null && !string.IsNullOrEmpty(LoginManager.Instance.sdkLoginResult.account)) { _content = StringUtility.Concat(LoginManager.Instance.sdkLoginResult.account, "@", ServerListCenter.Instance.currentServer.region_flag.ToString(), " ", _content); } tables["Content"] = _content.Substring(0, Math.Min(800, _content.Length)); tables["ClientInfo"] = contentPrefix; HttpRequest.Instance.RequestHttpGet(StringUtility.Concat(bugReportUrl, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType); } catch (System.Exception ex) { Debug.LogError("BugReportSys error" + ex); } #endif } const string chatReportUrl = "http://xssgcenter.secondworld.net.cn:11000/center/eventreport.php?"; public void ChatReport(string content, string channelName, string toPlayer, int chatType) { #if !UNITY_EDITOR bool isFairy = chatType == 3; var tables = new Dictionary(); tables["ProductID"] = VersionConfig.Get().gameId; tables["OperatorID"] = VersionConfig.Get().appId; tables["OperatorName"] = string.Empty; tables["RegionName"] = StringUtility.Concat("s", ServerListCenter.Instance.currentServer.region_flag.ToString()); tables["RegionID"] = ServerListCenter.Instance.currentServer.region_flag.ToString(); tables["EventID"] = 9003.ToString(); tables["Time"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); tables["IP"] = DeviceUtility.GetIp(); tables["ChatChannel"] = channelName; var sdkLoginResult = LoginManager.Instance.sdkLoginResult; tables["AccountID"] = sdkLoginResult == null ? LoginManager.Instance.accountBuf : sdkLoginResult.account; tables["RoleID"] = StringUtility.Concat(isFairy ? UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.FamilyName) : string.Empty, isFairy ? "-" : string.Empty, UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName)); tables["ToRoleID"] = UIHelper.ServerStringTrim(toPlayer); tables["Level"] = PlayerDatas.Instance.baseData.LV.ToString(); tables["VIPLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString(); tables["Content"] = UrlEncode(UIHelper.TrimContentToServer(content)); tables["DeviceFlag"] = SDKUtils.Instance.Device == null ? string.Empty : SDKUtils.Instance.Device.uniqueID; var chatStr = StringUtility.Concat(chatReportUrl, HttpRequest.HashtablaToString(tables)); HttpRequest.Instance.RequestHttpGet(chatStr, HttpRequest.defaultHttpContentType); #endif } /// /// 自定义 URL 编码函数(防止 AOT 裁剪) /// public string UrlEncode(string value) { if (string.IsNullOrEmpty(value)) return string.Empty; System.Text.StringBuilder result = new System.Text.StringBuilder(); foreach (char c in value) { // 不需要编码的字符 if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '-' || c == '_' || c == '.' || c == '~') { result.Append(c); } else if (c == ' ') { // 空格替换为 + result.Append('+'); } else { // 其他字符编码为 %XX 格式 byte[] bytes = System.Text.Encoding.UTF8.GetBytes(c.ToString()); foreach (byte b in bytes) { result.Append('%'); result.Append(b.ToString("X2")); } } } return result.ToString(); } }