hengyang_client/lua_probject/base_project/Game/Controller/LoginController.lua

207 lines
6.8 KiB
Lua
Raw Normal View History

2025-04-01 10:48:36 +08:00
LoginController = {}
local M = {}
--- Create a new LoginController
function LoginController.new()
setmetatable(M, { __index = IController })
local self = setmetatable({}, { __index = M })
self.baseType = LoginController
self.class = "Login"
return self
end
local _LocalConfigAllGame = {
-- 10, 33,
2025-06-25 22:49:44 +08:00
-- 90,
2026-02-26 19:16:10 +08:00
22,
2026-01-22 03:57:56 +08:00
55,
66, 90
, 91, 93
, 92
2026-01-26 23:15:47 +08:00
2025-04-01 10:48:36 +08:00
}
local FilterGame = function(games)
2025-04-09 15:33:02 +08:00
pt(games)
2025-04-01 10:48:36 +08:00
local tempGames = {}
for k, v in pairs(games) do
v.bundle = v.bundle:gsub("\r\n", "")
if IsHasDictionary(v.game_id, _LocalConfigAllGame) then
table.insert(tempGames, v)
end
end
return tempGames
end
local function __Login(cmd, _data, callBack)
local _client = ControllerManager.WebClient
_client:send(cmd, _data, function(res)
printlog("1111111111111111222222222222")
-- pt(cmd)
-- pt(res)
if (res.ReturnCode == 0) then
local data = res.Data
local account = data["account"]
local user = DataManager.SelfUser
user.acc = account.acc
user.account_id = account["id"]
user.diamo = account["diamo"]
user.nick_name = account["nick"]
user.sex = account["sex"]
user.head_url = account["portrait"]
user.room_id = account["roomid"]
user.group_id = account["groupId"]
2025-10-16 16:26:09 +08:00
user.type = account["type"] --为1的时候是代理为0的时候是普通玩家
2025-04-01 10:48:36 +08:00
user.agent = account["mng"]
user.pay_code = account.pay_code
2025-04-01 10:48:36 +08:00
user.real_info = account.real_info
user.phone = account.phone
user.address = account.address
user.games = FilterGame(data.games)
2025-11-12 13:53:54 +08:00
user.havaPsw = data.havaPassword
user.currenIp = data.ip
2025-04-01 10:48:36 +08:00
if Application.platform == RuntimePlatform.WindowsPlayer or Application.platform == RuntimePlatform.WindowsEditor then
--GameApplication.Instance.printLog = true
else
--GameApplication.Instance.printLog = user.type == 2
end
_client:setSession(data["session_id"] .. "," .. data["token"])
2025-04-11 12:49:08 +08:00
-- print("11111111111111111111111111111111")
2025-04-01 10:48:36 +08:00
pt(data)
ControllerManager.GroupClient = NetClient.new(data.groupWeb, "web_group", ConnectionProtocol.Web)
ControllerManager.GroupClient:setSession((data["session_id"] .. "," .. data["token"]))
ControllerManager.GroupClient.holdCallback = function(response)
print("lingmeng log roupClient.holdCallback", response.ReturnCode,
response.ReturnCode == Table_Error_code.ERR_LOGOUT)
if response.ReturnCode == Table_Error_code.ERR_LOGOUT then
if not DataManager._flag_logout then
-- local tip = "您的登录凭证已过期,请重新登录"
-- if DataManager._flag_zangxian then
-- tip = "您的账号在另一个地点登录, 请确定您的账号是否泄密"
-- end
ViewUtil.CloseModalWait2()
local _curren_msg =
MsgWindow.new(
nil,
"您的账号在另一个地点登录, 请确定您的账号是否泄密",
MsgWindow.MsgMode.OnlyOk
)
_curren_msg.onOk:Add(
function()
PlayerPrefs.DeleteKey('session_id')
PlayerPrefs.Save()
RestartGame()
end
)
_curren_msg:Show()
end
DataManager._flag_logout = true
else
DataManager._flag_logout = false
end
print("lingmeng log roupClient.holdCallback2", DataManager._flag_logout or false)
return DataManager._flag_logout or false
end
2025-04-01 10:48:36 +08:00
end
if (callBack ~= nil) then
callBack(res)
end
end)
end
--手机登录
function M:GetPhoneCode(phone, callback)
--不走登录逻辑
local _client = ControllerManager.WebClient
local _data = {}
_data["phone"] = phone
2025-11-06 17:37:53 +08:00
_client:send(Protocol.WEB_GET_Phone_Code, _data, function(res)
2025-04-01 10:48:36 +08:00
if (callback ~= nil) then
callback(res)
end
end)
end
function M:PhoneLogin(phone, code, callback)
local _data = {}
_data["phone"] = phone
_data["code"] = code
2025-11-06 17:37:53 +08:00
__Login(Protocol.WEB_LOGIN_Phone, _data, callback)
2025-04-01 10:48:36 +08:00
end
--手机密码登录
function M:PhonePasswordLogin(phone, password, callback)
local _data = {}
_data["phone"] = phone
_data["password"] = password
__Login(Protocol.WEB_PHONE_PASSWORD_LOGIN, _data, callback)
end
function M:IdPasswordLogin(uid, password, callback)
local _data = {}
_data["id"] = tonumber(uid)
_data["password"] = password
__Login(Protocol.WEB_ID_PASSWORD_LOGIN, _data, callback)
end
function M:Login(callback)
local user = DataManager.SelfUser
local _data = {}
_data["acc"] = user.acc
_data["nick"] = user.nick_name
_data["sex"] = user.sex
_data["portrait"] = user.head_url
2025-11-06 17:37:53 +08:00
local sys_type = 2
if GetPlatform() == "Android" then
sys_type = 0
elseif GetPlatform() == "iOS" then
sys_type = 1
end
_data["sys_type"] = sys_type
2025-04-01 10:48:36 +08:00
__Login(Protocol.WEB_USER_LOGIN, _data, callback)
end
function M:QuickLogin(session_id, callback)
local _data = {}
local _client = ControllerManager.WebClient
_client:setSession(session_id)
-- ControllerManager.GroupClient:setSession(session_id)
__Login(Protocol.WEB_QUICK_LOGIN, _data, callback)
end
function M.OnEnter(self)
2025-04-11 12:49:08 +08:00
---- print("login controller enter")
2025-04-01 10:48:36 +08:00
end
function M.OnExit(self)
2025-04-11 12:49:08 +08:00
---- print("login controller exit")
2025-04-01 10:48:36 +08:00
end
--字符串类json格式转化为表
function stringToTAble(data)
local returnTable = {}
for key, value in string.gmatch(data, "(%w+)=([^,]*)") do
value = value:gsub("^%s*(.-)%s*$", "%1") -- 去除前后空格
if value == "" then
returnTable[key] = nil -- 空值转换为 nil
elseif tonumber(value) then
returnTable[key] = tonumber(value) -- 数值转换
elseif value:match("^https?://") then
returnTable[key] = value -- URL 直接保留
else
returnTable[key] = value:gsub("\\u(%x%x%x%x)", function(hex)
return utf8.char(tonumber(hex, 16)) -- 处理 Unicode\u8dc3 -> 跃)
end)
end
end
return returnTable
end