liangliangSDK.ts 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. var wx=window["wx"];
  2. var currentSDK = "1.0.0";
  3. var gameID = 10005;
  4. var gameName="QiangShenZhanJi";
  5. export class LiangLiangSDK
  6. {
  7. static userID;
  8. static token;
  9. static _ok = false;
  10. static _initOK = false;
  11. static _loginOK = false;
  12. static _listOK = false;
  13. static _config ;
  14. private static _checkOK()
  15. {
  16. if(LiangLiangSDK._initOK &&LiangLiangSDK._loginOK && LiangLiangSDK._listOK )
  17. {
  18. LiangLiangSDK._ok = true;
  19. }
  20. }
  21. /**
  22. * 初始化
  23. * @param successcallback
  24. * @param failcallback
  25. */
  26. static Init(successcallback,failcallback)
  27. {
  28. LiangLiangSDK.HttpRequest("https://www.wiseplanet.com.cn/api/getGameInfo",{"gameId": gameID,"version":currentSDK},"POST",(result)=>
  29. {
  30. console.log(result);
  31. LiangLiangSDK._config = result.data;
  32. LiangLiangSDK._initOK = true;
  33. LiangLiangSDK._checkOK();
  34. this.Login(()=>{
  35. console.log("登录成功");
  36. this.LoadIconDataList(()=>{
  37. console.log("加载互导数据成功:"+this._data);
  38. successcallback();
  39. },()=>{
  40. console.log("加载互导数据失败");
  41. successcallback();
  42. })
  43. },()=>{
  44. console.log("登录失败");
  45. failcallback();
  46. })
  47. },(fail)=>
  48. {
  49. console.log("fail : " + fail)
  50. failcallback();
  51. })
  52. }
  53. static Login(successcallback,failcallback)
  54. {
  55. let self = this;
  56. if(wx)
  57. {
  58. wx.login({
  59. success (res)
  60. {
  61. if (res.code)
  62. {
  63. let option=wx.getLaunchOptionsSync();
  64. if(option==null){
  65. throw new Error("调用 wx.getLaunchOptionsSync 获取数据为空!");
  66. }
  67. let channelId = 0;
  68. if (option.query && JSON.stringify(option.query) != "{}") {
  69. if (option.query.channel_id) {
  70. channelId = Number(option.query.channel_id);
  71. }
  72. }
  73. LiangLiangSDK.HttpRequest("https://www.wiseplanet.com.cn/user/login",{"gameId": gameID,"code":res.code,"channelId" : channelId},"POST",(result)=>
  74. {
  75. console.log(result);
  76. self.userID = result.data.userId;
  77. self.token = result.data.token;
  78. LiangLiangSDK._loginOK = true;
  79. LiangLiangSDK._checkOK();
  80. successcallback();
  81. },(fail)=>
  82. {
  83. console.log("fail : " + fail)
  84. failcallback();
  85. })
  86. }
  87. else
  88. {
  89. console.log('登录失败!' + res.errMsg)
  90. failcallback();
  91. }
  92. }
  93. })
  94. }
  95. else
  96. {
  97. LiangLiangSDK._loginOK = true;
  98. LiangLiangSDK._checkOK();
  99. }
  100. }
  101. static _data:any[];
  102. private static _errorIndex:number=0;
  103. private static _errorTotal:number=3;
  104. static LoadIconDataList(successcallback,failcallback)
  105. {
  106. this._LoadIconDataList(()=>{
  107. successcallback();
  108. },()=>{
  109. if(this._errorIndex<this._errorTotal){
  110. this.LoadIconDataList(successcallback,failcallback);
  111. this._errorIndex++;
  112. }else{
  113. failcallback();
  114. }
  115. });
  116. }
  117. private static _LoadIconDataList(successcallback,failcallback):void{
  118. if(wx!=null)
  119. {
  120. var url = "https://www.maoxingame.com/"+gameName+"/wx_server/xl_sdk_resources/xl_channel_app_config.json";
  121. cc.loader.load(url, function (err, data)
  122. {
  123. if(err)
  124. {
  125. console.error(err)
  126. failcallback();
  127. }
  128. else
  129. {
  130. LiangLiangSDK._listOK = true;
  131. LiangLiangSDK._checkOK();
  132. LiangLiangSDK._data = data;
  133. successcallback();
  134. }
  135. console.log(data);
  136. });
  137. }
  138. else
  139. {
  140. LiangLiangSDK._listOK = true;
  141. LiangLiangSDK._checkOK();
  142. LiangLiangSDK._data = [{
  143. app_id:"",
  144. skipIcon:true,
  145. name:"一个测试名字"
  146. }];
  147. }
  148. }
  149. static HttpRequest(url, data, method, success, fail)
  150. {
  151. /* if(CC_WECHATGAME1)
  152. {
  153. wx.request({
  154. url: url, //仅为示例,并非真实的接口地址
  155. data: data,
  156. header: {
  157. 'content-type': 'application/json' // 默认值
  158. },
  159. success (res) {
  160. console.log(res.data)
  161. },
  162. fail(res)
  163. {
  164. console.log("HttpRequest Fail" + res);
  165. }
  166. })
  167. }
  168. else*/
  169. {
  170. var xhr = new XMLHttpRequest();
  171. xhr.onreadystatechange = function () {
  172. if (xhr.readyState == 4) {
  173. var response = xhr.responseText;
  174. if (xhr.status >= 200 && xhr.status < 400) {
  175. var result = {};
  176. if(response)
  177. {
  178. try {
  179. result = JSON.parse(response)
  180. } catch (e) {
  181. console.error('json parse error ', response)
  182. if (fail)
  183. fail(e);
  184. }
  185. }
  186. if (success)
  187. success(result);
  188. } else {
  189. console.error('error ', response)
  190. if (fail)
  191. fail(response);
  192. }
  193. } else {
  194. }
  195. };
  196. xhr.timeout = 3000;
  197. xhr.ontimeout = function (event) {
  198. console.error('error ', event)
  199. if (fail)
  200. fail(event);
  201. }
  202. xhr.open(method, url, true);
  203. if (method == "POST") {
  204. xhr.open('POST', url);
  205. xhr.setRequestHeader("Content-Type", "application/json");
  206. xhr.send(JSON.stringify(data));
  207. } else {
  208. xhr.send();
  209. }
  210. }
  211. }
  212. static object2Query(obj)
  213. {
  214. var args = []
  215. for (var k in obj)
  216. args.push(k + "=" + obj[k])
  217. return args.join("&"); // 返回对象
  218. }
  219. static CpaReport(data)
  220. {
  221. var body:any = {};
  222. body.gameId = gameID;
  223. body.token = LiangLiangSDK.token;
  224. body.cpaId = data.game_id
  225. console.log("开始上报跳转数据" + JSON.stringify(body));
  226. LiangLiangSDK.HttpRequest("https://www.wiseplanet.com.cn/user/cpaClick",body, "POST",()=>{}, ()=>{});
  227. }
  228. /**
  229. * 洗牌
  230. * @param arr
  231. */
  232. static shuffle(arr: any[]): any[] {
  233. // for (var i = arr.length - 1; i >= 0; i--) {
  234. // var randomIndex = Math.floor(Math.random() * (i - 1));
  235. // var itemAtIndex = arr[randomIndex];
  236. // arr[randomIndex] = arr[i];
  237. // arr[i] = itemAtIndex;
  238. // }
  239. return arr
  240. }
  241. static GetList():any[]
  242. {
  243. if(!LiangLiangSDK._ok) //如果服务器请求错误 则直接返回一个空的列表
  244. {
  245. return [];
  246. }
  247. let ret = [];
  248. ret = LiangLiangSDK.shuffle(LiangLiangSDK._data);
  249. return ret
  250. }
  251. static CanJumpOut():boolean
  252. {
  253. if(!LiangLiangSDK._config)
  254. {
  255. return false;
  256. }
  257. if(currentSDK != LiangLiangSDK._config.version)
  258. {
  259. return false;
  260. }
  261. {
  262. if(!LiangLiangSDK._ok)
  263. {
  264. console.log("不允许跳转1")
  265. return false;
  266. }
  267. if(!LiangLiangSDK._data || LiangLiangSDK._data.length == 0)
  268. {
  269. console.log("不允许跳转2")
  270. return false;
  271. }
  272. console.log("允许跳转")
  273. return true
  274. }
  275. return false;
  276. }
  277. static CanWuChu():boolean
  278. {
  279. if(!LiangLiangSDK._config)
  280. {
  281. return false;
  282. }
  283. if(currentSDK != LiangLiangSDK._config.version)
  284. {
  285. return false;
  286. }
  287. if(!LiangLiangSDK._config.mistakeSwitch)
  288. {
  289. return false;
  290. }
  291. //上海forbidSwitch 为true
  292. if(LiangLiangSDK._config.forbidSwitch)
  293. {
  294. return false;
  295. }
  296. return true;
  297. }
  298. }