request.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. import apiConfig from "../config/api.js";
  2. import gameConfig from "../config/game.js";
  3. import sdkConfig from "../config/sdk.js";
  4. import { getSystem, getStorage } from "../utils/index.js";
  5. import { sortObj } from "./index.js";
  6. import SdkLoginReUserInfoModel from "../model/SdkLoginReUserInfoModel";
  7. import IpInfoModel from "../model/IpInfoModel";
  8. import md5 from "../lib/md5";
  9. class request {
  10. // 统一API请求入口
  11. async api(type, params, method = "post") {
  12. try {
  13. let wxNetworkInfo;
  14. const dySystemInfo = await getSystem();
  15. // 获取启动query参数
  16. const query = getStorage("urlQuery");
  17. const rySdkConfig = getStorage("rySdkConfig");
  18. // console.log(rySdkConfig);
  19. // 组装公共参数
  20. //启动参数有渠道id和site_id的按启动参数,没有则按系统类型对应的渠道id和site_id,游戏id按系统类型对应的游戏id
  21. params.config_id = rySdkConfig.config_id; //配置id
  22. params.platform = dySystemInfo.platform;
  23. params.os = dySystemInfo.system;
  24. params.model = dySystemInfo.model;
  25. params.device_brand = dySystemInfo.brand;
  26. // params.mnos = wxNetworkInfo.networkType;
  27. //游戏版本,初始化的时候透传进来
  28. params.app_version = rySdkConfig.app_version;
  29. params.queryStr = query.queryStr;
  30. // let ipinfo = IpInfoModel.getInstance().getStorage();
  31. // params.ipv4 = ipinfo.ipv4;
  32. // params.ipv6 = ipinfo.ipv6;
  33. let loginInfo = SdkLoginReUserInfoModel.getInstance().getStorage();
  34. console.log("loginInfo:", loginInfo);
  35. params.access_token = loginInfo.access_token;
  36. (params.username = loginInfo.username), (params.uid = loginInfo.uid);
  37. params.openid = loginInfo.openid;
  38. params.mtype = gameConfig.MTYPE;
  39. params.uuid = sdkConfig.DEVICE_NO;
  40. params.imei = sdkConfig.DEVICE_NO;
  41. params.sdk_version = sdkConfig.SDK_VERSION;
  42. params.sdk_version_code = sdkConfig.SDK_VERSION_CODE;
  43. params.agent_id =
  44. query.agent_id ||
  45. ("ios" === dySystemInfo.platform
  46. ? gameConfig.IOS_AGENT_ID
  47. : gameConfig.AGENT_ID);
  48. params.site_id =
  49. query.site_id ||
  50. ("ios" === dySystemInfo.platform
  51. ? gameConfig.IOS_SITE_ID
  52. : gameConfig.SITE_ID);
  53. if (!params.appid) {
  54. params.appid = loginInfo.appid;
  55. }
  56. // params.appid = ''
  57. if (loginInfo.agent_id !== 1000) {
  58. params.agent_id = loginInfo.agent_id;
  59. params.site_id = loginInfo.site_id;
  60. }
  61. params.launchScene = getStorage("launchScene");
  62. // 组装请求接口地址
  63. const url = type in apiConfig ? apiConfig[type] : false;
  64. if (url === false) {
  65. return Promise.reject("type error");
  66. }
  67. //common类接口统一加密
  68. if (type === "COMMON") {
  69. params = request.addCommonSign(params);
  70. }
  71. // 发起请求
  72. const res = await this.doRequest(url, method, params);
  73. console.log("res:", res);
  74. return Promise.resolve(res);
  75. } catch (error) {
  76. return Promise.reject(error);
  77. }
  78. }
  79. doRequest(url, method, params) {
  80. return new Promise((resolve, reject) => {
  81. // 发起请求
  82. tt.request({
  83. url: url,
  84. header: {
  85. "Content-Type": "application/x-www-form-urlencoded",
  86. },
  87. method: method,
  88. data: params,
  89. // 成功响应
  90. success: (res) => {
  91. if (res.statusCode === 200) {
  92. if (res.data.ret === 1) {
  93. resolve(res.data.info);
  94. } else {
  95. reject({
  96. code: res.data.ret,
  97. msg: res.data.msg,
  98. });
  99. }
  100. } else {
  101. reject({
  102. code: -100,
  103. msg: `network error ${res.statusCode}`,
  104. });
  105. }
  106. },
  107. fail: (error) => {
  108. reject({
  109. code: -101,
  110. msg: error.errMsg,
  111. });
  112. },
  113. });
  114. });
  115. }
  116. /**
  117. * 通用类加密
  118. * @param params
  119. */
  120. static addCommonSign(params) {
  121. const rySdkConfig = getStorage("rySdkConfig");
  122. if (!params.time) {
  123. params.time = parseInt(new Date().getTime() / 1000);
  124. }
  125. let newData = sortObj(params);
  126. let signStr = "";
  127. for (let k in newData) {
  128. if (k === "sign") {
  129. continue;
  130. }
  131. if (newData[k] === "") {
  132. continue;
  133. }
  134. signStr = signStr + k + "=" + newData[k] + "&";
  135. }
  136. signStr = signStr.substring(0, signStr.length - 1) + rySdkConfig.config_id;
  137. // console.log('加密原串:'+signStr);
  138. params.sign = md5(signStr);
  139. return params;
  140. }
  141. }
  142. export default new request();