diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b75fce2..a8fe11e 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -2,9 +2,9 @@ name: CI on: push: - branches: "master" + branches: ["master"] pull_request: - branches: "*" + branches: ["*"] jobs: setup: @@ -16,7 +16,7 @@ jobs: - name: "Set pnpm" uses: pnpm/action-setup@v4.0.0 with: - version: 6.32.20 + version: 6.35.1 - name: Setup node uses: actions/setup-node@v3 diff --git a/package.json b/package.json index b7f2ffc..2a27222 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "dev": "PORT=3004 next dev", - "dev:node": "NODE_ENV=development node server/index.js", + "dev:node": "NODE_ENV=development nodemon server/index.js", "build": "next build", "export": "next export", "start": "PORT=3004 next start", @@ -41,6 +41,7 @@ "cz-conventional-changelog": "^3.3.0", "eslint": "^8.21.0", "eslint-config-next": "12.2.3", + "nodemon": "^3.1.0", "sass": "^1.53.0", "standard-version": "^9.5.0", "zx": "^7.0.8" @@ -49,5 +50,6 @@ "commitizen": { "path": "./node_modules/cz-conventional-changelog" } - } + }, + "packageManager": "pnpm@6.35.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2a2d868..8c6ef03 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,7 @@ specifiers: mongoose: ^6.5.1 next: ^12.2.2 node-schedule: ^2.1.0 + nodemon: ^3.1.0 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.53.0 @@ -44,6 +45,7 @@ devDependencies: cz-conventional-changelog: 3.3.0 eslint: 8.21.0 eslint-config-next: 12.2.3_eslint@8.21.0 + nodemon: 3.1.10 sass: 1.53.0 standard-version: 9.5.0 zx: 7.0.8 @@ -544,7 +546,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.7 + semver: 7.7.2 tsutils: 3.21.0 transitivePeerDependencies: - supports-color @@ -718,7 +720,6 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -827,7 +828,6 @@ packages: /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -841,7 +841,6 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: true /bson/4.6.5: resolution: {integrity: sha512-uqrgcjyOaZsHfz7ea8zLRCLe1u+QGUSzMZmvXqO24CDW7DWoW1qiN9folSwa7hSneTSgM2ykDIzF5kcQQ8cwNw==} @@ -942,7 +941,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 - dev: true /classnames/2.3.1: resolution: {integrity: sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==} @@ -1383,14 +1381,24 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: - ms: 2.1.2 + ms: 2.1.3 dev: true /debug/4.3.4: @@ -1404,6 +1412,19 @@ packages: dependencies: ms: 2.1.2 + /debug/4.3.4_supports-color@5.5.0: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 5.5.0 + dev: true + /decamelize-keys/1.1.0: resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} engines: {node: '>=0.10.0'} @@ -1631,11 +1652,12 @@ packages: eslint: 8.21.0 eslint-import-resolver-node: 0.3.6 eslint-import-resolver-typescript: 2.7.1_4826688aebe5ff8b13e05784d4881a01 - eslint-plugin-import: 2.26.0_eslint@8.21.0 + eslint-plugin-import: 2.26.0_cd3b8c152399a99d8f2fa9a086f4ab1e eslint-plugin-jsx-a11y: 6.6.1_eslint@8.21.0 eslint-plugin-react: 7.30.1_eslint@8.21.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.21.0 transitivePeerDependencies: + - eslint-import-resolver-webpack - supports-color dev: true @@ -1644,6 +1666,8 @@ packages: dependencies: debug: 3.2.7 resolve: 1.22.1 + transitivePeerDependencies: + - supports-color dev: true /eslint-import-resolver-typescript/2.7.1_4826688aebe5ff8b13e05784d4881a01: @@ -1655,7 +1679,7 @@ packages: dependencies: debug: 4.3.4 eslint: 8.21.0 - eslint-plugin-import: 2.26.0_eslint@8.21.0 + eslint-plugin-import: 2.26.0_cd3b8c152399a99d8f2fa9a086f4ab1e glob: 7.2.3 is-glob: 4.0.3 resolve: 1.22.1 @@ -1664,27 +1688,51 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.3: + /eslint-module-utils/2.7.3_9aff8cbbb03e026ecc5fa8e67e99ec58: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 5.31.0_eslint@8.21.0 debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 + eslint-import-resolver-typescript: 2.7.1_4826688aebe5ff8b13e05784d4881a01 find-up: 2.1.0 + transitivePeerDependencies: + - supports-color dev: true - /eslint-plugin-import/2.26.0_eslint@8.21.0: + /eslint-plugin-import/2.26.0_cd3b8c152399a99d8f2fa9a086f4ab1e: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: + '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: + '@typescript-eslint/parser': 5.31.0_eslint@8.21.0 array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.21.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3 + eslint-module-utils: 2.7.3_9aff8cbbb03e026ecc5fa8e67e99ec58 has: 1.0.3 is-core-module: 2.9.0 is-glob: 4.0.3 @@ -1692,6 +1740,10 @@ packages: object.values: 1.1.5 resolve: 1.22.1 tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color dev: true /eslint-plugin-jsx-a11y/6.6.1_eslint@8.21.0: @@ -1948,7 +2000,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /find-node-modules/2.1.3: resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} @@ -2075,7 +2126,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /function-bind/1.1.1: @@ -2170,7 +2220,6 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true /glob-parent/6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -2390,6 +2439,10 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false + /ignore-by-default/1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + dev: true + /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} @@ -2397,7 +2450,6 @@ packages: /immutable/4.1.0: resolution: {integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==} - dev: true /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -2478,7 +2530,6 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: true /is-boolean-object/1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -2509,7 +2560,6 @@ packages: /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true /is-fullwidth-code-point/2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} @@ -2533,7 +2583,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-nan/1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} @@ -2558,7 +2607,6 @@ packages: /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} @@ -3063,7 +3111,6 @@ packages: /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false /mute-stream/0.0.7: resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} @@ -3157,6 +3204,23 @@ packages: sorted-array-functions: 1.3.0 dev: false + /nodemon/3.1.10: + resolution: {integrity: sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + chokidar: 3.5.3 + debug: 4.3.4_supports-color@5.5.0 + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 7.7.2 + simple-update-notifier: 2.0.0 + supports-color: 5.5.0 + touch: 3.1.1 + undefsafe: 2.0.5 + dev: true + /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -3172,14 +3236,13 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.9.0 - semver: 7.3.7 + semver: 7.7.2 validate-npm-package-license: 3.0.4 dev: true /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -3426,7 +3489,6 @@ packages: /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true /pify/2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} @@ -3472,6 +3534,10 @@ packages: event-stream: 3.3.4 dev: true + /pstree.remy/1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + dev: true + /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} @@ -4095,7 +4161,6 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: true /redent/3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -4248,7 +4313,6 @@ packages: chokidar: 3.5.3 immutable: 4.1.0 source-map-js: 1.0.2 - dev: true /scheduler/0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -4280,6 +4344,12 @@ packages: lru-cache: 6.0.0 dev: true + /semver/7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + dev: true + /setprototypeof/1.2.0: resolution: {integrity: sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=} dev: false @@ -4316,6 +4386,13 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true + /simple-update-notifier/2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + dependencies: + semver: 7.7.2 + dev: true + /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -4636,7 +4713,6 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /toggle-selection/1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} @@ -4647,6 +4723,11 @@ packages: engines: {node: '>=0.6'} dev: false + /touch/3.1.1: + resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} + hasBin: true + dev: true + /tr46/3.0.0: resolution: {integrity: sha1-VVxOKXqVBhfo7t3vYzyH1NnWy/k=} engines: {node: '>=12'} @@ -4785,6 +4866,10 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /undefsafe/2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + dev: true + /universalify/0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} diff --git a/server/juejin/index.js b/server/juejin/index.js index 3392fe4..a07922c 100644 --- a/server/juejin/index.js +++ b/server/juejin/index.js @@ -1,3 +1,8 @@ +/** + * 每天上午八点从掘金获取一次数据 + * 不在页面访问时直接从掘金获取数据,是为了防止页面刷新次数过多时调用掘金接口过多从而导致 IP 被封 + */ + const axios = require('axios') const { getDate, getDateStr } = require('../utils') @@ -13,7 +18,7 @@ const getJueJinArticleList = async () => { } const res = await axios.post('https://api.juejin.cn/content_api/v1/article/query_list', params) const { data, has_more } = res.data - data !== null && (result = result.concat(data)) + data !== null && data !== undefined && (result = result.concat(data)) has_more && await loop(res.data.cursor) } console.log('掘金查询开始') diff --git a/server/utils/mongodb.js b/server/utils/mongodb.js index 57094ca..29a8b1f 100644 --- a/server/utils/mongodb.js +++ b/server/utils/mongodb.js @@ -97,7 +97,7 @@ const updateArticleList = async () => { const tagList = getTagListByArticleList(articleList) await insertTags(tagList) } catch (error) { - console.log('updateArticleList error: ', updateArticleList) + console.log('updateArticleList error: ', error) throw error } } diff --git a/src/components/navHeader.tsx b/src/components/navHeader.tsx index 8607a12..75ccea3 100644 --- a/src/components/navHeader.tsx +++ b/src/components/navHeader.tsx @@ -42,12 +42,15 @@ function NavHeader(props: IProps) { } return (
- -
- +
+ + + + + {/* */}

