Box996Proxy.lua 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362
  1. local RemoteProxy = requireProxy("remote/RemoteProxy")
  2. local Box996Proxy = class("Box996Proxy", RemoteProxy)
  3. Box996Proxy.NAME = global.ProxyTable.Box996Proxy
  4. local cjson = require("cjson")
  5. local sha1 = require("sha1/init")
  6. local socket = require("socket")
  7. local signkey = "7PZJImoeAE5Dnjb6pCYu8Ja5Buhb2urL" -- svip
  8. local logSignKey = "e07157b7b815bf2b3add52523f95326b" -- 埋点key
  9. Box996Proxy.BOX_TYPE = {
  10. TYPE_TITLE = 1, -- 特权称号
  11. TYPE_EVERY_DAY = 2, -- 每日礼包
  12. TYPE_SUPER = 3, -- 超级礼包
  13. TYPE_VIP = 4, -- 会员礼包
  14. TYPE_SVIP = 5, -- SVIP
  15. TYPE_CLOUD_PHONE = 6, -- 云手机
  16. }
  17. Box996Proxy.BOX_UP_DATA = {
  18. [1] = 1,
  19. [2] = 2,
  20. [3] = 3,
  21. [4] = 6,
  22. [5] = 7,
  23. }
  24. Box996Proxy.BOX_UP_GIFT = {
  25. [1] = 105, -- 每日
  26. [3] = 106, -- 超级
  27. [4] = 140, -- 会员
  28. }
  29. -- 下载按钮数据上报
  30. Box996Proxy.BOX_UP_DOWNLOAD = {
  31. [2] = 104 -- 每日
  32. }
  33. Box996Proxy.SVIP_REWARD_TYPE = {
  34. TYPE_ATTR = 1, -- 属性奖励
  35. TYPE_LIBAO = 2 -- 礼包奖励
  36. }
  37. -- 数据上报事件ID
  38. Box996Proxy.LOGUP_EVENT_ID = {
  39. [119] = "tiantianshengqian_1150", -- svip页签
  40. [120] = "tiantianshengqian_1155", -- svip的下载
  41. [121] = "tiantianshengqian_1154", -- svip的领取礼包
  42. [122] = "tiantianshengqian_1153", -- svip的属性激活,
  43. [123] = "tiantianshengqian_1151", -- svip 我的等级点击
  44. [124] = "tiantianshengqian_1152", -- svip 其他等级点击
  45. [125] = "tiantianshengqian_1138", -- 天天省钱入口
  46. [126] = "tiantianshengqian_1139", -- 每日礼包页签
  47. [127] = "tiantianshengqian_1140", -- 领取每日礼包
  48. [128] = "tiantianshengqian_1141", -- 领取礼包下载盒子
  49. [129] = "tiantianshengqian_1142", -- 超级礼包页签
  50. [130] = "tiantianshengqian_1143", -- 超级礼包 每日礼包
  51. [131] = "tiantianshengqian_1144", -- 超级礼包 下载盒子
  52. [132] = "tiantianshengqian_1145", -- 称号 展示自己的盒子称号
  53. [133] = "tiantianshengqian_1146", -- 称号 隐藏自己的盒子称号
  54. [134] = "tiantianshengqian_1147", -- 称号 展示他人的盒子称号
  55. [135] = "tiantianshengqian_1148", -- 称号 隐藏他人的盒子称号
  56. [136] = "tiantianshengqian_1149", -- 称号 下载盒子
  57. [137] = "tiantianshengqian_1215", -- 称号页签
  58. [138] = "tiantianshengqian_1230", -- 会员礼包页签
  59. [139] = "tiantianshengqian_1231", -- 会员礼包 下载
  60. [140] = "tiantianshengqian_1232", -- 会员礼包 领取
  61. [141] = "yunshouji_1689", -- 打开天天省钱且有云手机页签,曝光
  62. [142] = "yunshouji_1690", -- 点击云手机页签(领取入口)且开始生效倒计时
  63. [143] = "yunshouji_1691", -- 点击立即领取按钮
  64. [144] = "yunshouji_1692", -- 点击下载盒子按钮
  65. }
  66. -- 其它数据上报的EVENTID
  67. Box996Proxy.OTHER_UP_EVEIT = {
  68. -- 交易行 begin
  69. [1] = "jiaoyihang_1156", -- 交易行
  70. [101] = "jiaoyihang_1157", -- 交易行 购买页签
  71. [102] = "jiaoyihang_1158", -- 交易行 寄售页签
  72. [103] = "jiaoyihang_1161", -- 交易行 货架页签
  73. [104] = "jiaoyihang_1162", -- 交易行 我的页签
  74. [105] = "jiaoyihang_1163", -- 交易行 提现 /下载盒子
  75. [106] = "jiaoyihang_1159", -- 交易会 寄售的角色按钮
  76. [107] = "jiaoyihang_1160", -- 交易会 寄售的货币按钮
  77. -- 交易行 end
  78. }
  79. -- svip界面的按钮上报 对应LOGUP_EVENT_ID
  80. Box996Proxy.SVIP_BOX_UP_UP = {
  81. [1] = Box996Proxy.LOGUP_EVENT_ID[120],
  82. [2] = Box996Proxy.LOGUP_EVENT_ID[121],
  83. [3] = Box996Proxy.LOGUP_EVENT_ID[122],
  84. [4] = Box996Proxy.LOGUP_EVENT_ID[123],
  85. [5] = Box996Proxy.LOGUP_EVENT_ID[124],
  86. }
  87. -- 主界面
  88. -- 特权/每日/超级 按钮 对应上报ID 盒子切页 对应LOGUP_EVENT_ID
  89. Box996Proxy.BOX_UP_BTN = {
  90. [0] = Box996Proxy.LOGUP_EVENT_ID[125],
  91. [1] = Box996Proxy.LOGUP_EVENT_ID[137],
  92. [2] = Box996Proxy.LOGUP_EVENT_ID[126],
  93. [3] = Box996Proxy.LOGUP_EVENT_ID[129],
  94. [6] = Box996Proxy.LOGUP_EVENT_ID[138],
  95. [7] = Box996Proxy.LOGUP_EVENT_ID[119]
  96. }
  97. -- 称号
  98. Box996Proxy.BOX_UP_TITLE = {
  99. [1] = Box996Proxy.LOGUP_EVENT_ID[132],
  100. [2] = Box996Proxy.LOGUP_EVENT_ID[133],
  101. [3] = Box996Proxy.LOGUP_EVENT_ID[134],
  102. [4] = Box996Proxy.LOGUP_EVENT_ID[135],
  103. [5] = Box996Proxy.LOGUP_EVENT_ID[136],
  104. }
  105. -- 超级礼包
  106. Box996Proxy.BOX_UP_SUPER = {
  107. [1] = Box996Proxy.LOGUP_EVENT_ID[130],
  108. [2] = Box996Proxy.LOGUP_EVENT_ID[131],
  109. }
  110. -- 每日礼包
  111. Box996Proxy.BOX_UP_EVERY = {
  112. [1] = Box996Proxy.LOGUP_EVENT_ID[127],
  113. [2] = Box996Proxy.LOGUP_EVENT_ID[128],
  114. }
  115. -- 会员礼包
  116. Box996Proxy.BOX_UP_VIP = {
  117. [1] = Box996Proxy.LOGUP_EVENT_ID[139],
  118. [2] = Box996Proxy.LOGUP_EVENT_ID[140],
  119. }
  120. -- 云手机
  121. Box996Proxy.BOX_UP_YUN_PHONE = {
  122. [1] = Box996Proxy.LOGUP_EVENT_ID[141],
  123. [2] = Box996Proxy.LOGUP_EVENT_ID[142],
  124. [3] = Box996Proxy.LOGUP_EVENT_ID[143],
  125. [4] = Box996Proxy.LOGUP_EVENT_ID[144],
  126. }
  127. --[[
  128. ACTION_TRADING 交易行
  129. ACTION_PRIVILEGED_TITLE 特权称号
  130. ACTION_SUPER_GIFT 超级礼包
  131. ACTION_DAILY_GIFT 每日礼包
  132. ACTION_VIP_GIFT 会员礼包
  133. ACTION_SVIP_GIFT svip礼包
  134. ACTION_CLOUD_GIFT 云手机礼包
  135. ]]
  136. -- 下载盒子域名请求参数
  137. local DOWN_LOAD_ACTION_TAG = {
  138. [1] = "ACTION_PRIVILEGED_TITLE",
  139. [2] = "ACTION_DAILY_GIFT",
  140. [3] = "ACTION_SUPER_GIFT",
  141. [4] = "ACTION_VIP_GIFT",
  142. [5] = "ACTION_TRADING",
  143. [7] = "ACTION_SVIP_GIFT",
  144. [8] = "ACTION_CLOUD_GIFT",
  145. }
  146. -- svip请求的body
  147. local function getSVIPParam(val, isPost)
  148. local originData = {}
  149. for k, v in pairs(val) do
  150. if k ~= "token" then
  151. table.insert(originData, {
  152. key = k,
  153. value = v
  154. })
  155. end
  156. end
  157. table.sort(originData, function(a, b)
  158. return a.key < b.key
  159. end)
  160. -- 计算sign
  161. local origin = ""
  162. for i, v in ipairs(originData) do
  163. if type(v.value) == "string" or type(v.value) == "number" or type(v.value) == "boolean" then
  164. origin = origin .. tostring(v.value)
  165. elseif type(v.value) == "table" then
  166. local str = cjson.encode(v.value)
  167. str = string.gsub(str, "\\/", "/")
  168. origin = origin .. str
  169. end
  170. end
  171. local rqtime = os.time()
  172. local rqrandom = randDataID("996Box")
  173. local md5 = get_str_MD5(origin .. signkey .. rqtime .. rqrandom)
  174. if not isPost then
  175. val.rqrandom = rqrandom
  176. val.rqtime = rqtime
  177. val.sign = md5
  178. end
  179. return {
  180. valEncode = cjson.encode(val),
  181. sign = md5,
  182. rqtime = rqtime,
  183. rqrandom = rqrandom
  184. }
  185. end
  186. -- 数据上报的post请求的data
  187. local function getLogUpSuffix(originData)
  188. -- ascii排序
  189. table.sort(originData, function(a, b)
  190. return a.key < b.key
  191. end)
  192. -- 计算sign
  193. local origin = ""
  194. local realOrigin = ""
  195. local val = {}
  196. for i, v in ipairs(originData) do
  197. local valueV = v.value
  198. if type(v.value) == "table" then
  199. local str = cjson.encode(v.value)
  200. valueV = string.gsub(str, "\\/", "/")
  201. end
  202. local send_value = valueV
  203. if send_value then
  204. val[v.key] = valueV
  205. if string.find(send_value, "%%") then
  206. local strList = string.split(send_value, "%")
  207. local t = urlencodeT("%")
  208. send_value = table.concat(strList, t)
  209. end
  210. if string.find(send_value, "%+") then
  211. local strList = string.split(send_value, "+")
  212. local t = urlencodeT("+")
  213. send_value = table.concat(strList, t)
  214. end
  215. if string.find(send_value, "%&") then
  216. local strList = string.split(send_value, "&")
  217. local t = urlencodeT("&")
  218. send_value = table.concat(strList, t)
  219. end
  220. end
  221. origin = origin .. string.format("%s=%s", v.key, v.value)
  222. origin = origin .. (i < #originData and "&" or "")
  223. realOrigin = realOrigin .. string.format("%s=%s", v.key, send_value)
  224. realOrigin = realOrigin .. (i < #originData and "&" or "")
  225. end
  226. local sign = sha1.hmac(logSignKey, realOrigin)
  227. local signC = string.format("sign=%s", sign)
  228. local suffix = realOrigin .. "&" .. signC
  229. val.sign = sign
  230. return cjson.encode(val)
  231. end
  232. -- 数据上报的post请求的header
  233. local function getLogUpHeader()
  234. local device = ""
  235. return {
  236. device = device,
  237. deviceOs = "",
  238. deviceId = "",
  239. deviceModel = "",
  240. deviceBrand = "",
  241. netType = ""
  242. }
  243. end
  244. local hostIndex = 1
  245. function Box996Proxy:ctor()
  246. Box996Proxy.super.ctor(self)
  247. self._box_data = {
  248. sState = true,
  249. oState = true
  250. }
  251. self._login_qequist_count = 0
  252. self._post_url = "https://user-api.996box.com/v1/ChannelDownLink/getDownUrl"
  253. local envProxy = global.Facade:retrieveProxy(global.ProxyTable.GameEnvironment)
  254. local BoxDoamin = envProxy:GetCustomDataByKey("996BoxDoamin")
  255. if BoxDoamin and string.len(BoxDoamin) > 0 then
  256. self._post_url = BoxDoamin .. "/v1/ChannelDownLink/getDownUrl"
  257. end
  258. self._default_download_url = "https://tgdata.996box.com/down_url.json"
  259. local BoxDefaultDoamin = envProxy:GetCustomDataByKey("996BoxDefaultDoamin")
  260. if BoxDefaultDoamin and string.len(BoxDefaultDoamin) > 0 then
  261. self._default_download_url = BoxDefaultDoamin .. "/down_url.json"
  262. end
  263. -- svip
  264. self._svip_data = {
  265. isInitRequest = true
  266. } -- svip数据
  267. self._svip_states = {} -- svip 领取状态
  268. self._svip_level = 0 -- svip等级
  269. self._svip_base_url = nil -- svip地址
  270. self._query_svip_level = "querySvipUserBaseInfo" -- 查询svip用户信息
  271. self._query_svip_title = "querySvipBaseGameRight/" -- 查询svip等级配置
  272. self._query_svip_state = "querySvipUserGameRightState/" -- 查询领取状态
  273. self._query_svip_reward = "useSvipUserGameRight" -- 领取svip奖励
  274. self._query_svip_remind_flag = "saveSvipUserGameRightRemind" -- 提醒开关
  275. self._query_svip_attr = "/game/game-server/v1/sendPropResourceToGame" --游戏属性
  276. self._giftUsedMessage =nil -- 提醒语
  277. self._remindFlag = false -- 提醒开关是否标识
  278. self._svip_show_btn = nil -- 是否显示svip按钮
  279. -- 埋点
  280. self._log_url = "http://box-collect.xqhuyu.com" -- 测试 "box-collect.dev.xqhuyu.com" 生产 "box-collect.xqhuyu.com"
  281. self._log_query = "/v1/newLog" -- 埋点接口
  282. local BoxLogDoamin = envProxy:GetCustomDataByKey("996BoxLogDoamin")
  283. if BoxLogDoamin and string.len(BoxLogDoamin) > 0 then
  284. self._log_url = BoxLogDoamin
  285. end
  286. -- 云手机
  287. local cloudPhoneURL = envProxy:GetCustomDataByKey("cloud_phone_url")
  288. if cloudPhoneURL and string.len(cloudPhoneURL) == 0 then
  289. cloudPhoneURL = nil
  290. end
  291. self._cloud_pohe_base_url = cloudPhoneURL
  292. self._query_cloud_phone_check = "check" -- 云手机权益查询,
  293. self._query_cloud_phone_receive = "receive" -- 云手机权益领取
  294. self._cloud_phone_show = nil -- 云手机切页是否显示
  295. self._cloud_phone_down_time= 0 -- 云手机权益领取倒计时
  296. self._cloud_phone_flag = false -- 云手机权益领取状态
  297. self._cloud_phone_time = 0 -- 云手机权益时间
  298. end
  299. function Box996Proxy:loginRequest()
  300. self._svip_level = 0 -- svip等级
  301. self._svip_base_url = nil -- svip地址
  302. self._svip_show_btn = nil
  303. self._login_qequist_count = 0
  304. self:requestBoxGetState()
  305. self:requestBoxList()
  306. self:requestSVIPAttr()
  307. end
  308. function Box996Proxy:openUIRequest()
  309. self._login_qequist_count = 0
  310. self:requestBoxGetState()
  311. self:requestBoxList()
  312. self:IsShowSVIP()
  313. end
  314. function Box996Proxy:getBoxData()
  315. return self._box_data
  316. end
  317. function Box996Proxy:getResLocalPanel()
  318. local module = global.L_ModuleManager:GetCurrentModule()
  319. local modulePath = module.GetSubModPath and module:GetSubModPath() or module:GetStabPath()
  320. local storagePath = cc.FileUtils:getInstance():getWritablePath() .. modulePath .. "res/private/box_996_ui/guide_ui/"
  321. if not global.FileUtilCtl:isDirectoryExist(storagePath) then
  322. global.FileUtilCtl:createDirectory(storagePath)
  323. end
  324. return storagePath
  325. end
  326. function Box996Proxy:getGifGetState(getType)
  327. if self._box_data.gifGet then
  328. return self._box_data.gifGet[getType] == 1
  329. end
  330. return false
  331. end
  332. function Box996Proxy:ParseRewards(str, sp)
  333. str = str or ""
  334. sp = sp or "&"
  335. local rewards = {}
  336. local sliceStr = string.split(str, sp)
  337. for i = 1, #sliceStr do
  338. local sliceStr2 = string.split(sliceStr[i], "#")
  339. local id = tonumber(sliceStr2[1])
  340. if id then
  341. local count = tonumber(sliceStr2[3]) or 1
  342. table.insert(rewards, {
  343. id = id,
  344. count = count
  345. })
  346. end
  347. end
  348. return rewards
  349. end
  350. function Box996Proxy:isShowOneTitle()
  351. return self._box_data.sState == true
  352. end
  353. function Box996Proxy:isShowOtherTitle()
  354. return self._box_data.oState == true
  355. end
  356. function Box996Proxy:isShowTitleByActor(actor)
  357. if not actor then
  358. return false
  359. end
  360. if actor:IsPlayer() and actor:GetHorseCopilotID() then
  361. return false
  362. end
  363. if actor:GetID() == global.gamePlayerController:GetMainPlayerID() then
  364. return self._box_data.sState == true
  365. end
  366. return self._box_data.oState == true
  367. end
  368. function Box996Proxy:isBoxOpen()
  369. return self._box_data.isBoxOpen == true
  370. end
  371. local function urlencodechar(char)
  372. return "%" .. string.format("%02X", string.byte(char))
  373. end
  374. local function urlencodeT(input)
  375. -- convert line endings
  376. input = string.gsub(tostring(input), "\n", "\r\n")
  377. -- escape all characters but alphanumeric, '.' and '-'
  378. input = string.gsub(input, "([^%w%.%-%_%~ :/=?&])", urlencodechar)
  379. -- convert spaces to "+" symbols
  380. return string.gsub(input, " ", "+")
  381. end
  382. -- 渠道类型 1:游戏称号特权 2:游戏每日礼包 3:游戏超级礼包 4:游戏会员礼包 5:游戏交易行 6:PC官网
  383. function Box996Proxy:getBox996DownloadURL(channelType)
  384. if not tonumber(channelType) then
  385. return
  386. end
  387. local device = ""
  388. if global.isWindows then
  389. device = "pc"
  390. elseif global.isAndroid then
  391. device = "android"
  392. elseif global.isOHOS then
  393. device = "ohos"
  394. elseif global.isIOS then
  395. device = "ios"
  396. end
  397. if device == "" then
  398. release_print("not find device")
  399. return
  400. end
  401. local suffix = string.format("channel_type=%d&device=%s", channelType, device)
  402. if global.isIOS then
  403. local revcData = global.L_NativeBridgeManager._revcData
  404. local iosVerSion = revcData and revcData.sysversion or ""
  405. suffix = string.format("%s&ios_version=%s", suffix, iosVerSion)
  406. end
  407. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  408. local userid = tostring(AuthProxy:GetUID() or "")
  409. local currModule = global.L_ModuleManager:GetCurrentModule()
  410. local gameid = currModule:GetOperID()
  411. suffix = string.format("%s&game_id=%s&source=%s&action_type=%s&userid=%s", suffix, gameid, "game", DOWN_LOAD_ACTION_TAG[channelType] or "", userid)
  412. releasePrint("getBox996DownloadURL url: " .. self._post_url .. " post: " .. suffix)
  413. HTTPRequestPost(self._post_url, function(success, response)
  414. local jsonData = {}
  415. if response and string.len(response) > 0 then
  416. releasePrint(response)
  417. jsonData = cjson.decode(response)
  418. end
  419. local url = ""
  420. local urls = jsonData.data and jsonData.data.url
  421. if urls and next(urls) then
  422. for i, v in pairs(urls) do
  423. if v.deviceType == device then
  424. url = v.download_url
  425. break
  426. end
  427. end
  428. end
  429. if url and url ~= "" then
  430. if global.isIOS then
  431. url = urlencodeT(url)
  432. end
  433. cc.Application:getInstance():openURL(url)
  434. else
  435. self:getBox996DefaultDownloadURL(channelType)
  436. end
  437. end, suffix)
  438. end
  439. -- 下载默认的地址
  440. function Box996Proxy:getBox996DefaultDownloadURL(channelType)
  441. HTTPRequest(self._default_download_url, function(success, response)
  442. local jsonData = {}
  443. if response and string.len(response) > 0 then
  444. releasePrint(response)
  445. jsonData = cjson.decode(response)
  446. end
  447. local url = nil
  448. if global.isWindows then
  449. url = jsonData["pc_down_url"]
  450. elseif global.isAndroid then
  451. url = jsonData["android_down_url"]
  452. elseif global.isOHOS then
  453. url = jsonData["ohos_down_url"]
  454. elseif global.isIOS then
  455. url = jsonData["ios_down_url"]
  456. end
  457. if url and url ~= "" then
  458. if global.isIOS then
  459. url = urlencodeT(url)
  460. end
  461. cc.Application:getInstance():openURL(url)
  462. end
  463. end)
  464. end
  465. -- 获取奖励数据
  466. function Box996Proxy:getBoxGiftData(boxType)
  467. if not boxType then
  468. return {}
  469. end
  470. local giftType = {
  471. [Box996Proxy.BOX_TYPE.TYPE_EVERY_DAY] = 1,
  472. [Box996Proxy.BOX_TYPE.TYPE_SUPER] = 3,
  473. [Box996Proxy.BOX_TYPE.TYPE_VIP] = 4
  474. }
  475. local rewards = {}
  476. local rewardType = giftType[boxType]
  477. local boxgift = self._box_data and self._box_data.BoxGift or {}
  478. for i, v in ipairs(boxgift or {}) do
  479. if v and tonumber(v.type) == rewardType then
  480. rewards = self:ParseRewards(v.reward)
  481. break
  482. end
  483. end
  484. return rewards or {}
  485. end
  486. function Box996Proxy:requestBoxList()
  487. LuaSendMsg(global.MsgType.MSG_CS_SENDBOXGIFTLIST_REQUEST)
  488. end
  489. -- 请求上报数据
  490. -- 天天省钱7100(主界面按钮) 称号7101 每日礼包 7102 超级礼包 7103 vip礼包 7106 svip 7107 后端有加7100
  491. -- upType: 0:打开页面上报类型 1:下载上报类型
  492. function Box996Proxy:requestBoxUpData(upId, upType)
  493. -- 走客户端的数据上报
  494. if Box996Proxy.LOGUP_EVENT_ID[upId] then
  495. self:requestLogUp(Box996Proxy.LOGUP_EVENT_ID[upId])
  496. return
  497. end
  498. if not upId or not upType then
  499. return
  500. end
  501. local platform = 2
  502. if cc.PLATFORM_OS_ANDROID == global.Platform or global.isOHOS then
  503. platform = 0
  504. elseif cc.PLATFORM_OS_IPAD == global.Platform or cc.PLATFORM_OS_IPHONE == global.Platform then
  505. platform = 1
  506. end
  507. LuaSendMsg( global.MsgType.MSG_CS_SENDBOXGIFTBUTTONID_REQUEST, upId, upType, platform)
  508. end
  509. -- 请求获取盒子请求状态
  510. function Box996Proxy:requestBoxGetState(getState)
  511. LuaSendMsg(global.MsgType.MSG_CS_SENDBOXGIFTSTATE_REQUEST)
  512. end
  513. -- 请求获取盒子奖励
  514. -- param1:类型:1是每日礼包,3是超级礼包
  515. -- msg:礼包码
  516. function Box996Proxy:requestBoxReward(boxType, reward)
  517. if not boxType then
  518. return
  519. end
  520. -- 礼包 数字和字母的组合
  521. if string.match(reward or "", "([0-9a-zA-Z]+)") ~= reward then
  522. local data = {}
  523. data.str = GET_STRING(310000417)
  524. data.btnType = 1
  525. global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
  526. return
  527. end
  528. if boxType == 3 then
  529. LuaSendMsg(global.MsgType.MSG_CS_GETBOXGIFTBYTYPE_REQUEST, boxType, 0, 0, 0, reward, string.len(reward))
  530. else
  531. LuaSendMsg(global.MsgType.MSG_CS_GETBOXGIFTBYTYPE_REQUEST, boxType)
  532. end
  533. self:requestBoxUpData(Box996Proxy.BOX_UP_GIFT[boxType], 2)
  534. end
  535. -- 请求称号状态
  536. -- param1:类型:1自身称号显示状态,2他人称号显示状态
  537. -- param2: 值 0或1
  538. function Box996Proxy:requestBoxTitleState(titleType, state)
  539. if not titleType then
  540. return
  541. end
  542. local param2 = state and 1 or 0
  543. LuaSendMsg(global.MsgType.MSG_CS_SETBOXGIFTSTATE_REQUEST, titleType, param2)
  544. end
  545. -----------------------------------------------SVIP begin----------------------------------
  546. function Box996Proxy:IsShowSVIP()
  547. if not self._svip_base_url then
  548. local envProxy = global.Facade:retrieveProxy(global.ProxyTable.GameEnvironment)
  549. self._svip_base_url = envProxy:GetCustomDataByKey("svipURL") or ""
  550. self:getBackSVIPData()
  551. end
  552. return self._svip_show_btn
  553. end
  554. function Box996Proxy:getSVIPData()
  555. if self._svip_data.isInitRequest then
  556. self:getBackSVIPData()
  557. return nil
  558. end
  559. return self._svip_data
  560. end
  561. -- 进入svip界面时重新检测一遍
  562. function Box996Proxy:joinSvipUpdateSvipState()
  563. for k, v in pairs(self._svip_states) do
  564. if not next(v) then
  565. self._svip_states[k] = nil
  566. end
  567. end
  568. end
  569. function Box996Proxy:getSVIPState(svip)
  570. if not self._svip_states[svip] then
  571. self._svip_states[svip] = {}
  572. self:requestSVIPStates(svip)
  573. return {}
  574. end
  575. return self._svip_states[svip] or {}
  576. end
  577. function Box996Proxy:getSvipRemindFlag()
  578. return self._remindFlag == true
  579. end
  580. function Box996Proxy:getSvipUseMessage(svip)
  581. return self._giftUsedMessage or ""
  582. end
  583. function Box996Proxy:getSvipLevel()
  584. return self._svip_level or 0
  585. end
  586. function Box996Proxy:requestSVIPLevel()
  587. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  588. local userid = tonumber(AuthProxy:GetUID()) or 0
  589. local data = {
  590. userid = userid
  591. }
  592. local param = getSVIPParam(data)
  593. local suffix = string.format("?userId=%s&rqtime=%s&rqrandom=%s&sign=%s", userid, param.rqtime, param.rqrandom,
  594. param.sign)
  595. local url = self._svip_base_url .. self._query_svip_level .. suffix
  596. HTTPRequest(url, function(success, response, code)
  597. if not success then
  598. return 0
  599. end
  600. -- body
  601. local jsonData = cjson.decode(response)
  602. if not jsonData or not jsonData.data then
  603. return 0
  604. end
  605. if self._svip_level ~= jsonData.data.svipLevel then
  606. self._svip_level = jsonData.data.svipLevel
  607. self._svip_states[self._svip_level] = nil
  608. end
  609. global.Facade:sendNotification(global.NoticeTable.Layer_Box996SVIP_Refresh, {
  610. isSvipLevel = true,
  611. data = jsonData.data
  612. })
  613. end)
  614. end
  615. -- 请求属性下发
  616. function Box996Proxy:requestSVIPAttr()
  617. local envProxy = global.Facade:retrieveProxy(global.ProxyTable.GameEnvironment)
  618. local baseURL = envProxy:GetCustomDataByKey("svipAttrURL") or ""
  619. if baseURL == "" then
  620. self:IsShowSVIP()
  621. return
  622. end
  623. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  624. local loginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login)
  625. local LoginProxy = global.Facade:retrieveProxy( global.ProxyTable.Login )
  626. local gameid = global.L_ModuleManager:GetCurrentModule():GetOperID()
  627. local roleId = LoginProxy:GetSelectedRoleID()
  628. local serverId = loginProxy:GetSelectedServerId()
  629. local userid = tonumber(AuthProxy:GetUID()) or 0 -- 0是非盒子用户查询id
  630. local data = {
  631. userid = userid,
  632. gameid = gameid,
  633. serverId = serverId,
  634. roleId = roleId
  635. }
  636. local param = getSVIPParam(data)
  637. local suffix = string.format("?roleId=%s&userId=%s&gameId=%s&serverId=%s&rqtime=%s&rqrandom=%s&sign=%s", roleId, userid, gameid,
  638. serverId, param.rqtime, param.rqrandom, param.sign)
  639. local url = baseURL .. self._query_svip_attr .. suffix
  640. HTTPRequest(url, function(success, response, code)
  641. releasePrint("svip attr: ", success, response)
  642. end)
  643. end
  644. -- 从后台获取svip配置数据
  645. -- 只请求一次
  646. function Box996Proxy:getBackSVIPData()
  647. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  648. local loginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login)
  649. local userid = tonumber(AuthProxy:GetUID()) or 0 -- 0是非盒子用户查询id
  650. local gameid = global.L_ModuleManager:GetCurrentModule():GetOperID()
  651. local serverId = loginProxy:GetSelectedServerId()
  652. local LoginProxy = global.Facade:retrieveProxy( global.ProxyTable.Login )
  653. local roleId = LoginProxy:GetSelectedRoleID()
  654. local data = {
  655. userid = userid,
  656. gameid = gameid,
  657. serverId = serverId,
  658. roleId = roleId
  659. }
  660. local param = getSVIPParam(data)
  661. local suffix = string.format("?roleId=%s&userId=%s&gameId=%s&serverId=%s&rqtime=%s&rqrandom=%s&sign=%s", roleId, userid, gameid,
  662. serverId, param.rqtime, param.rqrandom, param.sign)
  663. local url = self._svip_base_url .. self._query_svip_title .. suffix
  664. HTTPRequest(url, function(success, response, code)
  665. if self._svip_data.isInitRequest then
  666. self._svip_data.isInitRequest = false
  667. end
  668. if not success then
  669. global.Facade:sendNotification(global.NoticeTable.Layer_Box996Main_Refresh, {
  670. isSvipBtn = true,
  671. value = false
  672. })
  673. return
  674. end
  675. -- body
  676. local jsonData = cjson.decode(response)
  677. if not jsonData or not jsonData.data then
  678. global.Facade:sendNotification(global.NoticeTable.Layer_Box996Main_Refresh, {
  679. isSvipBtn = true,
  680. value = false
  681. })
  682. return
  683. end
  684. self._svip_data.levelNum = tonumber(jsonData.data.levelNum) or 0
  685. self._svip_data.data = {}
  686. self._svip_show_btn = false
  687. for k, v in pairs(jsonData.data.rights or {}) do
  688. if v.svipLevel then
  689. self._svip_data.data[v.svipLevel] = v
  690. self._svip_show_btn = true
  691. end
  692. end
  693. global.Facade:sendNotification(global.NoticeTable.Layer_Box996SVIP_Refresh, {
  694. isTitleList = true,
  695. data = self._svip_data
  696. })
  697. global.Facade:sendNotification(global.NoticeTable.Layer_Box996Main_Refresh, {
  698. isSvipBtn = true,
  699. value = self._svip_show_btn
  700. })
  701. end)
  702. end
  703. -- 从后台获取svip状态
  704. function Box996Proxy:requestSVIPStates(svip)
  705. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  706. local userid = tonumber(AuthProxy:GetUID()) or 0
  707. local gameid = global.L_ModuleManager:GetCurrentModule():GetOperID()
  708. local loginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login)
  709. local serverId = loginProxy:GetSelectedServerId()
  710. local roleid = loginProxy:GetSelectedRoleID()
  711. local data = {
  712. userid = userid,
  713. gameid = gameid,
  714. svipLevel = svip,
  715. serverId = serverId,
  716. roleId = roleid,
  717. }
  718. local param = getSVIPParam(data)
  719. local suffix = string.format("?userId=%s&gameId=%s&svipLevel=%s&serverId=%s&roleId=%s&rqtime=%s&rqrandom=%s&sign=%s", userid, gameid,
  720. svip, serverId, roleid, param.rqtime, param.rqrandom, param.sign)
  721. local url = self._svip_base_url .. self._query_svip_state .. suffix
  722. HTTPRequest(url, function(success, response, code)
  723. if not success then
  724. return
  725. end
  726. -- body
  727. local jsonData = cjson.decode(response)
  728. if not jsonData or not jsonData.data then
  729. return
  730. end
  731. local svip = jsonData.data.svipLevel
  732. if not svip then
  733. return
  734. end
  735. if svip == self._svip_level then
  736. self._giftUsedMessage = jsonData.data.giftUsedMessage
  737. self._remindFlag = jsonData.data.remindFlag == true
  738. end
  739. self._svip_states[svip] = jsonData.data
  740. global.Facade:sendNotification(global.NoticeTable.Layer_Box996SVIP_Refresh, {
  741. isState = true,
  742. svip = svip,
  743. isRemindFlag = true
  744. })
  745. end)
  746. end
  747. -- 请求svip激活属性, 只能激活当前的属性
  748. -- sviptype 1: 属性 2: 礼包
  749. function Box996Proxy:requestSVIPReward(svip, sviptype)
  750. local function urlencodeT(input)
  751. input = string.gsub(tostring(input), "\n", "\r\n")
  752. input = string.gsub(input, "([^%w%.%-%_%~ :/=?&])", urlencodechar)
  753. return string.gsub(input, " ", "+")
  754. end
  755. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  756. local loginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login)
  757. local userid = tonumber(AuthProxy:GetUID()) or 0
  758. local gameid = global.L_ModuleManager:GetCurrentModule():GetOperID()
  759. local serverId = loginProxy:GetSelectedServerId()
  760. local roleId = global.playerManager:GetMainPlayerID()
  761. local roleName = loginProxy:GetSelectedRoleName()
  762. local data = {
  763. userId = userid,
  764. gameId = gameid,
  765. svipLevel = svip,
  766. serverId = serverId,
  767. roleId = roleId,
  768. roleName = roleName,
  769. rightType = sviptype
  770. }
  771. local param = getSVIPParam(data, true)
  772. local suffix = string.format("?rqtime=%s&rqrandom=%s&sign=%s", param.rqtime, param.rqrandom, param.sign)
  773. local url = self._svip_base_url .. self._query_svip_reward .. suffix
  774. self:HTTPRequestPostSVIP(url, function(success, response, code)
  775. if not success then
  776. return
  777. end
  778. -- body
  779. local jsonData = cjson.decode(response)
  780. if jsonData.msg and string.len(jsonData.msg) > 0 then
  781. ShowSystemTips(jsonData.msg)
  782. end
  783. if not jsonData or not jsonData.data then
  784. return
  785. end
  786. local svip = jsonData.data.svipLevel
  787. if not svip then
  788. return
  789. end
  790. local state = jsonData.data.state
  791. local rewardType = jsonData.data.rightType
  792. if rewardType == Box996Proxy.SVIP_REWARD_TYPE.TYPE_ATTR then
  793. self._svip_states[svip].propState = state
  794. elseif rewardType == Box996Proxy.SVIP_REWARD_TYPE.TYPE_LIBAO then
  795. self._svip_states[svip].giftState = state
  796. -- 刷新开关提示
  797. if self:getSvipLevel() == svip and state == 1 then
  798. self:requestSVIPStates(svip)
  799. end
  800. end
  801. global.Facade:sendNotification(global.NoticeTable.Layer_Box996SVIP_Refresh, {
  802. isGetState = true,
  803. svip = svip,
  804. isRemindFlag = true
  805. })
  806. end, param.valEncode)
  807. end
  808. -- 请求svip权益提醒配置保存
  809. -- remindFlag 1: 提醒标识 true/false
  810. function Box996Proxy:requestSVIPRemindOnOff(remindFlag)
  811. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  812. local userid = tonumber(AuthProxy:GetUID()) or 0
  813. local gameid = global.L_ModuleManager:GetCurrentModule():GetOperID()
  814. local loginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login)
  815. local serverId = loginProxy:GetSelectedServerId()
  816. local data = {
  817. userId = userid,
  818. gameId = gameid,
  819. remindFlag = remindFlag == true,
  820. serverId = serverId
  821. }
  822. local param = getSVIPParam(data, true)
  823. local suffix = string.format("?rqtime=%s&rqrandom=%s&sign=%s", param.rqtime, param.rqrandom, param.sign)
  824. local url = self._svip_base_url .. self._query_svip_remind_flag .. suffix
  825. self:HTTPRequestPostSVIP(url, function(success, response, code)
  826. if not success then
  827. return
  828. end
  829. -- body
  830. local jsonData = cjson.decode(response)
  831. if jsonData.msg and string.len(jsonData.msg) > 0 then
  832. ShowSystemTips(jsonData.msg)
  833. end
  834. if jsonData.data then
  835. self._remindFlag = not self._remindFlag
  836. global.Facade:sendNotification(global.NoticeTable.Layer_Box996SVIP_Refresh, {
  837. isRemindFlag = true,
  838. })
  839. end
  840. end, param.valEncode)
  841. end
  842. function Box996Proxy:HTTPRequestPostSVIP(url, callback, data, header)
  843. local httpRequest = cc.XMLHttpRequest:new()
  844. httpRequest.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON
  845. httpRequest.timeout = 100000 -- 10 s
  846. httpRequest:open("POST", url)
  847. if header then
  848. for k, v in pairs(header) do
  849. httpRequest:setRequestHeader(k, v)
  850. end
  851. end
  852. if callback then
  853. local function HttpResponseCB()
  854. local code = httpRequest.status
  855. local success = code >= 200 and code < 300
  856. local response = httpRequest.response
  857. release_print("Http Request Code:" .. tostring(code))
  858. callback(success, response, code)
  859. end
  860. httpRequest:setRequestHeader("Content-type", "application/json")
  861. httpRequest:registerScriptHandler(HttpResponseCB)
  862. end
  863. httpRequest:send(data)
  864. end
  865. -----------------------------------------------SVIP end----------------------------------
  866. -----------------------------------------------cloud phone begin--------------------------------
  867. -- 云手机切页按钮是否显示
  868. function Box996Proxy:getCloudPhoneShow()
  869. if not global.isAndroid then
  870. return false
  871. end
  872. if not self._cloud_pohe_base_url then
  873. return false
  874. end
  875. if self._cloud_phone_show == nil then
  876. self:requestCloudPhoneCheck()
  877. end
  878. if self._cloud_phone_show and self._cloud_phone_down_time > 0 then
  879. if self._cloud_phone_down_time - GetServerTime() <= 0 then
  880. return false
  881. end
  882. end
  883. return self._cloud_phone_show
  884. end
  885. -- 获取云手机活动倒计时
  886. function Box996Proxy:getCloudPhoneRewardGetDownTime()
  887. return self._cloud_phone_down_time
  888. end
  889. -- 获取是否已领取云手机奖励
  890. function Box996Proxy:getCloudPhoneReceiveFlag()
  891. return self._cloud_phone_flag
  892. end
  893. -- 获取云手机奖励时间
  894. function Box996Proxy:getCloudPhoneRewardTime()
  895. return self._cloud_phone_time
  896. end
  897. -- 请求获取云手机数据
  898. function Box996Proxy:requestCloudPhoneCheck()
  899. local PlayerProperty = global.Facade:retrieveProxy(global.ProxyTable.PlayerProperty)
  900. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  901. local userid = tonumber(AuthProxy:GetUID()) or 0
  902. local gameid = global.L_ModuleManager:GetCurrentModule():GetOperID()
  903. local gameLevel = PlayerProperty:GetRoleLevel()
  904. local data = {
  905. userId = userid,
  906. gameId = gameid,
  907. gameLevel = gameLevel,
  908. }
  909. local param = getSVIPParam(data)
  910. local suffix = string.format("?userId=%s&gameId=%s&gameLevel=%s&rqtime=%s&rqrandom=%s&sign=%s", userid, gameid, gameLevel, param.rqtime, param.rqrandom, param.sign)
  911. local url = self._cloud_pohe_base_url .. self._query_cloud_phone_check .. suffix
  912. HTTPRequest(url, function(success, response, code)
  913. if not success then
  914. return
  915. end
  916. -- body
  917. local jsonData = cjson.decode(response)
  918. if not jsonData or not jsonData.data then
  919. return
  920. end
  921. --[[
  922. data: {
  923. expireTime = 0, --活动过期时间, 时间戳: 秒
  924. rewardTime = 0, --云机奖励时间 秒
  925. receiveDevice = true, -- 是否已领取
  926. }
  927. ]]
  928. local data = {
  929. expireTime = tonumber(jsonData.data.expireTime) or 0,
  930. rewardTime = tonumber(jsonData.data.rewardTime) or 0,
  931. receiveDevice = jsonData.data.receiveDevice == true,
  932. }
  933. self._cloud_phone_down_time = data.expireTime
  934. self._cloud_phone_time = data.rewardTime
  935. self._cloud_phone_flag = data.receiveDevice
  936. self._cloud_phone_show = data.expireTime > 0
  937. global.Facade:sendNotification(global.NoticeTable.Layer_Box996Main_Refresh, {
  938. isCloudPhoneBtn = true,
  939. value = self._cloud_phone_show
  940. })
  941. global.Facade:sendNotification(global.NoticeTable.Layer_Box996CloudPhone_Refresh, {
  942. getTime = self._cloud_phone_down_time,
  943. rewardTime = self._cloud_phone_time,
  944. })
  945. end)
  946. end
  947. -- 请求领取云手机奖励时间
  948. function Box996Proxy:requestCloudPhoneReceive()
  949. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  950. local userid = tonumber(AuthProxy:GetUID()) or 0
  951. local gameid = global.L_ModuleManager:GetCurrentModule():GetOperID()
  952. local data = {
  953. userId = userid,
  954. gameId = gameid,
  955. }
  956. local param = getSVIPParam(data, true)
  957. local suffix = string.format("?rqtime=%s&rqrandom=%s&sign=%s", param.rqtime, param.rqrandom, param.sign)
  958. local url = self._cloud_pohe_base_url .. self._query_cloud_phone_receive .. suffix
  959. self:HTTPRequestPostSVIP(url, function(success, response)
  960. local jsonData = {}
  961. if response and string.len(response) > 0 then
  962. releasePrint(response)
  963. jsonData = cjson.decode(response)
  964. end
  965. -- 是否成功
  966. self._cloud_phone_flag = jsonData.data == true
  967. -- 刷新
  968. global.Facade:sendNotification(global.NoticeTable.Layer_Box996CloudPhone_Refresh, {
  969. getFinish = true,
  970. })
  971. end, param.valEncode)
  972. end
  973. -----------------------------------------------cloud phone end--------------------------------
  974. -----------------------------------------------埋点 begin---------------------------------
  975. -- 请求数据上报
  976. -- eventID 上报事件
  977. function Box996Proxy:requestLogUp(eventID)
  978. if not eventID then
  979. return
  980. end
  981. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  982. local userid = AuthProxy:GetUID()
  983. local logUpTime = math.floor(socket.gettime() * 1000) -- 时间戳 毫秒13位
  984. local gameid = global.L_ModuleManager:GetCurrentModule():GetOperID()
  985. local data = {{
  986. key = "i",
  987. value = eventID
  988. }, {
  989. key = "d",
  990. value = {
  991. uid = userid,
  992. gameid = gameid
  993. }
  994. }, {
  995. key = "t",
  996. value = tostring(logUpTime)
  997. }}
  998. local header = getLogUpHeader()
  999. local sendParam = getLogUpSuffix(data)
  1000. local url = self._log_url .. self._log_query
  1001. local httpRequest = cc.XMLHttpRequest:new()
  1002. httpRequest.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON
  1003. httpRequest.timeout = 100000 -- 10 s
  1004. httpRequest:open("POST", url)
  1005. if header then
  1006. for k, v in pairs(header) do
  1007. httpRequest:setRequestHeader(k, v)
  1008. end
  1009. end
  1010. local function HttpResponseCB()
  1011. local code = httpRequest.status
  1012. local success = code >= 200 and code < 300
  1013. local response = httpRequest.response
  1014. release_print("Http Request Code:" .. tostring(code))
  1015. release_print("response:" , response)
  1016. end
  1017. httpRequest:setRequestHeader("Content-type", "application/json")
  1018. httpRequest:registerScriptHandler(HttpResponseCB)
  1019. httpRequest:send(sendParam)
  1020. end
  1021. ------------------------------------------------埋点 end----------------------------------
  1022. -- 服务端返回盒子礼包内容
  1023. function Box996Proxy:handle_MSG_SC_SENDBOXGIFTLIST_RESPON(msg)
  1024. self._login_qequist_count = self._login_qequist_count + 1
  1025. local data = ParseRawMsgToJson(msg)
  1026. if not data then
  1027. return
  1028. end
  1029. self._box_data.BoxTitleID = tonumber(data.BoxTitleID)
  1030. if self._box_data.BoxTitleID and self._box_data.BoxTitleID > 0 then
  1031. self._box_data.BoxTitleID = self._box_data.BoxTitleID + 5099
  1032. end
  1033. self._box_data.BoxTitle = data.BoxTitle
  1034. self._box_data.BoxGift = data.BoxGift
  1035. self._box_data.BoxGuide = data.BoxGuide
  1036. if self._login_qequist_count == 2 then
  1037. global.Facade:sendNotification(global.NoticeTable.Layer_Box996EveryDay_Refresh, self._box_data)
  1038. global.Facade:sendNotification(global.NoticeTable.Layer_Box996Super_Refresh, self._box_data)
  1039. global.Facade:sendNotification(global.NoticeTable.Layer_Box996VIP_Refresh, self._box_data)
  1040. global.Facade:sendNotification(global.NoticeTable.Layer_Box996Title_Refresh, self._box_data)
  1041. end
  1042. global.Facade:sendNotification(global.NoticeTable.Layer_Box996Main_Refresh)
  1043. end
  1044. -- 服务端返回盒子礼包领取状态
  1045. -- param1:自身称号显示状态
  1046. -- param2:他人称号显示状态
  1047. -- param3:是否盒子登录
  1048. -- msg:礼包领取状态:结构:1=0,2=0
  1049. function Box996Proxy:handle_MSG_SC_SENDBOXGIFTSTATE_RESPON(msg)
  1050. self._login_qequist_count = self._login_qequist_count + 1
  1051. local msgLen = msg:GetDataLength()
  1052. local msgHdr = msg:GetHeader()
  1053. local refreshNotice = {
  1054. [global.NoticeTable.Layer_Box996EveryDay_Refresh] = 1,
  1055. [global.NoticeTable.Layer_Box996Super_Refresh] = 1,
  1056. [global.NoticeTable.Layer_Box996VIP_Refresh] = 1,
  1057. [global.NoticeTable.Layer_Box996Title_Refresh] = 1
  1058. }
  1059. if msgLen > 0 then
  1060. if not self._box_data.gifGet then
  1061. self._box_data.gifGet = {}
  1062. end
  1063. local dataString = msg:GetData():ReadString(msgLen)
  1064. local dataStrArray = string.split(dataString, ",")
  1065. local gifGet = {}
  1066. for i, v in ipairs(dataStrArray) do
  1067. if v and v ~= "" then
  1068. local kv = string.split(v, "=")
  1069. if tonumber(kv[1]) and tonumber(kv[2]) then
  1070. gifGet[tonumber(kv[1])] = tonumber(kv[2])
  1071. end
  1072. end
  1073. end
  1074. if gifGet[1] ~= self._box_data.gifGet[1] then -- 刷新
  1075. self._box_data.gifGet[1] = gifGet[1]
  1076. global.Facade:sendNotification(global.NoticeTable.Layer_Box996EveryDay_Refresh, self._box_data)
  1077. refreshNotice[global.NoticeTable.Layer_Box996EveryDay_Refresh] = nil
  1078. end
  1079. if gifGet[3] ~= self._box_data.gifGet[3] then -- 超级礼包刷新
  1080. self._box_data.gifGet[3] = gifGet[3]
  1081. global.Facade:sendNotification(global.NoticeTable.Layer_Box996Super_Refresh, self._box_data)
  1082. refreshNotice[global.NoticeTable.Layer_Box996Super_Refresh] = nil
  1083. end
  1084. if gifGet[4] ~= self._box_data.gifGet[4] then -- vip刷新
  1085. self._box_data.gifGet[4] = gifGet[4]
  1086. global.Facade:sendNotification(global.NoticeTable.Layer_Box996VIP_Refresh, self._box_data)
  1087. refreshNotice[global.NoticeTable.Layer_Box996VIP_Refresh] = nil
  1088. end
  1089. self._box_data.gifGet = gifGet
  1090. end
  1091. local isupdateTitle = false
  1092. if (not self._box_data.sState) == (msgHdr.param1 == 1) then
  1093. self._box_data.sState = msgHdr.param1 == 1
  1094. isupdateTitle = true
  1095. -- 996 盒子称号(自己)
  1096. self:Set996BoxTitle(true)
  1097. end
  1098. if (not self._box_data.oState) == (msgHdr.param2 == 1) then
  1099. self._box_data.oState = msgHdr.param2 == 1
  1100. isupdateTitle = true
  1101. -- 996 盒子称号(别人)
  1102. self:Set996BoxTitle()
  1103. end
  1104. self._box_data.isBoxOpen = msgHdr.param3 == 1
  1105. if isupdateTitle then
  1106. global.Facade:sendNotification(global.NoticeTable.Layer_Box996Title_Refresh, self._box_data)
  1107. refreshNotice[global.NoticeTable.Layer_Box996Title_Refresh] = nil
  1108. end
  1109. if self._login_qequist_count == 2 then
  1110. for k, v in pairs(refreshNotice) do
  1111. if v then
  1112. global.Facade:sendNotification(k, self._box_data)
  1113. end
  1114. end
  1115. end
  1116. end
  1117. function Box996Proxy:Set996BoxTitle(isMySelf)
  1118. local optionsUtils = requireProxy("optionsUtils")
  1119. if isMySelf then
  1120. local mainPlayer = global.gamePlayerController:GetMainPlayer()
  1121. if mainPlayer then
  1122. optionsUtils:InitHUDVisibleValue(mainPlayer, global.MMO.HUD_TITLE_VISIBLE)
  1123. optionsUtils:refreshHUDTitleVisible(mainPlayer)
  1124. end
  1125. else
  1126. local playerVec, nPlayer = global.playerManager:GetPlayersInCurrViewField()
  1127. for i = 1, nPlayer do
  1128. local player = playerVec[i]
  1129. if player then
  1130. optionsUtils:InitHUDVisibleValue(player, global.MMO.HUD_TITLE_VISIBLE)
  1131. optionsUtils:refreshHUDTitleVisible(player)
  1132. end
  1133. end
  1134. end
  1135. end
  1136. -- 领取礼包返回的提示
  1137. function Box996Proxy:handle_MSG_SC_GET_AWARD_STATET_RESPON(msg)
  1138. local titleStr = ""
  1139. local msgHdr = msg:GetHeader()
  1140. if msgHdr.param1 == 2 then
  1141. -- 领取成功
  1142. titleStr = GET_STRING(310000412)
  1143. elseif msgHdr.param1 == 6 then
  1144. -- 已领取过该礼包
  1145. titleStr = GET_STRING(310000416)
  1146. elseif msgHdr.param1 == 7 then
  1147. -- 对不起礼包码填写错误
  1148. titleStr = GET_STRING(310000417)
  1149. elseif msgHdr.param1 == 8 then
  1150. -- 无法使用该礼包码
  1151. titleStr = GET_STRING(310000418)
  1152. elseif msgHdr.param1 == 9 then
  1153. -- 未从盒子登录,无法领取该礼包
  1154. titleStr = GET_STRING(310000419)
  1155. elseif msgHdr.param1 == 10 then
  1156. -- 账号不存在
  1157. titleStr = GET_STRING(310000420)
  1158. elseif msgHdr.param1 == 11 then
  1159. -- 对不起,小号无法领取游戏礼包
  1160. titleStr = GET_STRING(310000421)
  1161. elseif msgHdr.param1 == 17 then
  1162. -- 只有盒子会员才能领取
  1163. titleStr = GET_STRING(310000427)
  1164. elseif msgHdr.param1 == 18 then
  1165. -- 盒子会员过期
  1166. titleStr = GET_STRING(310000428)
  1167. else
  1168. titleStr = GET_STRING(310000499)
  1169. end
  1170. if titleStr and titleStr ~= "" then
  1171. local data = {}
  1172. data.str = titleStr
  1173. data.btnType = 1
  1174. global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
  1175. end
  1176. end
  1177. function Box996Proxy:RegisterMsgHandler()
  1178. Box996Proxy.super.RegisterMsgHandler(self)
  1179. local msgType = global.MsgType
  1180. LuaRegisterMsgHandler(msgType.MSG_SC_SENDBOXGIFTLIST_RESPON,
  1181. handler(self, self.handle_MSG_SC_SENDBOXGIFTLIST_RESPON))
  1182. LuaRegisterMsgHandler(msgType.MSG_SC_SENDBOXGIFTSTATE_RESPON,
  1183. handler(self, self.handle_MSG_SC_SENDBOXGIFTSTATE_RESPON))
  1184. LuaRegisterMsgHandler(msgType.MSG_SC_GET_AWARD_STATET_RESPON,
  1185. handler(self, self.handle_MSG_SC_GET_AWARD_STATET_RESPON))
  1186. end
  1187. return Box996Proxy