You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
4.2 KiB
164 lines
4.2 KiB
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;
|
|
};
|
|
|