袋鼠云数栈UED团队

-
- + +
{ (H5 || isShow) && renderNavgitor()}
diff --git a/src/pages/about/index.tsx b/src/pages/about/index.tsx index bdf1f03..1e64b84 100644 --- a/src/pages/about/index.tsx +++ b/src/pages/about/index.tsx @@ -34,7 +34,9 @@ function Index() {
-
相关链接: 袋鼠云
+
相关链接: + 袋鼠云 +
{AboutDoc.footer}
diff --git a/src/pages/article/index.tsx b/src/pages/article/index.tsx index 57c6f49..c45f2aa 100644 --- a/src/pages/article/index.tsx +++ b/src/pages/article/index.tsx @@ -2,7 +2,7 @@ import { useEffect, useState, useRef } from 'react'; import styles from '@/styles/article.module.scss'; import NavHeader from "@/components/navHeader"; import APP_CONF from "@/data/config"; -import {Dropdown, Space, Menu, Spin, BackTop} from "antd"; +import {Dropdown, Space, Menu, Spin, BackTop, Button} from "antd"; import { OpenOriginUrl, seo } from "@/data/doc"; import { CaretDownOutlined, VerticalAlignTopOutlined } from '@ant-design/icons'; import Head from "next/head"; @@ -18,6 +18,8 @@ const Article = (data) => { const [tag_type, setTagType] = useState(''); const [articleList, setArticleList] = useState([]); const [spinning, setSpinning] = useState(false); + const [isAdmin, setIsAdmin] = useState(false); + const [updating, setUpdating] = useState(false); const [clearArticle, setClearArticle] = useState(false); const [hasMore, setHasMore] = useState(false); const firstUpdate = useRef(true); @@ -34,6 +36,15 @@ const Article = (data) => { useEffect(() => { setMobile(isMobile(window)); + setIsAdmin(window.localStorage.getItem("is-admin") === 'true'); + getTagList() + }, []) + + useEffect(() => { + getArticleList(); + }, [tag_id, sort_type, page]) + + const getTagList=()=>{ fetch(`${fetchUrl}/api/getTagList`) .then(res => res.json()) .then(res => { @@ -47,11 +58,7 @@ const Article = (data) => { setTagType(tagList?.[0].key); setTagList(tagList || []); }) - }, []) - - useEffect(() => { - getArticleList(); - }, [tag_id, sort_type, page]) + } // 处理文章数据 const handleArticleList = (obj) => { @@ -64,6 +71,7 @@ const Article = (data) => { setClearArticle(false) } + // 获取文章列表 const getArticleList = () => { if (firstUpdate.current) { handleArticleList(data) @@ -87,6 +95,16 @@ const Article = (data) => { }) } + // 更新数据库中的文章数据 + const updateArticleList = () => { + setUpdating(true) + fetch(`${fetchUrl}/api/updateArticleList`) + .finally(() => { + setUpdating(false) + window.location.reload() + }) + } + const handleSelectSortType = (sort_type) => { setPage('1') setSortType(sort_type) @@ -142,6 +160,14 @@ const Article = (data) => {
文章列表
+
+ {isAdmin ? ( + + ) : null} + 文章数据更新时间:{articleList[0]?.createTime} +
{
{article.create_date} { mobile ? '' : article.create_time}
{article.user_name} -
{article.view_count}
+ +
+
+ + {article.view_count} +
+
+ + {article.digg_count} +
+
) diff --git a/src/styles/article.module.scss b/src/styles/article.module.scss index bca1b7b..b686d2e 100644 --- a/src/styles/article.module.scss +++ b/src/styles/article.module.scss @@ -65,7 +65,6 @@ color: #3D446E; .title { font-size: 16px; - font-family: MiSans-Medium, MiSans; font-weight: 500; line-height: 22px; width: 100%; @@ -95,7 +94,6 @@ padding: 20px; .title { font-size: 16px; - font-family: MiSans-Medium, MiSans; font-weight: 500; line-height: 22px; width: 100%; @@ -128,6 +126,16 @@ font-size: 16px; font-weight: 600; } + .updateTime { + flex: 1; + display: flex; + align-items: center; + justify-content: flex-end; + > span { + color: #8B8FA8; + margin: 0 10px; + } + } .typeSpace { color: #3D446E; cursor: pointer; @@ -167,10 +175,6 @@ display: flex; color: #8B8FA8; white-space: nowrap; - img { - margin-right: 8px; - margin-bottom: 2px; - } .username { padding: 0 10px 0 20px; user-select: none; @@ -178,9 +182,15 @@ color: #64698B; text-decoration: none; } - .viewCount { + .countBox { flex: 1; - text-align: right; + display: flex; + align-items: center; + justify-content: flex-end; + img { + width: 16px; + margin: 0 4px 2px 24px; + } } } } diff --git a/src/styles/navHeader.module.scss b/src/styles/navHeader.module.scss index 9700ff9..dfb451d 100644 --- a/src/styles/navHeader.module.scss +++ b/src/styles/navHeader.module.scss @@ -9,10 +9,9 @@ align-items: center; .subtitle { - margin-left: 17px; + margin-left: 30px; margin-bottom: 0px; font-size: 20px; - font-family: MiSans-Medium, MiSans; font-weight: 500; color: #3D446E; } diff --git a/static/Article/eye.svg b/static/Article/eye.svg index c884098..6e0fe25 100644 --- a/static/Article/eye.svg +++ b/static/Article/eye.svg @@ -1,19 +1,8 @@ - - - 切片 - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/static/Article/liked.svg b/static/Article/liked.svg new file mode 100644 index 0000000..c65f5dc --- /dev/null +++ b/static/Article/liked.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/Home/dtstack_logo.png b/static/Home/dtstack_logo.png new file mode 100644 index 0000000..a446b1e Binary files /dev/null and b/static/Home/dtstack_logo.png differ