import apiConfig from "../config/api.js"; import gameConfig from "../config/game.js"; import sdkConfig from "../config/sdk.js"; import { getSystem, getStorage } from "../utils/index.js"; import { sortObj } from "./index.js"; import SdkLoginReUserInfoModel from "../model/SdkLoginReUserInfoModel"; import IpInfoModel from "../model/IpInfoModel"; import md5 from "../lib/md5"; class request { // 统一API请求入口 async api(type, params, method = "post") { try { let wxNetworkInfo; const dySystemInfo = await getSystem(); // 获取启动query参数 const query = getStorage("urlQuery"); const rySdkConfig = getStorage("rySdkConfig"); // console.log(rySdkConfig); // 组装公共参数 //启动参数有渠道id和site_id的按启动参数,没有则按系统类型对应的渠道id和site_id,游戏id按系统类型对应的游戏id params.config_id = rySdkConfig.config_id; //配置id params.platform = dySystemInfo.platform; params.os = dySystemInfo.system; params.model = dySystemInfo.model; params.device_brand = dySystemInfo.brand; // params.mnos = wxNetworkInfo.networkType; //游戏版本,初始化的时候透传进来 params.app_version = rySdkConfig.app_version; params.queryStr = query.queryStr; // let ipinfo = IpInfoModel.getInstance().getStorage(); // params.ipv4 = ipinfo.ipv4; // params.ipv6 = ipinfo.ipv6; let loginInfo = SdkLoginReUserInfoModel.getInstance().getStorage(); console.log("loginInfo:", loginInfo); params.access_token = loginInfo.access_token; (params.username = loginInfo.username), (params.uid = loginInfo.uid); params.openid = loginInfo.openid; params.mtype = gameConfig.MTYPE; params.uuid = sdkConfig.DEVICE_NO; params.imei = sdkConfig.DEVICE_NO; params.sdk_version = sdkConfig.SDK_VERSION; params.sdk_version_code = sdkConfig.SDK_VERSION_CODE; params.agent_id = query.agent_id || ("ios" === dySystemInfo.platform ? gameConfig.IOS_AGENT_ID : gameConfig.AGENT_ID); params.site_id = query.site_id || ("ios" === dySystemInfo.platform ? gameConfig.IOS_SITE_ID : gameConfig.SITE_ID); if (!params.appid) { params.appid = loginInfo.appid; } // params.appid = '' if (loginInfo.agent_id !== 1000) { params.agent_id = loginInfo.agent_id; params.site_id = loginInfo.site_id; } params.launchScene = getStorage("launchScene"); // 组装请求接口地址 const url = type in apiConfig ? apiConfig[type] : false; if (url === false) { return Promise.reject("type error"); } //common类接口统一加密 if (type === "COMMON") { params = request.addCommonSign(params); } // 发起请求 const res = await this.doRequest(url, method, params); console.log("res:", res); return Promise.resolve(res); } catch (error) { return Promise.reject(error); } } doRequest(url, method, params) { return new Promise((resolve, reject) => { // 发起请求 tt.request({ url: url, header: { "Content-Type": "application/x-www-form-urlencoded", }, method: method, data: params, // 成功响应 success: (res) => { if (res.statusCode === 200) { if (res.data.ret === 1) { resolve(res.data.info); } else { reject({ code: res.data.ret, msg: res.data.msg, }); } } else { reject({ code: -100, msg: `network error ${res.statusCode}`, }); } }, fail: (error) => { reject({ code: -101, msg: error.errMsg, }); }, }); }); } /** * 通用类加密 * @param params */ static addCommonSign(params) { const rySdkConfig = getStorage("rySdkConfig"); if (!params.time) { params.time = parseInt(new Date().getTime() / 1000); } let newData = sortObj(params); let signStr = ""; for (let k in newData) { if (k === "sign") { continue; } if (newData[k] === "") { continue; } signStr = signStr + k + "=" + newData[k] + "&"; } signStr = signStr.substring(0, signStr.length - 1) + rySdkConfig.config_id; // console.log('加密原串:'+signStr); params.sign = md5(signStr); return params; } } export default new request();