var strUrl=window.location.href;
var strIp = "";
strIp = strUrl.split('//') [1].split('/')[0]
// if(strIp == 'localhost:8080')
// {
//   strIp = '172.16.50.4:18080'
// }

if(strIp == '127.0.0.1:8080')
{
  strIp = '172.16.50.4:18080'
}

if(strIp == '172.16.30.57:8080')
{
  strIp = '172.16.50.4:18080'
}

const urlBaseSet =  {
        OSS: "https://bucket-model.oss-cn-beijing.aliyuncs.com",
        //CDN: "http://127.0.0.1:8080",
        //ICDN: "http://127.0.0.1:8080",
        //TCDN: "http://127.0.0.1:8080",
        //CDN: "https://modelcdn2.3dnest.cn",
        //ICDN: "https://infocdn2.3dnest.cn",
        //TCDN: "https://template2.3dnest.cn",
        //CDN: "http://172.16.50.4:18080",
        //ICDN: "http://172.16.50.4:18080",
        //TCDN: "http://172.16.50.4:18080",
        CDN: "http://" + strIp,
        ICDN: "http://" + strIp,
        TCDN: "http://" + strIp,
        EDIT: "/manager_house/model/rtiframedata/",
};
let  modelId; // 模型id
let modelVersion; // 模型版本号
let modelSetting; // 模型版本设置
let companyId;  // 公司Id
let  globalSetting = null;
// 获取页面对应的单个参数   start by ytj
function getParams(key) {
    let search = window.location.search.replace(/^\?/, "");
    let pairs = search.split("&");
    let paramsMap = pairs.map(pair => {
        let [key, value] = pair.split("=");
        return [decodeURIComponent(key), decodeURIComponent(value)];
    }).reduce((res, [key, value]) => Object.assign(res, { [key]: value }), {});
    return paramsMap[key] || "";
}
// 获取页面对应的单个参数   end by ytj


// 获取模型版本信息
const getModelVesionUrl  = (urlBaseSet)=>{
    modelId = getParams('m');
    let currentDate = new Date().getTime(); 
    return  `${urlBaseSet.CDN }/${modelId}/version.txt?f=${currentDate}`
}
// 获取模型配置信息
const getModelSettingUrl  = (urlBaseSet,modelVersion,modelSetting)=>{
 return `${urlBaseSet.ICDN}/${modelId}/${modelVersion}/settings.txt?s=${ modelSetting}`
}
// 获取模型公司配置
const getCompanySettingUrl  = (companyId)=>{
    let currentDate = new Date().getTime(); 
    return `${urlBaseSet.TCDN} /company/${companyId}/company.txt?t=${currrentDate}`
 }
const fetchData = (url) => {
    return new Promise((resolve, reject) => {
      const xhr = new XMLHttpRequest();
      xhr.open('GET', url);
      xhr.onload = () => {
        if (xhr.status >= 200 && xhr.status < 300) {
          resolve(JSON.parse(xhr.responseText));
        } else {
          reject(xhr.statusText);
        }
      };
      xhr.onerror = () => reject(xhr.statusText);
      xhr.send();
    });
  }
  
  // 这是我们的包装函数,它返回一个数组
  const awaitWrap = (promise) => {
    return promise
      .then(data => [null, data])
      .catch(err => [err, null]);
  }
  
  // 这是我们的主函数,它按顺序执行三个请求,并合并返回的数据
  const fetchAndCombine = async () => {
    let combinedData = {};
    let backgroundBgUrl = `${urlBaseSet.ICDN}/${modelId}/https://infocdn2.3dnest.cn/881f840a_q8X6_b6f9_DAP/background.jpg?`
    try {
        let modelVersionUrl = getModelVesionUrl(urlBaseSet);
      const [err1, modelVersionData] = await awaitWrap(fetchData(modelVersionUrl));
      if (err1) {
        throw new Error(`Error fetching data from  ${modelVersionUrl}: ${err1}`);
      }
      console.log('=====模型版本数据========',modelVersionData);
    //   combinedData = { ...combinedData, ...modelVersionData };
      let modelSettingUrl = getModelSettingUrl(urlBaseSet,modelVersionData.version,modelVersionData.setting)
      const [err2, modelSettingData] = await awaitWrap(fetchData(modelSettingUrl));
      if (err2) throw new Error(`Error fetching data from url2: ${err2}`);
    //   onsole.log('=====模型版本数据========',modelSettingData);
      // combinedData = { ...combinedData, ...modelSettingData };
      console.log('=====模型配置数据========',modelSettingData);
      if(!!modelSettingData?.basic?.user?.group&&!!modelSettingData?.basic?.user?.group>1){
        let companySettingUrl = getCompanySettingUrl(modelSettingData.basic.user.group)
        const [err3, data3] = await awaitWrap(fetchData(companySettingUrl));
        if (err3) throw new Error(`Error fetching data from url3: ${err3}`);
      }else {

      }
      let siteConf = {
          "type": "display",
          "versionpre": `${urlBaseSet.CDN}/${modelId}/`,
          "modelpre": `${urlBaseSet.CDN}/${modelId}/`,
          "infopre": `${urlBaseSet.ICDN}/${modelId}/`,
          "setpre": `${urlBaseSet.ICDN}/${modelId}/`
      
      }
      globalSetting = {
        modelId: modelId,
        settings: modelSettingData,
        version:  modelVersionData,
        siteConf: siteConf,
        enterType: 3
      }
      return [null, globalSetting];
    //   combinedData = { ...combinedData, ...data3 };
    } catch (error) {
      return [error, null];
    }
  
    return [null, globalSetting];
  }
  
  // 导出主函数
  export default fetchAndCombine;