LoginBehavior.js 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981
  1. //登陆逻辑
  2. import BehaviorBase from '../framework/BehaviorBase';
  3. import GameProcessManager from '../net/GameProcessManager';
  4. import ConstMsgId from '../net/ConstMsgId';
  5. import Event from '../net/Event';
  6. import ConstDefine from '../model/ConstDefine';
  7. import Common from '../common/Common';
  8. import Define from '../common/Define';
  9. import AudioControlManager from '../common/AudioControlManager';
  10. import PlayerInfoItem from '../model/PlayerInfoItem';
  11. import DataModelManager from '../framework/DataModelManager';
  12. import MsgTransfer from '../net/MsgTransfer';
  13. let loginBehavior = null
  14. cc.WXNativeCallJS = function(method,code)
  15. {
  16. console.log('cc.WXNativeCallJS:method' + method + 'code:' + code)
  17. loginBehavior.getAccessToken(code)
  18. }
  19. export default class LoginBehavior extends BehaviorBase
  20. {
  21. constructor()
  22. {
  23. console.log("LoginBehavior constructor start")
  24. super();
  25. this._GameProcessManager = new GameProcessManager();
  26. this._AudioControlManager = new AudioControlManager();
  27. this.dmm = DataModelManager;
  28. this.playerInfoModel = this.dmm.getModel('PlayerInfoModel');
  29. this.configData = DataModelManager.getModel('ConfigData');
  30. this.hasLogin = false;
  31. this.needSendRandMatch = false;
  32. this.battleType = ConstDefine.BattleType.NONE;
  33. this.strength = 0;
  34. this.lastStrengthRestoreTime = 0;
  35. this.weekScore = 0;
  36. this.total_win = 0;
  37. this.honorEnable = false;
  38. this.bNeedCheckBoot = false;
  39. this.bNeedShowGroupRank = false;
  40. this.oldWeekScore = 0;
  41. this.oldRandomMath = 0;
  42. this.lefttime_day = 0;
  43. this.lefttime_hour = 0;
  44. this.lefttime_minute = 0;
  45. this.lefttime_second = 0;
  46. this.shave_clearly_num = 0; //剃光头次数
  47. this.reversible_num = 0; // 逆转次数
  48. this.highest_score = 0;// 历史最高分
  49. this.currentweek_highest_score = 0;// 本周最高分
  50. this.highest_normalbattle_successive_win = 0;// 最高普通连胜次数
  51. this.highest_weekbattle_successive_win = 0; // 最高周赛连胜次数
  52. this.friendPKMatchId = 0;
  53. this.friendPKRoomId = '';
  54. this.needShowAuth = false;//luo 原来是true
  55. console.log("LoginBehavior constructor end")
  56. loginBehavior = this
  57. }
  58. CreateLoginStart(){
  59. if (cc.vv.userMgr.token == null) {
  60. return
  61. }
  62. var url = Define.LOGIN_WS + "?token="+cc.vv.userMgr.token
  63. console.log("CreateLoginStarta:" + url)
  64. this._GameProcessManager.createSocket(url, null,Define.SOCKET_TYPE.PLAZA)
  65. }
  66. wxCode2OpenId()
  67. {
  68. var self = this
  69. wx.login({
  70. timeout:9000,
  71. success:function(res){
  72. console.log("wx.login success")
  73. console.log(res)
  74. self.sendCode(res.code)
  75. },
  76. fail:function(res){
  77. console.log("wx.login fail")
  78. console.log(res)
  79. },
  80. complete:function(res){
  81. console.log("wx.login complete")
  82. console.log(res)
  83. },
  84. })
  85. }
  86. login()
  87. {
  88. var self = this;
  89. if(CC_WECHATGAME)
  90. {
  91. wx.getSetting({
  92. success:function(res){
  93. console.log("getSetting success")
  94. console.log(res)
  95. if (res.authSetting['scope.userInfo']) {
  96. wx.getUserInfo({
  97. lang:'zh_CN',
  98. fail:function(res){
  99. console.log("getUserInfo fail res")
  100. console.log(res)
  101. },
  102. success: function(res) {
  103. console.log("getUserInfo success res")
  104. console.log(res)
  105. var userInfo = res.userInfo
  106. self.playerInfoModel.setSelfWXPlayerInfo(userInfo)
  107. self.wxCode2OpenId()
  108. self.needShowAuth = false
  109. }
  110. })
  111. }
  112. else
  113. {
  114. self.needShowAuth = true
  115. let button = wx.createUserInfoButton({
  116. type: 'text',
  117. text: '登录',
  118. lang:'zh_CN',
  119. style: {
  120. left: 10,
  121. top: 76,
  122. width: 200,
  123. height: 40,
  124. lineHeight: 40,
  125. backgroundColor: '#ff0000',
  126. color: '#ffffff',
  127. textAlign: 'center',
  128. fontSize: 16,
  129. borderRadius: 4,
  130. }
  131. })
  132. button.onTap((res) => {
  133. console.log("userinfo")
  134. console.log(res)
  135. var userInfo = res.userInfo
  136. if(userInfo!=null&&userInfo!=undefined)
  137. {
  138. self.playerInfoModel.setSelfWXPlayerInfo(userInfo)
  139. self.wxCode2OpenId()
  140. self.needShowAuth = false
  141. button.destroy()
  142. }
  143. else
  144. {
  145. }
  146. })
  147. }
  148. },
  149. fail:function(res){
  150. console.log("getSetting fail")
  151. console.log(res)
  152. let button = wx.createUserInfoButton({
  153. type: 'text',
  154. text: '登录',
  155. lang:'zh_CN',
  156. style: {
  157. left: 10,
  158. top: 76,
  159. width: 200,
  160. height: 40,
  161. lineHeight: 40,
  162. backgroundColor: '#ff0000',
  163. color: '#ffffff',
  164. textAlign: 'center',
  165. fontSize: 16,
  166. borderRadius: 4,
  167. }
  168. })
  169. button.onTap((res) => {
  170. console.log("userinfo")
  171. console.log(res)
  172. var userInfo = res.userInfo
  173. if(userInfo!=null&&userInfo!=undefined)
  174. {
  175. self.playerInfoModel.setSelfWXPlayerInfo(userInfo)
  176. self.wxCode2OpenId()
  177. self.needShowAuth = false
  178. button.destroy()
  179. }
  180. else
  181. {
  182. }
  183. })
  184. },
  185. complete:function(res){
  186. console.log("getSetting complete")
  187. console.log(res)
  188. },
  189. })
  190. }
  191. else if(CC_JSB && cc.sys.OS_ANDROID === cc.sys.os)
  192. {
  193. console.log('com/xixi/cyqp/wxapi/WXEntryActivity getTokenRequest')
  194. jsb.reflection.callStaticMethod("com/xixi/cyqp/wxapi/WXEntryActivity", "getTokenRequest", "()V");//调用java代码进行微信登录
  195. }
  196. else {
  197. setTimeout(function() {
  198. self.needShowAuth = false;
  199. self.sendLoginWX();
  200. }, 1000);
  201. }
  202. }
  203. getAccessToken(code){ //获取accessToken
  204. if(code==null|| code.length<=0)
  205. {
  206. console.log('getAccessToken code==null|| code.length<=0 ')
  207. return
  208. }
  209. var url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + Common.androidappid + "&secret="+ Common.androidappsecret + "&code=" + code + "&grant_type=authorization_code";
  210. var self = this;
  211. var xhr = new XMLHttpRequest();
  212. xhr.onreadystatechange = function(){
  213. if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
  214. var response = xhr.responseText;
  215. console.log("response===>>>",response);
  216. var msg = JSON.parse(response);
  217. var access_token = msg.access_token;
  218. var refresh_token = msg.refresh_token;
  219. var openid = msg.openid;
  220. //如果超时进行重新刷新accessToken
  221. if(msg.expires_in >= 7200){
  222. //刷新accesstoken
  223. self.freshAccessToken(refresh_token).then(function(data){
  224. console.log("刷新accessToken 是",data);
  225. access_token = data;
  226. self.getUserInfo(access_token,openid);
  227. //cc.director.loadScene("helloworld");
  228. });
  229. console.log("这个accessToken是刷新出来的token",access_token);
  230. }else{
  231. self.getUserInfo(access_token,openid);
  232. //cc.director.loadScene("helloworld");
  233. }
  234. }
  235. };
  236. xhr.open("GET",url,true);
  237. xhr.send();
  238. }
  239. getUserInfo (access_token,openid){ //获取用户信息
  240. console.log("accessToken is " + access_token);
  241. console.log("openid is " + openid);
  242. var url = "https://api.weixin.qq.com/sns/userinfo?access_token="+access_token + "&openid="+openid+"&lang=zh_CN";
  243. var self = this;
  244. var xhr = new XMLHttpRequest();
  245. xhr.onreadystatechange = function(){
  246. if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
  247. var response = xhr.responseText;
  248. console.log("response===>>>",response);
  249. var msg = JSON.parse(response);
  250. console.log("msg is " , msg);
  251. console.log("nickName is " + msg.nickname);
  252. console.log("city is " + msg.city);
  253. console.log("country " + msg.country);
  254. console.log("sex is " + msg.sex);
  255. msg.openId = msg.openid
  256. msg.openid = ""
  257. msg.nickName = msg.nickname
  258. msg.nickname = ""
  259. msg.avatarUrl = msg.headimgurl
  260. msg.headimgurl = ""
  261. msg.unionId = msg.unionid
  262. msg.unionid = ""
  263. self.needShowAuth = false
  264. self.playerInfoModel.setSelfWXPlayerInfo(msg)
  265. var selfuserinfo = self.playerInfoModel.getSelfWXPlayerInfo()
  266. console.log("selfuserinfo===>>>",JSON.stringify(selfuserinfo));
  267. self.playerInfoModel.setSelfOpenId(openid)
  268. self.sendLoginWX() //立即登录
  269. }
  270. };
  271. xhr.open("GET",url,true);
  272. xhr.send();
  273. }
  274. freshAccessToken (refresh_token){
  275. var url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=" + Common.androidappid + "&grant_type=refresh_token&refresh_token="+refresh_token;
  276. var self = this;
  277. var xhr = new XMLHttpRequest();
  278. var ac;
  279. return new Promise(function(resolve,reject){
  280. xhr.onreadystatechange = function(){
  281. if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
  282. var response = xhr.responseText;
  283. console.log("response===>>>",response);
  284. var msg = JSON.parse(response);
  285. ac = msg.access_token;
  286. console.log("ac is " + ac);
  287. resolve(ac);
  288. }
  289. };
  290. xhr.open("GET",url,true);
  291. xhr.send();
  292. });
  293. }
  294. saveStrengthInfo(pb)
  295. {
  296. this.strength = pb.strength;
  297. this.lastStrengthRestoreTime = parseInt(pb.last_strength_resotre_time);
  298. }
  299. showUserInfo()
  300. {
  301. }
  302. setData(wMainCmdID,wSubCmdID,data)
  303. {
  304. if (ConstMsgId.MDM_MB_LOGON === wMainCmdID) {
  305. if (ConstMsgId.SUB_MB_LOGON_WX === wSubCmdID) {
  306. var wxLoginData = JSON.parse(data)
  307. console.log(wxLoginData);
  308. if (wxLoginData.hasOwnProperty('openid')) {
  309. this.playerInfoModel.setSelfOpenId(wxLoginData.openid)
  310. }
  311. if (wxLoginData.hasOwnProperty('session_key')) {
  312. this.playerInfoModel.setSelfSessionKey(wxLoginData.session_key)
  313. }
  314. console.log("this.playerInfoModel.getSelfOpenId():"+this.playerInfoModel.getSelfOpenId())
  315. console.log("this.playerInfoModel.getSelfSessionKey():"+this.playerInfoModel.getSelfSessionKey())
  316. this.sendLoginWX() //立即登录
  317. } else if ( ConstMsgId.SUB_MB_LOGON_SUCCESS === wSubCmdID) {//登录成功读取用户信息
  318. cc.log("登录成功提示")
  319. this.readPlayerInfo(data);
  320. this.sendLevelInfo();
  321. } else if (ConstMsgId.SUB_MB_LOGON_FAILURE === wSubCmdID) {//登录失败
  322. this.readLoginFailureResion(data);
  323. }
  324. } else if ( ConstMsgId.MDM_GP_LOGON === wMainCmdID) {
  325. cc.log("广场登录")
  326. if ( ConstMsgId.SUB_MB_LOGON_SUCCESS === wSubCmdID) {
  327. cc.log("登录成功提示")
  328. this.readPlayerInfo(data);
  329. this.sendLevelInfo();
  330. }
  331. } else if (ConstMsgId.MDM_GP_USER_SERVICE === wMainCmdID) {
  332. if (ConstMsgId.SUB_GP_GROWLEVEL_PARAMETER === wSubCmdID) {
  333. this.onSubLevelParameter(data);
  334. }
  335. }
  336. }
  337. readPlayerInfo(data)
  338. {
  339. var openid = this.playerInfoModel.getSelfOpenId()
  340. var wxinfo = this.playerInfoModel.getSelfWXPlayerInfo()
  341. var player = new PlayerInfoItem(openid,wxinfo,2,0,0)
  342. var dataview = new DataView(data)
  343. var readPos = 0
  344. player.wFaceID = dataview.getUint16(readPos,Common.littleEndian)
  345. readPos += 2
  346. player.cbGender = dataview.getUint8(readPos,Common.littleEndian)
  347. readPos += 1
  348. player.dwCustomID = dataview.getUint32(readPos,Common.littleEndian)
  349. readPos += 4
  350. player.dwUserID = dataview.getUint32(readPos,Common.littleEndian)
  351. readPos += 4
  352. player.dwGameID = dataview.getUint32(readPos,Common.littleEndian)
  353. readPos += 4
  354. player.dwExperience = dataview.getUint32(readPos,Common.littleEndian)
  355. readPos += 4
  356. player.dwLoveLiness = Common.readint64(data,readPos)
  357. readPos += 8
  358. var szAccountbuffer = data.slice(readPos, readPos+32*2);
  359. player.szAccount = Common.ab2str(szAccountbuffer)
  360. readPos += 32*2
  361. var szNickNamebuffer = data.slice(readPos, readPos+32*2);
  362. player.szNickName = Common.ab2str(szNickNamebuffer)
  363. readPos += 32*2
  364. var szDynamicPassbuffer = data.slice(readPos, readPos+33*2);
  365. player.szDynamicPass = Common.ab2str(szDynamicPassbuffer)
  366. readPos += 33*2
  367. player.lUserScore = Common.readint64(data,readPos)
  368. readPos += 8
  369. player.lUserIngot = Common.readint64(data,readPos)
  370. readPos += 8
  371. player.lUserInsure = Common.readint64(data,readPos)
  372. readPos += 8
  373. player.dUserBeans = Common.readint64(data,readPos)
  374. readPos += 8
  375. player.cbInsureEnabled = dataview.getUint8(readPos,Common.littleEndian)
  376. readPos += 1
  377. var bAngent = dataview.getUint8(readPos,Common.littleEndian)
  378. player.bIsAngentAccount = (bAngent === 1)
  379. readPos += 1
  380. player.cbLockMachine = dataview.getUint8(readPos,Common.littleEndian)
  381. readPos += 1
  382. player.lRoomCard = Common.readint64(data,readPos)
  383. readPos += 8
  384. player.dwLockServerID = dataview.getUint32(readPos,Common.littleEndian)
  385. readPos += 4
  386. player.dwLockKindID = dataview.getUint32(readPos,Common.littleEndian)
  387. readPos += 4
  388. Common.Print("lock server " + player.dwLockServerID)
  389. Common.Print("lock kind " + player.dwLockKindID)
  390. Common.Print("szNickName " + player.szNickName)
  391. Common.Print("szAccount " + player.szAccount)
  392. Common.Print("szDynamicPass " + player.szDynamicPass)
  393. Common.Print("dwCustomID " + player.dwCustomID)
  394. Common.Print("dwUserID " + player.dwUserID)
  395. Common.Print("dwGameID " + player.dwGameID)
  396. Common.Print("lUserScore " + player.lUserScore)
  397. Common.Print("lUserIngot " + player.lUserIngot)
  398. Common.Print("lUserInsure " + player.lUserInsure)
  399. var curlen = readPos
  400. var datalen = data.byteLength
  401. Common.Print("*** curlen-"+ curlen)
  402. Common.Print("*** datalen-"+ datalen)
  403. var tmpSize
  404. var tmpCmd
  405. while(curlen<datalen){
  406. tmpSize = dataview.getUint16(readPos,Common.littleEndian)
  407. readPos += 2
  408. tmpCmd = dataview.getUint16(readPos,Common.littleEndian)
  409. readPos += 2
  410. if (!tmpSize || ! tmpCmd )
  411. {
  412. break
  413. }
  414. Common.Print("*** tmpSize-" + tmpSize)
  415. Common.Print("*** tmpCmd-" + tmpCmd)
  416. if (tmpCmd == ConstMsgId.DTP_GP_UI_UNDER_WRITE)
  417. {
  418. player.szSign = Common.getString(data,readPos, tmpSize)
  419. readPos += tmpSize
  420. if (! player.szSign )
  421. {
  422. player.szSign = "此人很懒,没有签名"
  423. }
  424. }
  425. else if (tmpCmd == ConstMsgId.DTP_GP_MEMBER_INFO)
  426. { player.cbMemberOrder = dataview.getUint8(readPos,Common.littleEndian)
  427. readPos+=1
  428. for(var i = 1;i < 8;i ++ )
  429. {
  430. var systemtime = dataview.getUint16(readPos,Common.littleEndian)
  431. readPos += 2
  432. Common.Print("systemtime-"+ systemtime)
  433. }
  434. }
  435. else if (tmpCmd == ConstMsgId.login.DTP_GP_UI_QQ)
  436. {
  437. player.szQQNumber = Common.getString(data,readPos, tmpSize)
  438. readPos += tmpSize
  439. Common.Print("qq " + player.szQQNumber)
  440. }
  441. else if (tmpCmd == ConstMsgId.login.DTP_GP_UI_EMAIL)
  442. { player.szEmailAddress = Common.getString(data,readPos,tmpSize)
  443. readPos += tmpSize
  444. Common.Print("email " + player.szEmailAddress)
  445. }
  446. else if (tmpCmd == ConstMsgId.login.DTP_GP_UI_SEAT_PHONE )
  447. {
  448. player.szSeatPhone = Common.getString(data,readPos,tmpSize)
  449. Common.Print("szSeatPhone " + player.szSeatPhone)
  450. }
  451. else if (tmpCmd == ConstMsgId.login.DTP_GP_UI_MOBILE_PHONE )
  452. { player.szMobilePhone = Common.getString(data,readPos,tmpSize)
  453. readPos += tmpSize
  454. Common.Print("szMobilePhone " + player.szMobilePhone)
  455. }
  456. else if (tmpCmd == ConstMsgId.login.DTP_GP_UI_COMPELLATION )
  457. { player.szTrueName = Common.getString(data,readPos,tmpSize)
  458. readPos += tmpSize
  459. Common.Print("szTrueName " + player.szTrueName)
  460. }
  461. else if (tmpCmd == ConstMsgId.login.DTP_GP_UI_DWELLING_PLACE )
  462. { player.szAddress = Common.getString(data,readPos,tmpSize)
  463. readPos += tmpSize
  464. Common.Print("szAddress " + player.szAddress)
  465. }
  466. else if (tmpCmd == ConstMsgId.login.DTP_GP_UI_PASSPORTID )
  467. { player.szPassportID = Common.getString(data,readPos,tmpSize)
  468. readPos += tmpSize
  469. Common.Print("szPassportID " + player.szPassportID)
  470. }
  471. else if (tmpCmd == ConstMsgId.login.DTP_GP_UI_SPREADER )
  472. { player.szSpreaderAccount = Common.getString(data,readPos,tmpSize)
  473. readPos += tmpSize
  474. Common.Print("szSpreaderAccount" + player.szSpreaderAccount)
  475. }
  476. else if (tmpCmd == 0)
  477. break
  478. else
  479. {
  480. for( i = 1;i < tmpSize; i++ )
  481. {
  482. var bt = dataview.getUint8(readPos,Common.littleEndian)
  483. readPos+=1
  484. if (!bt)
  485. {
  486. break
  487. }
  488. }
  489. }
  490. curlen = readPos
  491. }
  492. var playerStr = JSON.stringify(player)
  493. this.playerInfoModel.setSelfPlayerInfo(player)
  494. Common.Print("player"+playerStr)
  495. Common.Print("player.szAccount " + player.szAccount)
  496. Common.Print("player.szDynamicPass " + player.szDynamicPass)
  497. Common.Print("player.dwCustomID " + player.dwCustomID)
  498. }
  499. readLoginFailureResion(data) {
  500. var callBackData = {};
  501. var dataview = new DataView(data);
  502. var readPos = 0;
  503. callBackData.lResultCode = dataview.getUint32(readPos, Common.littleEndian);
  504. readPos += 4;
  505. callBackData.szDescribeString = Common.getString(data, readPos, 56);
  506. }
  507. readVIPInfo(data)
  508. {
  509. var dataview = new DataView(data)
  510. var readPos = 0
  511. var count = dataview.getUint16(readPos,Common.littleEndian)
  512. readPos+=2
  513. var wxinfo = this.playerInfoModel.getSelfWXPlayerInfo()
  514. for (var i=1;i<count;i++ )
  515. {
  516. var item = {}
  517. item._order = dataview.getUint8(readPos,Common.littleEndian)
  518. readPos+=1
  519. item._name = Common.getString(data,readPos,16*2)
  520. readPos+=16*2
  521. item._right = dataview.getUint32(readPos,Common.littleEndian)
  522. readPos+=4
  523. item._task = dataview.getUint32(readPos,Common.littleEndian)
  524. readPos+=4
  525. item._shop = dataview.getUint32(readPos,Common.littleEndian)
  526. readPos+=4
  527. item._insure= dataview.getUint32(readPos,Common.littleEndian)
  528. readPos+=4
  529. item._present=dataview.getUint32(readPos,Common.littleEndian)
  530. readPos+=4
  531. item._gift = dataview.getUint32(readPos,Common.littleEndian)
  532. readPos+=4
  533. this.playerInfoModel.setVipInfo(item._order , item)
  534. console.log("item:" + item._order + "item._gift: "+ item._gift)
  535. }
  536. }
  537. checkBoot()
  538. {
  539. var bootOptionData = DataModelManager.getModel('BootOptionData').getBootOptionData();
  540. //DataModelManager.getModel('BootOptionData').setBootOptionData({});
  541. if(bootOptionData.hasOwnProperty('query'))
  542. {
  543. var queryData = bootOptionData['query'];
  544. if(queryData.hasOwnProperty('method'))
  545. {
  546. if(ConstDefine.ShareFriendPKMessage.shareType == queryData['method'] && queryData.hasOwnProperty('roomId') && queryData.hasOwnProperty('matchId'))
  547. {
  548. var matchId = Number(queryData['matchId']);
  549. this.friendPKMatchId = matchId;
  550. this.friendPKRoomId = queryData['roomId'];
  551. this.enterFriendPKRoom();
  552. }
  553. else if(ConstDefine.ShareDoublePKMessage.shareType == queryData['method'] && queryData.hasOwnProperty('teamId') && queryData.hasOwnProperty('matchId'))
  554. {
  555. var matchId = Number(queryData['matchId']);
  556. this.joinTeamRequest(matchId, queryData['teamId']);
  557. }
  558. }
  559. }
  560. }
  561. checkGroupRank()
  562. {
  563. if (!CC_WECHATGAME)
  564. {
  565. return;
  566. }
  567. var bootOptionData = DataModelManager.getModel('BootOptionData').getBootOptionData();
  568. //DataModelManager.getModel('BootOptionData').setBootOptionData({});
  569. if(bootOptionData.hasOwnProperty('query'))
  570. {
  571. var queryData = bootOptionData['query'];
  572. var shareTicket = bootOptionData['shareTicket'];
  573. this.shareTicket = shareTicket;
  574. let self = this;
  575. if(queryData.hasOwnProperty('method'))
  576. {
  577. if (ConstDefine.ShareGroupRankMessage.shareType == queryData['method'])
  578. {
  579. if (CC_WECHATGAME)
  580. {
  581. DataModelManager.getModel('BootOptionData').setBootOptionData({});
  582. this.emit(Event.COM_MSG.REFRESH_GROUP_RANK_VIEW, true);
  583. wx.getShareInfo
  584. ({
  585. shareTicket : shareTicket,
  586. complete : function(res)
  587. {
  588. console.log('================')
  589. console.log('get share info ' + JSON.stringify(res));
  590. self.test(res);
  591. console.log('================')
  592. }
  593. })
  594. }
  595. }
  596. }
  597. }
  598. }
  599. guestAuth()
  600. {
  601. var account = cc.sys.localStorage.getItem("account");
  602. if(account == null){
  603. account = "yk_"+ Date.now();
  604. cc.sys.localStorage.setItem("account",account);
  605. }
  606. cc.vv.http.sendRequest("/guest",{account:account},this.onAuth);
  607. }
  608. sendCode(code)
  609. {
  610. var msg = MsgTransfer.encodeLoginMsg(ConstMsgId.MDM_MB_LOGON,ConstMsgId.SUB_MB_LOGON_WX,4 + 4 + code.length*2 + 2,code)
  611. this._GameProcessManager.sendMsg(msg);
  612. }
  613. sendLoginWX()
  614. {
  615. if (CC_WECHATGAME) {
  616. var msg = MsgTransfer.encodeLoginMsg(ConstMsgId.MDM_MB_LOGON,ConstMsgId.SUB_MB_LOGON_OTHERPLATFORM,4 + 4 + 9 + (126+512)*2)
  617. this._GameProcessManager.sendMsg(msg);
  618. } else if(CC_JSB && cc.sys.OS_ANDROID === cc.sys.os)
  619. {
  620. var msg = MsgTransfer.encodeLoginMsg(ConstMsgId.MDM_MB_LOGON,ConstMsgId.SUB_MB_LOGON_OTHERPLATFORM,4 + 4 + 9 + (126+512)*2)
  621. this._GameProcessManager.sendMsg(msg);
  622. }
  623. else {
  624. cc.log("账号登录走起");
  625. // var msg = MsgTransfer.encodeLoginMsg(ConstMsgId.MDM_GP_LOGON,ConstMsgId.SUB_GR_LOGON_USERID, 235,"156","284589f4de6ad3c86230fdcbe7d6f969")
  626. // this._GameProcessManager.sendMsg(msg);
  627. }
  628. }
  629. pullData(token)
  630. {
  631. var requestUrl = this.configData.getApiAddress() == '' ? 'http://192.168.3.178:8080/utils/wx_login' : this.configData.getApiAddress()+'/utils/wx_login';
  632. //var requestUrl = 'http://192.168.3.182:7654/utils/wx_login';
  633. var xhr = cc.loader.getXMLHttpRequest();
  634. xhr.open("POST", requestUrl, true);
  635. let self = this;
  636. xhr.onreadystatechange = function()
  637. {
  638. if (xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300))
  639. {
  640. console.log('http res(' + xhr.responseText.length + '):' + xhr.responseText);
  641. try
  642. {
  643. var ret = JSON.parse(xhr.responseText);
  644. self.onGetDataSuccess(ret);
  645. }
  646. catch(e)
  647. {
  648. console.log('err:' + e);
  649. }
  650. }
  651. };
  652. var body = {"token" : token};
  653. xhr.send(JSON.stringify(body));
  654. }
  655. onGetDataSuccess(ret)
  656. {
  657. var wxResp = JSON.parse(ret.wxResp);
  658. this.session_key = wxResp.session_key;
  659. console.log('sessionKey : ' + wxResp.session_key);
  660. }
  661. test(res)
  662. {
  663. var Buffer = require('buffer').Buffer;
  664. var crypto = require('crypto');
  665. var appId = 'wx76718bdb7dcc8a35'
  666. var sessionKey = this.session_key;
  667. // var encryptedData =
  668. // 'CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZM'+
  669. // 'QmRzooG2xrDcvSnxIMXFufNstNGTyaGS'+
  670. // '9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+'+
  671. // '3hVbJSRgv+4lGOETKUQz6OYStslQ142d'+
  672. // 'NCuabNPGBzlooOmB231qMM85d2/fV6Ch'+
  673. // 'evvXvQP8Hkue1poOFtnEtpyxVLW1zAo6'+
  674. // '/1Xx1COxFvrc2d7UL/lmHInNlxuacJXw'+
  675. // 'u0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn'+
  676. // '/Hz7saL8xz+W//FRAUid1OksQaQx4CMs'+
  677. // '8LOddcQhULW4ucetDf96JcR3g0gfRK4P'+
  678. // 'C7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB'+
  679. // '6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns'+
  680. // '/8wR2SiRS7MNACwTyrGvt9ts8p12PKFd'+
  681. // 'lqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYV'+
  682. // 'oKlaRv85IfVunYzO0IKXsyl7JCUjCpoG'+
  683. // '20f0a04COwfneQAGGwd5oa+T8yO5hzuy'+
  684. // 'Db/XcxxmK01EpqOyuxINew=='
  685. // var iv = 'r7BXXKkLb8qrSNn05n0qiA=='
  686. var iv = res.iv;
  687. var encryptedData = res.encryptedData;
  688. sessionKey = new Buffer(sessionKey, 'base64');
  689. encryptedData = new Buffer(encryptedData, 'base64');
  690. iv = new Buffer(iv, 'base64');
  691. try
  692. {
  693. var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv);
  694. decipher.setAutoPadding(true);
  695. var decoded = decipher.update(encryptedData, 'binary', 'utf8');
  696. decoded += decipher.final('utf8');
  697. decoded = JSON.parse(decoded);
  698. }
  699. catch(err)
  700. {
  701. throw new Error('Illegal Buffer');
  702. }
  703. if (decoded.watermark.appid !== appId)
  704. {
  705. throw new Error('Illegal appId');
  706. }
  707. console.log('解密后 : ' + JSON.stringify(decoded));
  708. }
  709. savePlayerInfo(pb)
  710. {
  711. if (pb.success == true )
  712. {
  713. Common.H5SDKReport('SceneFlow',200001,2,1,108,{});
  714. this.playerInfoModel.selfRoleId = pb.role_id;
  715. this.hasLogin = true;
  716. this.lefttime_day = pb.lefttime_day;
  717. this.lefttime_hour = pb.lefttime_hour;
  718. this.lefttime_minute = pb.lefttime_minute;
  719. this.lefttime_second = pb.lefttime_second;
  720. this.emit(Event.CPT_MSG.LOGIN_SHOW_USERINFO);
  721. var scene = cc.director.getScene();
  722. console.log("currentscene: " + scene.name);
  723. if(CC_WECHATGAME&&scene.name=='game')
  724. {
  725. this.checkBoot();
  726. }
  727. // if (cc.sys.os != cc.sys.OS_WINDOWS)
  728. // {
  729. // console.log("getUserInfo");
  730. // // wx.postMessage({
  731. // // message: 'getUserInfo',
  732. // // data: {data:{selfPlayerOpenId:pb.open_id}},
  733. // // });
  734. // var self = this;
  735. // wx.getUserInfo({
  736. // openIdList: ['selfOpenId'],
  737. // lang: 'zh_CN',
  738. // success: (res) => {
  739. // console.log('success', res)
  740. // self.playerInfoModel.setWXPlayerInfo(res.userInfo);
  741. // self.emit(Event.CPT_MSG.LOGIN_SHOW_USERINFO,res);
  742. // self.checkBoot();
  743. // },
  744. // fail: (res) => {
  745. // reject(res)
  746. // }
  747. // })
  748. // }
  749. }
  750. }
  751. randomMatch()
  752. {
  753. this.exitFriendPKRoom();
  754. var info = this.playerInfoModel.getSelfWXPlayerInfo();
  755. this.battleType = ConstDefine.BattleType.NormalBattle;
  756. var _pb = {weixin_user_info: JSON.stringify( info), type: this.battleType};
  757. cc.log('++++++++++++client request random match++++++++++++');
  758. Common.H5SDKReport('SceneFlow',200003,1,1,100,{I0:0});
  759. this._GameProcessManager.send(ConstMsgId.CS.MatchRequest, _pb);
  760. }
  761. saveOldData()
  762. {
  763. this.oldWeekScore = this.weekScore;
  764. this.oldRandomMath = this.total_win;
  765. }
  766. unMatch()
  767. {
  768. var _pb = {};
  769. this._GameProcessManager.send(ConstMsgId.CS.UnMatchRequest, _pb);
  770. }
  771. weeklyMatch()
  772. {
  773. this.exitFriendPKRoom();
  774. var info = this.playerInfoModel.getSelfWXPlayerInfo();
  775. this.battleType = ConstDefine.BattleType.WeeklyBattle;
  776. Common.H5SDKReport('SceneFlow',200003,1,1,100,{I0:1});
  777. var _pb = {weixin_user_info: JSON.stringify( info), type: this.battleType};
  778. cc.log('++++++++++++client request weekly match++++++++++++');
  779. this._GameProcessManager.send(ConstMsgId.CS.MatchRequest, _pb);
  780. }
  781. requestStrength()
  782. {
  783. var _pb = {};
  784. this._GameProcessManager.send(ConstMsgId.CS.PullStrengthInfoRequest, _pb);
  785. }
  786. friendMatch()
  787. {
  788. var info = this.playerInfoModel.getSelfWXPlayerInfo();
  789. var _pb = {weixin_user_info: JSON.stringify( info)};
  790. this._GameProcessManager.send(ConstMsgId.CS.CreateFriendPkRoomRequest, _pb);
  791. }
  792. exitFriendPKRoom()
  793. {
  794. var _pb = {};
  795. this._GameProcessManager.send(ConstMsgId.CS.ExitFriendPkRoomRequest, _pb);
  796. }
  797. enterFriendPKRoom()
  798. {
  799. this.playerInfoModel.setMatchType(Common.MatchType.FriendPK);
  800. var info = this.playerInfoModel.getSelfWXPlayerInfo();
  801. var _pb = {'match_id':this.friendPKMatchId,'room_id': this.friendPKRoomId,'weixin_user_info':JSON.stringify( info)};
  802. this._GameProcessManager.send(ConstMsgId.CS.EnterFriendPkRoomRequest, _pb);
  803. }
  804. playMusic(state)
  805. {
  806. this._AudioControlManager.playMusic(state);
  807. }
  808. playEffect(name)
  809. {
  810. this._AudioControlManager.playEffect(name);
  811. }
  812. setMusicOpen(val)
  813. {
  814. this._AudioControlManager.setMusicOpen(val);
  815. }
  816. createTeamRequest()
  817. {
  818. var info = this.playerInfoModel.getSelfWXPlayerInfo();
  819. var _pb = {'weixin_user_info':JSON.stringify( info)};
  820. this._GameProcessManager.send(ConstMsgId.CS.CreateTeamRequest, _pb);
  821. }
  822. joinTeamRequest(match_id,team_id)
  823. {
  824. var info = this.playerInfoModel.getSelfWXPlayerInfo();
  825. var _pb = {'match_id':match_id,'team_id':team_id,'weixin_user_info':JSON.stringify( info)};
  826. this._GameProcessManager.send(ConstMsgId.CS.JoinTeamRequest, _pb);
  827. }
  828. leaveTeamRequest()
  829. {
  830. var info = this.playerInfoModel.getSelfWXPlayerInfo();
  831. var _pb = {'weixin_user_info':JSON.stringify( info)};
  832. this._GameProcessManager.send(ConstMsgId.CS.LeaveTeamRequest, _pb);
  833. }
  834. sendLevelInfo() {
  835. var msg = MsgTransfer.encodeLoginMsg(ConstMsgId.MDM_GP_USER_SERVICE, ConstMsgId.SUB_GP_GROWLEVEL_QUERY, 144);
  836. this._GameProcessManager.sendMsg(msg);
  837. }
  838. onSubLevelParameter(data) {
  839. var selfLevelInfo = {};
  840. var readPos = 0;
  841. var dataview = new DataView(data);
  842. selfLevelInfo.wCurrLevelID = dataview.getUint16(readPos,Common.littleEndian);
  843. readPos += 2;
  844. selfLevelInfo.dwExperience = dataview.getUint32(readPos,Common.littleEndian);
  845. readPos += 4;
  846. selfLevelInfo.dwUpgradeExperience = dataview.getUint32(readPos,Common.littleEndian);
  847. readPos += 4;
  848. selfLevelInfo.lUpgradeRewardGold = Common.readint64(data, readPos);
  849. readPos += 8;
  850. selfLevelInfo.lUpgradeRewardIngot = Common.readint64(data, readPos);
  851. readPos += 8;
  852. window.selfLevelInfo = selfLevelInfo;
  853. this.emit(Event.CPT_MSG.LEVEL_INFO, selfLevelInfo);
  854. }
  855. }