|
|
|
@ -1,79 +1,87 @@ |
|
|
|
import axios from "axios"; |
|
|
|
import icons from "./image-helper"; |
|
|
|
let mallInfos = new Map(); |
|
|
|
export const cdnUrl = "https://cdn.1000my.cn"; |
|
|
|
export const code = "b4a45cf0-85ce-4123-99f0-e4ddce2731de"; |
|
|
|
export const baseUrl = "https://test.ar.1000my.com"; |
|
|
|
export const code = "project-k5chc3vt0vkodjbmhl8rua"; |
|
|
|
export const baseUrl = "https://iot-dev.123.1000my.com"; |
|
|
|
export const post = async (url = "", data = {}) => { |
|
|
|
const response = await fetch(baseUrl + url, { |
|
|
|
method: "POST", |
|
|
|
headers: { |
|
|
|
"Content-Type": "application/json", |
|
|
|
projectCode: code, |
|
|
|
}, |
|
|
|
body: JSON.stringify({ ...data, mallCode: code }), |
|
|
|
}); |
|
|
|
return response.json(); |
|
|
|
}; |
|
|
|
const getMallInfo = async ({ memberID }) => { |
|
|
|
const { name, city, groundFloorOrder, floors, scale, offsetToNorth } = { |
|
|
|
name: "千目广场", |
|
|
|
city: "南京", |
|
|
|
const { name, groundFloorOrder, scale, offsetToNorth } = { |
|
|
|
groundFloorOrder: 1, |
|
|
|
scale: 0.15, |
|
|
|
floors: [ |
|
|
|
{ |
|
|
|
name: "F1", |
|
|
|
floorOrder: 0, |
|
|
|
url: null, |
|
|
|
}, |
|
|
|
{ |
|
|
|
name: "F2", |
|
|
|
floorOrder: 1, |
|
|
|
url: true, |
|
|
|
}, |
|
|
|
], |
|
|
|
offsetToNorth: 0, |
|
|
|
}; |
|
|
|
document.title = name; |
|
|
|
const mall = { |
|
|
|
baseUrl, |
|
|
|
name, |
|
|
|
city, |
|
|
|
code, |
|
|
|
groundFloorIndex: groundFloorOrder, |
|
|
|
needSpotLight: false, |
|
|
|
scale, |
|
|
|
floors, |
|
|
|
isNew: true, |
|
|
|
cloud: "1000my", |
|
|
|
offsetToNorth, |
|
|
|
}; |
|
|
|
const floorMap = { 1: true }; |
|
|
|
const config = { |
|
|
|
mapDataUrl: `${cdnUrl}/test-projects/${code}/Aeditor/Aeditor.json?t=${new Date().getTime()}`, |
|
|
|
shopInfoUrl: `${cdnUrl}/test-projects/${code}/QueryShopListForMap/QueryShopListForMap.json?t=${new Date().getTime()}`, |
|
|
|
mapDataUrl: `${baseUrl}/api/guide/v1/web/getMallMapData/${code}/Aeditor`, |
|
|
|
shopInfoUrl: `${baseUrl}/api/guide/v1/web/getMapInfo?projectCode=${code}`, |
|
|
|
}; |
|
|
|
|
|
|
|
let cdnUrl; |
|
|
|
try { |
|
|
|
const { |
|
|
|
data: { mapUrl, shopUrl }, |
|
|
|
} = await axios.get( |
|
|
|
`${cdnUrl}/test-projects/${code}/config.json?t=${new Date().getTime()}` |
|
|
|
); |
|
|
|
if (mapUrl) config.mapDataUrl = mapUrl; |
|
|
|
if (shopUrl) config.shopInfoUrl = shopUrl; |
|
|
|
data: { data: uploadUrl }, |
|
|
|
} = await axios.get(`${baseUrl}/api/info/v1/web/getUploadUrl`); |
|
|
|
cdnUrl = uploadUrl; |
|
|
|
} catch (error) { |
|
|
|
console.log("获取config失败"); |
|
|
|
console.error(error); |
|
|
|
} |
|
|
|
|
|
|
|
// try {
|
|
|
|
// const {
|
|
|
|
// data: { mapUrl, shopUrl },
|
|
|
|
// } = await axios.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失败");
|
|
|
|
// }
|
|
|
|
|
|
|
|
const [ |
|
|
|
{ cityName, projectName }, |
|
|
|
mapDataJSON, |
|
|
|
serverShopInfo, |
|
|
|
[buildingList, serverShopInfo], |
|
|
|
facs, |
|
|
|
activities, |
|
|
|
pois, |
|
|
|
menu, |
|
|
|
shopCouponMap, |
|
|
|
] = await Promise.all([ |
|
|
|
(async () => { |
|
|
|
try { |
|
|
|
const { |
|
|
|
data: { data }, |
|
|
|
} = await axios.get( |
|
|
|
`${baseUrl}/api/guide/v1/web/getMallData?projectCode=${code}` |
|
|
|
); |
|
|
|
return data; |
|
|
|
} catch (error) { |
|
|
|
console.error(error); |
|
|
|
return {}; |
|
|
|
} |
|
|
|
})(), |
|
|
|
(async () => { |
|
|
|
try { |
|
|
|
const { |
|
|
|
@ -90,9 +98,11 @@ const getMallInfo = async ({ memberID }) => { |
|
|
|
(async () => { |
|
|
|
try { |
|
|
|
const { |
|
|
|
data: { data: serverShopInfo }, |
|
|
|
data: { |
|
|
|
data: { buildingList, shopList: serverShopInfo }, |
|
|
|
}, |
|
|
|
} = await axios.get(config.shopInfoUrl); |
|
|
|
return serverShopInfo; |
|
|
|
return [buildingList, serverShopInfo]; |
|
|
|
} catch (error) { |
|
|
|
console.error(error); |
|
|
|
return {}; |
|
|
|
@ -100,7 +110,11 @@ const getMallInfo = async ({ memberID }) => { |
|
|
|
})(), |
|
|
|
(async () => { |
|
|
|
try { |
|
|
|
const { data: facs } = await post(`/Api/Cdn/FacilityInfo`); |
|
|
|
const { |
|
|
|
data: { data: facs }, |
|
|
|
} = await axios.get( |
|
|
|
`${baseUrl}/api/guide/v1/web/getProjectUsedIconList?projectCode=${code}` |
|
|
|
); |
|
|
|
return facs; |
|
|
|
} catch (error) { |
|
|
|
console.error(error); |
|
|
|
@ -109,9 +123,12 @@ const getMallInfo = async ({ memberID }) => { |
|
|
|
})(), |
|
|
|
(async () => { |
|
|
|
try { |
|
|
|
const { data: activities } = await post(`/Api/Operation/MallActList`, { |
|
|
|
const { data: activities } = await post( |
|
|
|
`/api/ar/v1/applet/MallActList`, |
|
|
|
{ |
|
|
|
memberID, |
|
|
|
}); |
|
|
|
} |
|
|
|
); |
|
|
|
return activities; |
|
|
|
} catch (error) { |
|
|
|
console.error(error); |
|
|
|
@ -120,7 +137,7 @@ const getMallInfo = async ({ memberID }) => { |
|
|
|
})(), |
|
|
|
(async () => { |
|
|
|
try { |
|
|
|
const { data: pois } = await post(`/api/Operation/GetPoiList`); |
|
|
|
const { data: pois } = await post(`/api/ar/v1/applet/GetPoiList`); |
|
|
|
return pois; |
|
|
|
} catch (error) { |
|
|
|
console.error(error); |
|
|
|
@ -129,7 +146,7 @@ const getMallInfo = async ({ memberID }) => { |
|
|
|
})(), |
|
|
|
(async () => { |
|
|
|
try { |
|
|
|
const { data: menu } = await post(`/Api/AppModule/MallAppModules`); |
|
|
|
const { data: menu } = await post(`/api/ar/v1/applet/MallAppModules`); |
|
|
|
return menu; |
|
|
|
} catch (error) { |
|
|
|
console.error(error); |
|
|
|
@ -140,7 +157,7 @@ const getMallInfo = async ({ memberID }) => { |
|
|
|
try { |
|
|
|
const { |
|
|
|
data: { shopDetailShowCoupon }, |
|
|
|
} = await post(`/Api/Operation/MiniproBasicData`, { |
|
|
|
} = await post(`/api/ar/v1/applet/MiniproBasicData`, { |
|
|
|
memberID, |
|
|
|
}); |
|
|
|
const shopCouponMap = shopDetailShowCoupon.reduce( |
|
|
|
@ -154,6 +171,9 @@ const getMallInfo = async ({ memberID }) => { |
|
|
|
} |
|
|
|
})(), |
|
|
|
]); |
|
|
|
mall.name = projectName; |
|
|
|
document.title = projectName; |
|
|
|
mall.city = cityName; |
|
|
|
const mapData = JSON.parse(mapDataJSON)[0]; |
|
|
|
mall.activities = activities; |
|
|
|
mall.pois = pois; |
|
|
|
@ -165,7 +185,28 @@ const getMallInfo = async ({ memberID }) => { |
|
|
|
}), |
|
|
|
{} |
|
|
|
); |
|
|
|
const shopInfo = serverShopInfo; |
|
|
|
mall.floors = buildingList[0].floorList.map(({ floor, floorOrder }) => ({ |
|
|
|
name: floor, |
|
|
|
floorOrder, |
|
|
|
url: floorMap[floorOrder] ? true : null, |
|
|
|
})); |
|
|
|
const shopInfo = 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 })); |
|
|
|
shopInfo.forEach(({ shopList }) => |
|
|
|
shopList.forEach((shop) => { |
|
|
|
if (shopCouponMap[shop.code]) shop.hasCoupon = true; |
|
|
|
|