You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

508 lines
14 KiB

  1. local EapDataMgr = EapClass("EapDataMgr")
  2. function EapDataMgr:ctor()
  3. self.SourceID = nil
  4. self.EapPhone = nil --绑定的平台手机号
  5. self.UserId = nil --用户pid
  6. self.AppId = 1001 --应用编号
  7. self.Ticket = "" --帐号通行证
  8. self.Account = "" --帐号名称
  9. self.AccountUnique = F_EapGetDeviceID() or "" --账号唯一标识
  10. self.IP = "0.0.0.0" --IP地址
  11. self.Province = "" --省份
  12. self.City = "" --城市
  13. self.Location = {} --经纬度
  14. self.RealName = nil --身份证姓名
  15. self.RealID = nil --身份证id
  16. self.NickName = "" --第三方昵称
  17. self.Gender = 0 --性别 0女 1男 2未知
  18. self.AppAccountId = "" --三方系统账号ID
  19. self.Mobile = "" --手机号
  20. self.HeadImgUrl = ""
  21. self.UserInfo = nil --自己的完整信息
  22. self.MatchIcons = {} --赛事宣传图
  23. self.m_pageSize = 30
  24. self.m_pointSelGameID = nil --自己选择的积分赛事ID
  25. self.m_allMatchs = {} --所有赛事信息
  26. self.m_matchInfos = {} --所有赛事信息,自己参加的
  27. self.m_gameInfos = {} --平台对应的游戏
  28. self.m_rulesDes = nil --规则和奖励数据
  29. self.m_matchRule = nil --赛事规则
  30. self.m_historyMatch = {} --自己参加的历史赛事
  31. self.m_awardUrl = EAP_APP_DOWNLOAD_URL --app跳转地址
  32. self.m_isMatching = false --赛事结束
  33. self.m_firstLogin = false --首登
  34. self.m_timeConfig = {} --弹窗时间段
  35. self:cleanData()
  36. self:preInit() --必要初始化
  37. end
  38. function EapDataMgr:cleanData()
  39. self.m_signMatchID = nil --信息码报名的赛事id
  40. self.m_allRanks = {} --所有排名
  41. self.m_selfRank = {} --自己排名
  42. self.m_myScoreMatchs = {} --自己参赛的积分赛(已有积分)
  43. self.m_scoreMatchNum = {} --积分赛每个赛事参赛人数,自己对局次数
  44. self.m_matchRound = {} --自己当日对局战绩
  45. self.m_friends = {} --好友信息
  46. self.m_friendMatchInfos = {} --好友赛事信息
  47. self.m_otherMatchInfos = {} --其他人的赛事信息(搜索玩家)
  48. self.m_myMatchInfo = nil --自己进行中的赛事信息(只有一个)
  49. self.m_myUserMatchInfo = nil --自己个人赛事信息
  50. self.m_userBaseInfos = {} --所有玩家基础身份信息,昵称等
  51. self.m_allItems = {} --自己的道具
  52. self.m_teamRank = {} --赛事战队排名
  53. self.m_teamInfos = {} --战队详情
  54. self.m_teamMems = {} --战队队员详情
  55. --战队选拔赛
  56. self.m_selTeamInfos = {} --自己参与的战队
  57. self.m_selTeamMyRank = nil --自己战队的排行数据
  58. self.m_selTeamRanks = {} --所有战队的排行数据
  59. self.m_selTeamDailys = {} --当日详情
  60. self.m_stAllTeamBaseInfos = {} --所有战队的信息详情
  61. --任务
  62. self.m_tasks = {}
  63. self.m_redInfo = nil --自己的红包
  64. self.m_redRecords = {} --自己的红包记录
  65. end
  66. function EapDataMgr:preInit()
  67. self:getIP() --获取ip地址
  68. end
  69. function EapDataMgr:getIP()
  70. sendHttpReq(EAP_IP_URL, function(__status, __data)
  71. if __status and __data then
  72. __data = G_EapSdkJson.decode(__data)
  73. self.IP = __data.ip
  74. self.Province = __data.province or ""
  75. self.City = __data.city or ""
  76. end
  77. end)
  78. end
  79. --配置时间段内每天第一次登陆
  80. function EapDataMgr:checkDailyFirst()
  81. if self:getDailyFirst() then
  82. local startTime = self.m_timeConfig.popoutStartTime or 0
  83. local endTime = self.m_timeConfig.popoutEndTime or 0
  84. local curTime = os.time()
  85. if curTime > startTime and curTime < endTime then
  86. self:setDailyFirst()
  87. return true
  88. end
  89. end
  90. return false
  91. end
  92. --赛事宣传图信息
  93. function EapDataMgr:getIconInfo(__id)
  94. return self.MatchIcons[__id]
  95. end
  96. function EapDataMgr:addFriendMatchInfo(__matchID, __matchInfo)
  97. local matchInfos = self.m_friendMatchInfos[__matchID]
  98. if matchInfos then
  99. matchInfos[#matchInfos + 1] = __matchInfo
  100. end
  101. end
  102. function EapDataMgr:deleteFriendMatchInfo(__matchID, __pid)
  103. local matchInfos = self.m_friendMatchInfos[__matchID]
  104. if matchInfos then
  105. for i=1, #matchInfos do
  106. local matchInfo = matchInfos[i]
  107. if matchInfo.PID == __pid then
  108. table.remove(matchInfos, i)
  109. break
  110. end
  111. end
  112. end
  113. end
  114. function EapDataMgr:getFriendMatchInfo(__matchID, __pid)
  115. local matchInfos = self.m_friendMatchInfos[__matchID]
  116. if matchInfos then
  117. for i=1, #matchInfos do
  118. local matchInfo = matchInfos[i]
  119. if matchInfo.PID == __pid then
  120. return matchInfo
  121. end
  122. end
  123. end
  124. end
  125. function EapDataMgr:isFriend(__pid)
  126. for i=1, #self.m_friends do
  127. local friend = self.m_friends[i]
  128. if friend and __pid == friend.DPID then
  129. return true
  130. end
  131. end
  132. return false
  133. end
  134. --获取任务
  135. function EapDataMgr:getTaskByID(__taskID)
  136. return self.m_tasks[__taskID]
  137. end
  138. --是否有可领取任务
  139. function EapDataMgr:checkTaskFinish()
  140. for k,v in pairs(self.m_tasks) do
  141. for i=1, #v do
  142. local taskInfo = v[i]
  143. if taskInfo then
  144. if taskInfo.status == 0 then
  145. return true
  146. end
  147. end
  148. end
  149. end
  150. return false
  151. end
  152. --获取自己对局最多的赛事
  153. function EapDataMgr:getMaxNumMatch()
  154. return self.m_scoreMatchNum[1]
  155. end
  156. --对局数刷新增加
  157. function EapDataMgr:addGameNum(__matchID, __num)
  158. __num = __num or 1
  159. for i=1, #self.m_scoreMatchNum do
  160. local info = self.m_scoreMatchNum[i]
  161. if info and info.MatchID == __matchID then
  162. info.GameNum = info.GameNum + __num
  163. break
  164. end
  165. end
  166. table.sort(self.m_scoreMatchNum, function(a, b)
  167. local gameNum_a = a.GameNum or 0
  168. local gameNum_b = b.GameNum or 0
  169. return gameNum_a > gameNum_b
  170. end)
  171. end
  172. function EapDataMgr:getScoreMatchNumInfo(__matchID)
  173. for i=1, #self.m_scoreMatchNum do
  174. local info = self.m_scoreMatchNum[i]
  175. if info and info.MatchID == __matchID then
  176. return info
  177. end
  178. end
  179. end
  180. function EapDataMgr:getMyEapScore()
  181. return self.m_allItems[ITEM_TYPE.INTEGRAL]
  182. end
  183. function EapDataMgr:getItem(__id)
  184. return self.m_allItems[__id]
  185. end
  186. function EapDataMgr:getItemName(__id)
  187. local itemNames = {
  188. --战力值
  189. [ITEM_TYPE.POWER] = "战力值",
  190. --天梯分
  191. [ITEM_TYPE.LADDER_SCORE] = "天梯分",
  192. --大师分
  193. [ITEM_TYPE.MASTER_SCORE] = "大师分",
  194. --以上只在服务之间流转,不入库。可用于客户端标识奖励等
  195. --奖章,可用于积分商城兑换
  196. [ITEM_TYPE.INTEGRAL] = "奖章",
  197. --钻石
  198. [ITEM_TYPE.DIAMOND] = "钻石",
  199. --eap平台币
  200. [ITEM_TYPE.MONEY] = "平台币",
  201. --eap参赛门票
  202. [ITEM_TYPE.EAP_TICKET] = "参赛门票",
  203. --eap参赛门票
  204. [ITEM_TYPE.RED_CASH] = "现金红包",
  205. }
  206. return itemNames[__id]
  207. end
  208. function EapDataMgr:getUserBaseInfo(__pid)
  209. return self.m_userBaseInfos[__pid]
  210. end
  211. function EapDataMgr:getMaxRankMatch()
  212. local resMatch = nil
  213. for k,v in pairs(self.m_myScoreMatchs) do
  214. local match = v
  215. if not resMatch then
  216. resMatch = match
  217. elseif resMatch.Rank > match.Rank then
  218. resMatch = match
  219. end
  220. end
  221. return resMatch
  222. end
  223. function EapDataMgr:checkAllMatchEnd()
  224. if self.m_matchInfos then
  225. local isEnd = true
  226. for k,v in pairs(self.m_matchInfos) do
  227. if v.Status ~= MATCH_STATUS.End then
  228. isEnd = false
  229. break
  230. end
  231. end
  232. if isEnd then
  233. self.m_isMatching = false
  234. return true
  235. end
  236. else
  237. self.m_isMatching = false
  238. return true
  239. end
  240. return false
  241. end
  242. function EapDataMgr:getGameInfo(__gameid)
  243. return self.m_gameInfos[__gameid]
  244. end
  245. --历史记录赛事信息
  246. function EapDataMgr:getHistoryMatch(__matchID)
  247. return self.m_historyMatch[__matchID]
  248. end
  249. function EapDataMgr:getSelfRankByID(__matchID)
  250. return self.m_myScoreMatchs[__matchID]
  251. end
  252. function EapDataMgr:getSelfTeamRank()
  253. local matchInfo = nil
  254. if self.m_myScoreMatchs then
  255. for k,v in pairs(self.m_myScoreMatchs) do
  256. if v.MatchID and v.TeamID then
  257. if not matchInfo then
  258. matchInfo = v
  259. elseif matchInfo.UpTime < v.UpTime then
  260. matchInfo = v
  261. end
  262. end
  263. end
  264. end
  265. return matchInfo
  266. end
  267. --所有赛事信息
  268. function EapDataMgr:getMatchInfo(__matchID)
  269. return self.m_matchInfos[__matchID]
  270. end
  271. --玩家当前赛事状态
  272. function EapDataMgr:getUserMatchStatus()
  273. return self.m_myUserMatchInfo.Status
  274. end
  275. --每轮赛事规则
  276. function EapDataMgr:getRoundInfo(__round)
  277. return self.m_matchRule.VecRounds[__round]
  278. end
  279. --是否在赛事进行中
  280. function EapDataMgr:checkMatching(__status)
  281. if __status == MATCH_STATUS.Running or
  282. __status == MATCH_STATUS.Count or
  283. __status == MATCH_STATUS.End or
  284. __status == MATCH_STATUS.Empty or
  285. __status == MATCH_STATUS.OverWait or
  286. __status == MATCH_STATUS.Wait
  287. then
  288. G_EapSdkMgr.m_isMatching = true
  289. end
  290. return G_EapSdkMgr.m_isMatching
  291. end
  292. --检查是否需要确认参赛
  293. function EapDataMgr:checkConfirm()
  294. if self.m_myMatchInfo and self.m_myMatchInfo.Status == MATCH_STATUS.Match and
  295. self.m_myUserMatchInfo and self.m_myUserMatchInfo.Status == MATCH_STATUS.Sign then
  296. return true
  297. end
  298. return false
  299. end
  300. function EapDataMgr:getTeamRank(__round, __teamID)
  301. local roundTeams = self.m_teamRank[__round]
  302. if roundTeams then
  303. for i=1, #roundTeams do
  304. local team = roundTeams[i]
  305. if team.TeamID == __teamID then
  306. return team
  307. end
  308. end
  309. end
  310. end
  311. function EapDataMgr:getMyTeam(round)
  312. local roundTeams = self.m_teamRank[round]
  313. if roundTeams then
  314. for i=1, #roundTeams do
  315. local team = roundTeams[i]
  316. for j=1, #team.VecInfos do
  317. local mem = team.VecInfos[j]
  318. if mem.PID == self.UserId then
  319. return team
  320. end
  321. end
  322. end
  323. end
  324. end
  325. --战队成员信息
  326. function EapDataMgr:getTeamMemInfo(__teamID, __pid)
  327. local teamMem = self.m_teamMems[__teamID]
  328. if teamMem then
  329. for i=1, #teamMem do
  330. local memInfo = teamMem[i]
  331. if memInfo and memInfo.userId == __pid then
  332. return memInfo
  333. end
  334. end
  335. end
  336. end
  337. --选拔赛战队队员信息
  338. function EapDataMgr:getSelTeamMemInfo(__pid)
  339. local team = self.m_selTeamInfos[1]
  340. if team then
  341. local teamMem = team.members
  342. if teamMem then
  343. for i=1, #teamMem do
  344. local memInfo = teamMem[i]
  345. if memInfo and memInfo.userId == __pid then
  346. return memInfo
  347. end
  348. end
  349. end
  350. end
  351. end
  352. function EapDataMgr:InitSdk(appid, sourceid)
  353. self.SourceID = sourceid
  354. self.AppId = appid
  355. end
  356. -- 注册游戏信息
  357. function EapDataMgr:login(account, name, headurl, phonenum, sex)
  358. self.AppAccountId = account
  359. self.NickName = filterSpecChars(name)
  360. self.HeadImgUrl = headurl
  361. self.Mobile = phonenum
  362. self.Gender = sex
  363. if (self:checkInfo()) then
  364. G_EapSocketLogin:ChangeSocketState(true)
  365. end
  366. end
  367. -- 退出登陆
  368. function EapDataMgr:loginout()
  369. self:cleanData()
  370. G_EapSocketLogin:ChangeSocketState(false)
  371. G_EapSocketLogin:close()
  372. end
  373. -- 实名信息
  374. function EapDataMgr:VerifyRealInfo(__name, __id)
  375. self.RealName = __name
  376. self.RealID = __id
  377. if (self.RealName and self.RealName ~= "") and (self.RealID and self.RealID ~= "") then
  378. if (not self.UserInfo) or (not self.UserInfo.strIDCard) and self.UserId then
  379. G_EapSocketLogin.request_VerifyRealNameReq(__name, __id, nil, true)
  380. end
  381. end
  382. end
  383. -- 经纬度
  384. function EapDataMgr:SetLocationInfo(__latitude, __longitude)
  385. self.Location[0] = __latitude
  386. self.Location[1] = __longitude
  387. if (self.Location[0]) and (self.Location[1]) then
  388. if self.UserId then
  389. G_EapSocketLogin.request_SetUserLocationReq(self.Location[0], self.Location[1])
  390. end
  391. end
  392. end
  393. ----------------------------------------- 本地存储 ----------------------------------------
  394. --每日第一次登陆
  395. function EapDataMgr:getDailyFirst(__event)
  396. __event = __event or DAILY_FIRST.DEFAULT_EVENT
  397. local key = "key.eapSdk.dialyFirst_"..__event
  398. local oldTime = cc.UserDefault:getInstance():getStringForKey(key)
  399. local curTime = os.date("%x")
  400. if oldTime ~= curTime then
  401. return true
  402. end
  403. return false
  404. end
  405. function EapDataMgr:setDailyFirst(__event)
  406. __event = __event or DAILY_FIRST.DEFAULT_EVENT
  407. local key = "key.eapSdk.dialyFirst_"..__event
  408. local curTime = os.date("%x")
  409. return cc.UserDefault:getInstance():setStringForKey(key, curTime)
  410. end
  411. function EapDataMgr:getFirstLogin()
  412. return cc.UserDefault:getInstance():getIntegerForKey("key.eapSdk.firstLogin")
  413. end
  414. function EapDataMgr:setFirstLogin(__state)
  415. return cc.UserDefault:getInstance():setIntegerForKey("key.eapSdk.firstLogin", __state)
  416. end
  417. --多个赛事,选中的那个赛事
  418. function EapDataMgr:getSelMatchID()
  419. return cc.UserDefault:getInstance():getStringForKey("key.eapSdk.SelMatchID") or ""
  420. end
  421. function EapDataMgr:setSelMatchID(__matchID)
  422. return cc.UserDefault:getInstance():setStringForKey("key.eapSdk.SelMatchID", __matchID)
  423. end
  424. --是否点击进入赛事
  425. function EapDataMgr:getClickEnter()
  426. return cc.UserDefault:getInstance():getIntegerForKey("key.eapSdk.clickEnter") or 0
  427. end
  428. function EapDataMgr:setClickEnter(__state)
  429. return cc.UserDefault:getInstance():setIntegerForKey("key.eapSdk.clickEnter", __state)
  430. end
  431. --32强领取的红包金额
  432. function EapDataMgr:getRedAward()
  433. return cc.UserDefault:getInstance():getStringForKey("key.eapSdk.redAward") or ""
  434. end
  435. function EapDataMgr:setRedAward(__num)
  436. return cc.UserDefault:getInstance():setStringForKey("key.eapSdk.redAward", __num)
  437. end
  438. -- 检测信息是否异常
  439. function EapDataMgr:checkInfo()
  440. local state = true
  441. if (self.AppId == 0) then
  442. F_EapPrint("[EAPSDK_ERROR]", "未初始化sdk")
  443. state = false
  444. end
  445. if (self.NickName == "") then
  446. F_EapPrint("[EAPSDK_ERROR]", "玩家昵称未上传")
  447. state = false
  448. end
  449. if (self.AccountUnique == "") then
  450. F_EapPrint("[EAPSDK_ERROR]", "玩家mac地址设置错误")
  451. state = false
  452. end
  453. if (self.AppAccountId == "") then
  454. F_EapPrint("[EAPSDK_ERROR]", "玩家账号未上传")
  455. state = false
  456. end
  457. -- if (self.Mobile == "") then
  458. -- F_EapPrint("[EAPSDK_ERROR]", "玩家手机号设置错误")
  459. -- state = false
  460. -- end
  461. return state;
  462. end
  463. return EapDataMgr