import { get } from "./pages/map2d/util"; import dataHelper from "./data-helper"; const baseUrl = "https://project-iot.test.1000my.com"; export const cdnUrl = "https://test-598d.1000my.com"; export const code = "project-skcn0gk6yb2xutkcsmjtra"; export const post = (url, data) => new Promise((resolve) => { wx.request({ url: baseUrl + url, method: "POST", header: { projectCode: code }, data: { ...data }, success({ data, statusCode }) { if (statusCode !== 200) return reject(); resolve(data); }, }); }); let mapDataAndShop = null; export const mall = { isNew: true, baseUrl, cdnUrl, code, floors: [ [true, "L1"], [true, "L2"], ], }; const config = { mapDataUrl: `${baseUrl}/api/guide/v1/web/getMallMapData/${code}/Aeditor`, shopInfoUrl: `${baseUrl}/api/guide/v1/web/getMapInfo?projectCode=${code}`, }; export const getMapData = async () => { if (mapDataAndShop) return mapDataAndShop; // try { // const { mapUrl, shopUrl } = await get( // `${cdnUrl}/test-projects/${code}/config.json?t=${new Date().getTime()}` // ); // if (mapUrl) config.mapDataUrl = mapUrl; // if (shopUrl) config.shopInfoUrl = shopUrl; // } catch (error) { // console.log("获取config失败"); // } let [ { data: { mapData }, }, { data: { buildingList, shopList: serverShopInfo }, }, { data: facs }, { data: sdkMapList }, { data: { projectConfig: sdkConfig }, }, { data: pois }, ...rest ] = await Promise.all([ get(config.mapDataUrl), get(config.shopInfoUrl), get( `${baseUrl}/api/guide/v1/web/getProjectUsedIconList?projectCode=${code}` ), post(`/api/ar/v1/applet/GetSdkConfigList`, { mallCode: code }), post(`/api/ar/v1/applet/ProjectConfig`, { mallCode: code }), post(`/api/ar/v1/applet/GetPoiList`, { mallCode: code }), ...mall.floors.map((_, i) => get(`${baseUrl}/api/guide/v1/web/getMallMapData/${code}/${i}`) ), ]); const poiMap = pois.reduce((acc, nxt) => ({ ...acc, [nxt.code]: nxt }), {}); const sdkMap = sdkMapList.map( ({ poiid: poi_id, floorid: floor_id, isPark: is_park, appid: app_id, mapid: map_id, caseid: case_id, transMatrix: transform_matrix, scale, }) => ({ app_id, map_id, poi_id, floor_id, transform_matrix, scale, case_id, is_park, }) ); const map2dData = rest .map((res) => (res.data && res.data.mapData ? res.data.mapData : null)) .map((mapData) => (mapData ? JSON.parse(mapData) : null)); mall.floors.forEach((floor, i) => { floor[2] = map2dData[i]; }); serverShopInfo = serverShopInfo .filter(({ buildingOrder }) => buildingOrder === 0) .map((iot) => ({ ...iot, name: iot.shopName, houseNum: iot.houseNumber, nameEn: iot.shopNameEn, logoPath: cdnUrl + iot.logoUrl, shopFormat: iot.industryFatherName, intro: true, })) .reduce((acc, nxt) => { if (!acc[nxt.floorOrder]) acc[nxt.floorOrder] = [nxt]; else acc[nxt.floorOrder] = [...acc[nxt.floorOrder], nxt]; return acc; }, []) .map((shopList, floorOrder) => ({ floorOrder, shopList })); mapData = JSON.parse(mapData)[0]; const facilityTypeMap = facs.reduce( (acc, nxt) => ({ ...acc, [nxt.node]: nxt.customFacilityName || nxt.name, }), {} ); const facilityCodeMap = facs.reduce( (acc, nxt) => ({ ...acc, [nxt.abbreviation]: Number(nxt.objCode), }), {} ); const floors = mall.floors; let shopMap = {}; serverShopInfo.forEach(({ shopList }) => { shopList.forEach((shop) => { shop.floorName = floors[shop.floorOrder] ? floors[shop.floorOrder][1] : ""; shopMap[shop.houseNum] = shop; }); }); const dataHelperResponse = await dataHelper({ serverShopInfo, mapData, mall, facilityTypeMap, facilityCodeMap, }); const pMap = {}; mapDataAndShop = { ...dataHelperResponse, serverShopInfo, mapData, mall, shopMap, pMap, poiMap, config: { ...sdkConfig, map: sdkMap }, }; return mapDataAndShop; };