61 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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))
 | 
						|
}
 |