Commit 49359afc by 孙香冬

no message

parent 2cd09dce
......@@ -4,6 +4,7 @@
/test
/public
/logs
/img
/video
*.logs
*.zip
[2024-05-27T09:19:32.854] [ERROR] errorLogger - errorInfo => token已过期 |
[2024-05-27T10:11:45.982] [ERROR] errorLogger - errorInfo => token已过期 |
[2024-05-27T10:13:38.606] [ERROR] errorLogger - errorInfo => token已过期 |
[2024-05-27T10:14:27.502] [ERROR] errorLogger - errorInfo => token已过期 |
[2024-05-27T10:14:41.723] [ERROR] errorLogger - errorInfo => token已过期 |
[2024-05-27T10:15:01.313] [ERROR] errorLogger - errorInfo => token已过期 |
[2024-05-27T10:15:34.485] [ERROR] errorLogger - errorInfo => token已过期 |
[2024-05-27T10:16:00.968] [ERROR] errorLogger - errorInfo => token已过期 |
[2024-05-27T10:16:19.813] [ERROR] errorLogger - errorInfo => token已过期 |
{
"name": "tikeyi",
"version": "1.0.0",
"lockfileVersion": 1,
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "tikeyi",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"@alicloud/dybaseapi": {
"@alicloud/pop-core": "^1.7.10",
"@alicloud/sms-sdk": "^1.1.6",
"@types/node": "^10.12.18",
"chokidar": "^4.0.3",
"compression": "^1.7.4",
"express": "^4.17.1",
"express-async-handler": "^1.1.4",
"express-history-api-fallback": "^2.2.1",
"formidable": "^1.2.1",
"log4js": "^6.9.1",
"lru-cache": "^4.1.5",
"md5": "^2.2.1",
"moment": "^2.24.0",
"mongoose": "^5.0.1",
"mysql": "^2.18.1",
"node-xlsx": "^0.16.1",
"nodemailer": "^6.1.1",
"pyfl": "^1.1.4",
"redis": "^4.1.0",
"request": "^2.88.2",
"svg-captcha": "^1.3.12",
"ws": "^5.2.2"
},
"devDependencies": {
"@types/request": "^2.48.13"
}
},
"node_modules/@alicloud/dybaseapi": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/@alicloud/dybaseapi/download/@alicloud/dybaseapi-1.0.0.tgz",
"integrity": "sha1-VS7dCZD5Db1p1AI3zf7/w2bQofU=",
"requires": {
"dependencies": {
"@alicloud/pop-core": "^1.3.3"
}
},
"@alicloud/dysmsapi-2017-05-25": {
"node_modules/@alicloud/dysmsapi-2017-05-25": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/@alicloud/dysmsapi-2017-05-25/download/@alicloud/dysmsapi-2017-05-25-1.0.1.tgz",
"integrity": "sha1-qKtpTb4QXrnWfL0eNzV/ag+Eh9U=",
"requires": {
"dependencies": {
"@alicloud/pop-core": "^1.5.1"
}
},
"@alicloud/mns": {
"node_modules/@alicloud/mns": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/@alicloud/mns/download/@alicloud/mns-1.0.0.tgz",
"integrity": "sha1-AzqBmJmNXtk9onw72f8LnusJDpY=",
"requires": {
"dependencies": {
"debug": "^2.6.3",
"httpx": "^2.1.1",
"kitx": "^1.2.0",
"xml2js": "^0.4.17"
}
},
"@alicloud/pop-core": {
"node_modules/@alicloud/pop-core": {
"version": "1.7.10",
"resolved": "https://registry.npmjs.org/@alicloud/pop-core/-/pop-core-1.7.10.tgz",
"integrity": "sha512-9/aLWgmgaAdB1ERNTpdOvF7wueLY5CDTRxKZr93x542iuYRA1NDpcKslFqLOy5CUOa0CbopET3JGaHSAz5qv9g==",
"requires": {
"dependencies": {
"debug": "^3.1.0",
"httpx": "^2.1.2",
"json-bigint": "^1.0.0",
"kitx": "^1.2.1",
"xml2js": "^0.4.17"
}
},
"dependencies": {
"debug": {
"node_modules/@alicloud/pop-core/node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"requires": {
"dependencies": {
"ms": "^2.1.1"
}
},
"ms": {
"node_modules/@alicloud/pop-core/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
}
}
},
"@alicloud/sms-sdk": {
"node_modules/@alicloud/sms-sdk": {
"version": "1.1.6",
"resolved": "https://registry.npm.taobao.org/@alicloud/sms-sdk/download/@alicloud/sms-sdk-1.1.6.tgz",
"integrity": "sha1-dwHq4eCDLINo1nebQtWDaPlEy/A=",
"requires": {
"dependencies": {
"@alicloud/dybaseapi": "^1.0.0",
"@alicloud/dysmsapi-2017-05-25": "^1.0.1",
"@alicloud/mns": "^1.0.0-beta6",
"babel-runtime": "^6.26.0"
}
},
"@babel/runtime": {
"node_modules/@babel/runtime": {
"version": "7.13.10",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz",
"integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==",
"requires": {
"dependencies": {
"regenerator-runtime": "^0.13.4"
}
},
"dependencies": {
"regenerator-runtime": {
"node_modules/@babel/runtime/node_modules/regenerator-runtime": {
"version": "0.13.7",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
}
}
},
"@redis/bloom": {
"node_modules/@redis/bloom": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.0.2.tgz",
"integrity": "sha512-EBw7Ag1hPgFzdznK2PBblc1kdlj5B5Cw3XwI9/oG7tSn85/HKy3X9xHy/8tm/eNXJYHLXHJL/pkwBpFMVVefkw=="
"integrity": "sha512-EBw7Ag1hPgFzdznK2PBblc1kdlj5B5Cw3XwI9/oG7tSn85/HKy3X9xHy/8tm/eNXJYHLXHJL/pkwBpFMVVefkw==",
"peerDependencies": {
"@redis/client": "^1.0.0"
}
},
"@redis/client": {
"node_modules/@redis/client": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@redis/client/-/client-1.1.0.tgz",
"integrity": "sha512-xO9JDIgzsZYDl3EvFhl6LC52DP3q3GCMUer8zHgKV6qSYsq1zB+pZs9+T80VgcRogrlRYhi4ZlfX6A+bHiBAgA==",
"requires": {
"dependencies": {
"cluster-key-slot": "1.1.0",
"generic-pool": "3.8.2",
"yallist": "4.0.0"
},
"dependencies": {
"yallist": {
"engines": {
"node": ">=14"
}
},
"node_modules/@redis/client/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"@redis/graph": {
"node_modules/@redis/graph": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.0.1.tgz",
"integrity": "sha512-oDE4myMCJOCVKYMygEMWuriBgqlS5FqdWerikMoJxzmmTUErnTRRgmIDa2VcgytACZMFqpAOWDzops4DOlnkfQ=="
"integrity": "sha512-oDE4myMCJOCVKYMygEMWuriBgqlS5FqdWerikMoJxzmmTUErnTRRgmIDa2VcgytACZMFqpAOWDzops4DOlnkfQ==",
"peerDependencies": {
"@redis/client": "^1.0.0"
}
},
"@redis/json": {
"node_modules/@redis/json": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.3.tgz",
"integrity": "sha512-4X0Qv0BzD9Zlb0edkUoau5c1bInWSICqXAGrpwEltkncUwcxJIGEcVryZhLgb0p/3PkKaLIWkjhHRtLe9yiA7Q=="
"integrity": "sha512-4X0Qv0BzD9Zlb0edkUoau5c1bInWSICqXAGrpwEltkncUwcxJIGEcVryZhLgb0p/3PkKaLIWkjhHRtLe9yiA7Q==",
"peerDependencies": {
"@redis/client": "^1.0.0"
}
},
"@redis/search": {
"node_modules/@redis/search": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@redis/search/-/search-1.0.6.tgz",
"integrity": "sha512-pP+ZQRis5P21SD6fjyCeLcQdps+LuTzp2wdUbzxEmNhleighDDTD5ck8+cYof+WLec4csZX7ks+BuoMw0RaZrA=="
"integrity": "sha512-pP+ZQRis5P21SD6fjyCeLcQdps+LuTzp2wdUbzxEmNhleighDDTD5ck8+cYof+WLec4csZX7ks+BuoMw0RaZrA==",
"peerDependencies": {
"@redis/client": "^1.0.0"
}
},
"@redis/time-series": {
"node_modules/@redis/time-series": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.3.tgz",
"integrity": "sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA=="
"integrity": "sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA==",
"peerDependencies": {
"@redis/client": "^1.0.0"
}
},
"@types/bson": {
"node_modules/@types/bson": {
"version": "4.0.3",
"resolved": "https://registry.npm.taobao.org/@types/bson/download/@types/bson-4.0.3.tgz?cache=0&sync_timestamp=1613378303280&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbson%2Fdownload%2F%40types%2Fbson-4.0.3.tgz",
"integrity": "sha1-MIidL/3mJiq744ZZNkxjFFSZn78=",
"requires": {
"dependencies": {
"@types/node": "*"
}
},
"@types/mongodb": {
"node_modules/@types/caseless": {
"version": "0.12.5",
"resolved": "https://registry.npmmirror.com/@types/caseless/-/caseless-0.12.5.tgz",
"integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/mongodb": {
"version": "3.6.10",
"resolved": "https://registry.npm.taobao.org/@types/mongodb/download/@types/mongodb-3.6.10.tgz?cache=0&sync_timestamp=1615809585833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fmongodb%2Fdownload%2F%40types%2Fmongodb-3.6.10.tgz",
"integrity": "sha1-gMzqq+7J9GDltGhE6Tjo66dPkmY=",
"requires": {
"dependencies": {
"@types/bson": "*",
"@types/node": "*"
}
},
"@types/node": {
"node_modules/@types/node": {
"version": "10.17.55",
"resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-10.17.55.tgz?cache=0&sync_timestamp=1615834822695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-10.17.55.tgz",
"integrity": "sha1-oUfygu3sZ5uJTUaU7bWr61lf7L0="
},
"accepts": {
"node_modules/@types/request": {
"version": "2.48.13",
"resolved": "https://registry.npmmirror.com/@types/request/-/request-2.48.13.tgz",
"integrity": "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/caseless": "*",
"@types/node": "*",
"@types/tough-cookie": "*",
"form-data": "^2.5.5"
}
},
"node_modules/@types/request/node_modules/form-data": {
"version": "2.5.5",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.5.5.tgz",
"integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==",
"dev": true,
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"hasown": "^2.0.2",
"mime-types": "^2.1.35",
"safe-buffer": "^5.2.1"
},
"engines": {
"node": ">= 0.12"
}
},
"node_modules/@types/request/node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"license": "MIT"
},
"node_modules/@types/tough-cookie": {
"version": "4.0.5",
"resolved": "https://registry.npmmirror.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
"integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
"dev": true,
"license": "MIT"
},
"node_modules/accepts": {
"version": "1.3.7",
"resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz",
"integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
"requires": {
"dependencies": {
"mime-types": "~2.1.24",
"negotiator": "0.6.2"
},
"engines": {
"node": ">= 0.6"
}
},
"adler-32": {
"node_modules/adler-32": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz",
"integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=",
"requires": {
"dependencies": {
"exit-on-epipe": "~1.0.1",
"printj": "~1.1.0"
},
"bin": {
"adler32": "bin/adler32.njs"
},
"engines": {
"node": ">=0.8"
}
},
"ajv": {
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"requires": {
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"array-flatten": {
"node_modules/array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
"asn1": {
"node_modules/asn1": {
"version": "0.2.6",
"resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz",
"integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
"requires": {
"dependencies": {
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
"node_modules/assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
"engines": {
"node": ">=0.8"
}
},
"async-limiter": {
"node_modules/async-limiter": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz",
"integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0="
},
"asynckit": {
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"aws-sign2": {
"node_modules/aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA=="
"integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
"engines": {
"node": "*"
}
},
"aws4": {
"node_modules/aws4": {
"version": "1.12.0",
"resolved": "https://registry.npmmirror.com/aws4/-/aws4-1.12.0.tgz",
"integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
},
"babel-runtime": {
"node_modules/babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz",
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"requires": {
"dependencies": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
}
},
"bcrypt-pbkdf": {
"node_modules/bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
"requires": {
"dependencies": {
"tweetnacl": "^0.14.3"
}
},
"bignumber.js": {
"node_modules/bignumber.js": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz",
"integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw=="
"integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==",
"engines": {
"node": "*"
}
},
"bl": {
"node_modules/bl": {
"version": "2.2.1",
"resolved": "https://registry.npm.taobao.org/bl/download/bl-2.2.1.tgz?cache=0&sync_timestamp=1612867177492&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbl%2Fdownload%2Fbl-2.2.1.tgz",
"integrity": "sha1-jBGntzBlXF1WiYzchxIk9A/ZAdU=",
"requires": {
"dependencies": {
"readable-stream": "^2.3.5",
"safe-buffer": "^5.1.1"
}
},
"bluebird": {
"node_modules/bluebird": {
"version": "3.5.1",
"resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.5.1.tgz",
"integrity": "sha1-2VUfnemPH82h5oPRfukaBgLuLrk="
},
"body-parser": {
"node_modules/body-parser": {
"version": "1.19.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
"integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
"requires": {
"dependencies": {
"bytes": "3.1.0",
"content-type": "~1.0.4",
"debug": "2.6.9",
......@@ -267,101 +399,162 @@
"raw-body": "2.4.0",
"type-is": "~1.6.17"
},
"dependencies": {
"bytes": {
"engines": {
"node": ">= 0.8"
}
},
"node_modules/body-parser/node_modules/bytes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
"engines": {
"node": ">= 0.8"
}
},
"qs": {
"node_modules/body-parser/node_modules/qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
}
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
"engines": {
"node": ">=0.6"
}
},
"bson": {
"node_modules/bson": {
"version": "1.1.6",
"resolved": "https://registry.npm.taobao.org/bson/download/bson-1.1.6.tgz",
"integrity": "sha1-+4Gb6aYM1nfghTruTKcSp4XWYYo="
"integrity": "sha1-+4Gb6aYM1nfghTruTKcSp4XWYYo=",
"engines": {
"node": ">=0.6.19"
}
},
"buffer-from": {
"node_modules/buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"bytes": {
"node_modules/bytes": {
"version": "3.0.0",
"resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz",
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
},
"caseless": {
"engines": {
"node": ">= 0.4"
}
},
"node_modules/caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
},
"cfb": {
"node_modules/cfb": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.0.tgz",
"integrity": "sha512-sXMvHsKCICVR3Naq+J556K+ExBo9n50iKl6LGarlnvuA2035uMlGA/qVrc0wQtow5P1vJEw9UyrKLCbtIKz+TQ==",
"requires": {
"dependencies": {
"adler-32": "~1.2.0",
"crc-32": "~1.2.0",
"printj": "~1.1.2"
},
"engines": {
"node": ">=0.8"
}
},
"charenc": {
"node_modules/charenc": {
"version": "0.0.2",
"resolved": "https://registry.npm.taobao.org/charenc/download/charenc-0.0.2.tgz",
"integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
"integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
"engines": {
"node": "*"
}
},
"cluster-key-slot": {
"node_modules/chokidar": {
"version": "4.0.3",
"resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"license": "MIT",
"dependencies": {
"readdirp": "^4.0.1"
},
"engines": {
"node": ">= 14.16.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/cluster-key-slot": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz",
"integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw=="
"integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==",
"engines": {
"node": ">=0.10.0"
}
},
"codepage": {
"node_modules/codepage": {
"version": "1.14.0",
"resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz",
"integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=",
"requires": {
"dependencies": {
"commander": "~2.14.1",
"exit-on-epipe": "~1.0.1"
},
"dependencies": {
"commander": {
"bin": {
"codepage": "bin/codepage.njs"
},
"engines": {
"node": ">=0.8"
}
},
"node_modules/codepage/node_modules/commander": {
"version": "2.14.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
"integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
}
}
},
"combined-stream": {
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"commander": {
"node_modules/commander": {
"version": "2.17.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
"integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
},
"compressible": {
"node_modules/compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
"integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
"requires": {
"dependencies": {
"mime-db": ">= 1.43.0 < 2"
},
"engines": {
"node": ">= 0.6"
}
},
"compression": {
"node_modules/compression": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
"integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
"requires": {
"dependencies": {
"accepts": "~1.3.5",
"bytes": "3.0.0",
"compressible": "~2.0.16",
......@@ -369,135 +562,246 @@
"on-headers": "~1.0.2",
"safe-buffer": "5.1.2",
"vary": "~1.1.2"
},
"engines": {
"node": ">= 0.8.0"
}
},
"content-disposition": {
"node_modules/content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
"integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
"requires": {
"dependencies": {
"safe-buffer": "5.1.2"
},
"engines": {
"node": ">= 0.6"
}
},
"content-type": {
"node_modules/content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"engines": {
"node": ">= 0.6"
}
},
"cookie": {
"node_modules/cookie": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
"integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
"integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
"engines": {
"node": ">= 0.6"
}
},
"cookie-signature": {
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"core-js": {
"node_modules/core-js": {
"version": "2.6.12",
"resolved": "https://registry.npm.taobao.org/core-js/download/core-js-2.6.12.tgz?cache=0&sync_timestamp=1614537347747&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.12.tgz",
"integrity": "sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw="
"integrity": "sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw=",
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
"hasInstallScript": true
},
"core-util-is": {
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"crc-32": {
"node_modules/crc-32": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz",
"integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==",
"requires": {
"dependencies": {
"exit-on-epipe": "~1.0.1",
"printj": "~1.1.0"
},
"bin": {
"crc32": "bin/crc32.njs"
},
"engines": {
"node": ">=0.8"
}
},
"crypt": {
"node_modules/crypt": {
"version": "0.0.2",
"resolved": "https://registry.npm.taobao.org/crypt/download/crypt-0.0.2.tgz",
"integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
"integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
"engines": {
"node": "*"
}
},
"dashdash": {
"node_modules/dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
"requires": {
"dependencies": {
"assert-plus": "^1.0.0"
},
"engines": {
"node": ">=0.10"
}
},
"date-format": {
"node_modules/date-format": {
"version": "4.0.14",
"resolved": "https://registry.npmmirror.com/date-format/-/date-format-4.0.14.tgz",
"integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg=="
"integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==",
"engines": {
"node": ">=4.0"
}
},
"debug": {
"node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
"integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
"requires": {
"dependencies": {
"ms": "2.0.0"
}
},
"delayed-stream": {
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"engines": {
"node": ">=0.4.0"
}
},
"denque": {
"node_modules/denque": {
"version": "1.5.0",
"resolved": "https://registry.npm.taobao.org/denque/download/denque-1.5.0.tgz?cache=0&sync_timestamp=1609779969821&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdenque%2Fdownload%2Fdenque-1.5.0.tgz",
"integrity": "sha1-dz3gaG/y2Owv+SkUMWpHtzscc94="
"integrity": "sha1-dz3gaG/y2Owv+SkUMWpHtzscc94=",
"engines": {
"node": ">=0.10"
}
},
"depd": {
"node_modules/depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
"engines": {
"node": ">= 0.6"
}
},
"destroy": {
"node_modules/destroy": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"ecc-jsbn": {
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
"requires": {
"dependencies": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"ee-first": {
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"encodeurl": {
"node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"escape-html": {
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-set-tostringtag": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
"etag": {
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
"engines": {
"node": ">= 0.6"
}
},
"exit-on-epipe": {
"node_modules/exit-on-epipe": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
"integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw=="
"integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
"engines": {
"node": ">=0.8"
}
},
"express": {
"node_modules/express": {
"version": "4.17.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
"integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
"requires": {
"dependencies": {
"accepts": "~1.3.7",
"array-flatten": "1.1.1",
"body-parser": "1.19.0",
......@@ -529,54 +833,62 @@
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"dependencies": {
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
}
"engines": {
"node": ">= 0.10.0"
}
},
"express-async-handler": {
"node_modules/express-async-handler": {
"version": "1.1.4",
"resolved": "https://registry.npm.taobao.org/express-async-handler/download/express-async-handler-1.1.4.tgz",
"integrity": "sha1-IlqEkI32OzWunflLbw8a8GEmZCY="
},
"express-history-api-fallback": {
"node_modules/express-history-api-fallback": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/express-history-api-fallback/-/express-history-api-fallback-2.2.1.tgz",
"integrity": "sha1-OirSf3vryQ/FM9EQ18bYMJe80Fc="
"resolved": "https://registry.npmmirror.com/express-history-api-fallback/-/express-history-api-fallback-2.2.1.tgz",
"integrity": "sha512-swxwm3aP8vrOOvlzOdZvHlSZtJGwHKaY94J6AkrAgCTmcbko3IRwbkhLv2wKV1WeZhjxX58aLMpP3atDBnKuZg==",
"license": "ISC"
},
"extend": {
"node_modules/express/node_modules/qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
"engines": {
"node": ">=0.6"
}
},
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extsprintf": {
"node_modules/extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g=="
"integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
"engines": [
"node >=0.6.0"
]
},
"fast-deep-equal": {
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-json-stable-stringify": {
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
"fflate": {
"node_modules/fflate": {
"version": "0.3.11",
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.3.11.tgz",
"integrity": "sha512-Rr5QlUeGN1mbOHlaqcSYMKVpPbgLy0AWT/W0EHxA6NGI12yO1jpoui2zBBvU2G824ltM6Ut8BFgfHSBGfkmS0A=="
},
"finalhandler": {
"node_modules/finalhandler": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
"requires": {
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
......@@ -584,344 +896,572 @@
"parseurl": "~1.3.3",
"statuses": "~1.5.0",
"unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"flatted": {
"node_modules/flatted": {
"version": "3.3.2",
"resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.2.tgz",
"integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA=="
},
"forever-agent": {
"node_modules/forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw=="
"integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
"engines": {
"node": "*"
}
},
"form-data": {
"node_modules/form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"requires": {
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 0.12"
}
},
"formidable": {
"node_modules/formidable": {
"version": "1.2.2",
"resolved": "https://registry.npm.taobao.org/formidable/download/formidable-1.2.2.tgz",
"integrity": "sha1-v2muopcpgmdfAIZTQrmCmG9rjdk="
"integrity": "sha1-v2muopcpgmdfAIZTQrmCmG9rjdk=",
"deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau",
"funding": {
"url": "https://ko-fi.com/tunnckoCore/commissions"
}
},
"forwarded": {
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
"engines": {
"node": ">= 0.6"
}
},
"frac": {
"node_modules/frac": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz",
"integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
"integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
"engines": {
"node": ">=0.8"
}
},
"fresh": {
"node_modules/fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
"engines": {
"node": ">= 0.6"
}
},
"fs-extra": {
"node_modules/fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz",
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"requires": {
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
},
"engines": {
"node": ">=6 <7 || >=8"
}
},
"generic-pool": {
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/generic-pool": {
"version": "3.8.2",
"resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz",
"integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg=="
"integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==",
"engines": {
"node": ">= 4"
}
},
"getpass": {
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"dev": true,
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
"requires": {
"dependencies": {
"assert-plus": "^1.0.0"
}
},
"graceful-fs": {
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
"har-schema": {
"node_modules/har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q=="
"integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
"engines": {
"node": ">=4"
}
},
"har-validator": {
"node_modules/har-validator": {
"version": "5.1.5",
"resolved": "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz",
"integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
"requires": {
"deprecated": "this library is no longer supported",
"dependencies": {
"ajv": "^6.12.3",
"har-schema": "^2.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-tostringtag": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dev": true,
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"http-errors": {
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"requires": {
"dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.1",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
},
"engines": {
"node": ">= 0.6"
}
},
"http-signature": {
"node_modules/http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
"requires": {
"dependencies": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
},
"engines": {
"node": ">=0.8",
"npm": ">=1.3.7"
}
},
"httpx": {
"node_modules/httpx": {
"version": "2.2.7",
"resolved": "https://registry.npm.taobao.org/httpx/download/httpx-2.2.7.tgz",
"integrity": "sha1-HjQZgUbjLKMwWmbBEglVnhy+ugk=",
"requires": {
"dependencies": {
"@types/node": "^14",
"debug": "^4.1.1"
}
},
"dependencies": {
"@types/node": {
"node_modules/httpx/node_modules/@types/node": {
"version": "14.14.35",
"resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.35.tgz?cache=0&sync_timestamp=1615834822695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.14.35.tgz",
"integrity": "sha1-QslTpOKxirkx9yR35wEhcvT/oxM="
},
"debug": {
"node_modules/httpx/node_modules/debug": {
"version": "4.3.1",
"resolved": "https://registry.npm.taobao.org/debug/download/debug-4.3.1.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.1.tgz",
"integrity": "sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=",
"requires": {
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"ms": {
"node_modules/httpx/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
"integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk="
}
}
},
"iconv-lite": {
"node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"inherits": {
"node_modules/inherits": {
"version": "2.0.3",
"resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ipaddr.js": {
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
"engines": {
"node": ">= 0.10"
}
},
"is-buffer": {
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz?cache=0&sync_timestamp=1604429388528&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-buffer%2Fdownload%2Fis-buffer-1.1.6.tgz",
"integrity": "sha1-76ouqdqg16suoTqXsritUf776L4="
},
"is-typedarray": {
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
},
"isarray": {
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"isstream": {
"node_modules/isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
},
"jsbn": {
"node_modules/jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
},
"json-bigint": {
"node_modules/json-bigint": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
"requires": {
"dependencies": {
"bignumber.js": "^9.0.0"
}
},
"json-schema": {
"node_modules/json-schema": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz",
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
},
"json-schema-traverse": {
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"json-stringify-safe": {
"node_modules/json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
},
"jsonfile": {
"node_modules/jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"requires": {
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"jsprim": {
"node_modules/jsprim": {
"version": "1.4.2",
"resolved": "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz",
"integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
"requires": {
"dependencies": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.4.0",
"verror": "1.10.0"
},
"engines": {
"node": ">=0.6.0"
}
},
"kareem": {
"node_modules/kareem": {
"version": "2.3.2",
"resolved": "https://registry.npm.taobao.org/kareem/download/kareem-2.3.2.tgz",
"integrity": "sha1-eMRQiJSYW404oNwV4ajhEHjyypM="
},
"kitx": {
"node_modules/kitx": {
"version": "1.3.0",
"resolved": "https://registry.npm.taobao.org/kitx/download/kitx-1.3.0.tgz",
"integrity": "sha1-qz7nxZjSsdYp/VVWj4aMREDCAOo="
},
"log4js": {
"node_modules/log4js": {
"version": "6.9.1",
"resolved": "https://registry.npmmirror.com/log4js/-/log4js-6.9.1.tgz",
"integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==",
"requires": {
"dependencies": {
"date-format": "^4.0.14",
"debug": "^4.3.4",
"flatted": "^3.2.7",
"rfdc": "^1.3.0",
"streamroller": "^3.1.5"
},
"dependencies": {
"debug": {
"engines": {
"node": ">=8.0"
}
},
"node_modules/log4js/node_modules/debug": {
"version": "4.4.0",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz",
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"requires": {
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"ms": {
"node_modules/log4js/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
}
}
},
"lru-cache": {
"node_modules/lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
"integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
"requires": {
"dependencies": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"md5": {
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/md5": {
"version": "2.3.0",
"resolved": "https://registry.npm.taobao.org/md5/download/md5-2.3.0.tgz?cache=0&sync_timestamp=1596362680344&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmd5%2Fdownload%2Fmd5-2.3.0.tgz",
"integrity": "sha1-w9qaaq46MLRreww0m4exENw72k8=",
"requires": {
"dependencies": {
"charenc": "0.0.2",
"crypt": "0.0.2",
"is-buffer": "~1.1.6"
}
},
"media-typer": {
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
"engines": {
"node": ">= 0.6"
}
},
"memory-pager": {
"node_modules/memory-pager": {
"version": "1.5.0",
"resolved": "https://registry.npm.taobao.org/memory-pager/download/memory-pager-1.5.0.tgz",
"integrity": "sha1-2HUWVdItOEaCdByXLyw9bfo+ZrU=",
"optional": true
},
"merge-descriptors": {
"node_modules/merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
},
"methods": {
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
"engines": {
"node": ">= 0.6"
}
},
"mime": {
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"bin": {
"mime": "cli.js"
},
"mime-db": {
"version": "1.46.0",
"resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.46.0.tgz?cache=0&sync_timestamp=1613194744108&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.46.0.tgz",
"integrity": "sha1-Ymd0in95lZTePLyM3pHe80lmHO4="
"engines": {
"node": ">=4"
}
},
"mime-types": {
"version": "2.1.29",
"resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.29.tgz?cache=0&sync_timestamp=1613608491741&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.29.tgz",
"integrity": "sha1-HUq3faZLkfX3JInfKSNlY3VLsbI=",
"requires": {
"mime-db": "1.46.0"
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"moment": {
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/moment": {
"version": "2.29.1",
"resolved": "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz?cache=0&sync_timestamp=1601983320283&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmoment%2Fdownload%2Fmoment-2.29.1.tgz",
"integrity": "sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M="
"integrity": "sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M=",
"engines": {
"node": "*"
}
},
"mongodb": {
"node_modules/mongodb": {
"version": "3.6.5",
"resolved": "https://registry.npm.taobao.org/mongodb/download/mongodb-3.6.5.tgz",
"integrity": "sha1-wn14b9TTyD3BkwJINwfRKp0q7l8=",
"requires": {
"dependencies": {
"bl": "^2.2.1",
"bson": "^1.1.4",
"denque": "^1.4.1",
"require_optional": "^1.0.1",
"safe-buffer": "^5.1.2",
"safe-buffer": "^5.1.2"
},
"engines": {
"node": ">=4"
},
"optionalDependencies": {
"saslprep": "^1.0.0"
},
"peerDependenciesMeta": {
"aws4": {
"optional": true
},
"bson-ext": {
"optional": true
},
"kerberos": {
"optional": true
},
"mongodb-client-encryption": {
"optional": true
},
"mongodb-extjson": {
"optional": true
},
"snappy": {
"optional": true
}
}
},
"mongoose": {
"node_modules/mongoose": {
"version": "5.12.1",
"resolved": "https://registry.npm.taobao.org/mongoose/download/mongoose-5.12.1.tgz?cache=0&sync_timestamp=1616103030377&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmongoose%2Fdownload%2Fmongoose-5.12.1.tgz",
"integrity": "sha1-mqzorHg7I5kGJTOWqY8qVsCWS4s=",
"requires": {
"dependencies": {
"@types/mongodb": "^3.5.27",
"bson": "^1.1.4",
"kareem": "2.3.2",
......@@ -935,207 +1475,283 @@
"sift": "7.0.1",
"sliced": "1.0.1"
},
"dependencies": {
"ms": {
"engines": {
"node": ">=4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mongoose"
}
},
"node_modules/mongoose-legacy-pluralize": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/mongoose-legacy-pluralize/download/mongoose-legacy-pluralize-1.0.2.tgz",
"integrity": "sha1-O6n5H6UHtRhtOZ+0CFS/8Y+1Y+Q=",
"peerDependencies": {
"mongoose": "*"
}
},
"node_modules/mongoose/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
"integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk="
},
"safe-buffer": {
"node_modules/mongoose/node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz",
"integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY="
}
}
"integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
"mongoose-legacy-pluralize": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/mongoose-legacy-pluralize/download/mongoose-legacy-pluralize-1.0.2.tgz",
"integrity": "sha1-O6n5H6UHtRhtOZ+0CFS/8Y+1Y+Q="
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"mpath": {
"node_modules/mpath": {
"version": "0.8.3",
"resolved": "https://registry.npm.taobao.org/mpath/download/mpath-0.8.3.tgz",
"integrity": "sha1-gorA0Yf39CZ0g510khlwl5q73Y8="
"integrity": "sha1-gorA0Yf39CZ0g510khlwl5q73Y8=",
"engines": {
"node": ">=4.0.0"
}
},
"mquery": {
"node_modules/mquery": {
"version": "3.2.4",
"resolved": "https://registry.npm.taobao.org/mquery/download/mquery-3.2.4.tgz?cache=0&sync_timestamp=1613149714087&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmquery%2Fdownload%2Fmquery-3.2.4.tgz",
"integrity": "sha1-nFwuKF6mxvIGc/NSiXPJnuGqoaA=",
"requires": {
"dependencies": {
"bluebird": "3.5.1",
"debug": "3.1.0",
"regexp-clone": "^1.0.0",
"safe-buffer": "5.1.2",
"sliced": "1.0.1"
},
"dependencies": {
"debug": {
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/mquery/node_modules/debug": {
"version": "3.1.0",
"resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.1.0.tgz",
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
"requires": {
"dependencies": {
"ms": "2.0.0"
}
}
}
},
"ms": {
"node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"mysql": {
"node_modules/mysql": {
"version": "2.18.1",
"resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
"integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==",
"requires": {
"dependencies": {
"bignumber.js": "9.0.0",
"readable-stream": "2.3.7",
"safe-buffer": "5.1.2",
"sqlstring": "2.3.1"
},
"dependencies": {
"bignumber.js": {
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mysql/node_modules/bignumber.js": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
"integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
}
"integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==",
"engines": {
"node": "*"
}
},
"negotiator": {
"node_modules/negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
"integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs="
"integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=",
"engines": {
"node": ">= 0.6"
}
},
"node-xlsx": {
"node_modules/node-xlsx": {
"version": "0.16.1",
"resolved": "https://registry.npmjs.org/node-xlsx/-/node-xlsx-0.16.1.tgz",
"integrity": "sha512-mwEZKItGXKO+jp5Pz9+wDCXxqhJITGd6m81A8WmalBpGAzREiR5cIJ0xrSF0BxzU6Mh2mC0fA2X0/3GqNU6dIw==",
"requires": {
"dependencies": {
"@babel/runtime": "^7.12.5",
"buffer-from": "^1.1.1",
"xlsx": "^0.16.9"
},
"engines": {
"node": ">=4.0.0"
}
},
"nodemailer": {
"node_modules/nodemailer": {
"version": "6.5.0",
"resolved": "https://registry.npm.taobao.org/nodemailer/download/nodemailer-6.5.0.tgz?cache=0&sync_timestamp=1614329161993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnodemailer%2Fdownload%2Fnodemailer-6.5.0.tgz",
"integrity": "sha1-0Swo2NSHeJGOJfGZnZeRAjGxddk="
"integrity": "sha1-0Swo2NSHeJGOJfGZnZeRAjGxddk=",
"engines": {
"node": ">=6.0.0"
}
},
"oauth-sign": {
"node_modules/oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"engines": {
"node": "*"
}
},
"on-finished": {
"node_modules/on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"requires": {
"dependencies": {
"ee-first": "1.1.1"
},
"engines": {
"node": ">= 0.8"
}
},
"on-headers": {
"node_modules/on-headers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
"engines": {
"node": ">= 0.8"
}
},
"opentype.js": {
"node_modules/opentype.js": {
"version": "0.7.3",
"resolved": "https://registry.npm.taobao.org/opentype.js/download/opentype.js-0.7.3.tgz",
"integrity": "sha1-QPuM4Yv9YOdESO/f5EKDQJg5eqs=",
"requires": {
"dependencies": {
"tiny-inflate": "^1.0.2"
},
"bin": {
"ot": "bin/ot"
}
},
"parseurl": {
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"engines": {
"node": ">= 0.8"
}
},
"path-to-regexp": {
"node_modules/path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"performance-now": {
"node_modules/performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
},
"printj": {
"node_modules/printj": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
"integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ=="
"integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==",
"bin": {
"printj": "bin/printj.njs"
},
"engines": {
"node": ">=0.8"
}
},
"process-nextick-args": {
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
"integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
},
"proxy-addr": {
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
"requires": {
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
},
"engines": {
"node": ">= 0.10"
}
},
"pseudomap": {
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
"psl": {
"node_modules/psl": {
"version": "1.9.0",
"resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz",
"integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
},
"punycode": {
"node_modules/punycode": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
"engines": {
"node": ">=6"
}
},
"pyfl": {
"node_modules/pyfl": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/pyfl/-/pyfl-1.1.4.tgz",
"integrity": "sha512-tEwj+SYfOk7zMStPrcDvadkUYomRIX6URQA/dl+YDqaEZlP9gEXM501FUsorz5HozCkfIeFOoT7U2jTElQ+zYg=="
},
"qs": {
"node_modules/qs": {
"version": "6.5.3",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz",
"integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA=="
"integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
"engines": {
"node": ">=0.6"
}
},
"range-parser": {
"node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
"engines": {
"node": ">= 0.6"
}
},
"raw-body": {
"node_modules/raw-body": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
"integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
"requires": {
"dependencies": {
"bytes": "3.1.0",
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
"dependencies": {
"bytes": {
"engines": {
"node": ">= 0.8"
}
},
"node_modules/raw-body/node_modules/bytes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
}
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
"engines": {
"node": ">= 0.8"
}
},
"readable-stream": {
"node_modules/readable-stream": {
"version": "2.3.7",
"resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz",
"integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
"requires": {
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
......@@ -1145,11 +1761,27 @@
"util-deprecate": "~1.0.1"
}
},
"redis": {
"node_modules/readdirp": {
"version": "4.1.2",
"resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz",
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
"license": "MIT",
"engines": {
"node": ">= 14.18.0"
},
"funding": {
"type": "individual",
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/redis": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/redis/-/redis-4.1.0.tgz",
"integrity": "sha512-5hvJ8wbzpCCiuN1ges6tx2SAh2XXCY0ayresBmu40/SGusWHFW86TAlIPpbimMX2DFHOX7RN34G2XlPA1Z43zg==",
"requires": {
"workspaces": [
"./packages/*"
],
"dependencies": {
"@redis/bloom": "1.0.2",
"@redis/client": "1.1.0",
"@redis/graph": "1.0.1",
......@@ -1158,21 +1790,23 @@
"@redis/time-series": "1.0.3"
}
},
"regenerator-runtime": {
"node_modules/regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz",
"integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk="
},
"regexp-clone": {
"node_modules/regexp-clone": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/regexp-clone/download/regexp-clone-1.0.0.tgz",
"integrity": "sha1-Ii25Z2IydwViYLmSYmNUoEzpv2M="
},
"request": {
"node_modules/request": {
"version": "2.88.2",
"resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz",
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
"requires": {
"deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
"license": "Apache-2.0",
"dependencies": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
......@@ -1193,61 +1827,73 @@
"tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
},
"engines": {
"node": ">= 6"
}
},
"require_optional": {
"node_modules/require_optional": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/require_optional/download/require_optional-1.0.1.tgz",
"integrity": "sha1-TPNaQkf2TKPfjC7yCMxJSxyo/C4=",
"requires": {
"dependencies": {
"resolve-from": "^2.0.0",
"semver": "^5.1.0"
}
},
"resolve-from": {
"node_modules/resolve-from": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-2.0.0.tgz",
"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=",
"engines": {
"node": ">=0.10.0"
}
},
"rfdc": {
"node_modules/rfdc": {
"version": "1.4.1",
"resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz",
"integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="
},
"safe-buffer": {
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
"integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
},
"safer-buffer": {
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
"integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
},
"saslprep": {
"node_modules/saslprep": {
"version": "1.0.3",
"resolved": "https://registry.npm.taobao.org/saslprep/download/saslprep-1.0.3.tgz",
"integrity": "sha1-TAL5RrVs9UKX40e6EJPnrKxM8iY=",
"optional": true,
"requires": {
"dependencies": {
"sparse-bitfield": "^3.0.3"
},
"engines": {
"node": ">=6"
}
},
"sax": {
"node_modules/sax": {
"version": "1.2.4",
"resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz",
"integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk="
},
"semver": {
"node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz",
"integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc="
"integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
"bin": {
"semver": "bin/semver"
}
},
"send": {
"node_modules/send": {
"version": "0.17.1",
"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
"integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
"requires": {
"dependencies": {
"debug": "2.6.9",
"depd": "~1.1.2",
"destroy": "~1.0.4",
......@@ -1262,67 +1908,77 @@
"range-parser": "~1.2.1",
"statuses": "~1.5.0"
},
"dependencies": {
"ms": {
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/send/node_modules/ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
}
}
},
"serve-static": {
"node_modules/serve-static": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
"integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
"requires": {
"dependencies": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.17.1"
},
"engines": {
"node": ">= 0.8.0"
}
},
"setprototypeof": {
"node_modules/setprototypeof": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
"sift": {
"node_modules/sift": {
"version": "7.0.1",
"resolved": "https://registry.npm.taobao.org/sift/download/sift-7.0.1.tgz",
"integrity": "sha1-R9YsULFZ0xbxNy+LU/nBDNIaSwg="
},
"sliced": {
"node_modules/sliced": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/sliced/download/sliced-1.0.1.tgz",
"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
},
"sparse-bitfield": {
"node_modules/sparse-bitfield": {
"version": "3.0.3",
"resolved": "https://registry.npm.taobao.org/sparse-bitfield/download/sparse-bitfield-3.0.3.tgz",
"integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
"optional": true,
"requires": {
"dependencies": {
"memory-pager": "^1.0.2"
}
},
"sqlstring": {
"node_modules/sqlstring": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
"integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
"integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=",
"engines": {
"node": ">= 0.6"
}
},
"ssf": {
"node_modules/ssf": {
"version": "0.11.2",
"resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz",
"integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
"requires": {
"dependencies": {
"frac": "~1.1.2"
},
"engines": {
"node": ">=0.8"
}
},
"sshpk": {
"node_modules/sshpk": {
"version": "1.17.0",
"resolved": "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz",
"integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
"requires": {
"dependencies": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
......@@ -1332,166 +1988,226 @@
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
},
"bin": {
"sshpk-conv": "bin/sshpk-conv",
"sshpk-sign": "bin/sshpk-sign",
"sshpk-verify": "bin/sshpk-verify"
},
"engines": {
"node": ">=0.10.0"
}
},
"statuses": {
"node_modules/statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
"engines": {
"node": ">= 0.6"
}
},
"streamroller": {
"node_modules/streamroller": {
"version": "3.1.5",
"resolved": "https://registry.npmmirror.com/streamroller/-/streamroller-3.1.5.tgz",
"integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==",
"requires": {
"dependencies": {
"date-format": "^4.0.14",
"debug": "^4.3.4",
"fs-extra": "^8.1.0"
},
"dependencies": {
"debug": {
"engines": {
"node": ">=8.0"
}
},
"node_modules/streamroller/node_modules/debug": {
"version": "4.4.0",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz",
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"requires": {
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"ms": {
"node_modules/streamroller/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
}
}
},
"string_decoder": {
"node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"requires": {
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"svg-captcha": {
"node_modules/svg-captcha": {
"version": "1.4.0",
"resolved": "https://registry.npm.taobao.org/svg-captcha/download/svg-captcha-1.4.0.tgz",
"integrity": "sha1-MurTxkY5NsIYuzvJ7QT+pO7/5JI=",
"requires": {
"dependencies": {
"opentype.js": "^0.7.3"
},
"engines": {
"node": ">=4.x"
}
},
"tiny-inflate": {
"node_modules/tiny-inflate": {
"version": "1.0.3",
"resolved": "https://registry.npm.taobao.org/tiny-inflate/download/tiny-inflate-1.0.3.tgz",
"integrity": "sha1-EicVSUkToYBRZqr3yTRnkz7qJsQ="
},
"toidentifier": {
"node_modules/toidentifier": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
"engines": {
"node": ">=0.6"
}
},
"tough-cookie": {
"node_modules/tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz",
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
"requires": {
"dependencies": {
"psl": "^1.1.28",
"punycode": "^2.1.1"
},
"engines": {
"node": ">=0.8"
}
},
"tunnel-agent": {
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
"requires": {
"dependencies": {
"safe-buffer": "^5.0.1"
},
"engines": {
"node": "*"
}
},
"tweetnacl": {
"node_modules/tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
},
"type-is": {
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"requires": {
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
},
"engines": {
"node": ">= 0.6"
}
},
"universalify": {
"node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"engines": {
"node": ">= 4.0.0"
}
},
"unpipe": {
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
"engines": {
"node": ">= 0.8"
}
},
"uri-js": {
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"requires": {
"dependencies": {
"punycode": "^2.1.0"
}
},
"util-deprecate": {
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"utils-merge": {
"node_modules/utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
"engines": {
"node": ">= 0.4.0"
}
},
"uuid": {
"node_modules/uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
"bin": {
"uuid": "bin/uuid"
}
},
"vary": {
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
"engines": {
"node": ">= 0.8"
}
},
"verror": {
"node_modules/verror": {
"version": "1.10.0",
"resolved": "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz",
"integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
"requires": {
"engines": [
"node >=0.6.0"
],
"dependencies": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"wmf": {
"node_modules/wmf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz",
"integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
"integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
"engines": {
"node": ">=0.8"
}
},
"word": {
"node_modules/word": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz",
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
"engines": {
"node": ">=0.8"
}
},
"ws": {
"node_modules/ws": {
"version": "5.2.2",
"resolved": "https://registry.npm.taobao.org/ws/download/ws-5.2.2.tgz?cache=0&sync_timestamp=1615063662500&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-5.2.2.tgz",
"integrity": "sha1-3/7xSGa46NyRM1glFNG++vlumA8=",
"requires": {
"dependencies": {
"async-limiter": "~1.0.0"
}
},
"xlsx": {
"node_modules/xlsx": {
"version": "0.16.9",
"resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.16.9.tgz",
"integrity": "sha512-gxi1I3EasYvgCX1vN9pGyq920Ron4NO8PNfhuoA3Hpq6Y8f0ECXiy4OLrK4QZBnj1jx3QD+8Fq5YZ/3mPZ5iXw==",
"requires": {
"dependencies": {
"adler-32": "~1.2.0",
"cfb": "^1.1.4",
"codepage": "~1.14.0",
......@@ -1502,23 +2218,35 @@
"ssf": "~0.11.2",
"wmf": "~1.0.1",
"word": "~0.3.0"
},
"bin": {
"xlsx": "bin/xlsx.njs"
},
"engines": {
"node": ">=0.8"
}
},
"xml2js": {
"node_modules/xml2js": {
"version": "0.4.23",
"resolved": "https://registry.npm.taobao.org/xml2js/download/xml2js-0.4.23.tgz",
"integrity": "sha1-oMaVFnUkIesqx1juTUzPWIQ+rGY=",
"requires": {
"dependencies": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
},
"engines": {
"node": ">=4.0.0"
}
},
"xmlbuilder": {
"node_modules/xmlbuilder": {
"version": "11.0.1",
"resolved": "https://registry.npm.taobao.org/xmlbuilder/download/xmlbuilder-11.0.1.tgz?cache=0&sync_timestamp=1600349105009&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxmlbuilder%2Fdownload%2Fxmlbuilder-11.0.1.tgz",
"integrity": "sha1-vpuuHIoEbnazESdyY0fQrXACvrM="
"integrity": "sha1-vpuuHIoEbnazESdyY0fQrXACvrM=",
"engines": {
"node": ">=4.0"
}
},
"yallist": {
"node_modules/yallist": {
"version": "2.1.2",
"resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
......
......@@ -7,6 +7,7 @@
"@alicloud/pop-core": "^1.7.10",
"@alicloud/sms-sdk": "^1.1.6",
"@types/node": "^10.12.18",
"chokidar": "^4.0.3",
"compression": "^1.7.4",
"express": "^4.17.1",
"express-async-handler": "^1.1.4",
......@@ -30,5 +31,8 @@
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
"license": "ISC",
"devDependencies": {
"@types/request": "^2.48.13"
}
}
No preview for this file type
[
{
"name": "黄埔区",
"lng": 121.469240,
"lat": 31.229860,
"jjxmz": 1,
"ybqkfb": 2,
"ybqkfbInfo":[
{
"name":"天平路街道", //街道名称
"lng": 121.469240, //街道经纬度
"lat": 31.229860, //街道经纬度
"value": 1
}
]
},
{
"name": "徐汇区",
"lng": 121.437866,
"lat": 31.199190,
"jjxmz": 2,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "长宁区",
"lng": 121.424624,
"lat": 31.220367,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "静安区",
"lng": 121.459384,
"lat": 31.247105,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "普陀区",
"lng": 121.395555,
"lat": 31.249840,
"jjxmz": 3,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "虹口区",
"lng": 121.505133,
"lat": 31.264600,
"jjxmz": 2,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "杨浦区",
"lng": 121.526077,
"lat": 31.259541,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "闵行区",
"lng": 121.381709,
"lat": 31.112813,
"jjxmz": 3,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "宝山区",
"lng": 121.489612,
"lat": 31.405457,
"jjxmz": 3,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "嘉定区",
"lng": 121.265300,
"lat": 31.375602,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "浦东新区",
"lng": 121.544379,
"lat": 31.221517,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "金山区",
"lng": 121.341970,
"lat": 30.741991,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "松江区",
"lng": 121.227747,
"lat": 31.032243,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "青浦区",
"lng": 121.124178,
"lat": 31.150681,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "奉贤区",
"lng": 121.474042,
"lat": 30.917795,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "崇明区",
"lng": 121.397417,
"lat": 31.623587,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
}
]
\ No newline at end of file
export const MapDataDefault = {
"黄埔区": {
"lng": "121.469240",
"lat": "31.229860"
},
"徐汇区": {
"lng": "121.437866",
"lat": "31.199190"
},
"长宁区": {
"lng": "121.424624",
"lat": "31.220367"
},
"静安区": {
"lng": "121.459384",
"lat": "31.247105"
},
"普陀区": {
"lng": "121.395555",
"lat": "31.249840"
},
"虹口区": {
"lng": "121.505133",
"lat": "31.264600"
},
"杨浦区": {
"lng": "121.526077",
"lat": "31.259541"
},
"闵行区": {
"lng": "121.381709",
"lat": "31.112813"
},
"宝山区": {
"lng": "121.489612",
"lat": "31.405457"
},
"嘉定区": {
"lng": "121.265300",
"lat": "31.375602"
},
"浦东新区": {
"lng": "121.544379",
"lat": "31.221517"
},
"金山区": {
"lng": "121.341970",
"lat": "30.741991"
},
"松江区": {
"lng": "121.227747",
"lat": "31.032243"
},
"青浦区": {
"lng": "121.124178",
"lat": "31.150681"
},
"奉贤区": {
"lng": "121.474042",
"lat": "30.917795"
},
"崇明区": {
"lng": "121.397417",
"lat": "31.623587"
}
};
\ No newline at end of file
{
"userId":""
}
\ No newline at end of file
{
"1": {
"id": 1,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /ssk (11170ms)",
"操作状态": "成功"
},
"2": {
"id": 2,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /ssk/jjxmz (1164ms)",
"操作状态": "成功"
},
"3": {
"id": 3,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /ssk/gfjbqs (1263ms)",
"操作状态": "成功"
},
"4": {
"id": 4,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/ybqkqs (1253ms)",
"操作状态": "成功"
},
"5": {
"id": 5,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/jrsbxx (3216ms)",
"操作状态": "成功"
},
"6": {
"id": 6,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /ssk/map (2046ms)",
"操作状态": "成功"
},
"7": {
"id": 7,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /ssk/cityname (2147ms)",
"操作状态": "成功"
},
"8": {
"id": 8,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/jrsbxx (628ms)",
"操作状态": "成功"
},
"9": {
"id": 9,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/ybqkqs (1282ms)",
"操作状态": "成功"
},
"10": {
"id": 10,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /qsnkjcxsjgzz (1227ms)",
"操作状态": "成功"
},
"11": {
"id": 11,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /qsnkjcxsjgzz (1188ms)",
"操作状态": "成功"
},
"12": {
"id": 12,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /qsnkjcxsjgzz (1225ms)",
"操作状态": "成功"
},
"13": {
"id": 13,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/ybqkqs (1228ms)",
"操作状态": "成功"
},
"14": {
"id": 14,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/jrsbxx (1296ms)",
"操作状态": "成功"
},
"15": {
"id": 15,
"姓名": "未知用户",
"操作时间": "2026-05-25",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/jrsbxx (620ms)",
"操作状态": "成功"
},
"16": {
"id": 16,
"姓名": "未知用户",
"操作时间": "2026-05-26",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /ssk (9939ms)",
"操作状态": "成功"
},
"17": {
"id": 17,
"姓名": "未知用户",
"操作时间": "2026-05-26",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/ybqkqs (1119ms)",
"操作状态": "成功"
},
"18": {
"id": 18,
"姓名": "未知用户",
"操作时间": "2026-05-26",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /ssk/jjxmz (655ms)",
"操作状态": "成功"
},
"19": {
"id": 19,
"姓名": "未知用户",
"操作时间": "2026-05-26",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /ssk/gfjbqs (565ms)",
"操作状态": "成功"
},
"20": {
"id": 20,
"姓名": "未知用户",
"操作时间": "2026-05-26",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/jrsbxx (2370ms)",
"操作状态": "成功"
},
"21": {
"id": 21,
"姓名": "未知用户",
"操作时间": "2026-05-26",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /ssk/map (1167ms)",
"操作状态": "成功"
},
"22": {
"id": 22,
"姓名": "未知用户",
"操作时间": "2026-05-26",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: GET /ssk/cityname (1952ms)",
"操作状态": "成功"
},
"23": {
"id": 23,
"姓名": "未知用户",
"操作时间": "2026-05-26",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/jrsbxx (604ms)",
"操作状态": "成功"
},
"24": {
"id": 24,
"姓名": "未知用户",
"操作时间": "2026-05-26",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/ybqkqs (632ms)",
"操作状态": "成功"
},
"25": {
"id": 25,
"姓名": "未知用户",
"操作时间": "2026-05-26",
"操作动作": "系统访问",
"操作模块": "系统接口",
"操作描述": "访问系统接口: POST /ssk/ybqkqs (581ms)",
"操作状态": "成功"
}
}
\ No newline at end of file
{"e6e4aaaf-2184-4be4-adb9-4e8f5c15dbb5":{"sub":"e6e4aaaf-2184-4be4-adb9-4e8f5c15dbb5","id":1,"phone":"18918589400","otherPage":true,"name":"吴靖","isAdmin":true,"pm":{"1":true,"2":true,"3":true,"11":true}}}
\ No newline at end of file
{
"e6e4aaaf-2184-4be4-adb9-4e8f5c15dbb5": {
"sub": "e6e4aaaf-2184-4be4-adb9-4e8f5c15dbb5",
"id": 1,
"phone": "18918589400",
"otherPage": true,
"name": "吴靖",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true,
"22": true,
"23": true,
"24": true
}
},
"150203198212284527": {
"sub": "150203198212284527",
"id": 2,
"phone": "18016272282",
"otherPage": true,
"name": "李晶",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true
}
},
"4ef51e92-fa32-4c64-8f63-7e1719a1165b": {
"sub": "4ef51e92-fa32-4c64-8f63-7e1719a1165b",
"id": 3,
"phone": "13384928945",
"otherPage": true,
"name": "张家萌",
"isAdmin": false,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true
}
},
"c3d5150d-adbb-4aa3-985e-130158292523": {
"sub": "c3d5150d-adbb-4aa3-985e-130158292523",
"id": 4,
"phone": "13917568424",
"otherPage": true,
"name": "朱青",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true
}
},
"f6d7835e-8502-40b4-9191-ad5f01af339e": {
"sub": "f6d7835e-8502-40b4-9191-ad5f01af339e",
"id": 5,
"phone": "18621939307",
"otherPage": true,
"name": "谭佳丽",
"isAdmin": false,
"pm": {
"11": true
}
},
"2968c112-481c-43ae-bc91-81ac0b0deabf": {
"sub": "2968c112-481c-43ae-bc91-81ac0b0deabf",
"id": 6,
"phone": "13564320268",
"otherPage": true,
"name": "洪筱菡",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true
}
},
"95803394-b2e6-4ec9-9869-7ed22fc75006": {
"sub": "95803394-b2e6-4ec9-9869-7ed22fc75006",
"id": 7,
"phone": "13917726527",
"otherPage": true,
"name": "沈玉婷",
"isAdmin": false,
"pm": {
"1": false,
"2": false,
"3": false
}
},
"340702199307201019": {
"sub": "340702199307201019",
"id": 8,
"phone": "15805166833",
"otherPage": true,
"name": "王旻",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true
}
},
"430603200201062020": {
"sub": "430603200201062020",
"id": 9,
"phone": "13575002256",
"otherPage": true,
"name": "陈金晶",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true,
"22": true,
"23": true,
"24": true
}
},
"142629199708142530": {
"sub": "142629199708142530",
"id": 10,
"phone": "18234720432",
"otherPage": true,
"name": "王东晨",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true,
"22": true,
"23": true,
"24": true
}
},
"342427198610287415": {
"sub": "342427198610287415",
"id": 11,
"phone": "15000600246",
"otherPage": true,
"name": "项兴彬",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true,
"22": true,
"23": true,
"24": true
}
},
"412823199810164830": {
"sub": "412823199810164830",
"id": 12,
"phone": "15539653018",
"otherPage": true,
"name": "梅开元",
"isAdmin": false,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true,
"22": true,
"23": true,
"24": true
}
}
}
\ No newline at end of file
{
"e6e4aaaf-2184-4be4-adb9-4e8f5c15dbb5": {
"sub": "e6e4aaaf-2184-4be4-adb9-4e8f5c15dbb5",
"id": 1,
"phone": "18918589400",
"otherPage": true,
"name": "吴靖",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true,
"22": true,
"23": true,
"24": true
}
},
"150203198212284527": {
"sub": "150203198212284527",
"id": 2,
"phone": "18016272282",
"otherPage": true,
"name": "李晶",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true
}
},
"4ef51e92-fa32-4c64-8f63-7e1719a1165b": {
"sub": "4ef51e92-fa32-4c64-8f63-7e1719a1165b",
"id": 3,
"phone": "13384928945",
"otherPage": true,
"name": "张家萌",
"isAdmin": false,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true
}
},
"c3d5150d-adbb-4aa3-985e-130158292523": {
"sub": "c3d5150d-adbb-4aa3-985e-130158292523",
"id": 4,
"phone": "13917568424",
"otherPage": true,
"name": "朱青",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true
}
},
"f6d7835e-8502-40b4-9191-ad5f01af339e": {
"sub": "f6d7835e-8502-40b4-9191-ad5f01af339e",
"id": 6,
"phone": "18621939307",
"otherPage": true,
"name": "谭佳丽",
"isAdmin": false,
"pm": {
"11": true
}
},
"2968c112-481c-43ae-bc91-81ac0b0deabf": {
"sub": "2968c112-481c-43ae-bc91-81ac0b0deabf",
"id": 7,
"phone": "13564320268",
"otherPage": true,
"name": "洪筱菡",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true
}
},
"95803394-b2e6-4ec9-9869-7ed22fc75006": {
"sub": "95803394-b2e6-4ec9-9869-7ed22fc75006",
"id": 7,
"phone": "13917726527",
"otherPage": true,
"name": "沈玉婷",
"isAdmin": false,
"pm": {
"1": false,
"2": false,
"3": false
}
},
"340702199307201019": {
"sub": "340702199307201019",
"id": 8,
"phone": "15805166833",
"otherPage": true,
"name": "王旻",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true
}
},
"430603200201062020": {
"sub": "430603200201062020",
"id": 9,
"phone": "13575002256",
"otherPage": true,
"name": "陈金晶",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true,
"22": true,
"23": true,
"24": true,
"25": true
}
},
"142629199708142530": {
"sub": "142629199708142530",
"id": 9,
"phone": "18234720432",
"otherPage": true,
"name": "王东晨",
"isAdmin": true,
"pm": {
"1": true,
"2": true,
"3": true,
"11": true,
"21": true,
"22": true,
"23": true,
"24": true
}
},
}
\ No newline at end of file
import { authConfig, secsaConfig } from "../serverConfig";
import { BizError } from "../util/bizError";
import { get, getParmiss, post, postForm, postParmiss } from "../util/request";
/**
* 应用鉴权,获取访问令牌
*/
export async function getAccessToken() {
let url = `${secsaConfig.host}${secsaConfig.access_token}`;
let headers = {"Content-Type":"application/json"};
let param = {
app_id:secsaConfig.appId,
app_secret:secsaConfig.appSecret
};
let result: any = await post(url, param, headers);
if (!result || !result.result.access_token) throw new BizError("应用鉴权失败,没有获取到访问令牌");
return result.result.access_token;
}
/**
* 获取授权码
*/
export async function getAuthorize() {
let url = `${authConfig.baseUrl}${authConfig.endpoints.authorize}`;
let param = {
auth_type:"authentication",
response_type:"code",
scope:"openid",
client_id:authConfig.client.client_id,
redirect_uri:authConfig.client.redirect_uri,
}
// url:"https://auth.secsa.cn/api/authn/person/authorize"
// param:{
// auth_type: "authentication",
// response_type: "code",
// scope: "openid",
// client_id: "6d093073f958439aa40d827903004056",
// redirect_uri: "https://shsunshine-zp.shec.edu.cn/bi/platform/#/index",
// }
let result = await get(url, param, {});
return result;
}
/**
* 授权码回调处理 - 用授权码换取访问令牌
*/
export async function handleAuthCallback(req, res) {
let authorize = await getAuthorize()
let code = req.body.code;
let url = `${authConfig.baseUrl}${authConfig.endpoints.token}`;
// 使用 Basic Auth 认证
const credentials = Buffer.from(
`${authConfig.client.client_id}:${authConfig.client.client_secret}`
).toString('base64');
const headers = {
'Authorization': `Basic ${credentials}`,
'Content-Type': 'application/x-www-form-urlencoded'
};
const params = new URLSearchParams({
grant_type: 'authorization_code',
code: code,
redirect_uri: authConfig.client.redirect_uri
});
const result:any = await postForm(url, params.toString(), headers);
if (!result.access_token) {
throw new BizError('获取访问令牌失败');
}
return result;
}
/**
* 使用访问令牌获取用户信息
*/
export async function getUserInfo(accessToken: string) {
const url = `${authConfig.baseUrl}${authConfig.endpoints.userInfo}`;
const params = { access_token: accessToken };
const userInfo = await get(url, params, {});
return userInfo;
}
/**
* 文件监控服务
*/
import * as fs from 'fs';
import { exec } from 'child_process';
import { addOperationLog } from './operationLogService';
import * as path from 'path';
export class FileMonitorService {
private watcher: fs.FSWatcher | null = null;
private isProcessing = false;
// 开始监控文件
startMonitoring(filePath: string) {
console.log(`开始监控文件: ${filePath}`);
try {
this.watcher = fs.watch(filePath, (eventType, filename) => {
if (this.isProcessing) return;
this.isProcessing = true;
if (eventType === 'change') {
this.handleFileChange(filePath).finally(() => {
this.isProcessing = false;
});
}
// 延迟重置状态,避免频繁触发
setTimeout(() => {
this.isProcessing = false;
}, 1000);
});
this.watcher.on('error', (error) => {
console.error('文件监控错误:', error);
this.isProcessing = false;
});
console.log(`文件监控已启动: ${filePath}`);
} catch (error) {
console.error('启动文件监控失败:', error);
}
}
// 处理文件变化
private async handleFileChange(filePath: string) {
try {
// 检查是否是vi/vim进程在操作
const isViEdit = await this.checkViProcess();
if (!isViEdit) {
console.log('文件变化不是由vi编辑器引起,跳过记录');
return;
}
// 获取当前登录用户
const userName = await this.getCurrentUser();
// 获取文件修改的详细信息
const fileStats = await this.getFileStats(filePath);
const fileInfo = fileStats ?
`大小: ${fileStats.size}字节, 修改时间: ${fileStats.mtime.toISOString()}` :
'无法获取文件信息';
// 记录操作日志
addOperationLog(
userName,
'文件编辑',
'系统管理',
`使用vi编辑器修改用户配置文件: ${path.basename(filePath)} (${fileInfo})`,
);
console.log(`记录文件编辑操作: ${userName} - ${filePath}`);
} catch (error) {
console.error('处理文件变化时出错:', error);
}
}
// 检查是否有vi/vim进程
private checkViProcess(): Promise<boolean> {
return new Promise((resolve) => {
exec('ps aux | grep -E "[v]i |[v]im " | grep -v grep', (error, stdout) => {
if (error) {
console.error('检查进程时出错:', error);
resolve(false);
return;
}
const hasViProcess = stdout.trim().length > 0;
console.log(`检测到vi进程: ${hasViProcess}, 进程信息: ${stdout.trim()}`);
resolve(hasViProcess);
});
});
}
// 获取文件状态信息
private getFileStats(filePath: string): Promise<fs.Stats | null> {
return new Promise((resolve) => {
fs.stat(filePath, (error, stats) => {
if (error) {
console.error('获取文件状态失败:', error);
resolve(null);
} else {
resolve(stats);
}
});
});
}
// 获取当前登录用户
private getCurrentUser(): Promise<string> {
return new Promise((resolve) => {
exec('who | awk \'{print $1}\' | sort | uniq | head -1', (error, stdout) => {
if (error || !stdout.trim()) {
console.log('无法获取当前用户,使用默认值');
resolve('系统用户');
} else {
resolve(stdout.trim());
}
});
});
}
// 停止监控
stopMonitoring() {
if (this.watcher) {
this.watcher.close();
this.watcher = null;
console.log('文件监控已停止');
}
}
}
/**
* 创建操作日志服务
*/
const fs = require("fs");
const path = require("path");
const logPath = path.join(__dirname.substring(0, __dirname.indexOf("out")), 'res', 'operation_logs.json');
// 操作日志缓存
let logQueue = {};
// 结构: {logId: {id, name, time, action, module, description, success}}
// 初始化操作日志
export function initOperationLog() {
logQueue = readLogFile();
console.log("操作日志数据初始化成功");
}
// 添加操作日志
export function addOperationLog(name, action, module, description, success = true) {
const time = new Date().toISOString().split('T')[0];
const id = Object.keys(logQueue).length + 1;
logQueue[id] = {
id,
姓名: name,
操作时间: time,
操作动作: action,
操作模块: module,
操作描述: description,
操作状态: success ? '成功' : '失败'
};
updateLogQueueInFile();
return id;
}
// 查询操作日志列表(支持分页)
export function selectOperationLogList(selectInfo, startDate, endDate, successFilter, page = 1, pageSize = 10) {
let filteredList = [];
// 首先进行数据筛选
for (let logId in logQueue) {
let log = logQueue[logId];
let {id, 姓名, 操作时间, 操作描述, 操作状态, 操作动作, 操作模块} = log;
// 时间筛选
if (startDate && 操作时间 < startDate) continue;
if (endDate && 操作时间 > endDate) continue;
// 操作状态筛选
if (successFilter && 操作状态 !== successFilter) continue;
// 关键词筛选
if (selectInfo) {
if (姓名.indexOf(selectInfo) > -1 || 操作描述.indexOf(selectInfo) > -1) {
filteredList.push({
id,
name: 姓名,
time: 操作时间,
action: 操作动作,
module: 操作模块,
description: 操作描述,
success: 操作状态
});
}
} else {
filteredList.push({
id,
name: 姓名,
time: 操作时间,
action: 操作动作,
module: 操作模块,
description: 操作描述,
success: 操作状态
});
}
}
// 按时间倒序排列(最新的在前面)
filteredList.sort((a, b) => b.id - a.id);
// 分页处理
const total = filteredList.length;
const totalPages = Math.ceil(total / pageSize);
// 计算分页起始位置
const startIndex = (page - 1) * pageSize;
const endIndex = Math.min(startIndex + pageSize, total);
// 获取当前页数据
const paginatedList = filteredList.slice(startIndex, endIndex);
return {
list: paginatedList,
pagination: {
current: page,
pageSize: pageSize,
total: total,
totalPages: totalPages
}
};
}
// 读取日志文件
function readLogFile() {
try {
// 检查目录是否存在,不存在则创建
const logDir = path.dirname(logPath);
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir, { recursive: true });
console.log(`创建日志目录: ${logDir}`);
}
// 检查文件是否存在
if (!fs.existsSync(logPath)) {
console.log("日志文件不存在,创建新文件");
// 创建空的日志文件
fs.writeFileSync(logPath, JSON.stringify({}, null, 2));
return {};
}
// 读取文件内容
let data = fs.readFileSync(logPath, 'utf8');
// 检查文件是否为空
if (!data.trim()) {
console.log("日志文件为空,初始化空对象");
fs.writeFileSync(logPath, JSON.stringify({}, null, 2));
return {};
}
let logs = JSON.parse(data);
// 兼容旧版本日志格式,添加操作状态字段
for (let logId in logs) {
if (!logs[logId].操作状态) {
logs[logId].操作状态 = '成功'; // 默认为成功
}
}
console.log(`成功读取日志文件,共 ${Object.keys(logs).length} 条记录`);
return logs;
} catch(err) {
console.log("日志文件读取失败,创建新文件:", err.message);
try {
// 尝试创建新的日志文件
const logDir = path.dirname(logPath);
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir, { recursive: true });
}
fs.writeFileSync(logPath, JSON.stringify({}, null, 2));
console.log("成功创建新的日志文件");
return {};
} catch (writeErr) {
console.error("创建日志文件失败:", writeErr.message);
return {};
}
}
}
// 更新日志文件
function updateLogQueueInFile() {
try {
// 确保目录存在
const logDir = path.dirname(logPath);
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir, { recursive: true });
}
fs.writeFileSync(logPath, JSON.stringify(logQueue, null, 2));
console.log(`日志文件更新成功,当前记录数: ${Object.keys(logQueue).length}`);
} catch(err) {
console.log("日志文件更新失败:", err.message);
}
}
// 获取操作日志列表(分页版本)
export async function getOperationLogList(req, res) {
try {
let {
selectInfo,
startDate,
endDate,
successFilter,
page,
pageSize = 10
} = req.body;
// 参数验证和转换
page = parseInt(page) || 1;
pageSize = parseInt(pageSize) || 10;
// 确保页码和页大小在合理范围内
page = Math.max(1, page);
pageSize = Math.max(1, Math.min(pageSize, 100)); // 限制最大页大小为100
const result = selectOperationLogList(selectInfo, startDate, endDate, successFilter, page, pageSize);
res.json({
success: true,
data: result.list,
pagination: result.pagination,
message: '获取操作日志成功'
});
} catch (error) {
console.error('获取操作日志失败:', error);
res.json({
success: false,
data: [],
pagination: {
current: 1,
pageSize: 10,
total: 0,
totalPages: 0
},
error: '获取操作日志失败'
});
}
}
// 获取操作日志统计信息
export async function getOperationLogStats(req, res) {
try {
const { startDate, endDate } = req.body;
let totalCount = 0;
let successCount = 0;
let failCount = 0;
// 统计日志数据
for (let logId in logQueue) {
let log = logQueue[logId];
let { 操作时间, 操作状态 } = log;
// 时间筛选
if (startDate && 操作时间 < startDate) continue;
if (endDate && 操作时间 > endDate) continue;
totalCount++;
if (操作状态 === '成功') {
successCount++;
} else {
failCount++;
}
}
const successRate = totalCount > 0 ? ((successCount / totalCount) * 100).toFixed(2) : 0;
res.json({
success: true,
data: {
total: totalCount,
success: successCount,
fail: failCount,
successRate: `${successRate}%`
},
message: '获取日志统计成功'
});
} catch (error) {
console.error('获取日志统计失败:', error);
res.json({
success: false,
error: '获取日志统计失败'
});
}
}
/**
* 系统级操作日志记录
* @param req
* @param res
*/
export async function addOperationLogFromSystem(req, res) {
try {
const { userName, action, module, description, success = true } = req.body;
// 添加系统级操作日志
const logId = addOperationLog(userName, action, module, description, success);
res.json({
success: true,
data: { logId },
message: '系统操作日志记录成功'
});
} catch (error) {
console.error('记录系统操作日志失败:', error);
res.json({
success: false,
error: '记录操作日志失败'
});
}
}
......@@ -16,70 +16,70 @@ export async function getData(req, res) {
// let {stuData, dayStuData, monthStuData, differentSchoolType, differentSchoolStuNum, defferentSymptomsTypeList, differentDistrictStuNum,
// dataStatistics, deadline, todayReportList, mapDistrictServiceData, highIncidenceData, symptomTypes, symptomRanking, notice, healthRate} = getHealthData();
let stuData = await getStuData();
ret["xssbjs"] = getKeyStringValueOutData("各年级健康上报情况总数", stuData);
let dayStuData = await getDayStuData();
let monthStuData = await getMonthStuData();
ret["gnjjksbqsfx"] = getChartOutData("各年级健康上报趋势分析", {"日": {unit:"", dataInfo:dayStuData}, "月": {unit: "", dataInfo:monthStuData}});
let differentSchoolType = ["幼儿园","托育机构","早教中心","托儿所","小学","初级中学","高级中学","中职校","完中","九年一贯制","十年一贯制","十二年一贯制","其他"];
ret["gxdlx"] = differentSchoolType;
let differentSchoolStuNum = await getDifferentSchoolStuNum()
ret["gxdzzrsqk"] = getKeyStringValueOutData("各学段症状人数情况", differentSchoolStuNum);
let defferentSymptomsTypeList = await getDefferentSymptomsTypeList();
let defferentSymptomsTypeData = {};
for(let key in defferentSymptomsTypeList) {
if (defferentSymptomsTypeList[key]["list"]) defferentSymptomsTypeData[key] = { unit: "", dataInfo: defferentSymptomsTypeList[key]["list"]};
}
let glzzrsyjChartData = getChartOutData("各类症状人数预警", defferentSymptomsTypeData);
let glzzrsyjDataList = glzzrsyjChartData["dataList"];
let glzzrsyjData = {title:"各类症状人数预警", dataList: []};
glzzrsyjDataList.forEach( item => {
let title = item.title;
for(let key in defferentSymptomsTypeList) {
if(title == key) {
item["earlyWarningNum"] = defferentSymptomsTypeList[key]["earlyWarningNum"];
glzzrsyjData["dataList"].push(item);
}
}
})
ret["glzzrsyj"] = glzzrsyjChartData;
let highIncidenceData = await getHighIncidenceData();
ret["gfzzsjd"] = getChartOutData("高发症状时间段", {"高发症状时间段": {unit:"", dataInfo:highIncidenceData}});
let dataStatistics = await getDataStatistics();
let dtjcsjData = getKeyStringValueOutData("地图基础数据", dataStatistics);
let deadline = await getDeadline();
dtjcsjData["deadline"] = deadline;
ret["dtjcsj"] = dtjcsjData;
let dtData = await getMapDistrictServiceData();
ret["dt"] = getReflectionData("地图坐标数据", dtData, "");
ret["gg"] = await getNotice();
// let stuData = await getStuData();
// ret["xssbjs"] = getKeyStringValueOutData("各年级健康上报情况总数", stuData);
// let dayStuData = await getDayStuData();
// let monthStuData = await getMonthStuData();
// ret["gnjjksbqsfx"] = getChartOutData("各年级健康上报趋势分析", {"日": {unit:"", dataInfo:dayStuData}, "月": {unit: "", dataInfo:monthStuData}});
// let differentSchoolType = ["幼儿园","托育机构","早教中心","托儿所","小学","初级中学","高级中学","中职校","完中","九年一贯制","十年一贯制","十二年一贯制","其他"];
// ret["gxdlx"] = differentSchoolType;
// let differentSchoolStuNum = await getDifferentSchoolStuNum()
// ret["gxdzzrsqk"] = getKeyStringValueOutData("各学段症状人数情况", differentSchoolStuNum);
// let defferentSymptomsTypeList = await getDefferentSymptomsTypeList();
// let defferentSymptomsTypeData = {};
// for(let key in defferentSymptomsTypeList) {
// if (defferentSymptomsTypeList[key]["list"]) defferentSymptomsTypeData[key] = { unit: "", dataInfo: defferentSymptomsTypeList[key]["list"]};
// }
// let glzzrsyjChartData = getChartOutData("各类症状人数预警", defferentSymptomsTypeData);
// let glzzrsyjDataList = glzzrsyjChartData["dataList"];
// let glzzrsyjData = {title:"各类症状人数预警", dataList: []};
// glzzrsyjDataList.forEach( item => {
// let title = item.title;
// for(let key in defferentSymptomsTypeList) {
// if(title == key) {
// item["earlyWarningNum"] = defferentSymptomsTypeList[key]["earlyWarningNum"];
// glzzrsyjData["dataList"].push(item);
// }
// }
// })
// ret["glzzrsyj"] = glzzrsyjChartData;
// let highIncidenceData = await getHighIncidenceData();
// ret["gfzzsjd"] = getChartOutData("高发症状时间段", {"高发症状时间段": {unit:"", dataInfo:highIncidenceData}});
// let dataStatistics = await getDataStatistics();
// let dtjcsjData = getKeyStringValueOutData("地图基础数据", dataStatistics);
// let deadline = await getDeadline();
// dtjcsjData["deadline"] = deadline;
// ret["dtjcsj"] = dtjcsjData;
// ret["gg"] = await getNotice();
let todayReportList = await getTodayReportList();
ret["jrsblb"] = getListOutData("今日上报列表", todayReportList);
// let todayReportList = await getTodayReportList();
// ret["jrsblb"] = getListOutData("今日上报列表", todayReportList);
let differentDistrictStuNum = await getDifferentDistrictStuNum();
ret["jksbqk"] = getChartOutData("健康上报情况", {"区域": {unit:"", dataInfo:differentDistrictStuNum}});
// let differentDistrictStuNum = await getDifferentDistrictStuNum();
// ret["jksbqk"] = getChartOutData("健康上报情况", {"区域": {unit:"", dataInfo:differentDistrictStuNum}});
let {symptomTypes, symptomRanking} = await getSymptomRanking();
ret["zzlxfx"] = getKeyStringValueOutData("症状类型分析", symptomTypes);
ret["zzph"] = getKeyStringValueOutData("症状排行", symptomRanking);
// let {symptomTypes, symptomRanking} = await getSymptomRanking();
// ret["zzlxfx"] = getKeyStringValueOutData("症状类型分析", symptomTypes);
// ret["zzph"] = getKeyStringValueOutData("症状排行", symptomRanking);
let healthRate = await getHealthRate();
ret["lsjksjjkl"] = getKeyStringValueOutData("历史健康数据分析健康率", healthRate);
// let healthRate = await getHealthRate();
// ret["lsjksjjkl"] = getKeyStringValueOutData("历史健康数据分析健康率", healthRate);
let historicalHealthData = await getHistoricalHealthData();
ret["lsjksj"] = getChartOutData("历史健康数据分析趋势", historicalHealthData);
// let historicalHealthData = await getHistoricalHealthData();
// ret["lsjksj"] = getChartOutData("历史健康数据分析趋势", historicalHealthData);
res.send(ret);
......
......@@ -42,3 +42,4 @@ export async function getData(req, res) {
res.send(ret);
}
......@@ -2,17 +2,175 @@
* 数据治理体系
*/
import { SJZLENUM, SJZLSIGNENUM } from "../config/appIdConfig";
import { getSzjltxData } from "../data/interface/data";
import { postDataDianXin } from "../util/request";
import { getKeyValueListData, getReflectionData } from "./out";
export async function getData(req, res) {
let ret:any = {};
let {sjlyInfo, sjzc, sjzl} = await getSzjltxData();
ret["sjly"] = getKeyValueListData("数据来源", sjlyInfo);
ret["sjzl"] = getReflectionData("数据治理", sjzl, {t_num:"tableNum", name:"key", row_num:"dataNum"});
ret["sjzc"] = getReflectionData("数据资产", sjzc, { name:"key"});
let sjly = [
{
"key": "信息管理部",
"value": [
"上海学生活动网",
"上海学生活动管理平台",
"上海市青少年科学创新实践工作站",
"上海市青少年科学研究院",
"上海市“明日科技之星”评选活动管理系统",
"上海国际青少年科技博览会",
"人工智能创新季",
"昆虫识别竞赛活动",
"青少年科技节",
"科普知识进家庭",
"大学生艺术节",
"上海市学生体育网",
"上海市青少年校园足球精英训练营",
"上海市学生体育科技艺术教育活动平台",
"中学生综合素质评价数据报送系统",
"《体育与健康》学科日常测试管理系统"
]
},
{
"key": "师训部",
"value": [
"上海学生活动网",
"上海学生活动管理平台",
"上海市青少年科学创新实践工作站",
"上海市青少年科学研究院",
"上海市“明日科技之星”评选活动管理系统",
"上海国际青少年科技博览会",
"人工智能创新季",
"昆虫识别竞赛活动",
"青少年科技节",
"科普知识进家庭",
"大学生艺术节",
"上海市学生体育网",
"上海市青少年校园足球精英训练营",
"上海市学生体育科技艺术教育活动平台",
"中学生综合素质评价数据报送系统",
"《体育与健康》学科日常测试管理系统"
]
},
{
"key": "体育活动部",
"value": [
"上海学生活动网",
"上海学生活动管理平台",
"上海市青少年科学创新实践工作站",
"上海市青少年科学研究院",
"上海市“明日科技之星”评选活动管理系统",
"上海国际青少年科技博览会",
"人工智能创新季",
"昆虫识别竞赛活动",
"青少年科技节",
"科普知识进家庭",
"大学生艺术节",
"上海市学生体育网",
"上海市青少年校园足球精英训练营",
"上海市学生体育科技艺术教育活动平台",
"中学生综合素质评价数据报送系统",
"《体育与健康》学科日常测试管理系统"
]
},
{
"key": "健康教育部",
"value": [
"上海学生活动网",
"上海学生活动管理平台",
"上海市青少年科学创新实践工作站",
"上海市青少年科学研究院",
"上海市“明日科技之星”评选活动管理系统",
"上海国际青少年科技博览会",
"人工智能创新季",
"昆虫识别竞赛活动",
"青少年科技节",
"科普知识进家庭",
"大学生艺术节",
"上海市学生体育网",
"上海市青少年校园足球精英训练营",
"上海市学生体育科技艺术教育活动平台",
"中学生综合素质评价数据报送系统",
"《体育与健康》学科日常测试管理系统"
]
},
{
"key": "艺术教育部",
"value": [
"上海学生活动网",
"上海学生活动管理平台",
"上海市青少年科学创新实践工作站",
"上海市青少年科学研究院",
"上海市“明日科技之星”评选活动管理系统",
"上海国际青少年科技博览会",
"人工智能创新季",
"昆虫识别竞赛活动",
"青少年科技节",
"科普知识进家庭",
"大学生艺术节",
"上海市学生体育网",
"上海市青少年校园足球精英训练营",
"上海市学生体育科技艺术教育活动平台",
"中学生综合素质评价数据报送系统",
"《体育与健康》学科日常测试管理系统"
]
},
{
"key": "科技教育部",
"value": [
"上海学生活动网",
"上海学生活动管理平台",
"上海市青少年科学创新实践工作站",
"上海市青少年科学研究院",
"上海市“明日科技之星”评选活动管理系统",
"上海国际青少年科技博览会",
"人工智能创新季",
"昆虫识别竞赛活动",
"青少年科技节",
"科普知识进家庭",
"大学生艺术节",
"上海市学生体育网",
"上海市青少年校园足球精英训练营",
"上海市学生体育科技艺术教育活动平台",
"中学生综合素质评价数据报送系统",
"《体育与健康》学科日常测试管理系统"
]
},
{
"key": "综合办公室",
"value": [
"上海学生活动网",
"上海学生活动管理平台",
"上海市青少年科学创新实践工作站",
"上海市青少年科学研究院",
"上海市“明日科技之星”评选活动管理系统",
"上海国际青少年科技博览会",
"人工智能创新季",
"昆虫识别竞赛活动",
"青少年科技节",
"科普知识进家庭",
"大学生艺术节",
"上海市学生体育网",
"上海市青少年校园足球精英训练营",
"上海市学生体育科技艺术教育活动平台",
"中学生综合素质评价数据报送系统",
"《体育与健康》学科日常测试管理系统"
]
}
];
ret["sjly"] = {title:"数据来源", dataList:sjly}
let sjzl:any = await postDataDianXin(SJZLENUM.数字治理, SJZLSIGNENUM.数字治理);
ret["sjzl"] = {title:"数字治理", dataList:sjzl.data}
let sjzc:any = await postDataDianXin(SJZLENUM.数据资产, SJZLSIGNENUM.数据资产);;
ret["sjzc"] = {title:"数据资产", dataList:sjzc.data}
res.send(ret);
}
......@@ -55,17 +55,17 @@ export function getData(req, res) {
let yzkctopb = [];
yzkctopbPackageData.forEach( info => {
let {key, value, unit} = info;
yzkctopb.push({key, value:`${ImgPath}/${value}`, unit});
yzkctopb.push({key, value:`${ImgPath}/优质课程/${value}${unit}`});
})
ret['yzkctopb'] = getKeyValueOut('优质课程TOP榜', yzkctopb);
ret['yzkctopb'] = {title:'优质课程TOP榜', dataList:yzkctopb};
let zxppzyPackageData = keyValuePackage(excelData['专项品牌资源'].dataList);
let zxppzy = [];
zxppzyPackageData.forEach( info => {
let {key, value, unit} = info;
zxppzy.push({key, value:`${ImgPath}/${value}`, unit});
zxppzy.push({key, value:`${ImgPath}/专项品牌资源/${value}`, unit});
})
ret['zxppzy'] = getKeyValueOut('专项品牌资源', zxppzy);
ret['zxppzy'] = {title:'专项品牌资源', dataList:zxppzy};
let lsdwPackageData = stringListPackage(excelData['理事单位'].dataList);
ret['lsdw'] = getStringOut('理事单位', lsdwPackageData);
......
import { kxyjyDataDefault, mapDistrictDataDefault } from '../../config/mapConfig';
import { kxyjyTableData } from '../../data/table/kxyjyData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, stringListPackage, tablePackage } from '../../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getStringOut, getTableOut } from '../../dataPackage/out';
import { ImgPath } from '../../serverConfig';
import { BizError } from '../../util/bizError';
/* 科学研究院 */
......@@ -57,13 +59,40 @@ export function getData(req, res) {
ret['db'] = getKeyValueOut('顶部', dbPackageData);
let yxxsfclTableData = tablePackage(excelData["优秀学生风采录"].headerList[0], excelData["优秀学生风采录"].bodyList);
ret['yxxsfcl'] = getTableOut( '优秀学生风采录', yxxsfclTableData);
let yxxsfcl = {titleList:yxxsfclTableData.titleList, dataList:[]};
yxxsfclTableData.dataList.forEach( info => {
let {A, B} = info;
let imgUrl = `${ImgPath}/${B}`;
yxxsfcl.dataList.push({A, B:imgUrl});
})
ret['yxxsfcl'] = getTableOut( '优秀学生风采录', yxxsfcl);
let ktyjtpTableData = tablePackage(excelData["课题研究图片"].headerList[0], excelData["课题研究图片"].bodyList);
ret['ktyjtp'] = getTableOut( '课题研究图片', ktyjtpTableData);
let ktyjtp = {titleList:ktyjtpTableData.titleList, dataList:[]};
ktyjtpTableData.dataList.forEach( info => {
let {A, B} = info;
let imgUrl = `${ImgPath}/${B}`;
ktyjtp.dataList.push({A, B:imgUrl});
})
ret['ktyjtp'] = getTableOut( '课题研究图片', ktyjtp);
let xsxbfbPackageData = keyValuePackage(excelData['学生性别分布'].dataList);
ret['xsxbfb'] = getKeyValueOut('学生性别分布', xsxbfbPackageData);
res.send(ret);
}
/**地图 */
export function getMap(req, res) {
let ret:any = {};
let gzzData = {map: mapDistrictDataDefault , pyjd: kxyjyDataDefault}
ret["dt"] = gzzData;
res.send(ret);
}
import { SYSTEMERRORENUM } from '../../config/enum';
import { MapDataDefault, WorkstationMapDefault } from '../../config/mapConfig';
import { gzzTableData } from '../../data/table/gzzData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, stringListPackage, tablePackage } from '../../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getStringOut, getTableOut } from '../../dataPackage/out';
import { ImgPath } from '../../serverConfig';
import { BizError } from '../../util/bizError';
/* 青少年科技创新实践工作站 */
export function getData(req, res) {
let wsid = req.body.id || "";
// if (!wsid) throw new BizError(SYSTEMERRORENUM.参数错误, '工作站id为空');
let excelData = gzzTableData();
let ret:any = {};
let lnzmxyqkPackageData = onceYBarChartPackage( excelData['历年招募学员情况'], '','年');
ret['lnzmxyqk'] = getOnceYBarChartOut('历年招募学员情况', lnzmxyqkPackageData);
......@@ -89,7 +92,13 @@ export function getData(req, res) {
ret['ktyj'] = getKeyValueOut('课题研究', ktyjPackageData);
let yxxyPackageData = keyValuePackage(excelData['优秀学员'].dataList);
ret['yxxy'] = getKeyValueOut('优秀学员', yxxyPackageData);
let yxxy = [];
yxxyPackageData.forEach( info => {
let {key, value, unit} = info;
let imgUrl = `${ImgPath}/头像/${value}${unit}`;
yxxy.push({key, value:imgUrl});
})
ret['yxxy'] = {title:'优秀学员', dataList:yxxy};
let dbPackageData = keyValuePackage(excelData['顶部'].dataList);
ret['db'] = getKeyValueOut('顶部', dbPackageData);
......@@ -97,11 +106,25 @@ export function getData(req, res) {
let ggzzxsslPackageData = keyValuePackage(excelData['各工作站学生数量'].dataList);
ret['ggzzxssl'] = getKeyValueOut('各工作站学生数量', ggzzxsslPackageData);
let zpjxTableData = tablePackage(excelData["作品奖项"].headerList[0], excelData["作品奖项"].bodyList);
ret['zpjx'] = getTableOut( '作品奖项', zpjxTableData);
let zpjxPackageData = stringListPackage(excelData['作品奖项'].dataList);
let zpjx = [];
for(let i = 0; i < zpjxPackageData.length; i++) {
let img = `${ImgPath}/作品奖项/${zpjxPackageData[i]}`;
zpjx.push(img);
}
ret['zpjx'] = getStringOut('作品奖项', zpjx);
let ktyjlbTableData = tablePackage(excelData["课题研究列表"].headerList[0], excelData["课题研究列表"].bodyList);
ret['ktyjlb'] = getTableOut( '课题研究列表', ktyjlbTableData);
let gzzData = {map: MapDataDefault , workstationMap: WorkstationMapDefault["data"]}
ret["dt"] = gzzData;
res.send(ret);
}
import { MapDistrictDataDefault } from '../../config/healthConfig';
import { SSKENUM, SSKSIGNENUM } from '../../config/appIdConfig';
import { SSKMapDataDefault, SSKMapDistrictDataDefault } from '../../config/mapConfig';
import { gfjbqsTableData, sskTableData } from '../../data/table/sskData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, tablePackage } from '../../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getTableOut } from '../../dataPackage/out';
import { formatAbsenceDetail, formatAbsenceReason, formatAbsenceTotal, formatBFSJQKFX, formatDistrictData, formatGenderData, formatQkxss, formatSymptomData, formatXDRSFX, getLastWeekReportRate } from '../../dataPackage/sskFormatData';
import { postDataDianXin } from '../../util/request';
import { getReflectionData } from '../out';
/* 申生康 */
export function getData(req, res) {
export async function getData(req, res) {
let excelData = sskTableData();
let ret:any = {};
let xdrsfxPackageData = onceYBarChartPackage( excelData['学段人数分析'], '','');
ret['xdrsfx'] = getOnceYBarChartOut('学段人数分析', xdrsfxPackageData);
let jbqk:any = await postDataDianXin(SSKENUM.基本情况, SSKSIGNENUM.基本情况);
ret["jbqk"] = {title:"基本情况(全市)", dataList:jbqk.data};
let jyzsblPackageData = keyValuePackage(excelData['近一周上报率'].dataList);
ret['jyzsbl'] = getKeyValueOut('近一周上报率', jyzsblPackageData);
let xbzbData:any = await postDataDianXin(SSKENUM.性别占比, SSKSIGNENUM.性别占比);
let xbzb = formatGenderData(xbzbData.data);
let jbqkPackageData = keyValuePackage(excelData['基本情况_全市'].dataList);
ret['jbqk'] = getKeyValueOut('基本情况(全市)', jbqkPackageData);
let xbzbxs = keyValuePackage(xbzb.xbzbxs);
ret["xbzbxs"] = getKeyValueOut("性别占比_学生", xbzbxs);
let xbzbxsPackageData = keyValuePackage(excelData['性别占比_学生'].dataList);
ret['xbzbxs'] = getKeyValueOut('性别占比_学生', xbzbxsPackageData);
let xbzbls = keyValuePackage(xbzb.xbzbls);
ret['xbzbls'] = {title:"性别占比_老师", dataList:xbzbls};
let xbzblsPackageData = keyValuePackage(excelData['性别占比_老师'].dataList);
ret['xbzbls'] = getKeyValueOut('性别占比_老师', xbzblsPackageData);
let xdrsfxData:any = await postDataDianXin(SSKENUM.学段人数分析, SSKSIGNENUM.学段人数分析);
let xdrsfx = formatXDRSFX(xdrsfxData.data);
ret["xdrsfx"] = {title:"学段人数分析", dataList:xdrsfx};
let gqxssfbPackageData = keyValuePackage(excelData['各区学生数分布'].dataList);
ret['gqxssfb'] = getKeyValueOut('各区学生数分布', gqxssfbPackageData);
let gqxslsjgsfbData:any = await postDataDianXin(SSKENUM.各区学生老师机构数, SSKSIGNENUM.各区学生老师机构数);
let gqxslsjgsfb = formatDistrictData(gqxslsjgsfbData.data);
ret["gqxssfb"] = { title: "各区学生数分布", dataList: gqxslsjgsfb.gqxssfb };
ret["gqjssfb"] = { title: "各区教师数分布", dataList: gqxslsjgsfb.gqjssfb };
ret["gqjgsfb"] = { title: "各区机构数分布", dataList: gqxslsjgsfb.gqjgsfb };
let gqjssfbPackageData = keyValuePackage(excelData['各区教师数分布'].dataList);
ret['gqjssfb'] = getKeyValueOut('各区教师数分布', gqjssfbPackageData);
let jrsbl:any = await postDataDianXin(SSKENUM.今日上报率, SSKSIGNENUM.今日上报率);
let jrwsbxx:any = await postDataDianXin(SSKENUM.今日未上报区学校, SSKSIGNENUM.今日未上报区学校);
let jyzsbqk = [
{ key:"未上报学校", value:jrwsbxx.data.length },
{ key:"今日上报率", value:jrsbl.data[0].jrsbl }
]
ret["jyzsbqk"] = {title:"近一周上报情况", dataList:jyzsbqk};
let gqjgsfbPackageData = keyValuePackage(excelData['各区机构数分布'].dataList);
ret['gqjgsfb'] = getKeyValueOut('各区机构数分布', gqjgsfbPackageData);
let jrsblqs:any = await postDataDianXin(SSKENUM.今日上报率趋势图, SSKSIGNENUM.今日上报率趋势图);
let jyzsbl = getLastWeekReportRate(jrsblqs.data);
ret["jyzsbl"] = {title:"近一周上报率", dataList:jyzsbl};
let xsjqybqkrsPackageData = keyValuePackage(excelData['学生近期因病缺课人数'].dataList);
ret['xsjqybqkrs'] = getKeyValueOut('学生近期因病缺课人数', xsjqybqkrsPackageData);
let jqybqkrsData:any = await postDataDianXin(SSKENUM.近期学生老师缺课分析, SSKSIGNENUM.近期学生老师缺课分析);
let jqybqkrs = formatAbsenceDetail(jqybqkrsData.data);
ret["xsjqybqkrs"] = {title:"学生近期因病缺课人数", dataList:jqybqkrs.xsjqybqkrs};
ret["jzgjqybqkrs"] = {title:"教职工近期因病缺课人数", dataList:jqybqkrs.jzgjqybqkrs};
let jqqkyyzbPackageData = keyValuePackage(excelData['学生近期缺课原因占比'].dataList);
ret['jqqkyyzb'] = getKeyValueOut('学生近期缺课原因占比', jqqkyyzbPackageData);
let jqqkyyzbData:any = await postDataDianXin(SSKENUM.学生老师近期缺课原因占比, SSKSIGNENUM.学生老师近期缺课原因占比);
let jqqkyyzb = formatAbsenceReason(jqqkyyzbData.data);
ret["jqqkyyzb"] = {title:"学生近期缺课原因占比", dataList:jqqkyyzb.jqqkyyzb};
ret["jzgjqqkyyzb"] = {title:"教职工近期缺课原因占比", dataList:jqqkyyzb.jzgjqqkyyzb};
let jzgjqybqkrsPackageData = keyValuePackage(excelData['教职工近期因病缺课人数'].dataList);
ret['jzgjqybqkrs'] = getKeyValueOut('教职工近期因病缺课人数', jzgjqybqkrsPackageData);
let jqgfjbph:any = await postDataDianXin(SSKENUM.近期高发疾病排行_高发疾病分析, SSKSIGNENUM.近期高发疾病排行_高发疾病分析);
ret["jqgfjbph"] = {title:"近期高发疾病排行", dataList:jqgfjbph.data};
let jzgjqqkyyzbPackageData = keyValuePackage(excelData['教职工近期缺课原因占比'].dataList);
ret['jzgjqqkyyzb'] = getKeyValueOut('教职工近期缺课原因占比', jzgjqqkyyzbPackageData);
let jnbzrsfxData:any = await postDataDianXin(SSKENUM.病症情况分析总人数新发病例数_病症人数分布, SSKSIGNENUM.病症情况分析总人数新发病例数_病症人数分布);
let bzrsfx = formatSymptomData(jnbzrsfxData.data);
ret['bzrsfx'] = {title:"病症人数分析", dataList:bzrsfx};
let jyzsbqkPackageData = keyValuePackage(excelData['近一周上报情况'].dataList);
ret['jyzsbqk'] = getKeyValueOut('近一周上报情况', jyzsbqkPackageData);
let xslxbzrsfxData:any = await postDataDianXin(SSKENUM.病发时间情况分析_学校类型分组_病症人数分布, SSKSIGNENUM.病发时间情况分析_学校类型分组_病症人数分布);
let bfsjqkfx = formatBFSJQKFX(xslxbzrsfxData.data);
ret['bfsjqkfx'] = {title:"病发时间情况分析", dataList:bfsjqkfx};
let jqgfjbphPackageData = keyValuePackage(excelData['近期高发疾病排行'].dataList);
ret['jqgfjbph'] = getKeyValueOut('近期高发疾病排行', jqgfjbphPackageData);
let ybqkrshzData:any = await postDataDianXin(SSKENUM.因病缺课人数汇总, SSKSIGNENUM.因病缺课人数汇总);
let ybqkrshz = formatAbsenceTotal(ybqkrshzData.data);
ret['qkzrs'] = {title:'缺课总人数', dataList:ybqkrshz.qkzrs};
ret['qqjzg'] = {title:'缺勤教职工', dataList:ybqkrshz.qqjzg};
let bzrsfxPackageData = onceYBarChartPackage( excelData['病症人数分析'], '','');
ret['bzrsfx'] = getOnceYBarChartOut('病症人数分析', bzrsfxPackageData);
let bfsjqkfxExcelData = excelData['病发时间情况分析'].dataList;
let bfsjqkfxData = {"全部":[]};
let bfsjqkfxConf = {fjxr:"非教学日", fxh:"放学日", wdx:"未到校", rxh:"入校后"};
let qbData = {};
bfsjqkfxExcelData.forEach( info => {
if (!bfsjqkfxData[info.sjmc]) bfsjqkfxData[info.sjmc] = [];
for (let key in bfsjqkfxConf) {
if (!qbData[bfsjqkfxConf[key]]) qbData[bfsjqkfxConf[key]] = 0
qbData[bfsjqkfxConf[key]] += info[key];
bfsjqkfxData[info.sjmc].push({key:bfsjqkfxConf[key], value:info[key]});
}
})
for (let key in qbData) {
bfsjqkfxData["全部"].push({key, value:qbData[key]});
}
ret['bfsjqkfx'] = {title:"病发时间情况分析", dataList:bfsjqkfxData};
let qkxssjExcelData = excelData['缺课学生数据'].dataList;
let qkxssjData = [];
let ybqkljxsCount = 0;
let drxzCount = 0;
qkxssjExcelData.forEach( info => {
qkxssjData.push({key:info.sjmc, ybqkljxs:info.ybqkljxs, drxz:info.drxz});
ybqkljxsCount += parseInt(info.ybqkljxs);
drxzCount += parseInt(info.drxz);
})
let qkzrs = [{key:"缺课总人数", ybqkljxs:ybqkljxsCount, drxz:drxzCount}];
ret['qkzrs'] = {title:'缺课总人数', dataList:qkzrs};
ret['qkxss'] = {title:'缺课学生数', dataList:qkxssjData};
let qqjzgPackageData = excelData['缺勤教职工'].dataList[0];
let qqjzgData = [{key:qqjzgPackageData.sjmc, ybqkljxs:qqjzgPackageData.ybqkljxs, drxz:qqjzgPackageData.drxz}];
ret['qqjzg'] = {title:'缺勤教职工', dataList:qqjzgData};
let qkxssData:any = await postDataDianXin(SSKENUM.学生不同学段因病缺课人数, SSKSIGNENUM.学生不同学段因病缺课人数);
let qkxss = formatQkxss(qkxssData.data);
ret['qkxss'] = {title:'缺课学生数', dataList:qkxss};
res.send(ret);
}
......@@ -102,29 +88,39 @@ export function getData(req, res) {
* @param req
* @param res
*/
export function getJrsbxx(req, res) {
let ret:any = {};
let excelData = sskTableData();
export async function getJrsbxx(req, res) {
let ret: any = {};
let cityName = req.body.cityName;
let schoolRes: any = await postDataDianXin(SSKENUM.今日未上报区学校, SSKSIGNENUM.今日未上报区学校);
let schoolList = schoolRes.data || [];
// 按行政区划分组
const groupMap: Record<string, string[]> = {};
schoolList.forEach((item: any) => {
const area = item.xzqmc;
if (!groupMap[area]) groupMap[area] = [];
groupMap[area].push(item.xxmc);
});
let jrsbxx = [];
let total = 0;
let jrsbxxData = excelData["今日未上报学校"].dataList;
for(let key in jrsbxxData) {
let schoolList = jrsbxxData[key].value.split(",");
if (cityName == "全市") {
jrsbxx.push({key:jrsbxxData[key].key, value:schoolList});
total += schoolList.length;
} else {
if (jrsbxxData[key].key == cityName) {
jrsbxx.push({key:jrsbxxData[key].key, value:schoolList});
total += schoolList.length;
if (cityName === "全市") {
// 返回所有区
for (let area in groupMap) {
jrsbxx.push({ key: area, value: groupMap[area] });
total += groupMap[area].length;
}
} else {
// 返回指定区
if (groupMap[cityName]) {
jrsbxx.push({ key: cityName, value: groupMap[cityName] });
total = groupMap[cityName].length;
}
}
ret["jswsbxx"] = {title:"今日未上报学校", dataList:jrsbxx, total};
ret["jswsbxx"] = { title: "今日未上报学校", dataList: jrsbxx, total };
res.send(ret);
}
......@@ -134,17 +130,23 @@ export function getJrsbxx(req, res) {
* @param req
* @param res
*/
export function getCityName(req, res) {
let ret:any = {};
let excelData = sskTableData();
export async function getCityName(req, res) {
let ret: any = {};
let cityNameList = ["全市"];
let jrsbxxData = excelData["今日未上报学校"].dataList;
for(let key in jrsbxxData) {
cityNameList.push(jrsbxxData[key].key);
}
ret["cityName"] = {title:"今日未上报学校区域选择下拉", dataList:cityNameList};
// 获取今日未上报学校数据(包含行政区划)
let schoolRes: any = await postDataDianXin(SSKENUM.今日未上报区学校, SSKSIGNENUM.今日未上报区学校);
let schoolList = schoolRes.data || [];
// 提取去重的行政区划名称
const areaSet = new Set<string>();
schoolList.forEach((item: any) => {
if (item.xzqmc) areaSet.add(item.xzqmc);
});
// 构建下拉列表:全市 + 各区(按字母顺序或原顺序)
let cityNameList = ["全市", ...Array.from(areaSet).sort()];
ret["cityName"] = { title: "今日未上报学校区域选择下拉", dataList: cityNameList };
res.send(ret);
}
......@@ -154,11 +156,19 @@ export function getCityName(req, res) {
* @param req
* @param res
*/
export function getMap(req, res) {
export async function getMap(req, res) {
let ret:any = {};
let mapData = MapDistrictDataDefault;
ret["map"] = {title:"地图", data:mapData};
let mapData = SSKMapDistrictDataDefault;
ret["map"] = getReflectionData("地图坐标数据", mapData, "");
let quMapData = SSKMapDataDefault;
ret["quMap"] = getReflectionData("下钻区级地图坐标数据", quMapData, "");
// ret["map"] = {title:"地图", data:mapData};
let schoolRes: any = await postDataDianXin(SSKENUM.今日未上报区学校, SSKSIGNENUM.今日未上报区学校);
let jjxmzEnum = {
1:"校级苗子",
......@@ -243,7 +253,7 @@ export function getYbqkqs(req, res) {
let tbYear = req.body.tbYear;
let excelData = sskTableData();
let ybqkqsData = ["2024学年上学期", `${tbYear}`];
let ybqkqsData = ["2025学年上学期", `${tbYear}`];
ret["tl"] = ybqkqsData;
let ybqkqsyyPackageData = onceYBarChartPackage( excelData['因病缺课趋势_月'], '','');
......@@ -257,6 +267,3 @@ export function getYbqkqs(req, res) {
res.send(ret);
}
/**
* 上海市学生素质教育优质资源平台(周周播)
* 上海市学生素质教育优质资源平台
*/
import { curriculumTableData, weeklyPlayTableData } from "../../data/table/tableData";
import { keyValuePackage, onceYBarChartPackage, stringListPackage, tablePackage } from "../../dataPackage/inFrontOut";
import { getKeyValueOut, getStringOut, getOnceYBarChartOut } from "../../dataPackage/out";
import { ImgPath } from "../../serverConfig";
export function getData(req, res) {
......@@ -26,7 +27,12 @@ export function getData(req, res) {
ret['kclbys'] = getOnceYBarChartOut('课程类别(艺术)', kclbysChartPackage);
let kctfptPackageData = stringListPackage(excelData['课程投放平台'].dataList);
ret['kctfpt'] = getStringOut('课程投放平台', kctfptPackageData);
let kctfpt = [];
for(let i = 0; i < kctfptPackageData.length; i++) {
let img = `${ImgPath}/课程投放平台/${kctfptPackageData[i]}`;
kctfpt.push(img);
}
ret['kctfpt'] = getStringOut('课程投放平台', kctfpt);
let jcsjPackageData = keyValuePackage(excelData['基础数据'].dataList);
ret['jcsj'] = getKeyValueOut('基础数据', jcsjPackageData);
......@@ -189,6 +195,7 @@ function getConfData(info, conf) {
for (let i = 0; i < conf.length; i++) {
result[conf[i]] = info[conf[i]];
if (conf[i] == "kcdz") result[conf[i]] = `${ImgPath}/${info[conf[i]]}`;
}
return result;
......
......@@ -18,10 +18,19 @@ export function getData(req, res) {
ret['yxxsxxb'] = getKeyValueOut( '优秀学生信息表', yxxsxxbTableData);
let gzxxbTableData = keyValuePackage(excelData["工作信息表"].dataList);
ret['gzxxb'] = getKeyValueOut( '工作信息表', gzxxbTableData);
let gzxxb = [];
gzxxbTableData.forEach( info => {
let {key, value, unit} = info;
if (key == "所辖事件点") value = value.split(",");
gzxxb.push({key, value, unit});
})
ret['gzxxb'] = {title:'工作信息表', dataList:gzxxb};
let jdgxTableData = keyValuePackage(excelData["阶段感想"].dataList);
ret['jdgx'] = getKeyValueOut( '阶段感想', jdgxTableData);
let jdgxTableData = stringListPackage(excelData['阶段感想'].dataList);
ret['jdgx'] = getStringOut('阶段感想', jdgxTableData);
// let jdgxTableData = keyValuePackage(excelData["阶段感想"].dataList);
// ret['jdgx'] = getKeyValueOut( '阶段感想', jdgxTableData);
let kqfxPackageData = keyValuePackage(excelData['考情分析'].dataList);
ret['kqfx'] = getKeyValueOut('考情分析', kqfxPackageData);
......@@ -32,11 +41,9 @@ export function getData(req, res) {
let zpjxPackageData = keyValuePackage(excelData['作品奖项'].dataList);
ret['zpjx'] = getKeyValueOut('作品奖项', zpjxPackageData);
let yynrhzPackageData = onceYBarChartPackage( excelData['原因内容汇总'], '','');
ret['yynrhz'] = getOnceYBarChartOut('原因内容汇总', yynrhzPackageData);
let fkypgPackageData = onceYBarChartPackage(excelData['反馈与评估'], '','');
ret['fkypg'] = getOnceYBarChartOut('反馈与评估', fkypgPackageData);
......
......@@ -6,37 +6,56 @@ import { BizError } from '../../util/bizError';
/* 重要活动保障 */
export function getData(req, res) {
let {name, year, month, type} = req.body;
let excelData = zyhdbzTableData();
let ret:any = {};
let map = {};
let dhlData = keyValuePackage(excelData['导航栏'].dataList);
ret['dhl'] = getKeyValueOut('导航栏', dhlData);
let glData = keyValuePackage(excelData['概览'].dataList);
ret['gl'] = getKeyValueOut('概览', glData);
let hdztData = keyValuePackage(excelData['活动状态'].dataList);
ret['hdzt'] = getKeyValueOut('活动状态', hdztData);
for (let key in excelData) {
if (key == "导航栏" || key == "概览" || key == "活动状态") continue;
if (key.indexOf("趋势") > -1) {
let keyStr = key.replace("趋势", "");
if (!map[keyStr]) map[keyStr] = {qs:{}, gl:{}, name:keyStr};
let qsData = onceYBarChartPackage( excelData[key], '','');
map[keyStr].qs = getOnceYBarChartOut('访问流量趋势', qsData);
} else if (key.indexOf("概览") > -1) {
let keyStr = key.replace("概览", "");
if (!map[keyStr]) map[keyStr] = {qs:{}, gl:{}, name:keyStr};
let glData = keyValuePackage(excelData[key].dataList);
map[keyStr].gl = getKeyValueOut('青少年人工智能奥林匹克挑战赛', glData);
let data = excelData["活动列表"].dataList;
let zyhdbzCount = {
"全部活动":data.length,
"报名中活动":0,
"即将开始活动":0,
"进行中活动":0,
"已结束活动":0,
}
let zyhdData = {};
data.forEach( info => {
let {hdmc, hdzt, hdsj, zcrs, fwrc, yhts} = info;
let fwllqs = excelData['访问流量趋势'].dataList;
zyhdData[hdmc] = {
baseData:info,
fwllqs
};
switch (hdzt) {
case '即将开始':
zyhdbzCount.即将开始活动 += 1;
break;
case '报名中':
zyhdbzCount.报名中活动 += 1;
break;
case '活动进行中':
zyhdbzCount.进行中活动 += 1;
break;
case '活动结束':
zyhdbzCount.已结束活动 += 1;
break;
}
})
let zyhdbzData = [];
for (let key in zyhdbzCount) {
zyhdbzData.push({key, value:zyhdbzCount[key]});
}
ret['jcsj'] = {title:"基础数据", dataList:zyhdbzData};
ret["list"] = Object.values(map);
let zyhdbz = {};
if (name) zyhdbz = zyhdData[name];
else zyhdbz = zyhdData;
ret['zyhdbz'] = {title:"重要活动保障", dataList:zyhdbz};
res.send(ret);
}
\ No newline at end of file
import { zzbznbTableData } from '../../data/table/zzb_100znbData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, rankPackage, stringListPackage, tablePackage } from '../../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut, getStringOut, getTableOut } from '../../dataPackage/out';
import { BizError } from '../../util/bizError';
/* 周周播_100周年版 */
export function getData(req, res) {
let excelData = zzbznbTableData();
let ret:any = {};
let kclbPackageData = onceYBarChartPackage( excelData['课程类别(艺术)'], '','');
ret['kclb'] = getOnceYBarChartOut('课程类别(艺术)', kclbPackageData);
let escsakctfptPackageData = onceYBarChartPackage( excelData['ESCSA课程投放平台'], '','月');
ret['escsakctfpt'] = getOnceYBarChartOut('ESCSA课程投放平台', escsakctfptPackageData);
let zgdxkctfptPackageData = onceYBarChartPackage( excelData['中国电信课程投放平台'], '','月');
ret['zgdxkctfpt'] = getOnceYBarChartOut('中国电信课程投放平台', zgdxkctfptPackageData);
let dfwjykctfptPackageData = onceYBarChartPackage( excelData['东方网教育课程投放平台'], '','月');
ret['dfwjykctfpt'] = getOnceYBarChartOut('东方网教育课程投放平台', dfwjykctfptPackageData);
let bilibilikctfptPackageData = onceYBarChartPackage( excelData['bilibili课程投放平台'], '','月');
ret['bilibilikctfpt'] = getOnceYBarChartOut('bilibili课程投放平台', bilibilikctfptPackageData);
let kcgkqsPackageData = onceYBarChartPackage( excelData['课程观看趋势(本周)'], '','');
ret['kcgkqs'] = getOnceYBarChartOut('课程观看趋势(本周)', kcgkqsPackageData);
let kclyqkPackageData = keyValuePackage(excelData['课程来源情况'].dataList);
ret['kclyqk'] = getKeyValueOut('课程来源情况', kclyqkPackageData);
let kcsynjdPackageData = keyValuePackage(excelData['课程适用年级段'].dataList);
ret['kcsynjd'] = getKeyValueOut('课程适用年级段', kcsynjdPackageData);
let kclyfbPackageData = keyValuePackage(excelData['课程领域分布'].dataList);
ret['kclyfb'] = getKeyValueOut('课程领域分布', kclyfbPackageData);
let kcsfxPackageData = keyValuePackage(excelData['课程数分析'].dataList);
ret['kcsfx'] = getKeyValueOut('课程数分析', kcsfxPackageData);
let sslfxPackageData = keyValuePackage(excelData['搜索栏分析'].dataList);
ret['sslfx'] = getKeyValueOut('搜索栏分析', sslfxPackageData);
let kcxxPackageData = keyValuePackage(excelData['课程信息'].dataList);
ret['kcxx'] = getKeyValueOut('课程信息', kcxxPackageData);
let kcfksjPackageData = keyValuePackage(excelData['课程反馈数据'].dataList);
ret['kcfksj'] = getKeyValueOut('课程反馈数据', kcfksjPackageData);
let kcbfqkPackageData = keyValuePackage(excelData['课程播放情况'].dataList);
ret['kcbfqk'] = getKeyValueOut('课程播放情况', kcbfqkPackageData);
let rmkcphtop10PackageData = keyValuePackage(excelData['热门课程排行top10(本周)'].dataList);
ret['rmkcphtop10'] = getKeyValueOut('热门课程排行top10(本周)', rmkcphtop10PackageData);
let rmbqPackageData = keyValuePackage(excelData['热门标签'].dataList);
ret['rmbq'] = getKeyValueOut('热门标签', rmbqPackageData);
let kcfkPackageData = keyValuePackage(excelData['课程反馈'].dataList);
ret['kcfk'] = getKeyValueOut('课程反馈', kcfkPackageData);
let zxgykcpfPackageData = keyValuePackage(excelData['在线公益课程评分'].dataList);
ret['zxgykcpf'] = getKeyValueOut('在线公益课程评分', zxgykcpfPackageData);
let ptbflqsPackageData = onceYBarChartPackage( excelData['平台播放量趋势'], '','');
ret['ptbflqs'] = getOnceYBarChartOut('平台播放量趋势', ptbflqsPackageData);
let kcsczflPackageData = onceYBarChartPackage( excelData['课程收藏/转发量'], '','月');
ret['kcsczfl'] = getOnceYBarChartOut('课程收藏/转发量', kcsczflPackageData);
let kclxrdphPackageData = onceYBarChartPackage( excelData['课程类型热度排行'], '','');
ret['kclxrdph'] = getOnceYBarChartOut('课程类型热度排行', kclxrdphPackageData);
res.send(ret);
}
\ No newline at end of file
import { PAGEENUM, PAGEENUM1, PAGEENUM2, PAGEENUM3, SYSTEMERRORENUM } from "../config/enum";
import { addTokenInfo, addUserInfo, checkAdminPermission, checkPagePermission, selectUserList, updateUser } from "../data/user/user";
import { uacInfomation } from "../serverConfig";
import { BizError, SysError } from "../util/bizError";
import { get, getParmiss, post, postParmiss } from "../util/request";
//登录
export async function getUserToken(req, res) {
let {grant_type, code, redirect_uri} = req.body;
let body = {
code,
grant_type,
client_id:uacInfomation.client_id,
client_secret:uacInfomation.client_secret,
redirect_uri,
};
let result:any = await postParmiss(uacInfomation.getTokenUrl, body, {});
let token;
if (result.error) {
console.log();
throw new SysError(SYSTEMERRORENUM.您的登录已失效);
} else if (result.access_token) { //获取用户信息
let { isAdmin, sub, real_name, phone, otherPage } = await getUserInfo(result.access_token);
if (sub && real_name && phone && otherPage) {
let lastTokenMs = new Date().valueOf();
addUserInfo(sub, phone, real_name, isAdmin, otherPage);
token = addTokenInfo(sub, lastTokenMs, result.access_token, result.refresh_token, isAdmin);
} else {
throw new SysError(SYSTEMERRORENUM.您的账户没有访问权限);
}
} else {
throw new SysError(SYSTEMERRORENUM.获取不到access_token);
}
res.success({token});
}
//刷新 玑脉 token
async function refreshToken(refresh_token) {
let body = {
client_id:uacInfomation.client_id,
client_secret:uacInfomation.client_secret,
refresh_token,
grant_type:"refresh_token",
scope:"openid profile"
};
let result:any = await postParmiss(uacInfomation.refreshTokenUrl, body, {});
}
//检验玑脉token 是否失效
export async function checkAccessToken(access_token) {
let result:any = await getParmiss(uacInfomation.getUserInfoUrl, {}, {"Authorization": `Bearer ${access_token}`});
let {sub, permission, phone, real_name} = result;
console.log(JSON.stringify(result))
if (!sub) return {sub:false };
permission = permission || "";
let isAdmin = permission.indexOf("dpzs_client_admin") > -1;//是否能进入管理后天
let otherPage = permission.indexOf("dpzs_client_znfx") > -1; //是否能进入二级页面
//检验是否有变化
addUserInfo(sub, phone, real_name, isAdmin, otherPage);
return {sub, userName:real_name, isAdmin, otherPage};
}
//获取统一认证用户信息
async function getUserInfo(access_token) {
let result:any = await getParmiss(uacInfomation.getUserInfoUrl, {}, {"Authorization": `Bearer ${access_token}`})
let isAdmin = false;
let {sub, role, permission, real_name, phone} = result;
if (!sub) throw new SysError(SYSTEMERRORENUM.获取玑脉用户信息失败);
permission = permission || "";
isAdmin = permission.indexOf("dpzs_client_admin") > -1;//是否能进入管理后天
let otherPage = permission.indexOf("dpzs_client_znfx") > -1; //是否能进入二级页面
console.log(isAdmin, sub, role, real_name, phone, otherPage)
return {isAdmin, sub, role, real_name, phone, otherPage};
}
//校验是否有权限跳转管理后台
export function checkPermissionForAdmin(req, res) {
let userId = req.headers.userid;
let ownOrNot = checkAdminPermission(userId);
res.success({ownOrNot});
}
//校验是否有权限跳转大屏
export function checkPermissionForPage(req, res) {
let { page } = req.body;
if ( !page ) throw new SysError(SYSTEMERRORENUM.参数错误);
let userId = req.headers.userid;
let ownOrNot = checkPagePermission(userId, page);
res.success({ownOrNot});
}
//检验是否有权限跳转二级页面
export function checkPermissionForHomePage(req, res) {
let ownOrNot = req.headers.otherpage == true;
res.success({ownOrNot});
}
//修改权限
export async function updatePermissions(req, res) {
let { allow, userId } = req.body;
let adminUser = req.headers.userid;
if ( !Array.isArray(allow) ) throw new SysError(SYSTEMERRORENUM.请求参数错误);
//校验参数
let config = {};
for(let key in PAGEENUM) {
let enumValue:any = PAGEENUM[key];
if (!isNaN(enumValue)) {
config[enumValue] = key;
}
}
let updateInfo = {};
allow.forEach(info => {
if ( !config[info] ) throw new SysError(SYSTEMERRORENUM.请求参数错误);
updateInfo[info] = true;
});
let isAdmin = checkAdminPermission(adminUser);
if (!isAdmin) throw new SysError(SYSTEMERRORENUM.您的账户没有访问权限);
let addSuccess = updateUser(userId, updateInfo);
if (!addSuccess ) throw new SysError(SYSTEMERRORENUM.没有找到目标用户);
res.success({isOk:true});
}
//用户列表
export async function permissionList(req, res) {
let { select, page, typeList } = req.body;
if ( isNaN(page) ) throw new SysError(SYSTEMERRORENUM.参数错误);
if ( !Array.isArray(typeList) ) throw new SysError(SYSTEMERRORENUM.参数错误);
typeList.forEach(key => {
if ( isNaN(key) ) throw new SysError(SYSTEMERRORENUM.参数错误);
});
if (select.length > 60) throw new SysError(SYSTEMERRORENUM.参数错误);
let config1 = [];
for(let key in PAGEENUM1) {
let enumValue:any = PAGEENUM1[key];
if (!isNaN(enumValue)) {
config1.push({
value:enumValue,
lab:key
});
}
}
let config2 = [];
for(let key in PAGEENUM2) {
let enumValue:any = PAGEENUM2[key];
if (!isNaN(enumValue)) {
config2.push({
value:enumValue,
lab:key
});
}
}
let config3 = [];
for(let key in PAGEENUM3) {
let enumValue:any = PAGEENUM3[key];
if (!isNaN(enumValue)) {
config3.push({
value:enumValue,
lab:key
});
}
}
let allUser = selectUserList(select, typeList || []);
//截取分页
let index = (page - 1) * 10;
let checkList = allUser.slice(index, index+10);
let result = [];
checkList.forEach(info => {
let { pm, name, phone, id, sub} = info;
let allow = [];
for (let pmKey in pm) {
if (pm[pmKey]) allow.push({
value:pmKey,
lab:PAGEENUM[pmKey]
});
}
let addInfo = {name, phoneNumber:phone, id, userId:sub , allow};
result.push(addInfo);
});
res.success({config1, config2, config3, userList:result, count:allUser.length, name:req.headers.username});
}
\ No newline at end of file
import { PAGEENUM, PAGEENUM1, PAGEENUM2, PAGEENUM3, SYSTEMERRORENUM } from "../config/enum";
import { addTokenInfo, addUserInfo, checkAdminPermission, checkPagePermission, selectUserList, updateUser } from "../data/user/user";
import { uacInfomation } from "../serverConfig";
import { authConfig, uacInfomation } from "../serverConfig";
import { BizError, SysError } from "../util/bizError";
import { get, getParmiss, post, postParmiss } from "../util/request";
import { get, getParmiss, post, postForm, postParmiss } from "../util/request";
const fs = require('fs');
const path = require('path');
//登录
export async function getUserToken(req, res) {
......@@ -10,11 +12,27 @@ export async function getUserToken(req, res) {
let body = {
code,
grant_type,
client_id:uacInfomation.client_id,
client_secret:uacInfomation.client_secret,
redirect_uri,
};
let result:any = await postParmiss(uacInfomation.getTokenUrl, body, {});
let url = `${authConfig.baseUrl}${authConfig.endpoints.token}`;
// // 使用 Basic Auth 认证
let credentials = Buffer.from(
`${authConfig.client.client_id}:${authConfig.client.client_secret}`
).toString('base64');
let headers = {
'Authorization': `Basic ${credentials}`,
'Content-Type': 'application/x-www-form-urlencoded',
'client_id': authConfig.client.client_id,
'client_secret': authConfig.client.client_secret,
};
// let result:any = await postForm(url, body.toString(), {});
let result:any = await postForm(url, body, headers);
console.log(`result:${JSON.stringify(result)}`);
let token;
if (result.error) {
......@@ -22,11 +40,12 @@ export async function getUserToken(req, res) {
throw new SysError(SYSTEMERRORENUM.您的登录已失效);
} else if (result.access_token) { //获取用户信息
let { isAdmin, sub, real_name, phone, otherPage } = await getUserInfo(result.access_token);
console.log(`获取用户信息:${isAdmin}, ${sub}, ${real_name}, ${phone}, ${otherPage}`);
if (sub && real_name && phone && otherPage) {
let lastTokenMs = new Date().valueOf();
addUserInfo(sub, phone, real_name, isAdmin, otherPage);
token = addTokenInfo(sub, lastTokenMs, result.access_token, result.refresh_token, isAdmin);
console.log(`token:${token}`)
} else {
throw new SysError(SYSTEMERRORENUM.您的账户没有访问权限);
}
......@@ -38,11 +57,12 @@ export async function getUserToken(req, res) {
res.success({token});
}
//刷新 玑脉 token
async function refreshToken(refresh_token) {
let body = {
client_id:uacInfomation.client_id,
client_secret:uacInfomation.client_secret,
client_id:authConfig.client.client_id,
client_secret:authConfig.client.client_secret,
refresh_token,
grant_type:"refresh_token",
scope:"openid profile"
......@@ -51,44 +71,126 @@ async function refreshToken(refresh_token) {
let result:any = await postParmiss(uacInfomation.refreshTokenUrl, body, {});
}
// //检验玑脉token 是否失效
// export async function checkAccessToken(access_token) {
// let userInfoUrl = `${authConfig.baseUrl}${authConfig.endpoints.userInfo}`;
// let result:any = await getParmiss(userInfoUrl, {}, {"Authorization": `Bearer ${access_token}`});
// let {sub, permission, phone, real_name} = result;
// console.log(JSON.stringify(result))
// if (!sub) return {sub:false };
// permission = permission || "";
// let isAdmin = permission.indexOf("dpzs_client_admin") > -1;//是否能进入管理后天
// let otherPage = permission.indexOf("dpzs_client_znfx") > -1; //是否能进入二级页面
// //检验是否有变化
// addUserInfo(sub, phone, real_name, isAdmin, otherPage);
// return {sub, userName:real_name, isAdmin, otherPage};
// }
//检验玑脉token 是否失效
export async function checkAccessToken(access_token) {
let result:any = await getParmiss(uacInfomation.getUserInfoUrl, {}, {"Authorization": `Bearer ${access_token}`});
let {sub, permission, phone, real_name} = result;
console.log(JSON.stringify(result))
if (!sub) return {sub:false };
let credentials = Buffer.from(
`${authConfig.client.client_id}:${authConfig.client.client_secret}`
).toString('base64');
let headers = {
'Authorization': `Basic ${credentials}`,
'Content-Type': 'application/x-www-form-urlencoded',
'client_id': authConfig.client.client_id,
'client_secret': authConfig.client.client_secret,
};
let userInfoUrl = `${authConfig.baseUrl}${authConfig.endpoints.userInfo}`;
let result:any = await get(userInfoUrl, {access_token}, headers)
permission = permission || "";
let isAdmin = permission.indexOf("dpzs_client_admin") > -1;//是否能进入管理后天
let otherPage = permission.indexOf("dpzs_client_znfx") > -1; //是否能进入二级页面
let {id_no, mobile, name, id_type, student_num, teacher_num} = result;
// console.log(JSON.stringify(result))
if (!id_no) return {sub:false };
let urlFile = path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", "user.json" );
let jsonData:any = await readJsonFile(urlFile);
let isAdmin = false;
let otherPage = false;
for (let key in jsonData) {
if (mobile == jsonData[key].phone) {
isAdmin = jsonData[key].isAdmin; //是否能进入管理后台
otherPage = jsonData[key].otherPage; //是否能进入二级页面
}
}
//检验是否有变化
addUserInfo(sub, phone, real_name, isAdmin, otherPage);
addUserInfo(id_no, mobile, name, isAdmin, otherPage);
return {sub, userName:real_name, isAdmin, otherPage};
return {sub:id_no, userName:name, isAdmin, otherPage};
}
//获取统一认证用户信息
async function getUserInfo(access_token) {
let result:any = await getParmiss(uacInfomation.getUserInfoUrl, {}, {"Authorization": `Bearer ${access_token}`})
export async function getUserInfo(access_token) {
// 使用 Basic Auth 认证
let credentials = Buffer.from(
`${authConfig.client.client_id}:${authConfig.client.client_secret}`
).toString('base64');
let headers = {
'Authorization': `Basic ${credentials}`,
'Content-Type': 'application/x-www-form-urlencoded',
'client_id': authConfig.client.client_id,
'client_secret': authConfig.client.client_secret,
};
let userInfoUrl = `${authConfig.baseUrl}${authConfig.endpoints.userInfo}`;
let result:any = await get(userInfoUrl, {access_token}, headers)
console.log(`获取统一认证用户信息:${result}`);
// let {sub, role, permission, real_name, phone} = result;
let {id_no, mobile, name, id_type, student_num, teacher_num} = result;
if (!id_no) throw new SysError(SYSTEMERRORENUM.获取统一登录用户信息失败);
let urlFile = path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", "user.json" );
let jsonData:any = await readJsonFile(urlFile);
let isAdmin = false;
let {sub, role, permission, real_name, phone} = result;
if (!sub) throw new SysError(SYSTEMERRORENUM.获取玑脉用户信息失败);
permission = permission || "";
isAdmin = permission.indexOf("dpzs_client_admin") > -1;//是否能进入管理后天
let otherPage = permission.indexOf("dpzs_client_znfx") > -1; //是否能进入二级页面
console.log(isAdmin, sub, role, real_name, phone, otherPage)
return {isAdmin, sub, role, real_name, phone, otherPage};
let otherPage = false;
for (let key in jsonData) {
if (mobile == jsonData[key].phone) {
isAdmin = jsonData[key].isAdmin; //是否能进入管理后台
otherPage = jsonData[key].otherPage; //是否能进入二级页面
}
}
// console.log(isAdmin, id_no, name, mobile, otherPage);
return {isAdmin, sub:id_no, role:"", real_name:name, phone:mobile, otherPage};
}
function readJsonFile(filePath) {
return new Promise((resolve, reject) => {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
reject(err);
return;
}
try {
const jsonData = JSON.parse(data);
resolve(jsonData);
} catch (parseErr) {
reject(parseErr);
}
});
});
}
//校验是否有权限跳转管理后台
export function checkPermissionForAdmin(req, res) {
let userId = req.headers.userid;
let ownOrNot = checkAdminPermission(userId);
res.success({ownOrNot});
}
//校验是否有权限跳转大屏
export function checkPermissionForPage(req, res) {
let { page } = req.body;
......@@ -98,6 +200,7 @@ export function checkPermissionForPage(req, res) {
res.success({ownOrNot});
}
//检验是否有权限跳转二级页面
export function checkPermissionForHomePage(req, res) {
let ownOrNot = req.headers.otherpage == true;
......@@ -135,6 +238,7 @@ export async function updatePermissions(req, res) {
res.success({isOk:true});
}
//用户列表
export async function permissionList(req, res) {
let { select, page, typeList } = req.body;
......@@ -198,5 +302,5 @@ export async function permissionList(req, res) {
});
res.success({config1, config2, config3, userList:result, count:allUser.length, name:req.headers.username});
}
/**
* 数据治理
*/
export enum SJZLENUM { //apiId
数字治理 = "2588061136066902247",
数据资产 = "2588317066015734010"
}
export enum SJZLSIGNENUM { //sign
数字治理 = "7ebe51175d4c46c7e1ea30ffc4318b53",
数据资产 = "9340c68ff9138a8daab351dc469ca483"
}
/**
* 申生康
*/
export enum SSKENUM { //apiId
基本情况 = "2588952646676314374",
性别占比 = "2588956148104362258",
学段人数分析 = "2588964313211533603",
各区学生老师机构数 = "2588965841480644913",
近一周未上报学校 = "2588968137756178762",
今日上报率 = "2588968998717815122",
今日上报率趋势图 = "2588973415951169892",
今日未上报区学校 = "2588974362180909430",
因病缺课人数汇总 = "2588981074479741313",
学生不同学段因病缺课人数 = "2588983051296110991",
中间地图_学生因病缺课分布 = "2588984152590317981",
因病缺课趋势月 = "2589069623095917032",
因病缺课趋势周 = "2589068655795042745",
市级区级校级苗子数量 = "2589070903667259912",
聚集性症状疾病苗子数量 = "2589073451293800982",
近期学生老师缺课分析 = "2589240801543518756",
学生老师近期缺课原因占比 = "2589242257730370098",
近期高发疾病排行_高发疾病分析 = "2589316773637716547",
近期高发疾病趋势_高发疾病分析_ = "2589319189977299534", //废弃
今年_近期高发疾病趋势_高发疾病分析_ = "2589319930494253663",
前年_近期高发疾病趋势_高发疾病分析_ = "2589320902626966128",
病症情况分析总人数新发病例数_病症人数分布 = "2589329791383698062",
病发时间情况分析_全部_病症人数分布 = "2589332270119844508",
病发时间情况分析_学校类型分组_病症人数分布 = "2593682341743491128"
}
export enum SSKSIGNENUM { //sign
基本情况 = "fc0c2467db2363d6fcd1f163b591f906",
性别占比 = "5a869568633b9393ae2df01d5fc24d4c",
学段人数分析 = "404c1d600862ebff4e6c8a2d88e7d9ec",
各区学生老师机构数 = "1cf7b5969f9e6a9fc744cb8c51ea70d0",
近一周未上报学校 = "b129c29812a1f9f5d4615c2b84115b60",
今日上报率 = "f05628fb167cbbd8bb359a5638bcae88",
今日上报率趋势图 = "10a943502569909a6f43679ed0820ed6",
今日未上报区学校 = "49e2ecc7a867e6584680d1cba2210033",
因病缺课人数汇总 = "db1950f56d28a9e8d4c155a56bac39b7",
学生不同学段因病缺课人数 = "118dbe8072795c8ab94114da13c04770",
中间地图_学生因病缺课分布 = "bcd89dc109e187f22a9a062f3370bb25",
因病缺课趋势月 = "6ba1e61f3b06a6a3b300ebaa175586f9",
因病缺课趋势周 = "d9033253f4f23bf10708dd1b365ed4dc",
市级区级校级苗子数量 = "710c9a193106954e8477549146aab8e4",
聚集性症状疾病苗子数量 = "58b5d1a99affc9be0448229c182b2a69",
近期学生老师缺课分析 = "daef9c23d0081f91e9e703b3199fbdc2",
学生老师近期缺课原因占比 = "0010ce3b7e9dfdf08a01b432fe0052e8",
近期高发疾病排行_高发疾病分析 = "651182313eecf3802d7d049eb837cc1f",
近期高发疾病趋势_高发疾病分析_ = "f2b532e8a41d4aa84532fd196a746e29", //废弃
今年_近期高发疾病趋势_高发疾病分析_ = "2dcd53411f77630408b2093aeb696b65",
前年_近期高发疾病趋势_高发疾病分析_ = "fc26f4781bb84eaf18ae556f2a2bfe12",
病症情况分析总人数新发病例数_病症人数分布 = "d6af84500779b7117cc867dc3bc4b7b9",
病发时间情况分析_全部_病症人数分布 = "bf868c7a72490ac61f651c225fb9eb1f",
病发时间情况分析_学校类型分组_病症人数分布 = "6c7913369fba795d5f29c9b95f934cef"
}
......@@ -6,7 +6,10 @@ export enum SYSTEMERRORENUM {
获取不到access_token,
没有找到目标用户,
token已过期,
获取玑脉用户信息失败
获取玑脉用户信息失败,
获取用户信息失败,
无效的授权类型,
获取统一登录用户信息失败
}
export enum TYPEENUM {
......@@ -24,7 +27,9 @@ export enum PAGEENUM {
健康 = 11,
创新实践工作站 = 21,
优秀资源平台 = 22,
周周播 = 23
周周播 = 23,
科学研究院 = 24,
科学素养 = 25
}
export enum PAGEENUM1 {
......@@ -40,7 +45,9 @@ export enum PAGEENUM2 {
export enum PAGEENUM3 {
创新实践工作站 = 21,
优秀资源平台 = 22,
周周播 = 23
周周播 = 23,
科学研究院 = 24,
科学素养 = 25
}
export enum INTERFACEREQUESTTYPEENUM {
......@@ -56,3 +63,9 @@ for (let key in SYSTEMERRORENUM) {
export function getSysMsg(param) {
return systemErrorMsgMap[param];
}
/**申生康地图 */
export const SSKMapDistrictDataDefault = [
{
"name": "黄浦区",
"lng": 121.469240,
"lat": 31.229860,
"jjxmz": 1,
"ybqkfb": 2,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "徐汇区",
"lng": 121.437866,
"lat": 31.199190,
"jjxmz": 2,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "长宁区",
"lng": 121.424624,
"lat": 31.220367,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "静安区",
"lng": 121.459384,
"lat": 31.247105,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "普陀区",
"lng": 121.395555,
"lat": 31.249840,
"jjxmz": 3,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "虹口区",
"lng": 121.505133,
"lat": 31.264600,
"jjxmz": 2,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "杨浦区",
"lng": 121.526077,
"lat": 31.259541,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "闵行区",
"lng": 121.381709,
"lat": 31.112813,
"jjxmz": 3,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "宝山区",
"lng": 121.489612,
"lat": 31.405457,
"jjxmz": 3,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "嘉定区",
"lng": 121.265300,
"lat": 31.375602,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "浦东新区",
"lng": 121.544379,
"lat": 31.221517,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "金山区",
"lng": 121.341970,
"lat": 30.741991,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "松江区",
"lng": 121.227747,
"lat": 31.032243,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "青浦区",
"lng": 121.124178,
"lat": 31.150681,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "奉贤区",
"lng": 121.474042,
"lat": 30.917795,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
},
{
"name": "崇明区",
"lng": 121.397417,
"lat": 31.623587,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo":{
"name":"天平路街道",
"value": 1
}
}
];
/**申生康区级地图 */
export const SSKMapDataDefault = [
{
"name": "黄浦区",
"lng": 121.46924,
"lat": 31.22986,
"jjxmz": 1,
"ybqkfb": 2,
"ybqkfbInfo": [
{
"name": "南京东路街道",
"lng": 121.485,
"lat": 31.235,
"jjxmz": 1,
"ybqkfb": 2
},
{
"name": "外滩街道",
"lng": 121.491,
"lat": 31.242,
"jjxmz": 2,
"ybqkfb": 1
},
{
"name": "瑞金二路街道",
"lng": 121.473,
"lat": 31.228,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "淮海中路街道",
"lng": 121.471,
"lat": 31.225,
"jjxmz": 3,
"ybqkfb": 1
},
{
"name": "豫园街道",
"lng": 121.493,
"lat": 31.229,
"jjxmz": 2,
"ybqkfb": 1
},
{
"name": "打浦桥街道",
"lng": 121.475,
"lat": 31.213,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "老西门街道",
"lng": 121.488,
"lat": 31.222,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "小东门街道",
"lng": 121.501,
"lat": 31.231,
"jjxmz": 3,
"ybqkfb": 1
},
{
"name": "五里桥街道",
"lng": 121.483,
"lat": 31.208,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "半淞园路街道",
"lng": 121.496,
"lat": 31.218,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "人民广场街道",
"lng": 121.478,
"lat": 31.233,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "新天地街道",
"lng": 121.477,
"lat": 31.221,
"jjxmz": 2,
"ybqkfb": 1
},
{
"name": "福州路街道",
"lng": 121.487,
"lat": 31.237,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "西藏中路街道",
"lng": 121.479,
"lat": 31.234,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "金陵东路街道",
"lng": 121.492,
"lat": 31.232,
"jjxmz": 2,
"ybqkfb": 1
}
]
},
{
"name": "徐汇区",
"lng": 121.437866,
"lat": 31.19919,
"jjxmz": 2,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "天平路街道",
"lng": 121.438,
"lat": 31.201,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "湖南路街道",
"lng": 121.441,
"lat": 31.205,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "枫林路街道",
"lng": 121.448,
"lat": 31.195,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "徐家汇街道",
"lng": 121.443,
"lat": 31.198,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "斜土路街道",
"lng": 121.450,
"lat": 31.192,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "长桥街道",
"lng": 121.435,
"lat": 31.145,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "漕河泾街道",
"lng": 121.425,
"lat": 31.175,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "长宁区",
"lng": 121.424624,
"lat": 31.220367,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "新华路街道",
"lng": 121.428,
"lat": 31.218,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "江苏路街道",
"lng": 121.431,
"lat": 31.222,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "华阳路街道",
"lng": 121.419,
"lat": 31.216,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "周家桥街道",
"lng": 121.415,
"lat": 31.220,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "天山路街道",
"lng": 121.410,
"lat": 31.215,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "仙霞新村街道",
"lng": 121.405,
"lat": 31.210,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "虹桥街道",
"lng": 121.408,
"lat": 31.205,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "程家桥街道",
"lng": 121.365,
"lat": 31.195,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "静安区",
"lng": 121.459384,
"lat": 31.247105,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "江宁路街道",
"lng": 121.455,
"lat": 31.245,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "石门二路街道",
"lng": 121.462,
"lat": 31.241,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "南京西路街道",
"lng": 121.466,
"lat": 31.235,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "静安寺街道",
"lng": 121.452,
"lat": 31.228,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "曹家渡街道",
"lng": 121.438,
"lat": 31.238,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "天目西路街道",
"lng": 121.465,
"lat": 31.252,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "北站街道",
"lng": 121.475,
"lat": 31.255,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "宝山路街道",
"lng": 121.482,
"lat": 31.262,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "普陀区",
"lng": 121.395555,
"lat": 31.24984,
"jjxmz": 3,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "长寿路街道",
"lng": 121.438,
"lat": 31.247,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "曹杨新村街道",
"lng": 121.408,
"lat": 31.243,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "长风新村街道",
"lng": 121.401,
"lat": 31.234,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "甘泉路街道",
"lng": 121.445,
"lat": 31.270,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "石泉路街道",
"lng": 121.430,
"lat": 31.262,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "宜川路街道",
"lng": 121.450,
"lat": 31.272,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "万里街道",
"lng": 121.435,
"lat": 31.275,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "虹口区",
"lng": 121.505133,
"lat": 31.2646,
"jjxmz": 2,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "四川北路街道",
"lng": 121.488,
"lat": 31.258,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "嘉兴路街道",
"lng": 121.502,
"lat": 31.267,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "曲阳路街道",
"lng": 121.497,
"lat": 31.285,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "广中路街道",
"lng": 121.480,
"lat": 31.278,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "凉城新村街道",
"lng": 121.475,
"lat": 31.295,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "欧阳路街道",
"lng": 121.490,
"lat": 31.272,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "江湾镇街道",
"lng": 121.495,
"lat": 31.305,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "杨浦区",
"lng": 121.526077,
"lat": 31.259541,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "平凉路街道",
"lng": 121.535,
"lat": 31.268,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "江浦路街道",
"lng": 121.524,
"lat": 31.266,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "四平路街道",
"lng": 121.505,
"lat": 31.283,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "控江路街道",
"lng": 121.530,
"lat": 31.280,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "长白新村街道",
"lng": 121.545,
"lat": 31.295,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "延吉新村街道",
"lng": 121.538,
"lat": 31.288,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "殷行街道",
"lng": 121.550,
"lat": 31.325,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "大桥街道",
"lng": 121.540,
"lat": 31.275,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "闵行区",
"lng": 121.381709,
"lat": 31.112813,
"jjxmz": 3,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "江川路街道",
"lng": 121.421,
"lat": 31.008,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "新虹街道",
"lng": 121.321,
"lat": 31.195,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "古美路街道",
"lng": 121.403,
"lat": 31.152,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "莘庄镇",
"lng": 121.375,
"lat": 31.111,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "七宝镇",
"lng": 121.350,
"lat": 31.158,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "颛桥镇",
"lng": 121.402,
"lat": 31.075,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "华漕镇",
"lng": 121.300,
"lat": 31.215,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "虹桥镇",
"lng": 121.408,
"lat": 31.195,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "宝山区",
"lng": 121.489612,
"lat": 31.405457,
"jjxmz": 3,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "吴淞街道",
"lng": 121.501,
"lat": 31.383,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "友谊路街道",
"lng": 121.483,
"lat": 31.404,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "张庙街道",
"lng": 121.455,
"lat": 31.338,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "罗店镇",
"lng": 121.350,
"lat": 31.420,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "大场镇",
"lng": 121.420,
"lat": 31.295,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "杨行镇",
"lng": 121.445,
"lat": 31.375,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "月浦镇",
"lng": 121.430,
"lat": 31.425,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "罗泾镇",
"lng": 121.340,
"lat": 31.470,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "嘉定区",
"lng": 121.2653,
"lat": 31.375602,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "新成路街道",
"lng": 121.252,
"lat": 31.38,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "真新街道",
"lng": 121.368,
"lat": 31.252,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "嘉定镇街道",
"lng": 121.254,
"lat": 31.38,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "南翔镇",
"lng": 121.315,
"lat": 31.298,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "安亭镇",
"lng": 121.162,
"lat": 31.312,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "马陆镇",
"lng": 121.280,
"lat": 31.335,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "徐行镇",
"lng": 121.275,
"lat": 31.425,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "华亭镇",
"lng": 121.230,
"lat": 31.480,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "浦东新区",
"lng": 121.544379,
"lat": 31.221517,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "陆家嘴街道",
"lng": 121.507,
"lat": 31.238,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "潍坊新村街道",
"lng": 121.527,
"lat": 31.222,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "塘桥街道",
"lng": 121.518,
"lat": 31.214,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "洋泾街道",
"lng": 121.558,
"lat": 31.245,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "花木街道",
"lng": 121.558,
"lat": 31.215,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "金杨新村街道",
"lng": 121.588,
"lat": 31.255,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "沪东新村街道",
"lng": 121.595,
"lat": 31.275,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "浦兴路街道",
"lng": 121.625,
"lat": 31.265,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "上钢新村街道",
"lng": 121.495,
"lat": 31.178,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "南码头路街道",
"lng": 121.505,
"lat": 31.188,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "金山区",
"lng": 121.34197,
"lat": 30.741991,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "石化街道",
"lng": 121.341,
"lat": 30.735,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "山阳镇",
"lng": 121.308,
"lat": 30.749,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "金山卫镇",
"lng": 121.308,
"lat": 30.736,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "朱泾镇",
"lng": 121.165,
"lat": 30.895,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "亭林镇",
"lng": 121.325,
"lat": 30.885,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "漕泾镇",
"lng": 121.405,
"lat": 30.815,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "张堰镇",
"lng": 121.295,
"lat": 30.805,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "松江区",
"lng": 121.227747,
"lat": 31.032243,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "方松街道",
"lng": 121.197,
"lat": 31.037,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "广富林街道",
"lng": 121.238,
"lat": 31.051,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "九里亭街道",
"lng": 121.324,
"lat": 31.143,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "永丰街道",
"lng": 121.215,
"lat": 31.005,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "中山街道",
"lng": 121.245,
"lat": 31.025,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "九亭镇",
"lng": 121.325,
"lat": 31.135,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "泗泾镇",
"lng": 121.265,
"lat": 31.125,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "佘山镇",
"lng": 121.195,
"lat": 31.105,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "青浦区",
"lng": 121.124178,
"lat": 31.150681,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "夏阳街道",
"lng": 121.126,
"lat": 31.156,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "盈浦街道",
"lng": 121.116,
"lat": 31.159,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "香花桥街道",
"lng": 121.134,
"lat": 31.183,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "赵巷镇",
"lng": 121.195,
"lat": 31.175,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "徐泾镇",
"lng": 121.275,
"lat": 31.175,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "华新镇",
"lng": 121.225,
"lat": 31.245,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "重固镇",
"lng": 121.175,
"lat": 31.205,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "白鹤镇",
"lng": 121.145,
"lat": 31.255,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "奉贤区",
"lng": 121.474042,
"lat": 30.917795,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "南桥镇",
"lng": 121.456,
"lat": 30.913,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "奉浦街道",
"lng": 121.459,
"lat": 30.917,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "金海街道",
"lng": 121.47,
"lat": 30.929,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "西渡街道",
"lng": 121.435,
"lat": 30.955,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "邬桥镇",
"lng": 121.395,
"lat": 30.925,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "新寺镇",
"lng": 121.415,
"lat": 30.895,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "庄行镇",
"lng": 121.385,
"lat": 30.905,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "金汇镇",
"lng": 121.505,
"lat": 30.995,
"jjxmz": 1,
"ybqkfb": 1
}
]
},
{
"name": "崇明区",
"lng": 121.397417,
"lat": 31.623587,
"jjxmz": 1,
"ybqkfb": 1,
"ybqkfbInfo": [
{
"name": "城桥镇",
"lng": 121.398,
"lat": 31.628,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "堡镇",
"lng": 121.62,
"lat": 31.537,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "新河镇",
"lng": 121.5,
"lat": 31.7,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "庙镇",
"lng": 121.355,
"lat": 31.725,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "竖新镇",
"lng": 121.455,
"lat": 31.655,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "向化镇",
"lng": 121.505,
"lat": 31.605,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "三星镇",
"lng": 121.305,
"lat": 31.685,
"jjxmz": 1,
"ybqkfb": 1
},
{
"name": "港沿镇",
"lng": 121.555,
"lat": 31.635,
"jjxmz": 1,
"ybqkfb": 1
}
]
}
];
// export const SSKMapDataDefault = [
// {
// "name": "黄浦区",
// "lng": 121.46924,
// "lat": 31.22986,
// "jjxmz": 1,
// "ybqkfb": 2,
// "ybqkfbInfo": [
// {
// "name": "南京东路街道",
// "lng": 121.485,
// "lat": 31.235,
// "jjxmz": 1,
// "ybqkfb": 2
// },
// {
// "name": "外滩街道",
// "lng": 121.491,
// "lat": 31.242,
// "jjxmz": 2,
// "ybqkfb": 1
// },
// {
// "name": "瑞金二路街道",
// "lng": 121.473,
// "lat": 31.228,
// "jjxmz": 1,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "徐汇区",
// "lng": 121.437866,
// "lat": 31.19919,
// "jjxmz": 2,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "天平路街道",
// "lng": 121.438,
// "lat": 31.201,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "湖南路街道",
// "lng": 121.441,
// "lat": 31.205,
// "jjxmz": 2,
// "ybqkfb": 1
// },
// {
// "name": "枫林路街道",
// "lng": 121.448,
// "lat": 31.195,
// "jjxmz": 1,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "长宁区",
// "lng": 121.424624,
// "lat": 31.220367,
// "jjxmz": 1,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "新华路街道",
// "lng": 121.428,
// "lat": 31.218,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "江苏路街道",
// "lng": 121.431,
// "lat": 31.222,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "华阳路街道",
// "lng": 121.419,
// "lat": 31.216,
// "jjxmz": 2,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "静安区",
// "lng": 121.459384,
// "lat": 31.247105,
// "jjxmz": 1,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "江宁路街道",
// "lng": 121.455,
// "lat": 31.245,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "石门二路街道",
// "lng": 121.462,
// "lat": 31.241,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "南京西路街道",
// "lng": 121.466,
// "lat": 31.235,
// "jjxmz": 2,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "普陀区",
// "lng": 121.395555,
// "lat": 31.24984,
// "jjxmz": 3,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "长寿路街道",
// "lng": 121.438,
// "lat": 31.247,
// "jjxmz": 2,
// "ybqkfb": 1
// },
// {
// "name": "曹杨新村街道",
// "lng": 121.408,
// "lat": 31.243,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "长风新村街道",
// "lng": 121.401,
// "lat": 31.234,
// "jjxmz": 1,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "虹口区",
// "lng": 121.505133,
// "lat": 31.2646,
// "jjxmz": 2,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "四川北路街道",
// "lng": 121.488,
// "lat": 31.258,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "嘉兴路街道",
// "lng": 121.502,
// "lat": 31.267,
// "jjxmz": 2,
// "ybqkfb": 1
// },
// {
// "name": "曲阳路街道",
// "lng": 121.497,
// "lat": 31.285,
// "jjxmz": 1,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "杨浦区",
// "lng": 121.526077,
// "lat": 31.259541,
// "jjxmz": 1,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "平凉路街道",
// "lng": 121.535,
// "lat": 31.268,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "江浦路街道",
// "lng": 121.524,
// "lat": 31.266,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "四平路街道",
// "lng": 121.505,
// "lat": 31.283,
// "jjxmz": 2,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "闵行区",
// "lng": 121.381709,
// "lat": 31.112813,
// "jjxmz": 3,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "江川路街道",
// "lng": 121.421,
// "lat": 31.008,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "新虹街道",
// "lng": 121.321,
// "lat": 31.195,
// "jjxmz": 2,
// "ybqkfb": 1
// },
// {
// "name": "古美路街道",
// "lng": 121.403,
// "lat": 31.152,
// "jjxmz": 1,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "宝山区",
// "lng": 121.489612,
// "lat": 31.405457,
// "jjxmz": 3,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "吴淞街道",
// "lng": 121.501,
// "lat": 31.383,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "友谊路街道",
// "lng": 121.483,
// "lat": 31.404,
// "jjxmz": 2,
// "ybqkfb": 1
// },
// {
// "name": "张庙街道",
// "lng": 121.455,
// "lat": 31.338,
// "jjxmz": 1,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "嘉定区",
// "lng": 121.2653,
// "lat": 31.375602,
// "jjxmz": 1,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "新成路街道",
// "lng": 121.252,
// "lat": 31.38,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "真新街道",
// "lng": 121.368,
// "lat": 31.252,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "嘉定镇街道",
// "lng": 121.254,
// "lat": 31.38,
// "jjxmz": 2,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "浦东新区",
// "lng": 121.544379,
// "lat": 31.221517,
// "jjxmz": 1,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "陆家嘴街道",
// "lng": 121.507,
// "lat": 31.238,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "潍坊新村街道",
// "lng": 121.527,
// "lat": 31.222,
// "jjxmz": 2,
// "ybqkfb": 1
// },
// {
// "name": "塘桥街道",
// "lng": 121.518,
// "lat": 31.214,
// "jjxmz": 1,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "金山区",
// "lng": 121.34197,
// "lat": 30.741991,
// "jjxmz": 1,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "石化街道",
// "lng": 121.341,
// "lat": 30.735,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "山阳镇",
// "lng": 121.308,
// "lat": 30.749,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "金山卫镇",
// "lng": 121.308,
// "lat": 30.736,
// "jjxmz": 2,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "松江区",
// "lng": 121.227747,
// "lat": 31.032243,
// "jjxmz": 1,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "方松街道",
// "lng": 121.197,
// "lat": 31.037,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "广富林街道",
// "lng": 121.238,
// "lat": 31.051,
// "jjxmz": 2,
// "ybqkfb": 1
// },
// {
// "name": "九里亭街道",
// "lng": 121.324,
// "lat": 31.143,
// "jjxmz": 1,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "青浦区",
// "lng": 121.124178,
// "lat": 31.150681,
// "jjxmz": 1,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "夏阳街道",
// "lng": 121.126,
// "lat": 31.156,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "盈浦街道",
// "lng": 121.116,
// "lat": 31.159,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "香花桥街道",
// "lng": 121.134,
// "lat": 31.183,
// "jjxmz": 2,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "奉贤区",
// "lng": 121.474042,
// "lat": 30.917795,
// "jjxmz": 1,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "南桥镇",
// "lng": 121.456,
// "lat": 30.913,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "奉浦街道",
// "lng": 121.459,
// "lat": 30.917,
// "jjxmz": 2,
// "ybqkfb": 1
// },
// {
// "name": "金海街道",
// "lng": 121.47,
// "lat": 30.929,
// "jjxmz": 1,
// "ybqkfb": 1
// }
// ]
// },
// {
// "name": "崇明区",
// "lng": 121.397417,
// "lat": 31.623587,
// "jjxmz": 1,
// "ybqkfb": 1,
// "ybqkfbInfo": [
// {
// "name": "城桥镇",
// "lng": 121.398,
// "lat": 31.628,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "堡镇",
// "lng": 121.62,
// "lat": 31.537,
// "jjxmz": 1,
// "ybqkfb": 1
// },
// {
// "name": "新河镇",
// "lng": 121.5,
// "lat": 31.7,
// "jjxmz": 2,
// "ybqkfb": 1
// }
// ]
// }
// ]
/**
* 科学研究院地图
*/
export const mapDistrictDataDefault = [
{
"name": "黄浦区",
"lng": 121.469240,
"lat": 31.229860,
},
{
"name": "徐汇区",
"lng": 121.437866,
"lat": 31.199190,
},
{
"name": "长宁区",
"lng": 121.424624,
"lat": 31.220367,
},
{
"name": "静安区",
"lng": 121.459384,
"lat": 31.247105,
},
{
"name": "普陀区",
"lng": 121.395555,
"lat": 31.249840,
},
{
"name": "虹口区",
"lng": 121.505133,
"lat": 31.264600,
},
{
"name": "杨浦区",
"lng": 121.526077,
"lat": 31.259541,
},
{
"name": "闵行区",
"lng": 121.381709,
"lat": 31.112813,
},
{
"name": "宝山区",
"lng": 121.489612,
"lat": 31.405457,
},
{
"name": "嘉定区",
"lng": 121.265300,
"lat": 31.375602,
},
{
"name": "浦东新区",
"lng": 121.544379,
"lat": 31.221517,
},
{
"name": "金山区",
"lng": 121.341970,
"lat": 30.741991,
},
{
"name": "松江区",
"lng": 121.227747,
"lat": 31.032243,
},
{
"name": "青浦区",
"lng": 121.124178,
"lat": 31.150681,
},
{
"name": "奉贤区",
"lng": 121.474042,
"lat": 30.917795,
},
{
"name": "崇明区",
"lng": 121.397417,
"lat": 31.623587,
}
];
/**
* 科学研究院
*/
export const kxyjyDataDefault = [
{
"lng": 121.469242,
"lat": 31.229860,
"name":"培养基地名称4",
"sjxss":11,
"gqjxss":53,
},
{
"lng": 121.124172,
"lat": 31.150680,
"name":"培养基地名称1",
"sjxss":10,
"gqjxss":46,
},
{
"lng": 121.544379,
"lat": 31.221517,
"name":"培养基地名称2",
"sjxss":7,
"gqjxss":37,
},
{
"lng": 121.341967,
"lat": 30.741991,
"name":"培养基地名称3",
"sjxss":11,
"gqjxss":53,
}
];
/**
* 创新实践工作站地图区域坐标点
* url:无接口数据
*/
export const MapDataDefault = {
"黄浦区": {
"lng": "121.469240",
"lat": "31.229860"
},
"徐汇区": {
"lng": "121.437866",
"lat": "31.199190"
},
"长宁区": {
"lng": "121.424624",
"lat": "31.220367"
},
"静安区": {
"lng": "121.459384",
"lat": "31.247105"
},
"普陀区": {
"lng": "121.395555",
"lat": "31.249840"
},
"虹口区": {
"lng": "121.505133",
"lat": "31.264600"
},
"杨浦区": {
"lng": "121.526077",
"lat": "31.259541"
},
"闵行区": {
"lng": "121.381709",
"lat": "31.112813"
},
"宝山区": {
"lng": "121.489612",
"lat": "31.405457"
},
"嘉定区": {
"lng": "121.265300",
"lat": "31.375602"
},
"浦东新区": {
"lng": "121.544379",
"lat": "31.221517"
},
"金山区": {
"lng": "121.341970",
"lat": "30.741991"
},
"松江区": {
"lng": "121.227747",
"lat": "31.032243"
},
"青浦区": {
"lng": "121.124178",
"lat": "31.150681"
},
"奉贤区": {
"lng": "121.474042",
"lat": "30.917795"
},
"崇明区": {
"lng": "121.397417",
"lat": "31.623587"
}
};
/**
* 实践站中间地图
* url:11、/dataengine-center-oneservice/list/1356411001367874279
*/
export const WorkstationMapDefault = {
"data": [
{
"wsid": "00DA2922D8DAF202EEA96B45DEDA3BE7",
"wsaddressy": "31.2859",
"wsaddressx": "121.2142",
"wsname": "同济大学交通运输工程实践工作站"
},
{
"wsid": "015C671620A1D3F931631F479C89F060",
"wsaddressy": "31.2811",
"wsaddressx": "121.485",
"wsname": "中国科学院上海技术物理研究所电子科学与技术实践工作站"
},
]
}
/**
* 路由到操作描述的映射配置
*/
const routeConfig = {
// 数据治理体系
'/sjzltx': {
module: '驾驶舱页面',
action: 'select',
description: '查看数据治理体系页面'
},
'/ztyxts': {
module: '驾驶舱页面',
action: 'select',
description: '查看整体运行态势页面'
},
'/zyhdbz': {
module: '驾驶舱页面',
action: 'select',
description: '查看重要活动保障页面'
},
'/zyhdbzpop': {
module: '驾驶舱页面',
action: 'select',
description: '查看重要活动保障弹窗'
},
// 权限管理
'/permission/getlist': {
module: '权限管理',
action: 'select',
description: '查看权限列表'
},
'/permission/updatepermission': {
module: '权限管理',
action: 'update',
description: '更新用户权限'
},
// 认证相关
'/gettoken': {
module: '认证管理',
action: 'login',
description: '用户登录获取token'
},
'/auth/accesstoken': {
module: '认证管理',
action: 'auth',
description: '统一认证回调'
},
// 权限检查
'/permission/checkpage': {
module: '权限管理',
action: 'check',
description: '检查页面权限'
},
'/permission/checkadmin': {
module: '权限管理',
action: 'check',
description: '检查管理员权限'
},
'/permission/checkhomepage': {
module: '权限管理',
action: 'check',
description: '检查首页权限'
},
// 二期页面
'/secondPhase/gradehealth': {
module: '二期页面',
action: 'select',
description: '查看健康等级页面'
},
// 三期页面
'/weeklyplay': {
module: '三期页面',
action: 'select',
description: '查看周周播页面'
},
'/curriculumpop': {
module: '三期页面',
action: 'select',
description: '查看课程弹窗'
},
'/dropdown': {
module: '三期页面',
action: 'select',
description: '查看下拉选项'
},
// 2024-12-28 新增
'/qsnkjcxsjgzz': {
module: '三期页面',
action: 'select',
description: '查看青少年科创实践工作站'
},
'/ysysda': {
module: '三期页面',
action: 'select',
description: '查看一生一档案页面'
},
'/zyhdbzlist': {
module: '三期页面',
action: 'select',
description: '查看重要活动保障列表'
},
'/jyyzzy': {
module: '三期页面',
action: 'select',
description: '查看教育优质资源页面'
},
'/jyyzzy/kcsj': {
module: '三期页面',
action: 'select',
description: '查看教育优质资源课程数据'
},
'/kxyjy': {
module: '三期页面',
action: 'select',
description: '查看科学研究院页面'
},
'/kxyjy/map': {
module: '三期页面',
action: 'select',
description: '查看科学研究院地图'
},
'/ssk': {
module: '三期页面',
action: 'select',
description: '查看申申康页面'
},
'/ssk/jrsbxx': {
module: '三期页面',
action: 'select',
description: '查看今日上报信息'
},
'/ssk/cityname': {
module: '三期页面',
action: 'select',
description: '查看城市名称'
},
'/ssk/map': {
module: '三期页面',
action: 'select',
description: '查看申申康地图'
},
'/ssk/gfjbqs': {
module: '三期页面',
action: 'select',
description: '查看高峰就诊情况'
},
'/ssk/jjxmz': {
module: '三期页面',
action: 'select',
description: '查看紧急项目统计'
},
'/ssk/ybqkqs': {
module: '三期页面',
action: 'select',
description: '查看医保情况趋势'
}
};
// 获取路由配置
function getRouteConfig(path) {
return routeConfig[path];
}
module.exports = {
getRouteConfig
};
......@@ -8,20 +8,20 @@
* url:/dataengine-center-oneservice/list/1356418464263621395
*/
export const BaseNumDefault = {
"data": [
{ "wsid": "假数据id", "name": "wssl", "quantity": "0" },
{ "wsid": "假数据id", "name": "sosl", "quantity": "0" },
{ "wsid": "假数据id", "name": "ktsl", "quantity": "0" },
{ "wsid": "假数据id", "name": "lnktsl", "quantity": "0" },
{ "wsid": "假数据id", "name": "zrs", "quantity": "0" },
{ "wsid": "假数据id", "name": "jnxss", "quantity": "0" },
{ "wsid": "假数据id", "name": "lssl", "quantity": "0" },
{ "wsid": "假数据id", "name": "zthgl", "quantity": "0" },
{ "wsid": "假数据id", "name": "xshgs", "quantity": "0" },
{ "wsid": "假数据id", "name": "kzzxss", "quantity": "0" },
{ "wsid": "假数据id", "name": "jtxss", "quantity": "0" },
]
// "data": [{"wsid":"00DA2922D8DAF202EEA96B45DEDA3BE7","name":"lssl","quantity":"48"},{"wsid":"00DA2922D8DAF202EEA96B45DEDA3BE7","name":"yxkrs","quantity":"99"},{"wsid":"015C671620A1D3F931631F479C89F060","name":"hgrs","quantity":"0"},{"wsid":"015C671620A1D3F931631F479C89F060","name":"whgrs","quantity":"0"},{"wsid":"015C671620A1D3F931631F479C89F060","name":"wxkrs","quantity":"1"},{"wsid":"015C671620A1D3F931631F479C89F060","name":"yxkrs","quantity":"119"},{"wsid":"0303E1C1338276A443AA78A99430B047","name":"ktsl","quantity":"10"},{"wsid":"0303E1C1338276A443AA78A99430B047","name":"lssl","quantity":"13"},{"wsid":"0303E1C1338276A443AA78A99430B047","name":"xssl","quantity":"120"},{"wsid":"0303E1C1338276A443AA78A99430B047","name":"yxkrs","quantity":"113"},{"wsid":"0791483E0764E6CC6584F9F4A0550915","name":"ktsl","quantity":"10"},{"wsid":"0791483E0764E6CC6584F9F4A0550915","name":"lssl","quantity":"8"},{"wsid":"0791483E0764E6CC6584F9F4A0550915","name":"wxkrs","quantity":"0"},{"wsid":"0791483E0764E6CC6584F9F4A0550915","name":"yxkrs","quantity":"120"},{"wsid":"0E555EB679281C9A2F90BC9F053B4C5E","name":"whgrs","quantity":"0"},{"wsid":"0E555EB679281C9A2F90BC9F053B4C5E","name":"wxkrs","quantity":"10"},{"wsid":"0F18350FDA26416A187C75D9B590D7E5","name":"hgrs","quantity":"0"},{"wsid":"0F18350FDA26416A187C75D9B590D7E5","name":"wxkrs","quantity":"0"},{"wsid":"0F18350FDA26416A187C75D9B590D7E5","name":"xssl","quantity":"120"},{"wsid":"0F18350FDA26416A187C75D9B590D7E5","name":"yxkrs","quantity":"120"},{"wsid":"12F75A65A61C4CCEEE9D396D967A474C","name":"ktsl","quantity":"10"},{"wsid":"1D1EAC79DA804C87167A32FAA0C5CAC9","name":"lssl","quantity":"12"},{"wsid":"1D1EAC79DA804C87167A32FAA0C5CAC9","name":"wxkrs","quantity":"1"},{"wsid":"1D1EAC79DA804C87167A32FAA0C5CAC9","name":"xssl","quantity":"120"},{"wsid":"245A8A9097D470943CA1162B8504C285","name":"lssl","quantity":"24"},{"wsid":"245A8A9097D470943CA1162B8504C285","name":"whgrs","quantity":"0"},{"wsid":"245A8A9097D470943CA1162B8504C285","name":"wxkrs","quantity":"5"},{"wsid":"245A8A9097D470943CA1162B8504C285","name":"xssl","quantity":"120"},{"wsid":"245A8A9097D470943CA1162B8504C285","name":"yxkrs","quantity":"115"},{"wsid":"2545E8DD0391515715BB9606CD2A4624","name":"ktsl","quantity":"33"},{"wsid":"2545E8DD0391515715BB9606CD2A4624","name":"whgrs","quantity":"0"},{"wsid":"2545E8DD0391515715BB9606CD2A4624","name":"wxkrs","quantity":"0"},{"wsid":"2545E8DD0391515715BB9606CD2A4624","name":"yxkrs","quantity":"120"},{"wsid":"2EF0757CF3EA1478850E0B3432F3427D","name":"ktsl","quantity":"11"},{"wsid":"2EF0757CF3EA1478850E0B3432F3427D","name":"whgrs","quantity":"0"},{"wsid":"2EF0757CF3EA1478850E0B3432F3427D","name":"wxkrs","quantity":"2"},{"wsid":"2EF0757CF3EA1478850E0B3432F3427D","name":"xssl","quantity":"120"},{"wsid":"2EF0757CF3EA1478850E0B3432F3427D","name":"yxkrs","quantity":"118"},{"wsid":"31639B010AC8448E9740C3D24FD34A8D","name":"whgrs","quantity":"0"},{"wsid":"31639B010AC8448E9740C3D24FD34A8D","name":"wxkrs","quantity":"6"},{"wsid":"31639B010AC8448E9740C3D24FD34A8D","name":"xssl","quantity":"120"},{"wsid":"383BE726032B77E9827223EC25690E2E","name":"ktsl","quantity":"10"},{"wsid":"383BE726032B77E9827223EC25690E2E","name":"lssl","quantity":"5"},{"wsid":"383BE726032B77E9827223EC25690E2E","name":"whgrs","quantity":"0"},{"wsid":"383BE726032B77E9827223EC25690E2E","name":"xssl","quantity":"120"},{"wsid":"3877F267FC51464D927F57587DAB1FFC","name":"hgrs","quantity":"0"},{"wsid":"3877F267FC51464D927F57587DAB1FFC","name":"ktsl","quantity":"10"},{"wsid":"3877F267FC51464D927F57587DAB1FFC","name":"xssl","quantity":"120"},{"wsid":"3877F267FC51464D927F57587DAB1FFC","name":"yxkrs","quantity":"115"},{"wsid":"3962723A7FBA90E9627A55D2C5E8BDED","name":"whgrs","quantity":"0"},{"wsid":"3962723A7FBA90E9627A55D2C5E8BDED","name":"wxkrs","quantity":"3"},{"wsid":"3962723A7FBA90E9627A55D2C5E8BDED","name":"yxkrs","quantity":"117"},{"wsid":"3B7FB9ADF476F4510ECCD6F7FB42385E","name":"hgrs","quantity":"14"},{"wsid":"3B7FB9ADF476F4510ECCD6F7FB42385E","name":"ktsl","quantity":"15"},{"wsid":"3B7FB9ADF476F4510ECCD6F7FB42385E","name":"wxkrs","quantity":"16"},{"wsid":"43C46BDC3E9B1C096180E6164EA85087","name":"hgrs","quantity":"0"},{"wsid":"43C46BDC3E9B1C096180E6164EA85087","name":"ktsl","quantity":"10"},{"wsid":"43C46BDC3E9B1C096180E6164EA85087","name":"wxkrs","quantity":"13"},{"wsid":"43C46BDC3E9B1C096180E6164EA85087","name":"xssl","quantity":"120"},{"wsid":"48262A20766F2E23991AB34602F00413","name":"hgrs","quantity":"0"},{"wsid":"48262A20766F2E23991AB34602F00413","name":"whgrs","quantity":"0"},{"wsid":"48262A20766F2E23991AB34602F00413","name":"wxkrs","quantity":"1"},{"wsid":"4F05CA0D5689DD53F5C83046222F9E3B","name":"lssl","quantity":"40"},{"wsid":"4F05CA0D5689DD53F5C83046222F9E3B","name":"whgrs","quantity":"0"},{"wsid":"4F05CA0D5689DD53F5C83046222F9E3B","name":"wxkrs","quantity":"5"},{"wsid":"4F05CA0D5689DD53F5C83046222F9E3B","name":"xssl","quantity":"120"},{"wsid":"4F05CA0D5689DD53F5C83046222F9E3B","name":"yxkrs","quantity":"115"},{"wsid":"51660BE5877799B9EA983DE1E7EDA8A5","name":"whgrs","quantity":"0"},{"wsid":"51660BE5877799B9EA983DE1E7EDA8A5","name":"wxkrs","quantity":"120"},{"wsid":"53B961A13005CDB0BB8DBDFAFA7079DD","name":"hgrs","quantity":"9"},{"wsid":"53B961A13005CDB0BB8DBDFAFA7079DD","name":"ktsl","quantity":"15"},{"wsid":"53B961A13005CDB0BB8DBDFAFA7079DD","name":"whgrs","quantity":"0"},{"wsid":"53B961A13005CDB0BB8DBDFAFA7079DD","name":"yxkrs","quantity":"103"},{"wsid":"67710F033BBEDE730E94A050ADBC04A0","name":"hgrs","quantity":"0"},{"wsid":"67710F033BBEDE730E94A050ADBC04A0","name":"lssl","quantity":"23"},{"wsid":"6CFC6CF4D718ED3306CE640418B78031","name":"ktsl","quantity":"8"},{"wsid":"6CFC6CF4D718ED3306CE640418B78031","name":"lssl","quantity":"13"},{"wsid":"6CFC6CF4D718ED3306CE640418B78031","name":"wxkrs","quantity":"0"},{"wsid":"6CFC6CF4D718ED3306CE640418B78031","name":"xssl","quantity":"120"},{"wsid":"72D5F4D210E205EB304B4844D06190C9","name":"lssl","quantity":"11"},{"wsid":"72D5F4D210E205EB304B4844D06190C9","name":"yxkrs","quantity":"106"},{"wsid":"79312B2D203F35A4BB3EF3D6A35D8E6D","name":"hgrs","quantity":"0"},{"wsid":"79312B2D203F35A4BB3EF3D6A35D8E6D","name":"ktsl","quantity":"10"},{"wsid":"79312B2D203F35A4BB3EF3D6A35D8E6D","name":"lssl","quantity":"16"},{"wsid":"79312B2D203F35A4BB3EF3D6A35D8E6D","name":"whgrs","quantity":"0"},{"wsid":"79312B2D203F35A4BB3EF3D6A35D8E6D","name":"xssl","quantity":"120"},{"wsid":"94F1400C1FD7214B627E4E37ECBA8C6D","name":"hgrs","quantity":"0"},{"wsid":"94F1400C1FD7214B627E4E37ECBA8C6D","name":"ktsl","quantity":"10"},{"wsid":"94F1400C1FD7214B627E4E37ECBA8C6D","name":"lssl","quantity":"18"},{"wsid":"94F1400C1FD7214B627E4E37ECBA8C6D","name":"whgrs","quantity":"0"},{"wsid":"94F1400C1FD7214B627E4E37ECBA8C6D","name":"xssl","quantity":"120"},{"wsid":"9BF6030100104779D8CA3045997885A4","name":"hgrs","quantity":"0"},{"wsid":"9BF6030100104779D8CA3045997885A4","name":"whgrs","quantity":"0"},{"wsid":"9BF6030100104779D8CA3045997885A4","name":"wxkrs","quantity":"6"},{"wsid":"A83196D262D236A013419C9D9AD08955","name":"hgrs","quantity":"0"},{"wsid":"A83196D262D236A013419C9D9AD08955","name":"lssl","quantity":"36"},{"wsid":"A83196D262D236A013419C9D9AD08955","name":"whgrs","quantity":"0"},{"wsid":"A83196D262D236A013419C9D9AD08955","name":"wxkrs","quantity":"40"},{"wsid":"B1882C3B9C2049D349FFF58AF9B86556","name":"lssl","quantity":"63"},{"wsid":"B1882C3B9C2049D349FFF58AF9B86556","name":"whgrs","quantity":"0"}]
// "data": [
// { "wsid": "假数据id", "name": "wssl", "quantity": "0" },
// { "wsid": "假数据id", "name": "sosl", "quantity": "0" },
// { "wsid": "假数据id", "name": "ktsl", "quantity": "0" },
// { "wsid": "假数据id", "name": "lnktsl", "quantity": "0" },
// { "wsid": "假数据id", "name": "zrs", "quantity": "0" },
// { "wsid": "假数据id", "name": "jnxss", "quantity": "0" },
// { "wsid": "假数据id", "name": "lssl", "quantity": "0" },
// { "wsid": "假数据id", "name": "zthgl", "quantity": "0" },
// { "wsid": "假数据id", "name": "xshgs", "quantity": "0" },
// { "wsid": "假数据id", "name": "kzzxss", "quantity": "0" },
// { "wsid": "假数据id", "name": "jtxss", "quantity": "0" },
// ]
"data": [{"wsid":"00DA2922D8DAF202EEA96B45DEDA3BE7","name":"lssl","quantity":"48"},{"wsid":"00DA2922D8DAF202EEA96B45DEDA3BE7","name":"yxkrs","quantity":"99"},{"wsid":"015C671620A1D3F931631F479C89F060","name":"hgrs","quantity":"0"},{"wsid":"015C671620A1D3F931631F479C89F060","name":"whgrs","quantity":"0"},{"wsid":"015C671620A1D3F931631F479C89F060","name":"wxkrs","quantity":"1"},{"wsid":"015C671620A1D3F931631F479C89F060","name":"yxkrs","quantity":"119"},{"wsid":"0303E1C1338276A443AA78A99430B047","name":"ktsl","quantity":"10"},{"wsid":"0303E1C1338276A443AA78A99430B047","name":"lssl","quantity":"13"},{"wsid":"0303E1C1338276A443AA78A99430B047","name":"xssl","quantity":"120"},{"wsid":"0303E1C1338276A443AA78A99430B047","name":"yxkrs","quantity":"113"},{"wsid":"0791483E0764E6CC6584F9F4A0550915","name":"ktsl","quantity":"10"},{"wsid":"0791483E0764E6CC6584F9F4A0550915","name":"lssl","quantity":"8"},{"wsid":"0791483E0764E6CC6584F9F4A0550915","name":"wxkrs","quantity":"0"},{"wsid":"0791483E0764E6CC6584F9F4A0550915","name":"yxkrs","quantity":"120"},{"wsid":"0E555EB679281C9A2F90BC9F053B4C5E","name":"whgrs","quantity":"0"},{"wsid":"0E555EB679281C9A2F90BC9F053B4C5E","name":"wxkrs","quantity":"10"},{"wsid":"0F18350FDA26416A187C75D9B590D7E5","name":"hgrs","quantity":"0"},{"wsid":"0F18350FDA26416A187C75D9B590D7E5","name":"wxkrs","quantity":"0"},{"wsid":"0F18350FDA26416A187C75D9B590D7E5","name":"xssl","quantity":"120"},{"wsid":"0F18350FDA26416A187C75D9B590D7E5","name":"yxkrs","quantity":"120"},{"wsid":"12F75A65A61C4CCEEE9D396D967A474C","name":"ktsl","quantity":"10"},{"wsid":"1D1EAC79DA804C87167A32FAA0C5CAC9","name":"lssl","quantity":"12"},{"wsid":"1D1EAC79DA804C87167A32FAA0C5CAC9","name":"wxkrs","quantity":"1"},{"wsid":"1D1EAC79DA804C87167A32FAA0C5CAC9","name":"xssl","quantity":"120"},{"wsid":"245A8A9097D470943CA1162B8504C285","name":"lssl","quantity":"24"},{"wsid":"245A8A9097D470943CA1162B8504C285","name":"whgrs","quantity":"0"},{"wsid":"245A8A9097D470943CA1162B8504C285","name":"wxkrs","quantity":"5"},{"wsid":"245A8A9097D470943CA1162B8504C285","name":"xssl","quantity":"120"},{"wsid":"245A8A9097D470943CA1162B8504C285","name":"yxkrs","quantity":"115"},{"wsid":"2545E8DD0391515715BB9606CD2A4624","name":"ktsl","quantity":"33"},{"wsid":"2545E8DD0391515715BB9606CD2A4624","name":"whgrs","quantity":"0"},{"wsid":"2545E8DD0391515715BB9606CD2A4624","name":"wxkrs","quantity":"0"},{"wsid":"2545E8DD0391515715BB9606CD2A4624","name":"yxkrs","quantity":"120"},{"wsid":"2EF0757CF3EA1478850E0B3432F3427D","name":"ktsl","quantity":"11"},{"wsid":"2EF0757CF3EA1478850E0B3432F3427D","name":"whgrs","quantity":"0"},{"wsid":"2EF0757CF3EA1478850E0B3432F3427D","name":"wxkrs","quantity":"2"},{"wsid":"2EF0757CF3EA1478850E0B3432F3427D","name":"xssl","quantity":"120"},{"wsid":"2EF0757CF3EA1478850E0B3432F3427D","name":"yxkrs","quantity":"118"},{"wsid":"31639B010AC8448E9740C3D24FD34A8D","name":"whgrs","quantity":"0"},{"wsid":"31639B010AC8448E9740C3D24FD34A8D","name":"wxkrs","quantity":"6"},{"wsid":"31639B010AC8448E9740C3D24FD34A8D","name":"xssl","quantity":"120"},{"wsid":"383BE726032B77E9827223EC25690E2E","name":"ktsl","quantity":"10"},{"wsid":"383BE726032B77E9827223EC25690E2E","name":"lssl","quantity":"5"},{"wsid":"383BE726032B77E9827223EC25690E2E","name":"whgrs","quantity":"0"},{"wsid":"383BE726032B77E9827223EC25690E2E","name":"xssl","quantity":"120"},{"wsid":"3877F267FC51464D927F57587DAB1FFC","name":"hgrs","quantity":"0"},{"wsid":"3877F267FC51464D927F57587DAB1FFC","name":"ktsl","quantity":"10"},{"wsid":"3877F267FC51464D927F57587DAB1FFC","name":"xssl","quantity":"120"},{"wsid":"3877F267FC51464D927F57587DAB1FFC","name":"yxkrs","quantity":"115"},{"wsid":"3962723A7FBA90E9627A55D2C5E8BDED","name":"whgrs","quantity":"0"},{"wsid":"3962723A7FBA90E9627A55D2C5E8BDED","name":"wxkrs","quantity":"3"},{"wsid":"3962723A7FBA90E9627A55D2C5E8BDED","name":"yxkrs","quantity":"117"},{"wsid":"3B7FB9ADF476F4510ECCD6F7FB42385E","name":"hgrs","quantity":"14"},{"wsid":"3B7FB9ADF476F4510ECCD6F7FB42385E","name":"ktsl","quantity":"15"},{"wsid":"3B7FB9ADF476F4510ECCD6F7FB42385E","name":"wxkrs","quantity":"16"},{"wsid":"43C46BDC3E9B1C096180E6164EA85087","name":"hgrs","quantity":"0"},{"wsid":"43C46BDC3E9B1C096180E6164EA85087","name":"ktsl","quantity":"10"},{"wsid":"43C46BDC3E9B1C096180E6164EA85087","name":"wxkrs","quantity":"13"},{"wsid":"43C46BDC3E9B1C096180E6164EA85087","name":"xssl","quantity":"120"},{"wsid":"48262A20766F2E23991AB34602F00413","name":"hgrs","quantity":"0"},{"wsid":"48262A20766F2E23991AB34602F00413","name":"whgrs","quantity":"0"},{"wsid":"48262A20766F2E23991AB34602F00413","name":"wxkrs","quantity":"1"},{"wsid":"4F05CA0D5689DD53F5C83046222F9E3B","name":"lssl","quantity":"40"},{"wsid":"4F05CA0D5689DD53F5C83046222F9E3B","name":"whgrs","quantity":"0"},{"wsid":"4F05CA0D5689DD53F5C83046222F9E3B","name":"wxkrs","quantity":"5"},{"wsid":"4F05CA0D5689DD53F5C83046222F9E3B","name":"xssl","quantity":"120"},{"wsid":"4F05CA0D5689DD53F5C83046222F9E3B","name":"yxkrs","quantity":"115"},{"wsid":"51660BE5877799B9EA983DE1E7EDA8A5","name":"whgrs","quantity":"0"},{"wsid":"51660BE5877799B9EA983DE1E7EDA8A5","name":"wxkrs","quantity":"120"},{"wsid":"53B961A13005CDB0BB8DBDFAFA7079DD","name":"hgrs","quantity":"9"},{"wsid":"53B961A13005CDB0BB8DBDFAFA7079DD","name":"ktsl","quantity":"15"},{"wsid":"53B961A13005CDB0BB8DBDFAFA7079DD","name":"whgrs","quantity":"0"},{"wsid":"53B961A13005CDB0BB8DBDFAFA7079DD","name":"yxkrs","quantity":"103"},{"wsid":"67710F033BBEDE730E94A050ADBC04A0","name":"hgrs","quantity":"0"},{"wsid":"67710F033BBEDE730E94A050ADBC04A0","name":"lssl","quantity":"23"},{"wsid":"6CFC6CF4D718ED3306CE640418B78031","name":"ktsl","quantity":"8"},{"wsid":"6CFC6CF4D718ED3306CE640418B78031","name":"lssl","quantity":"13"},{"wsid":"6CFC6CF4D718ED3306CE640418B78031","name":"wxkrs","quantity":"0"},{"wsid":"6CFC6CF4D718ED3306CE640418B78031","name":"xssl","quantity":"120"},{"wsid":"72D5F4D210E205EB304B4844D06190C9","name":"lssl","quantity":"11"},{"wsid":"72D5F4D210E205EB304B4844D06190C9","name":"yxkrs","quantity":"106"},{"wsid":"79312B2D203F35A4BB3EF3D6A35D8E6D","name":"hgrs","quantity":"0"},{"wsid":"79312B2D203F35A4BB3EF3D6A35D8E6D","name":"ktsl","quantity":"10"},{"wsid":"79312B2D203F35A4BB3EF3D6A35D8E6D","name":"lssl","quantity":"16"},{"wsid":"79312B2D203F35A4BB3EF3D6A35D8E6D","name":"whgrs","quantity":"0"},{"wsid":"79312B2D203F35A4BB3EF3D6A35D8E6D","name":"xssl","quantity":"120"},{"wsid":"94F1400C1FD7214B627E4E37ECBA8C6D","name":"hgrs","quantity":"0"},{"wsid":"94F1400C1FD7214B627E4E37ECBA8C6D","name":"ktsl","quantity":"10"},{"wsid":"94F1400C1FD7214B627E4E37ECBA8C6D","name":"lssl","quantity":"18"},{"wsid":"94F1400C1FD7214B627E4E37ECBA8C6D","name":"whgrs","quantity":"0"},{"wsid":"94F1400C1FD7214B627E4E37ECBA8C6D","name":"xssl","quantity":"120"},{"wsid":"9BF6030100104779D8CA3045997885A4","name":"hgrs","quantity":"0"},{"wsid":"9BF6030100104779D8CA3045997885A4","name":"whgrs","quantity":"0"},{"wsid":"9BF6030100104779D8CA3045997885A4","name":"wxkrs","quantity":"6"},{"wsid":"A83196D262D236A013419C9D9AD08955","name":"hgrs","quantity":"0"},{"wsid":"A83196D262D236A013419C9D9AD08955","name":"lssl","quantity":"36"},{"wsid":"A83196D262D236A013419C9D9AD08955","name":"whgrs","quantity":"0"},{"wsid":"A83196D262D236A013419C9D9AD08955","name":"wxkrs","quantity":"40"},{"wsid":"B1882C3B9C2049D349FFF58AF9B86556","name":"lssl","quantity":"63"},{"wsid":"B1882C3B9C2049D349FFF58AF9B86556","name":"whgrs","quantity":"0"}]
}
/**
......
......@@ -37,7 +37,7 @@ let refreshExpiresTime;
*/
export async function getAccessToken(authCode?) {
let url = "https://u.baidu.com/oauth/accessToken";
if(!authCode) authCode = "eyJhbGciOiJIUzM4NCJ9.eyJhdWQiOiLmmbrog73liIbmnpDkuozmioDpobXpnaIiLCJzdWIiOiJleGMiLCJ1aWQiOjU1NjU5MDExLCJhcHBJZCI6IjcxZWQwOGIxM2E5ZWYxMDJiMGUwOTEzYzM3Y2ZiY2E0IiwiaXNzIjoi5ZWG5Lia5byA5Y-R6ICF5Lit5b-DIiwicGxhdGZvcm1JZCI6IjQ5NjAzNDU5NjU5NTg1NjE3OTQiLCJleHAiOjE3MzUzODY5OTQsImp0aSI6IjkxMDEyNjIwNjIxOTEyMTQ1OTQifQ.9z6tXtCovRwshEff3etnW4ieMCrAr_ePz7aCnopHJ8r0-oBq550liH81SULc-D1v";
if(!authCode) authCode = "eyJhbGciOiJIUzM4NCJ9.eyJhdWQiOiLmmbrog73liIbmnpDkuozmioDpobXpnaIiLCJzdWIiOiJleGMiLCJ1aWQiOjU1NjU5MDExLCJhcHBJZCI6IjcxZWQwOGIxM2E5ZWYxMDJiMGUwOTEzYzM3Y2ZiY2E0IiwiaXNzIjoi5ZWG5Lia5byA5Y-R6ICF5Lit5b-DIiwicGxhdGZvcm1JZCI6IjQ5NjAzNDU5NjU5NTg1NjE3OTQiLCJleHAiOjE3MzU2MDg4NzIsImp0aSI6IjkxNDQxMzYxNzgwODY1NzYyMDEifQ.T8WeHYuOBnpR8OwOvVBB-JmVlNEluMkXBW45M8WVaVW2WTQFARiO9m0Vk_j18CRE";
let grantType = "auth_code";
// let accessToken = "eyJhbGciOiJIUzM4NCJ9.eyJzdWIiOiJhY2MiLCJhdWQiOiLmmbrog73liIbmnpDkuozmioDpobXpnaIiLCJ1aWQiOjU1NjU5MDExLCJhcHBJZCI6IjcxZWQwOGIxM2E5ZWYxMDJiMGUwOTEzYzM3Y2ZiY2E0IiwiaXNzIjoi5ZWG5Lia5byA5Y-R6ICF5Lit5b-DIiwicGxhdGZvcm1JZCI6IjQ5NjAzNDU5NjU5NTg1NjE3OTQiLCJleHAiOjQxMDI0MTYwMDAsImp0aSI6IjgyMjcyODc4OTQ0OTk2NTU3MDQifQ.OiL3rJ2zTdFcw3YDvkx5cwvZPF4dz57MVUX9jUwAoSYugckUw5BhttzHFK-OY1OB";
let accessToken = "klnPbCG2Rexuk1e1H1F2wIEsFv6GxiOV@jGObOQvDH1tPIfGkPBzbENGc7dZ68xBR";
......
......@@ -10,7 +10,7 @@ import { getAccessToken } from "./baiduyun";
const userUrl = './mock/platform.json';
let token = "eyJhbGciOiJIUzM4NCJ9.eyJzdWIiOiJhY2MiLCJhdWQiOiLmmbrog73liIbmnpDkuozmioDpobXpnaIiLCJ1aWQiOjU1NjU5MDExLCJhcHBJZCI6IjcxZWQwOGIxM2E5ZWYxMDJiMGUwOTEzYzM3Y2ZiY2E0IiwiaXNzIjoi5ZWG5Lia5byA5Y-R6ICF5Lit5b-DIiwicGxhdGZvcm1JZCI6IjQ5NjAzNDU5NjU5NTg1NjE3OTQiLCJleHAiOjE3MzU0NzIyMjAsImp0aSI6Ijg4NDg1MjMzNzE2MjY5MDU2MTMifQ.V4MY9XNXWAif2Xs_gykJcUnay1vJnUOJOWc6qvQKYuomCltFbOrQ39kVNfSE0wb6";
let token = "eyJhbGciOiJIUzM4NCJ9.eyJzdWIiOiJhY2MiLCJhdWQiOiLmmbrog73liIbmnpDkuozmioDpobXpnaIiLCJ1aWQiOjU1NjU5MDExLCJhcHBJZCI6IjcxZWQwOGIxM2E5ZWYxMDJiMGUwOTEzYzM3Y2ZiY2E0IiwiaXNzIjoi5ZWG5Lia5byA5Y-R6ICF5Lit5b-DIiwicGxhdGZvcm1JZCI6IjQ5NjAzNDU5NjU5NTg1NjE3OTQiLCJleHAiOjE3MzU2OTM1NjEsImp0aSI6IjkxMDEzNzg1NDE3MDQyODIxNjIifQ.I4suqfuPXUzU1lhLEQsPoTRjR6uQOx3DmaFpIq496bgVETUFPmpjmAFMSVhqq69y";
let tokenTime = 0;//有效时间
let lastTime = 0;//上一次时间
const timeOutTime = 50;//超时时间s
......@@ -74,7 +74,6 @@ export async function getSzjltxData() {
});
}
return { sjzl, sjzc, sjlyInfo };
}
......
......@@ -214,16 +214,17 @@ export async function getMapDistrictServiceData() {
let {name} = item;
body["conditions"] = {"xzq": name};
let mapSchoolListSourceData:any = await post(getSecondPhaseUrl(healthEnum.不同学校上报情况信息中间地图), body, headers);
// let mapSchoolListSourceData:any = await getInterfaceByInterfaceName("不同学校上报情况信息中间地图", body, headers);
let mapSchoolListSource:any = mapSchoolListSourceData || defaultConf.MapSchoolDataDefault;
let differentDistrictStuNumSourceData:any = await post(getSecondPhaseUrl(healthEnum.不同行政区上报学生数),
getHealthParameter(healthEnum.不同行政区上报学生数, healthTokenEnum.不同行政区上报学生数).body,
getHealthParameter(healthEnum.不同行政区上报学生数, healthTokenEnum.不同行政区上报学生数).headers);
// let differentDistrictStuNumSourceData:any = await getInterfaceByInterfaceName("不同行政区上报学生数", getParameter(healthEnum.不同行政区上报学生数, healthTokenEnum.不同行政区上报学生数).body, getParameter(healthEnum.不同行政区上报学生数, healthTokenEnum.不同行政区上报学生数).headers);
let differentDistrictStuNumSource:any = differentDistrictStuNumSourceData || defaultConf.DifferentDistrictStuNumDefault;
// let mapSchoolListSourceData:any = await post(getSecondPhaseUrl(healthEnum.不同学校上报情况信息中间地图), body, headers);
// // let mapSchoolListSourceData:any = await getInterfaceByInterfaceName("不同学校上报情况信息中间地图", body, headers);
// let mapSchoolListSource:any = mapSchoolListSourceData || defaultConf.MapSchoolDataDefault;
let mapSchoolListSource:any = defaultConf.MapSchoolDataDefault;
// let differentDistrictStuNumSourceData:any = await post(getSecondPhaseUrl(healthEnum.不同行政区上报学生数),
// getHealthParameter(healthEnum.不同行政区上报学生数, healthTokenEnum.不同行政区上报学生数).body,
// getHealthParameter(healthEnum.不同行政区上报学生数, healthTokenEnum.不同行政区上报学生数).headers);
// // let differentDistrictStuNumSourceData:any = await getInterfaceByInterfaceName("不同行政区上报学生数", getParameter(healthEnum.不同行政区上报学生数, healthTokenEnum.不同行政区上报学生数).body, getParameter(healthEnum.不同行政区上报学生数, healthTokenEnum.不同行政区上报学生数).headers);
// let differentDistrictStuNumSource:any = differentDistrictStuNumSourceData || defaultConf.DifferentDistrictStuNumDefault;
let differentDistrictStuNumSource:any = defaultConf.DifferentDistrictStuNumDefault;
item["schoolInfo"] = mapSchoolListSource["data"];
differentDistrictStuNumSource["data"].forEach( info => {
......
......@@ -8,10 +8,10 @@ import { post } from "../../../util/request";
const appKey = 200000086;
export async function getBaseNumData(id) {
let {body, headers} = getParameter(workstationEnum.工作站整体数字, workstationTokenEnum.工作站整体数字);
let baseNumData:any = await post(getWorkstationUrl(workstationEnum.工作站整体数字), body, headers);
let baseNumSource:any = baseNumData || defaultConf.BaseNumDefault;
// let baseNumSource = defaultConf.BaseNumDefault;
// let {body, headers} = getParameter(workstationEnum.工作站整体数字, workstationTokenEnum.工作站整体数字);
// let baseNumData:any = await post(getWorkstationUrl(workstationEnum.工作站整体数字), body, headers);
// let baseNumSource:any = baseNumData || defaultConf.BaseNumDefault;
let baseNumSource = defaultConf.BaseNumDefault;
//基础整合数据
let baseNumConf = {lssl:"老师数量", xssl:"学生数量", ktsl:"课题数量"};
......@@ -53,13 +53,13 @@ export async function getBaseNumData(id) {
export async function getBaseData(id) {
let {body, headers} = getParameter(workstationEnum.左侧实践站介绍, workstationTokenEnum.左侧实践站介绍);
let baseData:any = await post(getWorkstationUrl(workstationEnum.左侧实践站介绍), body, headers);
let baseSource:any = baseData || defaultConf.BaseDefault;
// let baseSource = defaultConf.BaseDefault;
// let {body, headers} = getParameter(workstationEnum.左侧实践站介绍, workstationTokenEnum.左侧实践站介绍);
// let baseData:any = await post(getWorkstationUrl(workstationEnum.左侧实践站介绍), body, headers);
// let baseSource:any = baseData || defaultConf.BaseDefault;
let baseSource = defaultConf.BaseDefault;
let baseConf = {wsname:"名称", wsaddress:"地址", soname:"学科", plname:"所辖实践点"};
let base = {"名称":"", "地址":"", "学科":"", "所辖实践点":""};
let base:any = {"名称":"", "地址":"", "学科":"", "所辖实践点":""};
baseSource["data"].forEach( item => {
let {wsid, plname, soname, wsaddress, wsname} = item;
if (id == wsid) {
......@@ -76,10 +76,10 @@ export async function getBaseData(id) {
export async function getCityResearchProgress(id) {
let {body, headers} = getParameter(workstationEnum.中间市级课题研究进度, workstationTokenEnum.中间市级课题研究进度);
let cityResearchData:any = await post(getWorkstationUrl(workstationEnum.中间市级课题研究进度), body, headers);
let cityResearchSouorce:any = cityResearchData || defaultConf.CityResearchDefault;
// let cityResearchSouorce = defaultConf.CityResearchDefault;
// let {body, headers} = getParameter(workstationEnum.中间市级课题研究进度, workstationTokenEnum.中间市级课题研究进度);
// let cityResearchData:any = await post(getWorkstationUrl(workstationEnum.中间市级课题研究进度), body, headers);
// let cityResearchSouorce:any = cityResearchData || defaultConf.CityResearchDefault;
let cityResearchSouorce = defaultConf.CityResearchDefault;
let cityResearch = {"开题报告":"", "中期报告":"", "结题报告":""};
cityResearchSouorce["data"].forEach( item => {
......@@ -96,10 +96,10 @@ export async function getCityResearchProgress(id) {
export async function getSubjectStuScore(id) {
let {body, headers} = getParameter(workstationEnum.中间各学科学生得分, workstationTokenEnum.中间各学科学生得分);
let subjectStuScoreData:any = await post(getWorkstationUrl(workstationEnum.中间各学科学生得分), body, headers);
let subjectStuScoreSouorce:any = subjectStuScoreData || defaultConf.SubjectStuScoreDefault;
// let subjectStuScoreSouorce = defaultConf.SubjectStuScoreDefault;
// let {body, headers} = getParameter(workstationEnum.中间各学科学生得分, workstationTokenEnum.中间各学科学生得分);
// let subjectStuScoreData:any = await post(getWorkstationUrl(workstationEnum.中间各学科学生得分), body, headers);
// let subjectStuScoreSouorce:any = subjectStuScoreData || defaultConf.SubjectStuScoreDefault;
let subjectStuScoreSouorce = defaultConf.SubjectStuScoreDefault;
let subjectStuScore = {};
subjectStuScoreSouorce["data"].forEach( item => {
......@@ -120,10 +120,10 @@ export async function getSubjectStuScore(id) {
export async function getQuitReason(id) {
let {body, headers} = getParameter(workstationEnum.右侧退出原因分析, workstationTokenEnum.右侧退出原因分析);
let quitReasonData:any = await post(getWorkstationUrl(workstationEnum.右侧退出原因分析), body, headers);
let quitReasonSouorce:any = quitReasonData || defaultConf.QuitReasonDefault;
// let quitReasonSouorce = defaultConf.QuitReasonDefault;
// let {body, headers} = getParameter(workstationEnum.右侧退出原因分析, workstationTokenEnum.右侧退出原因分析);
// let quitReasonData:any = await post(getWorkstationUrl(workstationEnum.右侧退出原因分析), body, headers);
// let quitReasonSouorce:any = quitReasonData || defaultConf.QuitReasonDefault;
let quitReasonSouorce = defaultConf.QuitReasonDefault;
let quitReason = [];
quitReasonSouorce["data"].forEach( item => {
......@@ -138,10 +138,10 @@ export async function getQuitReason(id) {
export async function getResearchSubject(id) {
let {body, headers} = getParameter(workstationEnum.右侧研究课题, workstationTokenEnum.右侧研究课题);
let researchSubjectData:any = await post(getWorkstationUrl(workstationEnum.右侧研究课题), body, headers);
let researchSubjectSouorce:any = researchSubjectData || defaultConf.ResearchSubjectDefault;
// let researchSubjectSouorce = defaultConf.ResearchSubjectDefault;
// let {body, headers} = getParameter(workstationEnum.右侧研究课题, workstationTokenEnum.右侧研究课题);
// let researchSubjectData:any = await post(getWorkstationUrl(workstationEnum.右侧研究课题), body, headers);
// let researchSubjectSouorce:any = researchSubjectData || defaultConf.ResearchSubjectDefault;
let researchSubjectSouorce = defaultConf.ResearchSubjectDefault;
let researchSubject = [
{key:"年份", values:[]},
......
......@@ -25,10 +25,10 @@ export function gzzTableData() {
let blockDataList = onceSheetBecomeOfblockData('kyszhglpt.xlsx', '青少年科技创新实践工作站');
let keyValueOrTitleList = ["学科老师分布","工作站类型分布","历年工作站类型分布","选拔情况","课程资源","培训活动","新增课程资源数","新增培训活动数","课程资源类型数","培训活动类型数","课程资源特色课题","培训活动特色课题","工作站分布键值","历年工作站分布键值","日常管理","学生考勤分析","课题研究","优秀学员","顶部","各工作站学生数量", "学科老师数量"];//适配 饼图 键值以及需要多个key的
let keyValueOrTitleList = ["作品奖项","学科老师分布","工作站类型分布","历年工作站类型分布","选拔情况","课程资源","培训活动","新增课程资源数","新增培训活动数","课程资源类型数","培训活动类型数","课程资源特色课题","培训活动特色课题","工作站分布键值","历年工作站分布键值","日常管理","学生考勤分析","课题研究","优秀学员","顶部","各工作站学生数量", "学科老师数量"];//适配 饼图 键值以及需要多个key的
let barChartList = ["历年招募学员情况","学生来源分布","课程历年资源数","培训历年资源数","各工作站学生数量分析","日常管理趋势","专业匹配率分析"]; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["作品奖项","课题研究列表"];//适配 表格
let decollatePlanarList =["课题研究列表"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
......
......@@ -26,7 +26,7 @@ function packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList,
export function weeklyPlayTableData() {
let blockDataList = onceSheetBecomeOfblockData('上海市学生素质教育优质资源平台.xlsx', 'Sheet1');
let blockDataList = onceSheetBecomeOfblockData('kyszhglpt.xlsx', '周周播');
let keyValueOrTitleList = ['课程来源情况', '课程适用年级段', '课程领域分布', '课程投放平台', '基础数据', '课程播放情况', '课程反馈', '在线公益课程评分', '热门标签']; //适配 饼图 键值以及需要多个Key的
let barChartList = ['课程类别(艺术)', '平台播放量趋势', '平台播放量趋势(直播)', '平台播放量趋势(回放)', '课程收藏/转发量', '课程类型热度排行(本周)']; //适配 柱状图 折线图
......@@ -40,7 +40,7 @@ export function weeklyPlayTableData() {
export function curriculumTableData() {
let blockDataList = onceSheetBecomeOfblockData('上海市学生素质教育优质资源平台.xlsx', 'Sheet2');
let blockDataList = onceSheetBecomeOfblockData('kyszhglpt.xlsx', '直播数据');
let keyValueOrTitleList = ['课程数据']; //适配 饼图 键值以及需要多个Key的
let barChartList = []; //适配 柱状图 折线图
......
......@@ -23,7 +23,7 @@ function packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList,
export function ysysdaTableData() {
let blockDataList = onceSheetBecomeOfblockData('kyszhglpt.xlsx', '一生一世档案');
let blockDataList = onceSheetBecomeOfblockData('kyszhglpt.xlsx', '实践工作站弹窗');
let keyValueOrTitleList = ["优秀学生信息表", "工作信息表","阶段感想", "学习方法分析","考情分析","退出原因分析","作品奖项"];//适配 饼图 键值以及需要多个key的
let barChartList = ["原因内容汇总", "反馈与评估"]; //适配 柱状图 折线图
......
......@@ -25,21 +25,13 @@ export function zyhdbzTableData() {
let blockDataList = onceSheetBecomeOfblockData('kyszhglpt.xlsx', '重要活动保障');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let keyValueOrTitleList = ["活动列表", "访问流量趋势"];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
// let stringList = [];
// let decollatePlanarList =[];//适配 表格d
// let titltListConfig = {};
blockDataList.forEach(info => {
if (info.blockTitle.indexOf("趋势") > -1) {
barChartList.push(info.blockTitle);
} else {
keyValueOrTitleList.push(info.blockTitle);
}
});
let stringList = [];
let decollatePlanarList =[];//适配 表格d
let titltListConfig = {};
let result = packageDataProcess(blockDataList, {}, keyValueOrTitleList, barChartList, [], []);
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
......
import { planarArrDecollateForIndex, planarArrDeconstruct, planarArrForObjectList } from "../../dataPackage/planaryArrayAnalysis";
import { onceSheetBecomeOfblockData } from "../../util/analysisExcel";
function packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList) {
let result = {};
for (let i = 0; i < blockDataList.length; i++) {
let {blockData, blockTitle} = blockDataList[i];
if (keyValueOrTitleList.indexOf(blockTitle) > -1) {
let titleList = titltListConfig[blockTitle] || [];
result[blockTitle] = planarArrForObjectList(blockData, 0, titleList);
}
else if (barChartList.indexOf(blockTitle) > -1) {
result[blockTitle] = planarArrDeconstruct(blockData);
}
else if (stringList.indexOf(blockTitle) > -1) result[blockTitle] = planarArrForObjectList(blockData);
else if (decollatePlanarList.indexOf(blockTitle) > -1) result[blockTitle] = planarArrDecollateForIndex(blockData);
}
return result;
}
export function zzbznbTableData() {
let blockDataList = onceSheetBecomeOfblockData('kyszhglpt.xlsx', '周周播_100周年版');
let keyValueOrTitleList = ["课程来源情况","课程适用年级段","课程领域分布","课程数分析","搜索栏分析","课程信息","课程反馈数据","课程播放情况","热门课程排行top10(本周)","热门标签","课程反馈","在线公益课程评分"];//适配 饼图 键值以及需要多个key的
let barChartList = ["课程类别(艺术)","ESCSA课程投放平台","中国电信课程投放平台","东方网教育课程投放平台","bilibili课程投放平台","课程观看趋势(本周)","平台播放量趋势","课程收藏/转发量","课程类型热度排行"]; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =[];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
\ No newline at end of file
import { planarArrDecollateForIndex, planarArrDeconstruct, planarArrForObjectList } from "../../dataPackage/planaryArrayAnalysis";
import { onceSheetBecomeOfblockData } from "../../util/analysisExcel";
function packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList) {
let result = {};
for (let i = 0; i < blockDataList.length; i++) {
let {blockData, blockTitle} = blockDataList[i];
if (keyValueOrTitleList.indexOf(blockTitle) > -1) {
let titleList = titltListConfig[blockTitle] || [];
result[blockTitle] = planarArrForObjectList(blockData, 0, titleList);
}
else if (barChartList.indexOf(blockTitle) > -1) {
result[blockTitle] = planarArrDeconstruct(blockData);
}
else if (stringList.indexOf(blockTitle) > -1) result[blockTitle] = planarArrForObjectList(blockData);
else if (decollatePlanarList.indexOf(blockTitle) > -1) result[blockTitle] = planarArrDecollateForIndex(blockData);
}
return result;
}
export function zzbrcbTableData() {
let blockDataList = onceSheetBecomeOfblockData('kyszhglpt.xlsx', '周周播_日程版');
let keyValueOrTitleList = ["课程类别_艺术","ESCSA课程投放平台","课程来源情况","课程适用年级段","课程领域分布","课程数分析","搜索栏分析","课程信息","课程反馈数据","课程播放情况","热门课程排行top10_本周",
"热门标签","课程反馈","在线公益课程评分"];//适配 饼图 键值以及需要多个key的
let barChartList = ["中国电信课程投放平台","东方网教育课程投放平台","bilibili课程投放平台",
"9月平台播放量趋势","课程收藏/转发量"]; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =[];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
\ No newline at end of file
......@@ -82,7 +82,6 @@ let tokenInfoQueue = {};
//结构 sub: {lastTokenMs, access_token, refresh_token, isAdmin}
//登录成功后添加tokne
export function addTokenInfo(sub, lastTokenMs, access_token, refresh_token, isAdmin) {
tokenInfoQueue[sub] = {
lastTokenMs, access_token, refresh_token, isAdmin
};
......@@ -132,7 +131,8 @@ export function checkAdminPermission(userId) {
//校验是否有权限到大屏
export function checkPagePermission(userId, page) {
let { pm } = userQueue[userId];
if (pm && pm[page] ) return true
return false
// let { pm } = userQueue[userId];
return true
// if (pm && pm[page] ) return true
// return false
}
\ No newline at end of file
......@@ -60,6 +60,7 @@ export function getOnceYBarChartOut(title, data, stepCount?) {
* @returns {title:标题, xUnit:x轴单位, leftYUnit:左边单位, rightYUnit:右边单位, leftYMinValue:左边最小值, leftYMaxValue:左边最大值, leftYStepValue:左边间隔,
* rightYMinValue:右边最小值, rightYMaxValue:右边最大值, rightYStepValue:右边间隔,
* dataList:[{subTitle:数据名称, total:总数, unit:单位, subDataList:[{name:y轴名称, value:值, unit:单位}] }] }
*
* 入参data里面的dataInfo中的unit可以为空 会读取yUnit 所以入参优先度 yUnit > unit 默认值都是空字符串
*/
export function getDoubleYBarChartOut(title, data, stepCountInfo?) {
......@@ -146,10 +147,10 @@ export function getKeyValueOut(title, data) {
let {key, value, unit} = info;
let typeChangeValue;
if (!isNaN(value)) {
typeChangeValue = parseFloat(value);
typeChangeValue = Math.round(parseFloat(value) * 100) /100;
total+= typeChangeValue;
} else typeChangeValue = value;
dataList.push({name:key, value: Math.round(typeChangeValue * 100) /100, unit});
dataList.push({name:key, value: typeChangeValue, unit});
});
return {title, total: Math.round(total * 100) /100, count:dataList.length, dataList};
......
/**
* 申生康接口返回格式处理
*/
/**
* 处理学生和教职工的性别占比
* @param rawData
* @returns
*/
export function formatGenderData(rawData: any[]) {
let studentData = rawData.filter(item => item.rylx === "学生");
let teacherData = rawData.filter(item => item.rylx === "教职工");
let formatItem = (item: any) => {
let genderKey = item.gender === "男" ? "男生" : "女生";
let percent = parseFloat(item.value).toFixed(2); // 保留一位小数
let value = `${item.nums}${percent}%)`;
return { key: genderKey, value };
};
// 确保男生在前、女生在后
let sortByGender = (arr: any[]) => arr.sort((a, b) => (a.gender === "男" ? -1 : 1));
let xbzbxs = sortByGender(studentData).map(formatItem);
let xbzbls = sortByGender(teacherData).map(formatItem);
return { xbzbxs, xbzbls };
}
/**
* 处理学段人数分析
* @param rawData
* @returns
*/
export function formatXDRSFX(rawData: any[]) {
let order = ["托幼", "小学", "初中", "高中", "大学", "其他"];
let students = rawData
.filter(item => item.rylx === "学生")
.map(item => ({ name: item.xxlx, value: parseInt(item.nums), unit: "" }));
let teachers = rawData
.filter(item => item.rylx === "教职工")
.map(item => ({ name: item.xxlx, value: parseInt(item.nums), unit: "" }));
let sortByOrder = (arr: { name: string; value: number; unit: string }[]) =>
arr.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));
return {
xxs: sortByOrder(students),
jzg: sortByOrder(teachers)
};
}
/**
* 处理各区学生老师机构数
* @param rawData
* @returns
*/
export function formatDistrictData(rawData: any[]) {
let students = rawData.map(item => ({ key: item.xzqmc, value: parseInt(item.stu_count) }));
let teachers = rawData.map(item => ({ key: item.xzqmc, value: parseInt(item.tea_count) }));
let orgs = rawData.map(item => ({ key: item.xzqmc, value: parseInt(item.org_count) }));
let sortDesc = (arr: { key: string; value: number }[]) =>
arr.sort((a, b) => b.value - a.value).map(item => ({ key: item.key, value: `${item.value}人` }));
return {
"gqxssfb": sortDesc(students),
"gqjssfb": sortDesc(teachers),
"gqjgsfb": sortDesc(orgs)
};
}
/**
* 处理近一周上报率
* @param data
* @returns
*/
export function getLastWeekReportRate(data: any[]) {
// 按日期降序排序
let sorted = [...data].sort((a, b) => new Date(b.rq).getTime() - new Date(a.rq).getTime());
// 取最近7天
let last7Days = sorted.slice(0, 7);
// 按日期升序排序
last7Days.sort((a, b) => new Date(a.rq).getTime() - new Date(b.rq).getTime());
return last7Days.map(item => ({
key: item.rq.slice(5).replace('-', '.'), // "2026-05-20" -> "05.20"
value: item.jrsbl
}));
}
/**
* 处理学生和教职工因病缺课人数
* @param rawData
* @returns
*/
export function formatAbsenceDetail(data: any[]) {
let student = data.find(item => item.name === "学生");
let teacher = data.find(item => item.name === "教职工");
return {
xsjqybqkrs: [
{ key: "因病缺课人数", value: student ? parseInt(student.ybqk) : 0 },
{ key: "其他缺课人数", value: student ? parseInt(student.qtqk) : 0 }
],
jzgjqybqkrs: [
{ key: "因病缺课人数", value: teacher ? parseInt(teacher.ybqk) : 0 },
{ key: "其他缺课人数", value: teacher ? parseInt(teacher.qtqk) : 0 }
]
};
}
/**
* 处理学生和教职工近期缺课原因占比
* @param data
* @returns
*/
export function formatAbsenceReason(data: any[]) {
let typeMap: Record<string, string> = {
"症状信息": "症状",
"疾病信息": "疾病",
"伤害信息": "伤害",
"其他原因": "其他"
};
let students = data.filter(item => item.rylx === "学生");
let teachers = data.filter(item => item.rylx === "教职工");
let buildResult = (items: any[]) => {
return items.map(item => ({
key: typeMap[item.fl],
value: item.nums,
ratio: parseFloat(item.ratio) // 如需整数:Math.round(parseFloat(item.ratio))
}));
};
// 按自定义顺序排序:症状、疾病、伤害、其他
let order = ["症状", "疾病", "伤害", "其他"];
let sortByOrder = (arr: { key: string; value: number }[]) =>
arr.sort((a, b) => order.indexOf(a.key) - order.indexOf(b.key));
return {
jqqkyyzb: sortByOrder(buildResult(students)),
jzgjqqkyyzb: sortByOrder(buildResult(teachers))
};
}
/**
* 处理病症人数分析
* @param rawData
* @returns
*/
export function formatSymptomData(rawData: any[]) {
let sorted = [...rawData].sort((a, b) => Number(b.zrs) - Number(a.zrs));
let zrs = sorted.map(item => ({
key: item.xx,
value: Number(item.zrs)
}));
let xfbls = sorted.map(item => ({
key: item.xx,
value: Number(item.xfbls)
}));
return { zrs, xfbls };
}
/**
* 病发时间情况分析
* @param data
* @returns
*/
export function formatBFSJQKFX(data: any[]) {
let schoolTypes = ["托幼", "小学", "初中", "高中", "大学"];
let timeKeys = ["非教学日", "放学后", "未到校", "入校后"];
let outputKeyMap: Record<string, string> = {
"非教学日": "非教学日",
"放学后": "放学日",
"未到校": "未到校",
"入校后": "入校后"
};
// 初始化每个学段的数据
let schoolData: Record<string, Record<string, number>> = {};
schoolTypes.forEach(school => {
schoolData[school] = {};
timeKeys.forEach(tk => {
schoolData[school][tk] = 0;
});
});
// 填充数据
data.forEach(item => {
let school = item.xxlx;
let timeName = item.name;
let value = parseInt(item.nums);
if (schoolTypes.includes(school) && timeKeys.includes(timeName)) {
schoolData[school][timeName] = value;
}
});
// 计算全部
let totalData: Record<string, number> = {};
timeKeys.forEach(tk => { totalData[tk] = 0; });
schoolTypes.forEach(school => {
timeKeys.forEach(tk => {
totalData[tk] += schoolData[school][tk];
});
});
// 构建输出
let dataList: any = {};
// 添加全部
dataList["全部"] = timeKeys.map(tk => ({
key: outputKeyMap[tk],
value: totalData[tk]
}));
// 添加各学段
schoolTypes.forEach(school => {
dataList[school] = timeKeys.map(tk => ({
key: outputKeyMap[tk],
value: schoolData[school][tk]
}));
});
return dataList;
}
/**
* 处理顶部缺勤
* @param data
* @returns
*/
export function formatAbsenceTotal(data: any[]) {
let studentItem = data.find(item => item.type === "学生");
let teacherItem = data.find(item => item.type === "教职工");
let qkzrs = [
{
key: "缺课总人数",
ybqkljxs: studentItem ? parseInt(studentItem.nums) : 0,
drxz: studentItem ? parseInt(studentItem.nums) : 0
}
];
let qqjzg = [
{
key: "缺勤教职工",
ybqkljxs: teacherItem ? parseInt(teacherItem.nums) : 0,
drxz: teacherItem ? parseInt(teacherItem.nums) : 0
}
];
return { qkzrs, qqjzg };
}
/**
* 处理顶部缺课学生数
* @param data
* @returns
*/
export function formatQkxss(data: any[]) {
let order = ["托幼", "小学", "初中", "高中", "大学"];
let map: Record<string, number> = {};
data.forEach(item => {
map[item.xxlx] = parseInt(item.nums);
});
let result = order.map(school => ({
key: school,
ybqkljxs: map[school] || 0,
drxz: 0 // 无当日新增数据,默认为0
}));
return result;
}
import { initActivityQueue } from "./data/interface/activeQueueData";
import { initBaiDuToken } from "./data/interface/baiduStats";
import { getAccessToken, getRefreshToken } from "./data/interface/baiduyun";
import { initInterfaceData, post } from "./data/interface/cronJob";
import { initOperationLog } from "./biz/operationLogService";
import { getUserInfo } from "./biz/user";
import { initToken } from "./data/interface/data";
import { initQueueData } from "./data/interface/queueData";
import * as healthInformation from "./data/interface/secondPhase/healthInformation";
......@@ -20,11 +18,12 @@ async function lanuch() {
}
initUser();
// initActivityQueue();
// test();
httpServer.createServer(getPort());
// 初始化操作日志
// initOperationLog();
// console.log("操作日志系统初始化完成");
}
async function test() {
......
/**
* 操作日志中间件
*/
import { addOperationLog } from "../biz/operationLogService";
// 操作日志中间件
export function operationLogger(req, res, next) {
const originalJson = res.json;
const startTime = Date.now();
res.json = function(data) {
// 恢复原始方法
res.json = originalJson;
// 计算请求处理时间
const responseTime = Date.now() - startTime;
// 根据状态码判断操作是否成功
const isSuccess = res.statusCode < 400;
// 记录操作日志(无论成功失败都记录)
recordOperationLog(req, data, isSuccess, responseTime);
// 调用原始方法
return originalJson.call(this, data);
};
next();
}
// 记录操作日志
function recordOperationLog(req, responseData, isSuccess, responseTime) {
try {
const routeConfig = getRouteConfig(req.path, req.method);
if (!routeConfig) {
// 如果没有配置映射,不记录
console.log(`未配置路由映射: ${req.method} ${req.path}`);
return;
}
// 从请求中获取用户信息
const userName = getUserNameFromRequest(req);
// 构建操作描述
let description = routeConfig.description;
// 根据响应数据动态调整描述
if (responseData) {
if (responseData.message) {
description += ` - ${responseData.message}`;
}
// 如果操作失败,添加错误信息
if (!isSuccess && responseData.error) {
description += ` - 错误: ${responseData.error}`;
}
}
// 添加响应时间信息
description += ` (${responseTime}ms)`;
// 记录日志,包含成功状态
addOperationLog(userName, routeConfig.action, routeConfig.module, description, isSuccess);
console.log(`操作日志记录成功: ${userName} - ${routeConfig.action} - ${routeConfig.module} - 状态: ${isSuccess ? '成功' : '失败'}`);
} catch (error) {
console.log("记录操作日志时出错:", error);
}
}
// 获取路由配置
function getRouteConfig(path: string, method: string) {
const routeConfigs = {
// 数据治理体系
'/interface/sjzltx': {
action: '数据治理体系查询',
module: '数据治理',
description: '获取数据治理体系数据'
},
// 整体运行态势
'/interface/ztyxts': {
action: '整体运行态势查询',
module: '运行监控',
description: '获取整体运行态势数据'
},
// 重要活动保障
'/interface/zyhdbz': {
action: '重要活动保障查询',
module: '活动保障',
description: '获取重要活动保障数据'
},
'/interface/zyhdbzpop': {
action: '重要活动保障弹窗查询',
module: '活动保障',
description: '获取重要活动保障弹窗数据'
},
// 权限管理
'/interface/permission/getlist': {
action: '权限列表查询',
module: '权限管理',
description: '获取权限列表'
},
'/interface/permission/updatepermission': {
action: '权限更新',
module: '权限管理',
description: '更新用户权限'
},
'/interface/permission/checkpage': {
action: '页面权限检查',
module: '权限管理',
description: '检查页面访问权限'
},
'/interface/permission/checkadmin': {
action: '管理员权限检查',
module: '权限管理',
description: '检查管理员权限'
},
'/interface/permission/checkhomepage': {
action: '首页权限检查',
module: '权限管理',
description: '检查首页访问权限'
},
// 用户认证
'/interface/gettoken': {
action: '获取用户令牌',
module: '用户认证',
description: '获取用户访问令牌'
},
// 二期功能 - 健康信息
'/interface/secondPhase/gradehealth': {
action: '分级健康信息查询',
module: '健康管理',
description: '获取分级健康信息数据'
},
// 三期功能 - 周周播
'/interface/weeklyplay': {
action: '周周播查询',
module: '教学资源',
description: '获取周周播数据'
},
'/interface/curriculumpop': {
action: '课程弹窗查询',
module: '教学资源',
description: '获取课程弹窗数据'
},
'/interface/dropdown': {
action: '下拉选项查询',
module: '教学资源',
description: '获取下拉选项数据'
},
// 三期功能 - 实践工作站
'/interface/qsnkjcxsjgzz': {
action: '青少年科技创新工作站查询',
module: '科技创新',
description: '获取青少年科技创新工作站数据'
},
// 三期功能 - 一生一档案
'/interface/ysysda': {
action: '一生一档案查询',
module: '学生档案',
description: '获取一生一档案数据'
},
// 三期功能 - 重要活动保障列表
'/interface/zyhdbzlist': {
action: '重要活动保障列表查询',
module: '活动保障',
description: '获取重要活动保障列表数据'
},
// 三期功能 - 教育优质资源
'/interface/jyyzzy': {
action: '教育优质资源查询',
module: '教学资源',
description: '获取教育优质资源数据'
},
'/interface/jyyzzy/kcsj': {
action: '课程数据查询',
module: '教学资源',
description: '获取课程数据'
},
// 三期功能 - 科学研究院
'/interface/kxyjy': {
action: '科学研究院查询',
module: '科研管理',
description: '获取科学研究院数据'
},
'/interface/kxyjy/map': {
action: '科研地图查询',
module: '科研管理',
description: '获取科学研究院地图数据'
},
// 三期功能 - 申申康
'/interface/ssk': {
action: '申申康查询',
module: '健康服务',
description: '获取申申康数据'
},
'/interface/ssk/jrsbxx': {
action: '今日上报信息查询',
module: '健康服务',
description: '获取今日上报信息'
},
'/interface/ssk/cityname': {
action: '城市名称查询',
module: '健康服务',
description: '获取城市名称数据'
},
'/interface/ssk/map': {
action: '健康地图查询',
module: '健康服务',
description: '获取健康地图数据'
},
'/interface/ssk/gfjbqs': {
action: '高峰就诊趋势查询',
module: '健康服务',
description: '获取高峰就诊趋势数据'
},
'/interface/ssk/jjxmz': {
action: '紧急项目查询',
module: '健康服务',
description: '获取紧急项目数据'
},
'/interface/ssk/ybqkqs': {
action: '医保情况趋势查询',
module: '健康服务',
description: '获取医保情况趋势数据'
},
// 认证回调
'/interface/auth/accesstoken': {
action: '认证回调处理',
module: '用户认证',
description: '处理认证回调获取访问令牌'
},
//获取操作日志列表
'/interface/operationlog': {
action: '操作日志列表查询',
module: '系统接口',
description: '获取操作日志列表数据'
},
// 测试接口
'/test/secondPhase/workstation': {
action: '工作站测试',
module: '测试接口',
description: '工作站功能测试'
}
};
// const routeConfigs = {
// // 数据治理体系
// '/sjzltx': {
// action: '数据治理体系查询',
// module: '数据治理',
// description: '获取数据治理体系数据'
// },
// // 整体运行态势
// '/ztyxts': {
// action: '整体运行态势查询',
// module: '运行监控',
// description: '获取整体运行态势数据'
// },
// // 重要活动保障
// '/zyhdbz': {
// action: '重要活动保障查询',
// module: '活动保障',
// description: '获取重要活动保障数据'
// },
// '/zyhdbzpop': {
// action: '重要活动保障弹窗查询',
// module: '活动保障',
// description: '获取重要活动保障弹窗数据'
// },
// // 权限管理
// '/permission/getlist': {
// action: '权限列表查询',
// module: '权限管理',
// description: '获取权限列表'
// },
// '/permission/updatepermission': {
// action: '权限更新',
// module: '权限管理',
// description: '更新用户权限'
// },
// '/permission/checkpage': {
// action: '页面权限检查',
// module: '权限管理',
// description: '检查页面访问权限'
// },
// '/permission/checkadmin': {
// action: '管理员权限检查',
// module: '权限管理',
// description: '检查管理员权限'
// },
// '/permission/checkhomepage': {
// action: '首页权限检查',
// module: '权限管理',
// description: '检查首页访问权限'
// },
// // 用户认证
// '/gettoken': {
// action: '获取用户令牌',
// module: '用户认证',
// description: '获取用户访问令牌'
// },
// // 二期功能 - 健康信息
// '/secondPhase/gradehealth': {
// action: '分级健康信息查询',
// module: '健康管理',
// description: '获取分级健康信息数据'
// },
// // 三期功能 - 周周播
// '/weeklyplay': {
// action: '周周播查询',
// module: '教学资源',
// description: '获取周周播数据'
// },
// '/curriculumpop': {
// action: '课程弹窗查询',
// module: '教学资源',
// description: '获取课程弹窗数据'
// },
// '/dropdown': {
// action: '下拉选项查询',
// module: '教学资源',
// description: '获取下拉选项数据'
// },
// // 三期功能 - 实践工作站
// '/qsnkjcxsjgzz': {
// action: '青少年科技创新工作站查询',
// module: '科技创新',
// description: '获取青少年科技创新工作站数据'
// },
// // 三期功能 - 一生一档案
// '/ysysda': {
// action: '一生一档案查询',
// module: '学生档案',
// description: '获取一生一档案数据'
// },
// // 三期功能 - 重要活动保障列表
// '/zyhdbzlist': {
// action: '重要活动保障列表查询',
// module: '活动保障',
// description: '获取重要活动保障列表数据'
// },
// // 三期功能 - 教育优质资源
// '/jyyzzy': {
// action: '教育优质资源查询',
// module: '教学资源',
// description: '获取教育优质资源数据'
// },
// '/jyyzzy/kcsj': {
// action: '课程数据查询',
// module: '教学资源',
// description: '获取课程数据'
// },
// // 三期功能 - 科学研究院
// '/kxyjy': {
// action: '科学研究院查询',
// module: '科研管理',
// description: '获取科学研究院数据'
// },
// '/kxyjy/map': {
// action: '科研地图查询',
// module: '科研管理',
// description: '获取科学研究院地图数据'
// },
// // 三期功能 - 申申康
// '/ssk': {
// action: '申申康查询',
// module: '健康服务',
// description: '获取申申康数据'
// },
// '/ssk/jrsbxx': {
// action: '今日上报信息查询',
// module: '健康服务',
// description: '获取今日上报信息'
// },
// '/ssk/cityname': {
// action: '城市名称查询',
// module: '健康服务',
// description: '获取城市名称数据'
// },
// '/ssk/map': {
// action: '健康地图查询',
// module: '健康服务',
// description: '获取健康地图数据'
// },
// '/ssk/gfjbqs': {
// action: '高峰就诊趋势查询',
// module: '健康服务',
// description: '获取高峰就诊趋势数据'
// },
// '/ssk/jjxmz': {
// action: '紧急项目查询',
// module: '健康服务',
// description: '获取紧急项目数据'
// },
// '/ssk/ybqkqs': {
// action: '医保情况趋势查询',
// module: '健康服务',
// description: '获取医保情况趋势数据'
// },
// // 认证回调
// '/auth/accesstoken': {
// action: '认证回调处理',
// module: '用户认证',
// description: '处理认证回调获取访问令牌'
// },
// //获取操作日志列表
// '/permission/operationlog': {
// action: '操作日志列表查询',
// module: '系统接口',
// description: '获取操作日志列表数据'
// },
// // 测试接口
// '/test/secondPhase/workstation': {
// action: '工作站测试',
// module: '测试接口',
// description: '工作站功能测试'
// }
// };
// 精确匹配优先
if (routeConfigs[path]) {
return routeConfigs[path];
}
// 动态路径匹配
const pathSegments = path.split('/');
// 匹配带参数的路径
for (const route in routeConfigs) {
const routeSegments = route.split('/');
if (routeSegments.length === pathSegments.length) {
let match = true;
for (let i = 0; i < routeSegments.length; i++) {
if (routeSegments[i] !== pathSegments[i] && !routeSegments[i].includes(':')) {
match = false;
break;
}
}
if (match) {
return routeConfigs[route];
}
}
}
// 通用接口匹配
if (path.startsWith('/interface/')) {
return {
action: '接口访问',
module: '业务接口',
description: `访问业务接口: ${method} ${path}`
};
}
if (path.startsWith('/test/')) {
return {
action: '测试接口访问',
module: '测试接口',
description: `访问测试接口: ${method} ${path}`
};
}
// 默认配置
return {
action: '系统访问',
module: '系统接口',
description: `访问系统接口: ${method} ${path}`
};
}
// 从请求中获取用户名
function getUserNameFromRequest(req) {
// 从token中解析用户信息
if (req.user && req.user.userName) {
return req.user.userName;
}
// 从请求头中获取
if (req.headers['username']) {
return req.headers['username'];
}
// 从查询参数中获取(开发测试用)
if (req.query.username) {
return req.query.username;
}
// 从请求体中获取
if (req.body && req.body.userName) {
return req.body.userName;
}
return '未知用户';
}
......@@ -2,12 +2,12 @@ import express = require('express');
import bodyParser = require('body-parser');
import routers = require('../routers/router');
import compression = require('compression');
import { encryptionReturn } from '../middleware/encryptionReturn';
import { getEnv } from '../serverConfig';
import * as fallback from 'express-history-api-fallback';
import fallback from 'express-history-api-fallback';
import * as path from "path";
import { watch } from '../middleware/watch';
import { httpErrorHandler } from '../middleware/httpErrorHandler';
import { operationLogger } from '../middleware/operationLogger';
import { FileMonitorService } from '../biz/fileMonitorService';
export class httpServer {
static createServer(port:number) {
......@@ -27,14 +27,25 @@ export class httpServer {
next();
}
});
httpServer.use(bodyParser.json({limit:"10kb"}));
httpServer.use(bodyParser.json({limit:"10mb"}));
httpServer.use(bodyParser.urlencoded({ extended: true, limit: "10mb" }));
httpServer.use(compression())
// 应用操作日志中间件到所有路由
httpServer.use(operationLogger);
httpServer.use(watch);
routers.setRouter(httpServer);
httpServer.use(httpErrorHandler);
// 启动文件监控服务
const fileMonitor = new FileMonitorService();
const userJsonPath = path.join(__dirname, '../../res/user.json');
fileMonitor.startMonitoring(userJsonPath);
console.log('文件监控服务已启动');
httpServer.use(express.static(path.join(__dirname, "../../img/")) );
const root = path.join(__dirname, "../../public/")
httpServer.use(express.static(root))
httpServer.use(fallback('index.html', { root }))
......
import * as asyncHandler from 'express-async-handler'
import asyncHandler = require('express-async-handler');
import * as sjzltxBiz from '../biz/sjzltx';
import * as ztyxtsBiz from '../biz/ztyxts';
import * as zyhdbzBiz from '../biz/zyhdbz';
import * as userBiz from '../biz/user';
import * as weeklyPlayBiz from '../biz/three/zzb';
import * as zzb_100znbBiz from '../biz/three/zzb_100znb';
import * as qsnkjcxsjgzzBiz from '../biz/three/qsnkjcxsjgzz';
import * as ysysdaBiz from '../biz/three/ysysda';
import * as zyhdbzListBiz from '../biz/three/zyhdbz';
import * as jyyzzyBiz from '../biz/three/jyyzzy';
import * as kxyjyBiz from '../biz/three/kxyjy';
import * as sskBiz from '../biz/three/ssk';
import * as weeklyPlayBiz from '../biz/three/weeklyPlay';
import * as logsBiz from '../biz/operationLogService';
import { adminPermission, checkToken, pagePermission } from '../middleware/sign';
//二期
import * as healthBiz from '../biz/secondPhase/healthInformation';
import * as workstationBiz from '../biz/secondPhase/workstation';
import * as workstationPopupBiz from '../biz/secondPhase/workstationPopup';
import * as authBiz from '../biz/auth';
export function setRouter(httpServer){
// httpServer.get('/interface/sjzltx', asyncHandler(sjzltxBiz.getData));
// httpServer.post('/interface/sjzltx', asyncHandler(sjzltxBiz.getData));
// httpServer.get('/interface/ztyxts', asyncHandler(ztyxtsBiz.getData));
// httpServer.post('/interface/ztyxts', asyncHandler(ztyxtsBiz.getData));
// httpServer.get('/interface/zyhdbz', asyncHandler(zyhdbzBiz.getData));
// httpServer.post('/interface/zyhdbz', asyncHandler(zyhdbzBiz.getData));
// httpServer.get('/interface/zyhdbzpop', asyncHandler(zyhdbzBiz.getPopData));
// httpServer.post('/interface/zyhdbzpop', asyncHandler(zyhdbzBiz.getPopData));
// // //分配权限
// httpServer.post('/interface/permission/getlist', checkToken, adminPermission, asyncHandler(userBiz.permissionList));
// httpServer.post('/interface/permission/updatepermission',checkToken, adminPermission, asyncHandler(userBiz.updatePermissions));
// //==二级页面
// httpServer.post('/interface/gettoken', asyncHandler(userBiz.getUserToken));
// httpServer.post('/interface/permission/checkpage', checkToken, pagePermission, asyncHandler(userBiz.checkPermissionForPage) );
// httpServer.post('/interface/permission/checkadmin', checkToken, pagePermission, asyncHandler(userBiz.checkPermissionForAdmin) );
// httpServer.post('/interface/permission/checkhomepage', checkToken, asyncHandler(userBiz.checkPermissionForHomePage) );
// //二期
// httpServer.get('/interface/secondPhase/gradehealth', checkToken, asyncHandler(healthBiz.getData));
// httpServer.get('/interface/secondPhase/workstation', checkToken, asyncHandler(workstationBiz.getData));
// httpServer.get('/interface/secondPhase/workstation/popup', asyncHandler(workstationPopupBiz.getData));
// httpServer.post('/interface/secondPhase/gradehealth', checkToken, asyncHandler(healthBiz.getData));
// httpServer.post('/interface/secondPhase/workstation', checkToken, asyncHandler(workstationBiz.getData));
// httpServer.post('/interface/secondPhase/workstation/popup', asyncHandler(workstationPopupBiz.getData));
// httpServer.get('/test/secondPhase/workstation', asyncHandler(workstationBiz.getTest));
// httpServer.post('/test/secondPhase/workstation', asyncHandler(workstationBiz.getTest));
//数据治理体系
httpServer.get('/sjzltx', asyncHandler(sjzltxBiz.getData));
httpServer.post('/sjzltx', asyncHandler(sjzltxBiz.getData));
......@@ -68,28 +34,23 @@ export function setRouter(httpServer){
httpServer.get('/zyhdbzpop', asyncHandler(zyhdbzBiz.getPopData));
httpServer.post('/zyhdbzpop', asyncHandler(zyhdbzBiz.getPopData));
// //分配权限
httpServer.post('/interface/permission/getlist', checkToken, adminPermission, asyncHandler(userBiz.permissionList));
httpServer.post('/interface/permission/updatepermission',checkToken, adminPermission, asyncHandler(userBiz.updatePermissions));
//==二级页面
//=========二级页面
httpServer.post('/gettoken', asyncHandler(userBiz.getUserToken));
httpServer.post('/permission/checkpage', pagePermission, asyncHandler(userBiz.checkPermissionForPage) );
httpServer.post('/permission/checkadmin', pagePermission, asyncHandler(userBiz.checkPermissionForAdmin) );
// httpServer.post('/permission/checkpage', pagePermission, asyncHandler(userBiz.checkPermissionForPage) );
// httpServer.post('/permission/checkadmin', pagePermission, asyncHandler(userBiz.checkPermissionForAdmin) );
httpServer.post('/permission/checkpage', asyncHandler(userBiz.checkPermissionForPage) );
httpServer.post('/permission/checkadmin', asyncHandler(userBiz.checkPermissionForAdmin) );
httpServer.post('/permission/checkhomepage', asyncHandler(userBiz.checkPermissionForHomePage) );
//二期
// httpServer.get('/secondPhase/gradehealth', asyncHandler(healthBiz.getData));
// httpServer.post('/secondPhase/gradehealth', asyncHandler(healthBiz.getData));
httpServer.get('/secondPhase/gradehealth', asyncHandler(healthBiz.getData));
httpServer.post('/secondPhase/gradehealth', asyncHandler(healthBiz.getData));
httpServer.get('/secondPhase/workstation', asyncHandler(workstationBiz.getData));
httpServer.post('/secondPhase/workstation', asyncHandler(workstationBiz.getData));
httpServer.get('/secondPhase/workstation/popup', asyncHandler(workstationPopupBiz.getData));
httpServer.post('/secondPhase/workstation/popup', asyncHandler(workstationPopupBiz.getData));
// httpServer.get('/test/secondPhase/workstation', asyncHandler(workstationBiz.getTest));
// httpServer.post('/test/secondPhase/workstation', asyncHandler(workstationBiz.getTest));
//三期
//周周播
httpServer.get('/weeklyplay', asyncHandler(weeklyPlayBiz.getData));
......@@ -100,9 +61,6 @@ export function setRouter(httpServer){
httpServer.post('/dropdown', asyncHandler(weeklyPlayBiz.dropDown));
//2024-12-28
//周周播 success
httpServer.post('/zzb_100znb', asyncHandler(zzb_100znbBiz.getData));
httpServer.get('/zzb_100znb', asyncHandler(zzb_100znbBiz.getData));
//实践工作站 success
httpServer.post('/qsnkjcxsjgzz', asyncHandler(qsnkjcxsjgzzBiz.getData));
httpServer.get('/qsnkjcxsjgzz', asyncHandler(qsnkjcxsjgzzBiz.getData));
......@@ -119,9 +77,19 @@ export function setRouter(httpServer){
httpServer.post('/jyyzzy/kcsj', asyncHandler(jyyzzyBiz.getKcsj));
httpServer.get('/jyyzzy/kcsj', asyncHandler(jyyzzyBiz.getKcsj));
//科学研究院 success
httpServer.post('/kxyjy', asyncHandler(kxyjyBiz.getData));//弃用
httpServer.get('/kxyjy', asyncHandler(kxyjyBiz.getData));//弃用
httpServer.post('/kxyjy', asyncHandler(kxyjyBiz.getData));
httpServer.get('/kxyjy', asyncHandler(kxyjyBiz.getData));
//科学研究院地图
httpServer.post('/kxyjy/map', asyncHandler(kxyjyBiz.getMap));
httpServer.get('/kxyjy/map', asyncHandler(kxyjyBiz.getMap));
//申申康 名称 success
httpServer.post('/ssk', asyncHandler(sskBiz.getData));
httpServer.get('/ssk', asyncHandler(sskBiz.getData));
httpServer.post('/ssk/jrsbxx', asyncHandler(sskBiz.getJrsbxx));
httpServer.get('/ssk/jrsbxx', asyncHandler(sskBiz.getJrsbxx));
httpServer.post('/ssk/cityname', asyncHandler(sskBiz.getCityName));
httpServer.get('/ssk/cityname', asyncHandler(sskBiz.getCityName));
......@@ -136,4 +104,23 @@ export function setRouter(httpServer){
httpServer.post('/ssk/ybqkqs', asyncHandler(sskBiz.getYbqkqs));
httpServer.get('/ssk/ybqkqs', asyncHandler(sskBiz.getYbqkqs));
//2025统一认证调整
httpServer.post('/auth/accesstoken', asyncHandler(authBiz.handleAuthCallback));
httpServer.get('/auth/accesstoken', asyncHandler(authBiz.handleAuthCallback));
// //分配权限
// httpServer.post('/permission/getlist', adminPermission, asyncHandler(userBiz.permissionList));
// httpServer.post('/permission/updatepermission', adminPermission, asyncHandler(userBiz.updatePermissions));
// //获取操作日志列表
// httpServer.post('/permission/operationlog', adminPermission, asyncHandler(logsBiz.getOperationLogList));
//分配权限
httpServer.post('/permission/getlist', asyncHandler(userBiz.permissionList));
httpServer.post('/permission/updatepermission', asyncHandler(userBiz.updatePermissions));
//获取操作日志列表
httpServer.post('/permission/operationlog', asyncHandler(logsBiz.getOperationLogList));
}
\ No newline at end of file
/**
* 线上环境使用这份路由配置
*/
import asyncHandler = require('express-async-handler');
import * as sjzltxBiz from '../biz/sjzltx';
import * as ztyxtsBiz from '../biz/ztyxts';
import * as zyhdbzBiz from '../biz/zyhdbz';
import * as userBiz from '../biz/user';
import * as qsnkjcxsjgzzBiz from '../biz/three/qsnkjcxsjgzz';
import * as ysysdaBiz from '../biz/three/ysysda';
import * as zyhdbzListBiz from '../biz/three/zyhdbz';
import * as jyyzzyBiz from '../biz/three/jyyzzy';
import * as kxyjyBiz from '../biz/three/kxyjy';
import * as sskBiz from '../biz/three/ssk';
import * as weeklyPlayBiz from '../biz/three/weeklyPlay';
import * as logsBiz from '../biz/operationLogService';
import { adminPermission, checkToken, pagePermission } from '../middleware/sign';
//二期
import * as healthBiz from '../biz/secondPhase/healthInformation';
import * as workstationBiz from '../biz/secondPhase/workstation';
import * as workstationPopupBiz from '../biz/secondPhase/workstationPopup';
import * as authBiz from '../biz/auth';
export function setRouter(httpServer){
// httpServer.get('/interface/sjzltx', asyncHandler(sjzltxBiz.getData));
// httpServer.post('/interface/sjzltx', asyncHandler(sjzltxBiz.getData));
// httpServer.get('/interface/ztyxts', asyncHandler(ztyxtsBiz.getData));
// httpServer.post('/interface/ztyxts', asyncHandler(ztyxtsBiz.getData));
// httpServer.get('/interface/zyhdbz', asyncHandler(zyhdbzBiz.getData));
// httpServer.post('/interface/zyhdbz', asyncHandler(zyhdbzBiz.getData));
// httpServer.get('/interface/zyhdbzpop', asyncHandler(zyhdbzBiz.getPopData));
// httpServer.post('/interface/zyhdbzpop', asyncHandler(zyhdbzBiz.getPopData));
// // //分配权限
// httpServer.post('/interface/permission/getlist', checkToken, adminPermission, asyncHandler(userBiz.permissionList));
// httpServer.post('/interface/permission/updatepermission',checkToken, adminPermission, asyncHandler(userBiz.updatePermissions));
// //==二级页面
// httpServer.post('/interface/gettoken', asyncHandler(userBiz.getUserToken));
// httpServer.post('/interface/permission/checkpage', checkToken, pagePermission, asyncHandler(userBiz.checkPermissionForPage) );
// httpServer.post('/interface/permission/checkadmin', checkToken, pagePermission, asyncHandler(userBiz.checkPermissionForAdmin) );
// httpServer.post('/interface/permission/checkhomepage', checkToken, asyncHandler(userBiz.checkPermissionForHomePage) );
// //二期
httpServer.get('/interface/secondPhase/gradehealth', checkToken, asyncHandler(healthBiz.getData));
httpServer.get('/interface/secondPhase/workstation', checkToken, asyncHandler(workstationBiz.getData));
httpServer.get('/interface/secondPhase/workstation/popup', asyncHandler(workstationPopupBiz.getData));
// httpServer.post('/interface/secondPhase/gradehealth', checkToken, asyncHandler(healthBiz.getData));
// httpServer.post('/interface/secondPhase/workstation', checkToken, asyncHandler(workstationBiz.getData));
// httpServer.post('/interface/secondPhase/workstation/popup', asyncHandler(workstationPopupBiz.getData));
// httpServer.get('/test/secondPhase/workstation', asyncHandler(workstationBiz.getTest));
// httpServer.post('/test/secondPhase/workstation', asyncHandler(workstationBiz.getTest));
//数据治理体系
httpServer.get('/interface/sjzltx', checkToken, asyncHandler(sjzltxBiz.getData));
httpServer.post('/interface/sjzltx', checkToken, asyncHandler(sjzltxBiz.getData));
//整体运行态势
httpServer.get('/interface/ztyxts', checkToken, asyncHandler(ztyxtsBiz.getData));
httpServer.post('/interface/ztyxts', checkToken, asyncHandler(ztyxtsBiz.getData));
//重要活动保障
httpServer.get('/interface/zyhdbz', checkToken, asyncHandler(zyhdbzBiz.getData));
httpServer.post('/interface/zyhdbz', checkToken, asyncHandler(zyhdbzBiz.getData));
httpServer.get('/interface/zyhdbzpop', checkToken, asyncHandler(zyhdbzBiz.getPopData));
httpServer.post('/interface/zyhdbzpop', checkToken, asyncHandler(zyhdbzBiz.getPopData));
// //分配权限
httpServer.post('/interface/permission/getlist', checkToken, adminPermission, asyncHandler(userBiz.permissionList));
httpServer.post('/interface/permission/updatepermission', checkToken, adminPermission, asyncHandler(userBiz.updatePermissions));
//==二级页面
httpServer.post('/interface/gettoken', asyncHandler(userBiz.getUserToken));
httpServer.post('/interface/permission/checkpage', checkToken, pagePermission, asyncHandler(userBiz.checkPermissionForPage) );
httpServer.post('/interface/permission/checkadmin', checkToken, pagePermission, asyncHandler(userBiz.checkPermissionForAdmin) );
httpServer.post('/interface/permission/checkhomepage', checkToken, asyncHandler(userBiz.checkPermissionForHomePage) );
//二期
httpServer.get('/interface/secondPhase/gradehealth', checkToken, asyncHandler(healthBiz.getData));
httpServer.post('/interface/secondPhase/gradehealth', checkToken, asyncHandler(healthBiz.getData));
// httpServer.get('/secondPhase/workstation', asyncHandler(workstationBiz.getData));
// httpServer.post('/secondPhase/workstation', asyncHandler(workstationBiz.getData));
// httpServer.get('/secondPhase/workstation/popup', asyncHandler(workstationPopupBiz.getData));
// httpServer.post('/secondPhase/workstation/popup', asyncHandler(workstationPopupBiz.getData));
// httpServer.get('/test/secondPhase/workstation', asyncHandler(workstationBiz.getTest));
// httpServer.post('/test/secondPhase/workstation', asyncHandler(workstationBiz.getTest));
//三期
//周周播
httpServer.get('/interface/weeklyplay', checkToken, asyncHandler(weeklyPlayBiz.getData));
httpServer.post('/interface/weeklyplay', checkToken, asyncHandler(weeklyPlayBiz.getData));
httpServer.get('/interface/curriculumpop', checkToken, asyncHandler(weeklyPlayBiz.curriculumPop));
httpServer.post('/interface/curriculumpop', checkToken, asyncHandler(weeklyPlayBiz.curriculumPop));
httpServer.get('/interface/dropdown', checkToken, asyncHandler(weeklyPlayBiz.dropDown));
httpServer.post('/interface/dropdown', checkToken, asyncHandler(weeklyPlayBiz.dropDown));
//2024-12-28
//实践工作站 success
httpServer.post('/interface/qsnkjcxsjgzz', checkToken, asyncHandler(qsnkjcxsjgzzBiz.getData));
httpServer.get('/interface/qsnkjcxsjgzz', checkToken, asyncHandler(qsnkjcxsjgzzBiz.getData));
//一生一档案 success
httpServer.post('/interface/ysysda', checkToken, asyncHandler(ysysdaBiz.getData));
httpServer.get('/interface/ysysda', checkToken, asyncHandler(ysysdaBiz.getData));
//重要活动保障 error
httpServer.post('/interface/zyhdbzlist', checkToken, asyncHandler(zyhdbzListBiz.getData));
httpServer.get('/interface/zyhdbzlist', checkToken, asyncHandler(zyhdbzListBiz.getData));
//教育优质资源 success
httpServer.post('/interface/jyyzzy', checkToken, asyncHandler(jyyzzyBiz.getData));
httpServer.get('/interface/jyyzzy', checkToken, asyncHandler(jyyzzyBiz.getData));
//教育优质资源右侧内容 error
httpServer.post('/interface/jyyzzy/kcsj', checkToken, asyncHandler(jyyzzyBiz.getKcsj));
httpServer.get('/interface/jyyzzy/kcsj', checkToken, asyncHandler(jyyzzyBiz.getKcsj));
//科学研究院 success
httpServer.post('/interface/kxyjy', checkToken, asyncHandler(kxyjyBiz.getData));
httpServer.get('/interface/kxyjy', checkToken, asyncHandler(kxyjyBiz.getData));
//科学研究院地图
httpServer.post('/interface/kxyjy/map', checkToken, asyncHandler(kxyjyBiz.getMap));
httpServer.get('/interface/kxyjy/map', checkToken, asyncHandler(kxyjyBiz.getMap));
//申申康 名称 success
httpServer.post('/interface/ssk', checkToken, asyncHandler(sskBiz.getData));
httpServer.get('/interface/ssk', checkToken, asyncHandler(sskBiz.getData));
httpServer.post('/interface/ssk/jrsbxx', checkToken, asyncHandler(sskBiz.getJrsbxx));
httpServer.get('/interface/ssk/jrsbxx', checkToken, asyncHandler(sskBiz.getJrsbxx));
httpServer.post('/interface/ssk/cityname', checkToken, asyncHandler(sskBiz.getCityName));
httpServer.get('/interface/ssk/cityname', checkToken, asyncHandler(sskBiz.getCityName));
httpServer.post('/interface/ssk/map', checkToken, asyncHandler(sskBiz.getMap));
httpServer.get('/interface/ssk/map', checkToken, asyncHandler(sskBiz.getMap));
httpServer.post('/interface/ssk/gfjbqs', checkToken, asyncHandler(sskBiz.getGfjbqs));
httpServer.get('/interface/ssk/gfjbqs', checkToken, asyncHandler(sskBiz.getGfjbqs));
httpServer.post('/interface/ssk/jjxmz', checkToken, asyncHandler(sskBiz.getJjxmz));
httpServer.get('/interface/ssk/jjxmz', checkToken, asyncHandler(sskBiz.getJjxmz));
httpServer.post('/interface/ssk/ybqkqs', checkToken, asyncHandler(sskBiz.getYbqkqs));
httpServer.get('/interface/ssk/ybqkqs', checkToken, asyncHandler(sskBiz.getYbqkqs));
//2025统一认证调整
httpServer.post('/interface/auth/accesstoken', asyncHandler(authBiz.handleAuthCallback));
httpServer.get('/interface/auth/accesstoken', asyncHandler(authBiz.handleAuthCallback));
//获取操作日志列表
// httpServer.post('/interface/operationlog', adminPermission, asyncHandler(logsBiz.getOperationLogList));
httpServer.post('/interface/permission/operationlog', checkToken, adminPermission, asyncHandler(logsBiz.getOperationLogList));
}
\ No newline at end of file
//端口
export function getPort() : number {
return Number(process.env.PORT) || Number(process.argv[3]) || 30026;//测试环境30024
return Number(process.env.PORT) || Number(process.argv[3]) || 30026;//测试环境30027 正式环境30026
}
// sit 测试环境 prod 生产环境 dem 演示环境(测试数据,前端无密码访问)
......@@ -10,13 +10,14 @@ export function getEnv() : string {
}
export let requestConfig = {
url:'http://192.168.0.71:40301',
// url:'http://127.0.0.1:40301',
url:'http://172.22.235.5:28080',
client_id:'75cb2a016ec640a886f681b2d3ae6f3c',
client_secret:'df795bea090e441fba6361645d18d5de'
};
//统一认证信息
//统一认证信息-弃用
export const uacInfomation = {
getTokenUrl:'https://account.shsunshine.org/connect/token',
refreshTokenUrl:"https://account.shsunshine.org/connect/token" ,
......@@ -25,10 +26,50 @@ export const uacInfomation = {
client_secret:'R5KpJGxN98o$up'
}
//应用登记配置
export const secsaConfig = {
host:"https://auth.secsa.cn",
appId:"6d093073f958439aa40d827903004056",
appSecret:"FA6D47D23D594DCE982F9F9191F90DD2",
access_token:"/unitrust/oauth2/client_credentials/access_token", //获取访问令牌
userRegister:"/unitrust/login/userRegister", //账号注册
accountLogin:"/unitrust/login/accountLogin", //账密登录
mobileLogin:"/unitrust/login/mobileLogin", //手机验证码登录
sendMobileCode:"/unitrust/login/sendMobileCode", //发送验证码
}
// 科艺SaaS认证配置
export const authConfig = {
// 基础接口地址
baseUrl: 'https://auth.secsa.cn/api',
host: 'https://server.example.com',
// 接口端点
endpoints: {
authorize: '/authn/person/authorize',
token: '/authn/token',
userInfo: '/id/person'
},
client: {
client_id:'6d093073f958439aa40d827903004056',
client_secret:'FA6D47D23D594DCE982F9F9191F90DD2',
redirect_uri: 'https://shsunshine-zp.shec.edu.cn/bi/platform/index' // 回调地址
},
// 认证参数
authParams: {
auth_type: 'authentication',
response_type: 'code',
scope: 'openid'
}
};
export let healthConfig = {
// url:'http://172.22.235.5:28080/dataengine-center-oneservice/list/',
url:'http://127.0.0.1:40301/dataengine-center-oneservice/list/',
url:'http://172.22.235.5:28080/dataengine-center-oneservice/list/',
// url:'http://127.0.0.1:40301/dataengine-center-oneservice/list/',
appKey:"200000085",
// account:"man_001", //yujc
// execType:3,
......@@ -37,8 +78,8 @@ export let healthConfig = {
}
export let workstationConfig = {
// url:'http://172.22.235.5:28080/dataengine-center-oneservice/list/',
url:'http://127.0.0.1:40301/dataengine-center-oneservice/list/',
url:'http://172.22.235.5:28080/dataengine-center-oneservice/list/',
// url:'http://127.0.0.1:40301/dataengine-center-oneservice/list/',
appKey:"200000086",
// account:"man_001", //yujc
// execType:3,
......@@ -47,4 +88,5 @@ export let workstationConfig = {
}
export const ImgPath = "http://192.168.0.189:50001"
// export const ImgPath = "http://192.168.0.71:30026"
export const ImgPath = "https://shsunshine-zp.shec.edu.cn/bi/platform"
import * as request from 'request';
import request from 'request';
import { BizError } from './bizError';
const https = require("https");
import https from "https";
export function get(url:string, query?, headers?) {
if (!url || (url.search(/http:/) && url.search(/https:/)) ) throw new BizError(!url ? "请求地址为空" : "请求地址错误");
......@@ -51,6 +51,7 @@ export function postParmiss(url, reqBody, headers) {
});
})
}
export function getParmiss(url, query?, headers?) {
return new Promise((resolve, reject)=>{
let paramater:any = { url, json:true };
......@@ -83,3 +84,41 @@ export function postForm(url, body, headers) {
});
})
}
/**
* 电信接口专用 POST 请求(标准 JSON Body)
* @param apiId 接口ID(同时用于URL路径、Header 和 Body)
* @param sign 签名(用于Header)
* @param additionalHeaders 可选额外Headers(如 token 等)
* @returns Promise 响应体
*/
export async function postDataDianXin(apiId, sign, additionalHeaders?) {
// 构造 URL(API ID 出现在路径最后)
const url = `http://61.129.134.230/api/dataengine-center-oneservice/dataengine-center-oneservice/list/${apiId}`;
let appKey = 200000001;
// 请求体(JSON 格式)
const body = {
apiId,
appKey
};
// 必填 Headers(根据原成功调用示例)
const defaultHeaders = {
"appKey": appKey,
"apiId": apiId,
"sign": sign,
"account": "xdata_admin",
"X-Real-Hostname": "http://172.22.235.13/yundt-boot-ui-xdata-oneservice-web/"
};
// 合并额外 Headers(例如 token)
const headers = Object.assign(defaultHeaders, additionalHeaders || {});
// 调用已有的 post 方法(自动处理 JSON 序列化)
return post(url, body, headers);
}
import { TYPEENUM } from "../config/enum";
import { authConfig } from '../serverConfig';
//对象判空
export function objectKeyIsNull(obj, ...keyNames) {
......@@ -19,6 +20,7 @@ export function objectKeyIsNull(obj, ...keyNames) {
return isNull;
}
/**
* 校验类型
* @param target 目标值
......@@ -57,6 +59,13 @@ export function checkType(target, type) {
return false;
}
export function checkStrLeng(str) {
return str.length < 40;
}
......@@ -4,7 +4,13 @@
"target": "es2017",
"sourceMap": true,
"rootDir":"./src",
"outDir":"./out"
"outDir":"./out",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": false,
"noImplicitAny": false,
"strictNullChecks": false,
"types": ["node"]
},
"exclude": [
"node_modules"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment