| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- "use strict";
- /**
- * CLD 办事处常量
- *
- * @author EllisRan.
- * @date 2018/9/25
- * @version
- */
- const crypto = require("crypto");
- const axios = require("axios");
- const category = {
- // ANHUI: 2,
- GANSU: 3,
- GUANGDONG: 4,
- GUANGXI: 5,
- JIANGXI: 6,
- SICHUAN: 7,
- CHONGQING: 8,
- NEIMENG: 9,
- ZHEJIANG: 10,
- SHANDONG: 11,
- ZONGBU: 12,
- // YUNNAN: 13,
- // GUIZHOU: 14,
- // BEIJING: 15,
- // FUJIAN: 16,
- // HAINAN: 17,
- // HEBEI: 18,
- // HENAN: 19,
- // HEILONGJIANG: 20,
- // HUBEI: 21,
- // HUNAN: 22,
- // JILIN: 23,
- // JIANGSU: 24,
- // LIAONING: 25,
- // NINGXIA: 26
- };
- const categoryList = [
- // {id: category.ANHUI, name: '安徽办'},
- { id: category.GANSU, name: "甘肃办" },
- { id: category.GUANGDONG, name: "广东办" },
- { id: category.GUANGXI, name: "广西办" },
- { id: category.JIANGXI, name: "江西办" },
- { id: category.SICHUAN, name: "四川办" },
- { id: category.CHONGQING, name: "重庆办" },
- { id: category.NEIMENG, name: "内蒙办" },
- { id: category.ZHEJIANG, name: "浙江办" },
- { id: category.SHANDONG, name: "山东办" },
- { id: category.ZONGBU, name: "总部" },
- // {id: category.YUNNAN, name: '云南办'},
- // {id: category.GUIZHOU, name: '贵州办'},
- // {id: category.BEIJING, name: '北京办'},
- // {id: category.FUJIAN, name: '福建办'},
- // {id: category.HAINAN, name: '海南办'},
- // {id: category.HEBEI, name: '河北办'},
- // {id: category.HENAN, name: '河南办'},
- // {id: category.HEILONGJIANG, name: '黑龙江办'},
- // {id: category.HUBEI, name: '湖北办'},
- // {id: category.HUNAN, name: '湖南办'},
- // {id: category.JILIN, name: '吉林办'},
- // {id: category.JIANGSU, name: '江苏办'},
- // {id: category.LIAONING, name: '辽宁办'},
- // {id: category.NINGXIA, name: '宁夏办'}
- ];
- const SECRET_KEY = "iIxMzQxMTQxNzMyNyIsImNhdGVnb3J5IjoiXHU";
- function generateSign(params, timestamp, nonce, secretKey = SECRET_KEY) {
- // 按字母顺序排序参数
- const sortedKeys = Object.keys(params).sort();
- // 拼接参数字符串:key1=value1&key2=value2&...
- const queryString = sortedKeys
- .map((key) => `${key}=${params[key]}`)
- .join("&");
- // 添加 timestamp 和 nonce
- const stringToSign = `${queryString}×tamp=${timestamp}&nonce=${nonce}`;
- console.log("待签名字符串:", stringToSign);
- // 生成 HMAC-SHA256 签名
- const sign = crypto
- .createHmac("sha256", secretKey)
- .update(stringToSign)
- .digest("hex");
- return sign;
- }
- async function getCategoryList() {
- try {
- const timestamp = Math.floor(Date.now() / 1000).toString();
- const nonce = crypto.randomBytes(16).toString("hex");
- const params = {};
- const sign = generateSign(params, timestamp, nonce);
- const response = await axios.get(
- "https://zhcld.com/external/building/department",
- {
- headers: {
- "X-Building-Timestamp": timestamp,
- "X-Building-Sign": sign,
- "X-Building-Nonce": nonce,
- },
- },
- );
- return response.data.data || [];
- } catch (err) {
- console.error("getCategoryList error:", err);
- return [];
- }
- }
- export { category as default, categoryList as List, getCategoryList };
|