liangliangSDK.ts 8.8 KB

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