|
- local EapDataMgr = EapClass("EapDataMgr")
-
- function EapDataMgr:ctor()
- self.SourceID = nil
- self.EapPhone = nil --绑定的平台手机号
- self.UserId = nil --用户pid
- self.AppId = 1001 --应用编号
- self.Ticket = "" --帐号通行证
- self.Account = "" --帐号名称
- self.AccountUnique = F_EapGetDeviceID() or "" --账号唯一标识
- self.IP = "0.0.0.0" --IP地址
- self.Province = "" --省份
- self.City = "" --城市
- self.Location = {} --经纬度
- self.RealName = nil --身份证姓名
- self.RealID = nil --身份证id
- self.NickName = "" --第三方昵称
- self.Gender = 0 --性别 0女 1男 2未知
- self.AppAccountId = "" --三方系统账号ID
- self.Mobile = "" --手机号
- self.HeadImgUrl = ""
- self.UserInfo = nil --自己的完整信息
- self.MatchIcons = {} --赛事宣传图
-
- self.m_pageSize = 30
- self.m_pointSelGameID = nil --自己选择的积分赛事ID
- self.m_allMatchs = {} --所有赛事信息
- self.m_matchInfos = {} --所有赛事信息,自己参加的
- self.m_gameInfos = {} --平台对应的游戏
- self.m_rulesDes = nil --规则和奖励数据
- self.m_matchRule = nil --赛事规则
- self.m_historyMatch = {} --自己参加的历史赛事
- self.m_awardUrl = EAP_APP_DOWNLOAD_URL --app跳转地址
- self.m_isMatching = false --赛事结束
- self.m_firstLogin = false --首登
- self.m_timeConfig = {} --弹窗时间段
- self:cleanData()
-
- self:preInit() --必要初始化
- end
-
- function EapDataMgr:cleanData()
- self.m_signMatchID = nil --信息码报名的赛事id
- self.m_allRanks = {} --所有排名
- self.m_selfRank = {} --自己排名
- self.m_myScoreMatchs = {} --自己参赛的积分赛(已有积分)
- self.m_scoreMatchNum = {} --积分赛每个赛事参赛人数,自己对局次数
- self.m_matchRound = {} --自己当日对局战绩
- self.m_friends = {} --好友信息
- self.m_friendMatchInfos = {} --好友赛事信息
- self.m_otherMatchInfos = {} --其他人的赛事信息(搜索玩家)
-
- self.m_myMatchInfo = nil --自己进行中的赛事信息(只有一个)
- self.m_myUserMatchInfo = nil --自己个人赛事信息
- self.m_userBaseInfos = {} --所有玩家基础身份信息,昵称等
- self.m_allItems = {} --自己的道具
- self.m_teamRank = {} --赛事战队排名
- self.m_teamInfos = {} --战队详情
- self.m_teamMems = {} --战队队员详情
-
- --战队选拔赛
- self.m_selTeamInfos = {} --自己参与的战队
- self.m_selTeamMyRank = nil --自己战队的排行数据
- self.m_selTeamRanks = {} --所有战队的排行数据
- self.m_selTeamDailys = {} --当日详情
- self.m_stAllTeamBaseInfos = {} --所有战队的信息详情
-
- --任务
- self.m_tasks = {}
-
- self.m_redInfo = nil --自己的红包
- self.m_redRecords = {} --自己的红包记录
- end
-
- function EapDataMgr:preInit()
- self:getIP() --获取ip地址
- end
-
- function EapDataMgr:getIP()
- sendHttpReq(EAP_IP_URL, function(__status, __data)
- if __status and __data then
- __data = G_EapSdkJson.decode(__data)
- self.IP = __data.ip
- self.Province = __data.province or ""
- self.City = __data.city or ""
- end
- end)
- end
-
- --配置时间段内每天第一次登陆
- function EapDataMgr:checkDailyFirst()
- if self:getDailyFirst() then
- local startTime = self.m_timeConfig.popoutStartTime or 0
- local endTime = self.m_timeConfig.popoutEndTime or 0
- local curTime = os.time()
- if curTime > startTime and curTime < endTime then
- self:setDailyFirst()
- return true
- end
- end
- return false
- end
-
- --赛事宣传图信息
- function EapDataMgr:getIconInfo(__id)
- return self.MatchIcons[__id]
- end
-
- function EapDataMgr:addFriendMatchInfo(__matchID, __matchInfo)
- local matchInfos = self.m_friendMatchInfos[__matchID]
- if matchInfos then
- matchInfos[#matchInfos + 1] = __matchInfo
- end
- end
-
- function EapDataMgr:deleteFriendMatchInfo(__matchID, __pid)
- local matchInfos = self.m_friendMatchInfos[__matchID]
- if matchInfos then
- for i=1, #matchInfos do
- local matchInfo = matchInfos[i]
- if matchInfo.PID == __pid then
- table.remove(matchInfos, i)
- break
- end
- end
- end
- end
-
- function EapDataMgr:getFriendMatchInfo(__matchID, __pid)
- local matchInfos = self.m_friendMatchInfos[__matchID]
- if matchInfos then
- for i=1, #matchInfos do
- local matchInfo = matchInfos[i]
- if matchInfo.PID == __pid then
- return matchInfo
- end
- end
- end
- end
-
- function EapDataMgr:isFriend(__pid)
- for i=1, #self.m_friends do
- local friend = self.m_friends[i]
- if friend and __pid == friend.DPID then
- return true
- end
- end
- return false
- end
-
- --获取任务
- function EapDataMgr:getTaskByID(__taskID)
- return self.m_tasks[__taskID]
- end
-
- --是否有可领取任务
- function EapDataMgr:checkTaskFinish()
- for k,v in pairs(self.m_tasks) do
- for i=1, #v do
- local taskInfo = v[i]
- if taskInfo then
- if taskInfo.status == 0 then
- return true
- end
- end
- end
- end
- return false
- end
-
- --获取自己对局最多的赛事
- function EapDataMgr:getMaxNumMatch()
- return self.m_scoreMatchNum[1]
- end
-
- --对局数刷新增加
- function EapDataMgr:addGameNum(__matchID, __num)
- __num = __num or 1
- for i=1, #self.m_scoreMatchNum do
- local info = self.m_scoreMatchNum[i]
- if info and info.MatchID == __matchID then
- info.GameNum = info.GameNum + __num
- break
- end
- end
- table.sort(self.m_scoreMatchNum, function(a, b)
- local gameNum_a = a.GameNum or 0
- local gameNum_b = b.GameNum or 0
- return gameNum_a > gameNum_b
- end)
- end
-
- function EapDataMgr:getScoreMatchNumInfo(__matchID)
- for i=1, #self.m_scoreMatchNum do
- local info = self.m_scoreMatchNum[i]
- if info and info.MatchID == __matchID then
- return info
- end
- end
- end
-
- function EapDataMgr:getMyEapScore()
- return self.m_allItems[ITEM_TYPE.INTEGRAL]
- end
-
- function EapDataMgr:getItem(__id)
- return self.m_allItems[__id]
- end
-
- function EapDataMgr:getItemName(__id)
- local itemNames = {
- --战力值
- [ITEM_TYPE.POWER] = "战力值",
- --天梯分
- [ITEM_TYPE.LADDER_SCORE] = "天梯分",
- --大师分
- [ITEM_TYPE.MASTER_SCORE] = "大师分",
- --以上只在服务之间流转,不入库。可用于客户端标识奖励等
-
- --奖章,可用于积分商城兑换
- [ITEM_TYPE.INTEGRAL] = "奖章",
- --钻石
- [ITEM_TYPE.DIAMOND] = "钻石",
- --eap平台币
- [ITEM_TYPE.MONEY] = "平台币",
- --eap参赛门票
- [ITEM_TYPE.EAP_TICKET] = "参赛门票",
- --eap参赛门票
- [ITEM_TYPE.RED_CASH] = "现金红包",
- }
- return itemNames[__id]
- end
-
- function EapDataMgr:getUserBaseInfo(__pid)
- return self.m_userBaseInfos[__pid]
- end
-
- function EapDataMgr:getMaxRankMatch()
- local resMatch = nil
- for k,v in pairs(self.m_myScoreMatchs) do
- local match = v
- if not resMatch then
- resMatch = match
- elseif resMatch.Rank > match.Rank then
- resMatch = match
- end
- end
- return resMatch
- end
-
- function EapDataMgr:checkAllMatchEnd()
- if self.m_matchInfos then
- local isEnd = true
- for k,v in pairs(self.m_matchInfos) do
- if v.Status ~= MATCH_STATUS.End then
- isEnd = false
- break
- end
- end
- if isEnd then
- self.m_isMatching = false
- return true
- end
- else
- self.m_isMatching = false
- return true
- end
- return false
- end
-
- function EapDataMgr:getGameInfo(__gameid)
- return self.m_gameInfos[__gameid]
- end
-
- --历史记录赛事信息
- function EapDataMgr:getHistoryMatch(__matchID)
- return self.m_historyMatch[__matchID]
- end
-
- function EapDataMgr:getSelfRankByID(__matchID)
- return self.m_myScoreMatchs[__matchID]
- end
-
- function EapDataMgr:getSelfTeamRank()
- local matchInfo = nil
- if self.m_myScoreMatchs then
- for k,v in pairs(self.m_myScoreMatchs) do
- if v.MatchID and v.TeamID then
- if not matchInfo then
- matchInfo = v
- elseif matchInfo.UpTime < v.UpTime then
- matchInfo = v
- end
- end
- end
- end
- return matchInfo
- end
-
- --所有赛事信息
- function EapDataMgr:getMatchInfo(__matchID)
- return self.m_matchInfos[__matchID]
- end
- --玩家当前赛事状态
- function EapDataMgr:getUserMatchStatus()
- return self.m_myUserMatchInfo.Status
- end
-
- --每轮赛事规则
- function EapDataMgr:getRoundInfo(__round)
- return self.m_matchRule.VecRounds[__round]
- end
-
- --是否在赛事进行中
- function EapDataMgr:checkMatching(__status)
- if __status == MATCH_STATUS.Running or
- __status == MATCH_STATUS.Count or
- __status == MATCH_STATUS.End or
- __status == MATCH_STATUS.Empty or
- __status == MATCH_STATUS.OverWait or
- __status == MATCH_STATUS.Wait
- then
- G_EapSdkMgr.m_isMatching = true
- end
- return G_EapSdkMgr.m_isMatching
- end
-
- --检查是否需要确认参赛
- function EapDataMgr:checkConfirm()
- if self.m_myMatchInfo and self.m_myMatchInfo.Status == MATCH_STATUS.Match and
- self.m_myUserMatchInfo and self.m_myUserMatchInfo.Status == MATCH_STATUS.Sign then
-
- return true
- end
- return false
- end
-
- function EapDataMgr:getTeamRank(__round, __teamID)
- local roundTeams = self.m_teamRank[__round]
- if roundTeams then
- for i=1, #roundTeams do
- local team = roundTeams[i]
- if team.TeamID == __teamID then
- return team
- end
- end
- end
- end
-
- function EapDataMgr:getMyTeam(round)
- local roundTeams = self.m_teamRank[round]
- if roundTeams then
- for i=1, #roundTeams do
- local team = roundTeams[i]
- for j=1, #team.VecInfos do
- local mem = team.VecInfos[j]
- if mem.PID == self.UserId then
- return team
- end
- end
- end
- end
- end
- --战队成员信息
- function EapDataMgr:getTeamMemInfo(__teamID, __pid)
- local teamMem = self.m_teamMems[__teamID]
- if teamMem then
- for i=1, #teamMem do
- local memInfo = teamMem[i]
- if memInfo and memInfo.userId == __pid then
- return memInfo
- end
- end
- end
- end
-
- --选拔赛战队队员信息
- function EapDataMgr:getSelTeamMemInfo(__pid)
- local team = self.m_selTeamInfos[1]
- if team then
- local teamMem = team.members
- if teamMem then
- for i=1, #teamMem do
- local memInfo = teamMem[i]
- if memInfo and memInfo.userId == __pid then
- return memInfo
- end
- end
- end
- end
- end
-
- function EapDataMgr:InitSdk(appid, sourceid)
- self.SourceID = sourceid
- self.AppId = appid
- end
- -- 注册游戏信息
- function EapDataMgr:login(account, name, headurl, phonenum, sex)
- self.AppAccountId = account
- self.NickName = filterSpecChars(name)
- self.HeadImgUrl = headurl
- self.Mobile = phonenum
- self.Gender = sex
- if (self:checkInfo()) then
- G_EapSocketLogin:ChangeSocketState(true)
- end
- end
- -- 退出登陆
- function EapDataMgr:loginout()
- self:cleanData()
- G_EapSocketLogin:ChangeSocketState(false)
- G_EapSocketLogin:close()
- end
- -- 实名信息
- function EapDataMgr:VerifyRealInfo(__name, __id)
- self.RealName = __name
- self.RealID = __id
- if (self.RealName and self.RealName ~= "") and (self.RealID and self.RealID ~= "") then
- if (not self.UserInfo) or (not self.UserInfo.strIDCard) and self.UserId then
- G_EapSocketLogin.request_VerifyRealNameReq(__name, __id, nil, true)
- end
- end
- end
-
- -- 经纬度
- function EapDataMgr:SetLocationInfo(__latitude, __longitude)
- self.Location[0] = __latitude
- self.Location[1] = __longitude
- if (self.Location[0]) and (self.Location[1]) then
- if self.UserId then
- G_EapSocketLogin.request_SetUserLocationReq(self.Location[0], self.Location[1])
- end
- end
- end
-
- ----------------------------------------- 本地存储 ----------------------------------------
- --每日第一次登陆
- function EapDataMgr:getDailyFirst(__event)
- __event = __event or DAILY_FIRST.DEFAULT_EVENT
- local key = "key.eapSdk.dialyFirst_"..__event
- local oldTime = cc.UserDefault:getInstance():getStringForKey(key)
- local curTime = os.date("%x")
- if oldTime ~= curTime then
- return true
- end
- return false
- end
- function EapDataMgr:setDailyFirst(__event)
- __event = __event or DAILY_FIRST.DEFAULT_EVENT
- local key = "key.eapSdk.dialyFirst_"..__event
- local curTime = os.date("%x")
- return cc.UserDefault:getInstance():setStringForKey(key, curTime)
- end
-
- function EapDataMgr:getFirstLogin()
- return cc.UserDefault:getInstance():getIntegerForKey("key.eapSdk.firstLogin")
- end
- function EapDataMgr:setFirstLogin(__state)
- return cc.UserDefault:getInstance():setIntegerForKey("key.eapSdk.firstLogin", __state)
- end
- --多个赛事,选中的那个赛事
- function EapDataMgr:getSelMatchID()
- return cc.UserDefault:getInstance():getStringForKey("key.eapSdk.SelMatchID") or ""
- end
- function EapDataMgr:setSelMatchID(__matchID)
- return cc.UserDefault:getInstance():setStringForKey("key.eapSdk.SelMatchID", __matchID)
- end
- --是否点击进入赛事
- function EapDataMgr:getClickEnter()
- return cc.UserDefault:getInstance():getIntegerForKey("key.eapSdk.clickEnter") or 0
- end
- function EapDataMgr:setClickEnter(__state)
- return cc.UserDefault:getInstance():setIntegerForKey("key.eapSdk.clickEnter", __state)
- end
- --32强领取的红包金额
- function EapDataMgr:getRedAward()
- return cc.UserDefault:getInstance():getStringForKey("key.eapSdk.redAward") or ""
- end
- function EapDataMgr:setRedAward(__num)
- return cc.UserDefault:getInstance():setStringForKey("key.eapSdk.redAward", __num)
- end
-
- -- 检测信息是否异常
- function EapDataMgr:checkInfo()
- local state = true
- if (self.AppId == 0) then
- F_EapPrint("[EAPSDK_ERROR]", "未初始化sdk")
- state = false
- end
- if (self.NickName == "") then
- F_EapPrint("[EAPSDK_ERROR]", "玩家昵称未上传")
- state = false
- end
- if (self.AccountUnique == "") then
- F_EapPrint("[EAPSDK_ERROR]", "玩家mac地址设置错误")
- state = false
- end
- if (self.AppAccountId == "") then
- F_EapPrint("[EAPSDK_ERROR]", "玩家账号未上传")
- state = false
- end
- -- if (self.Mobile == "") then
- -- F_EapPrint("[EAPSDK_ERROR]", "玩家手机号设置错误")
- -- state = false
- -- end
- return state;
- end
- return EapDataMgr
|