Files
dvcp_v2_webapp/project/pingchang/apps/AppRiskArea/riskareaCrawler.js
2022-09-23 18:20:29 +08:00

61 lines
2.1 KiB
JavaScript

import hash from "hash.js"
const nonceHeader = "123456789abcdefg"
let http = {}, riskareaList = []
const getSHA256 = key => hash.sha256().update(key).digest("hex")
const getData = (timestampHeader) => {
return http.post("/app/appepidemicpreventionriskarea/apiForwardPost", {
appId: "NcApplication",
key: "3C502C97ABDA40D0A60FBEE50FAAD1DA",
nonceHeader,
paasHeader: "zdww",
signatureHeader: getSHA256(`${timestampHeader}23y0ufFl5YxIyGrI8hWRUZmKkvtSjLQA${nonceHeader}${timestampHeader}`).toUpperCase(),
timestampHeader
}, {
withoutToken: true,
headers: {
Referer: "http://bmfw.www.gov.cn/yqfxdjcx/risk.html",
"x-wif-nonce": "QkjjtiLM2dCratiA",
"x-wif-paasid": "smt-application",
"x-wif-signature": getSHA256(`${timestampHeader}fTN2pfuisxTavbTuYVSsNJHetwq5bJvCQkjjtiLM2dCratiA${timestampHeader}`).toUpperCase(),
"x-wif-timestamp": timestampHeader
},
params: {
url: "http://bmfw.www.gov.cn/bjww/interface/interfaceJson"
}
}).then(res => {
if (res?.data?.data) {
const {highlist, lowlist, middlelist} = res.data.data
return Promise.all([
handleData(highlist, 2),
handleData(middlelist, 1),
// handleData(lowlist, 0)
])
}
})
}
const transName2Code = area_name => http.post("/app/appepidemicpreventionriskarea/transformationAreaName", null, {
params: {area_name}
}).then(res => {
if (res?.data) {
return res.data
}
})
const handleData = (list, riskLevel) => {
return Promise.all(list.map(e => {
const {province, city, county: district, area_name} = e
return transName2Code(area_name).then(areaId => e?.communitys?.map(address => riskareaList.push({
province, city, district, address, areaId,
level: riskLevel,
createUserName: "国家卫健委"
})
))
}))
}
export const getRiskArea = ins => {
http = ins
const timestamp = Math.round(new Date().getTime() / 1000).toString()
riskareaList = []
return getData(timestamp).then(() => http.post("/app/appepidemicpreventionriskarea/batchInsert", riskareaList))
}