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.1 KiB
164 lines
4.1 KiB
import { get } from "./pages/map2d/util";
|
|
import dataHelper from "./data-helper";
|
|
export const cdnUrl = "https://test-598d.1000my.com";
|
|
// dev
|
|
// const baseUrl = "https://iot-dev.123.1000my.com";
|
|
// export const code = "project-k5chc3vt0vkodjbmhl8rua";
|
|
// test
|
|
const baseUrl = "https://project-iot.test.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: `${cdnUrl}/ar/${code}/Aeditor/Aeditor.json?t=${new Date().getTime()}`,
|
|
shopInfoUrl: `${cdnUrl}/ar/${code}/QueryShopListForMap/QueryShopListForMap.json?t=${new Date().getTime()}`,
|
|
};
|
|
export const getMapData = async () => {
|
|
if (mapDataAndShop) return mapDataAndShop;
|
|
try {
|
|
const { mapUrl, shopUrl } = await get(
|
|
`${cdnUrl}/ar/${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: [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.map(({ floorOrd: floorOrder, shopList }) => ({
|
|
floorOrder,
|
|
shopList: shopList.map((iot) => ({
|
|
...iot,
|
|
code: iot.shopCode,
|
|
houseNum: iot.houseNumber,
|
|
logoPath: cdnUrl + iot.logoUrl,
|
|
shopFormat: iot.industryFatherName,
|
|
intro: true,
|
|
formatColor: iot.color,
|
|
floorOrder,
|
|
})),
|
|
}));
|
|
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;
|
|
};
|
|
|