commit 24b6e2371a837fdb0bbf7cc72c9b143571c97394 Author: lenghui Date: Sat Jan 18 11:38:43 2025 +0800 投前台待优化 diff --git a/new_year_vote_VUE/.gitignore b/new_year_vote_VUE/.gitignore new file mode 100644 index 0000000..8ee54e8 --- /dev/null +++ b/new_year_vote_VUE/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/new_year_vote_VUE/.vscode/extensions.json b/new_year_vote_VUE/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/new_year_vote_VUE/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/new_year_vote_VUE/README.md b/new_year_vote_VUE/README.md new file mode 100644 index 0000000..c56ca01 --- /dev/null +++ b/new_year_vote_VUE/README.md @@ -0,0 +1,29 @@ +# voting_Vue + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Customize configuration + +See [Vite Configuration Reference](https://vite.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Compile and Minify for Production + +```sh +npm run build +``` diff --git a/new_year_vote_VUE/index.html b/new_year_vote_VUE/index.html new file mode 100644 index 0000000..b19040a --- /dev/null +++ b/new_year_vote_VUE/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite App + + +
+ + + diff --git a/new_year_vote_VUE/jsconfig.json b/new_year_vote_VUE/jsconfig.json new file mode 100644 index 0000000..5a1f2d2 --- /dev/null +++ b/new_year_vote_VUE/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./src/*"] + } + }, + "exclude": ["node_modules", "dist"] +} diff --git a/new_year_vote_VUE/package-lock.json b/new_year_vote_VUE/package-lock.json new file mode 100644 index 0000000..e453734 --- /dev/null +++ b/new_year_vote_VUE/package-lock.json @@ -0,0 +1,3111 @@ +{ + "name": "voting-vue", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "voting-vue", + "version": "0.0.0", + "dependencies": { + "axios": "^1.7.9", + "element-plus": "^2.9.1", + "pinia": "^2.2.6", + "vue": "^3.5.13", + "vue-router": "^4.4.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.2.1", + "vite": "^6.0.1", + "vite-plugin-vue-devtools": "^7.6.5" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.10", + "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", + "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.4", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", + "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "license": "MIT" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz", + "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz", + "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz", + "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz", + "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz", + "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz", + "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz", + "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz", + "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz", + "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz", + "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz", + "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz", + "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz", + "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz", + "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz", + "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz", + "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz", + "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz", + "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz", + "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==", + "license": "MIT" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", + "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz", + "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz", + "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.6", + "@babel/types": "^7.25.6", + "@vue/babel-helper-vue-transform-on": "1.2.5", + "@vue/babel-plugin-resolve-type": "1.2.5", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz", + "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/parser": "^7.25.6", + "@vue/compiler-sfc": "^3.5.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/devtools-core": { + "version": "7.6.8", + "resolved": "https://registry.npmmirror.com/@vue/devtools-core/-/devtools-core-7.6.8.tgz", + "integrity": "sha512-8X4roysTwzQ94o7IobjVcOd1aZF5iunikrMrHPI2uUdigZCi2kFTQc7ffYiFiTNaLElCpjOhCnM7bo7aK1yU7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.6.8", + "@vue/devtools-shared": "^7.6.8", + "mitt": "^3.0.1", + "nanoid": "^5.0.9", + "pathe": "^1.1.2", + "vite-hot-client": "^0.2.4" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-core/node_modules/nanoid": { + "version": "5.0.9", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-5.0.9.tgz", + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.6.8", + "resolved": "https://registry.npmmirror.com/@vue/devtools-kit/-/devtools-kit-7.6.8.tgz", + "integrity": "sha512-JhJ8M3sPU+v0P2iZBF2DkdmR9L0dnT5RXJabJqX6o8KtFs3tebdvfoXV2Dm3BFuqeECuMJIfF1aCzSt+WQ4wrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.6.8", + "birpc": "^0.2.19", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.1" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.6.8", + "resolved": "https://registry.npmmirror.com/@vue/devtools-shared/-/devtools-shared-7.6.8.tgz", + "integrity": "sha512-9MBPO5Z3X1nYGFqTJyohl6Gmf/J7UNN1oicHdyzBVZP4jnhZ4c20MgtaHDIzWmHDHCMYVS5bwKxT3jxh7gOOKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "license": "MIT", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/birpc": { + "version": "0.2.19", + "resolved": "https://registry.npmmirror.com/birpc/-/birpc-0.2.19.tgz", + "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/browserslist": { + "version": "4.24.3", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.3.tgz", + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001688", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001688.tgz", + "integrity": "sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "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==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.73", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz", + "integrity": "sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==", + "dev": true, + "license": "ISC" + }, + "node_modules/element-plus": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.1.tgz", + "integrity": "sha512-9Agqf/jt4Ugk7EZ6C5LME71sgkvauPCsnvJN12Xid2XVobjufxMGpRE4L7pS4luJMOmFAH3J0NgYEGZT5r+NDg==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.13", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-stack-parser-es": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz", + "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/execa": { + "version": "9.5.2", + "resolved": "https://registry.npmmirror.com/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "license": "ISC" + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/human-signals": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "license": "MIT", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.15", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.15.tgz", + "integrity": "sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, + "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" + } + }, + "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/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==", + "license": "BSD-3-Clause" + }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.3.0.tgz", + "integrity": "sha512-ohZj3jla0LL0OH5PlLTDMzqKiVw2XARmC1XYLdLWIPBMdhDW/123ZWr4zVAhtJm+aoSkFa13pYXskAvAscIkhQ==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmmirror.com/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.28.1", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.28.1.tgz", + "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.28.1", + "@rollup/rollup-android-arm64": "4.28.1", + "@rollup/rollup-darwin-arm64": "4.28.1", + "@rollup/rollup-darwin-x64": "4.28.1", + "@rollup/rollup-freebsd-arm64": "4.28.1", + "@rollup/rollup-freebsd-x64": "4.28.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.28.1", + "@rollup/rollup-linux-arm-musleabihf": "4.28.1", + "@rollup/rollup-linux-arm64-gnu": "4.28.1", + "@rollup/rollup-linux-arm64-musl": "4.28.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.28.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1", + "@rollup/rollup-linux-riscv64-gnu": "4.28.1", + "@rollup/rollup-linux-s390x-gnu": "4.28.1", + "@rollup/rollup-linux-x64-gnu": "4.28.1", + "@rollup/rollup-linux-x64-musl": "4.28.1", + "@rollup/rollup-win32-arm64-msvc": "4.28.1", + "@rollup/rollup-win32-ia32-msvc": "4.28.1", + "@rollup/rollup-win32-x64-msvc": "4.28.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/sirv/-/sirv-3.0.0.tgz", + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmmirror.com/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/vite/-/vite-6.0.3.tgz", + "integrity": "sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.24.0", + "postcss": "^8.4.49", + "rollup": "^4.23.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-hot-client": { + "version": "0.2.4", + "resolved": "https://registry.npmmirror.com/vite-hot-client/-/vite-hot-client-0.2.4.tgz", + "integrity": "sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vite-plugin-inspect": { + "version": "0.8.9", + "resolved": "https://registry.npmmirror.com/vite-plugin-inspect/-/vite-plugin-inspect-0.8.9.tgz", + "integrity": "sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.10", + "@rollup/pluginutils": "^5.1.3", + "debug": "^4.3.7", + "error-stack-parser-es": "^0.1.5", + "fs-extra": "^11.2.0", + "open": "^10.1.0", + "perfect-debounce": "^1.0.0", + "picocolors": "^1.1.1", + "sirv": "^3.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/vite-plugin-vue-devtools": { + "version": "7.6.8", + "resolved": "https://registry.npmmirror.com/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.6.8.tgz", + "integrity": "sha512-32aIps8C1Y7UEoqyWf+ES3J1OozsCYMIqTqd+I5qass+R0Tcf8SaA2bX1/rskAzkcKCteVoBjEENmqwTcMebbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-core": "^7.6.8", + "@vue/devtools-kit": "^7.6.8", + "@vue/devtools-shared": "^7.6.8", + "execa": "^9.5.1", + "sirv": "^3.0.0", + "vite-plugin-inspect": "~0.8.9", + "vite-plugin-vue-inspector": "^5.3.1" + }, + "engines": { + "node": ">=v14.21.3" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vite-plugin-vue-inspector": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.1.tgz", + "integrity": "sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/plugin-proposal-decorators": "^7.23.0", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.22.15", + "@vue/babel-plugin-jsx": "^1.1.5", + "@vue/compiler-dom": "^3.3.4", + "kolorist": "^1.8.0", + "magic-string": "^0.30.4" + }, + "peerDependencies": { + "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" + } + }, + "node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.0.tgz", + "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/new_year_vote_VUE/package.json b/new_year_vote_VUE/package.json new file mode 100644 index 0000000..e46fc69 --- /dev/null +++ b/new_year_vote_VUE/package.json @@ -0,0 +1,23 @@ +{ + "name": "voting-vue", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --host 0.0.0.0", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "axios": "^1.7.9", + "element-plus": "^2.9.1", + "pinia": "^2.2.6", + "vue": "^3.5.13", + "vue-router": "^4.4.5" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.2.1", + "vite": "^6.0.1", + "vite-plugin-vue-devtools": "^7.6.5" + } +} diff --git a/new_year_vote_VUE/public/favicon.ico b/new_year_vote_VUE/public/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/new_year_vote_VUE/public/favicon.ico differ diff --git a/new_year_vote_VUE/src/App.vue b/new_year_vote_VUE/src/App.vue new file mode 100644 index 0000000..a199d94 --- /dev/null +++ b/new_year_vote_VUE/src/App.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/new_year_vote_VUE/src/api/CanApi.js b/new_year_vote_VUE/src/api/CanApi.js new file mode 100644 index 0000000..a276221 --- /dev/null +++ b/new_year_vote_VUE/src/api/CanApi.js @@ -0,0 +1,52 @@ +import service from "." + +const CanApi = { + //前台获取候选人列表 + getCandidates(token) { + // return service.post('https://api.homilychart.com/investvote/getCandidates',{token}); + return service.post('/getCandidates', { token }); + }, + + //投票 + Vote(token, code) { + let formData = new FormData(); + formData.append("token", token); + formData.append("code", code); + // return service.post('https://api.homilychart.com/investvote/vote',formData) + return service.post('/vote', formData) + }, + //分页搜索 + selectByPage(pageNum, name, location) { + return service.get('/getCandidatesPage', { params: { pageNum, name, location } }) + }, + //新增 + addCandidate(candidate) { + return service.post('/addCandidate', candidate) + }, + //通过精网号查询 + getCandidateByjwcode(jwcode) { + return service.get(`/getCandidateByJwcode/${jwcode}`) + }, + //修改 + updateCandidate(candidate) { + return service.post('/updateCandidate', candidate) + }, + //下架 + // changeCandidateByJwcode(jwcode){ + // return service.get(`/changeCandidateByJwcode/${jwcode}`) + // }, + //查看详情 + getDetail(jwcode) { + return service.get(`/getVotesByCandidate/${jwcode}`) + }, + //在详情中的根据精网号查询 + getVoterByCandidateAndVoterJwcode(candidateJwcode,voterJwcode) { + return service.get('/getVoterByCandidateAndVoterJwcode', { params: { candidateJwcode,voterJwcode } }) + }, + //真实人数 + getRealCount(candidateJwcode){ + return service.get(`/getRealCount/${candidateJwcode}`) + } +} + +export default CanApi; \ No newline at end of file diff --git a/new_year_vote_VUE/src/api/index.js b/new_year_vote_VUE/src/api/index.js new file mode 100644 index 0000000..f65d6ae --- /dev/null +++ b/new_year_vote_VUE/src/api/index.js @@ -0,0 +1,14 @@ +import axios from "axios"; + +const service = axios.create({ + baseURL: '/api', +}); + + +//Axios的响应拦截器.. +service.interceptors.response.use(resp => { + return resp.data; +}, error => { + return Promise.reject(error); +}); +export default service; \ No newline at end of file diff --git a/new_year_vote_VUE/src/assets/base.css b/new_year_vote_VUE/src/assets/base.css new file mode 100644 index 0000000..e69de29 diff --git a/new_year_vote_VUE/src/assets/logo.svg b/new_year_vote_VUE/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/new_year_vote_VUE/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/new_year_vote_VUE/src/assets/main.css b/new_year_vote_VUE/src/assets/main.css new file mode 100644 index 0000000..c322700 --- /dev/null +++ b/new_year_vote_VUE/src/assets/main.css @@ -0,0 +1,39 @@ + *{ + margin: 0; + padding: 0; + } + html{ + font-size: 1vw; + } + div{ + font-size: 1rem; + } + /* html,body{ + height: 100%; + } + #app{ + height: 100%; + } */ + /* 手机 */ + @media (max-width:750px){ + html{ + font-size: 10.5px; + } + div{ + font-size: 1rem; + } + } + /* 平板 */ + @media (min-width: 750px) and (max-width:1279px){ + html{ + font-size: 2.5vw; + } + div{ + font-size: 1rem; + } + } + /* 电脑 */ + @media (min-width:1280px){ + + } + \ No newline at end of file diff --git a/new_year_vote_VUE/src/assets/投票/专区.png b/new_year_vote_VUE/src/assets/投票/专区.png new file mode 100644 index 0000000..c3ed9fb Binary files /dev/null and b/new_year_vote_VUE/src/assets/投票/专区.png differ diff --git a/new_year_vote_VUE/src/assets/投票/产品名称文字底20度.png b/new_year_vote_VUE/src/assets/投票/产品名称文字底20度.png new file mode 100644 index 0000000..c65a866 Binary files /dev/null and b/new_year_vote_VUE/src/assets/投票/产品名称文字底20度.png differ diff --git a/new_year_vote_VUE/src/assets/投票/产品图.jpg b/new_year_vote_VUE/src/assets/投票/产品图.jpg new file mode 100644 index 0000000..9556e50 Binary files /dev/null and b/new_year_vote_VUE/src/assets/投票/产品图.jpg differ diff --git a/new_year_vote_VUE/src/assets/投票/产品背景.png b/new_year_vote_VUE/src/assets/投票/产品背景.png new file mode 100644 index 0000000..ef93661 Binary files /dev/null and b/new_year_vote_VUE/src/assets/投票/产品背景.png differ diff --git a/new_year_vote_VUE/src/assets/投票/底.png b/new_year_vote_VUE/src/assets/投票/底.png new file mode 100644 index 0000000..e29e651 Binary files /dev/null and b/new_year_vote_VUE/src/assets/投票/底.png differ diff --git a/new_year_vote_VUE/src/assets/投票/投票 - 货架礼物.jpg b/new_year_vote_VUE/src/assets/投票/投票 - 货架礼物.jpg new file mode 100644 index 0000000..b51397a Binary files /dev/null and b/new_year_vote_VUE/src/assets/投票/投票 - 货架礼物.jpg differ diff --git a/new_year_vote_VUE/src/assets/投票/投票按钮.png b/new_year_vote_VUE/src/assets/投票/投票按钮.png new file mode 100644 index 0000000..c64b223 Binary files /dev/null and b/new_year_vote_VUE/src/assets/投票/投票按钮.png differ diff --git a/new_year_vote_VUE/src/assets/投票/货架背景.png b/new_year_vote_VUE/src/assets/投票/货架背景.png new file mode 100644 index 0000000..f620dc2 Binary files /dev/null and b/new_year_vote_VUE/src/assets/投票/货架背景.png differ diff --git a/new_year_vote_VUE/src/assets/投票/顶.png b/new_year_vote_VUE/src/assets/投票/顶.png new file mode 100644 index 0000000..aa5d517 Binary files /dev/null and b/new_year_vote_VUE/src/assets/投票/顶.png differ diff --git a/new_year_vote_VUE/src/main.js b/new_year_vote_VUE/src/main.js new file mode 100644 index 0000000..1d49fbf --- /dev/null +++ b/new_year_vote_VUE/src/main.js @@ -0,0 +1,17 @@ +import './assets/main.css' + +import { createApp } from 'vue' +import { createPinia } from 'pinia' + +import App from './App.vue' +import router from './router' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' + +const app = createApp(App) + +app.use(createPinia()) +app.use(router) + +app.use(ElementPlus) +app.mount('#app') diff --git a/new_year_vote_VUE/src/router/index.js b/new_year_vote_VUE/src/router/index.js new file mode 100644 index 0000000..b9ae617 --- /dev/null +++ b/new_year_vote_VUE/src/router/index.js @@ -0,0 +1,22 @@ +import { createRouter, createWebHistory } from 'vue-router' +import FrontView from '../views/FrontView.vue' +import BackView from '@/views/BackView.vue' + + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path: '/', + name: 'front', + component: FrontView, + }, + { + path: '/back', + name: 'back', + component: BackView + }, + ], +}) + +export default router diff --git a/new_year_vote_VUE/src/stores/counter.js b/new_year_vote_VUE/src/stores/counter.js new file mode 100644 index 0000000..b6757ba --- /dev/null +++ b/new_year_vote_VUE/src/stores/counter.js @@ -0,0 +1,12 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +export const useCounterStore = defineStore('counter', () => { + const count = ref(0) + const doubleCount = computed(() => count.value * 2) + function increment() { + count.value++ + } + + return { count, doubleCount, increment } +}) diff --git a/new_year_vote_VUE/src/views/BackView.vue b/new_year_vote_VUE/src/views/BackView.vue new file mode 100644 index 0000000..27512c0 --- /dev/null +++ b/new_year_vote_VUE/src/views/BackView.vue @@ -0,0 +1,434 @@ + + + + + + \ No newline at end of file diff --git a/new_year_vote_VUE/src/views/FrontView.vue b/new_year_vote_VUE/src/views/FrontView.vue new file mode 100644 index 0000000..4e10dfd --- /dev/null +++ b/new_year_vote_VUE/src/views/FrontView.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/new_year_vote_VUE/vite.config.js b/new_year_vote_VUE/vite.config.js new file mode 100644 index 0000000..acb011b --- /dev/null +++ b/new_year_vote_VUE/vite.config.js @@ -0,0 +1,30 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + // vueDevTools(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + }, + }, + // base: '/investvote/', // 服务器:设置资源的基础路径 + server: { + proxy: { + '/api': { + //后端服务器地址 + // target: 'http://mp.homilychart.com', //服务器地址 + target: 'http://192.168.8.174:8092', //本地调试地址 + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, '') + } + } + } +}) diff --git a/vote_new_year.sql b/vote_new_year.sql new file mode 100644 index 0000000..5417aa2 --- /dev/null +++ b/vote_new_year.sql @@ -0,0 +1,85 @@ +/* + Navicat Premium Dump SQL + + Source Server : lenghui + Source Server Type : MySQL + Source Server Version : 80039 (8.0.39) + Source Host : localhost:3306 + Source Schema : vote_new_year + + Target Server Type : MySQL + Target Server Version : 80039 (8.0.39) + File Encoding : 65001 + + Date: 18/01/2025 10:47:06 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for candidates +-- ---------------------------- +DROP TABLE IF EXISTS `candidates`; +CREATE TABLE `candidates` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `jwcode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '物品编号', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '候选人名字', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '候选人头像', + `votes` int NULL DEFAULT 0 COMMENT '票数', + `status` int NULL DEFAULT NULL COMMENT '状态', + `location` int NULL DEFAULT NULL COMMENT '位置', + `money` int NULL DEFAULT NULL COMMENT '价值', + `spare1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `spare2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `spare3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `jwcode`(`jwcode` ASC) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of candidates +-- ---------------------------- +INSERT INTO `candidates` VALUES (1, '010', '粉底', 'https://cdn.legu168.com/jtzy/Product/pcjingwang/uploads/images/3fe5bfe4d6d22969e4e744fb5ffcc42c.png', 2, 1, 2, 100000, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (2, '009', '口红', 'https://cdn.legu168.com/jtzy/Product/pcjingwang/uploads/images/b9e13ae84c87cafcbcb56420f04f34da.png', 0, 1, 2, 200, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (3, '008', '酒店抵用券', 'https://cdn.legu168.com/jtzy/Product/pcjingwang/uploads/images/d604ded24c51b1be131ff16934fd7744.png', 0, 1, 3, 300, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (4, '007', '德州扒鸡', 'https://cdn.legu168.com/jtzy/Product/pcjingwang/uploads/images/c7aceb66e69097e8f734f12b9e36ab30.png', 3, 1, 4, 400, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (5, '006', '胡辣汤', 'https://cdn.legu168.com/jtzy/Product/pcjingwang/uploads/images/21e50e2f6931024e1079cae45e751840.png', 0, 1, 1, 500, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (6, '005', 'AI探牛7天', 'https://cdn.legu168.com/jtzy/Product/pcjingwang/uploads/images/28a4ca14aaa3cfb6daa5de1ff504f034.png', 0, 1, 2, 600, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (7, '004', '预测大师', 'https://cdn.legu168.com/jtzy/Product/pcjingwang/uploads/images/cb706bb1adc66b999e75029525b21d03.png', 0, 1, 3, 700, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (8, '003', '雷达', 'https://cdn.legu168.com/jtzy/Product/pcjingwang/uploads/images/774bcb3c19fba708ccb61aed1475330c.png', 0, 1, 4, 800, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (9, '002', '铁皮', 'https://cdn.legu168.com/jtzy/Product/pcjingwang/uploads/images/386cc0f515c5a13f44306d7f20d623ab.png', 0, 0, 1, 900, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (10, '001', '其他', 'https://cdn.legu168.com/jtzy/Product/pcjingwang/uploads/images/097cc365b03e723ad5f9bbadd42859f3.png', 0, 1, 2, 1000, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (12, '011', 'iphone18', 'https://d31zlh4on95l9h.cloudfront.net/default/39156502f8f218cf63f751e081406a8e.png', 0, 0, 2, 1000, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (13, 'A001', '高级粉底', '1.jpg', 0, 1, 1, 2000, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (14, 'A002', '高级口红', '2.jpg', 0, 1, 2, 3000, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (15, 'A003', 'TD', '1.jpg', 1, 1, 1, 2000, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (16, 'A201', '康康', '1.jpg', 1, 1, 1, 1000, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (17, 'A301', '冷辉', '1.jpg', 0, 0, 3, 3000, NULL, NULL, NULL); +INSERT INTO `candidates` VALUES (19, '020', 'iphone100', 'https://d31zlh4on95l9h.cloudfront.net/default/0b6766aaee31e9b740c53e00a172399b.jpg', 0, 1, 5, 99999, NULL, NULL, NULL); + +-- ---------------------------- +-- Table structure for voters +-- ---------------------------- +DROP TABLE IF EXISTS `voters`; +CREATE TABLE `voters` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `jwcode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '精网号', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '投票者名字', + `vote_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '投票时间戳', + `candidate_jwcode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '候选人精网号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 181 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '投票者表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of voters +-- ---------------------------- +INSERT INTO `voters` VALUES (174, '90044599', '游客 90****99', '2025-01-13 18:29:59', '010'); +INSERT INTO `voters` VALUES (175, '90044598', '游客 90****99', '2025-01-15 18:30:07', '010'); +INSERT INTO `voters` VALUES (176, '90044599', '游客 90****99', '2025-01-15 15:02:34', '010'); +INSERT INTO `voters` VALUES (177, '90044599', '游客 90****99', '2025-01-15 15:02:36', '007'); +INSERT INTO `voters` VALUES (178, '90044599', '游客 90****99', '2025-01-16 14:38:26', '007'); +INSERT INTO `voters` VALUES (179, '90044599', '游客 90****99', '2025-01-16 14:38:27', 'A003'); +INSERT INTO `voters` VALUES (180, '90044599', '游客 90****99', '2025-01-16 14:38:41', 'A201'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/vote_new_year_JAVA/.gitignore b/vote_new_year_JAVA/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/vote_new_year_JAVA/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/vote_new_year_JAVA/hs_err_pid25076.log b/vote_new_year_JAVA/hs_err_pid25076.log new file mode 100644 index 0000000..e0c1281 --- /dev/null +++ b/vote_new_year_JAVA/hs_err_pid25076.log @@ -0,0 +1,410 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# Internal Error (javaCalls.cpp:51), pid=25076, tid=0x0000000000002d34 +# guarantee(thread->is_Java_thread()) failed: crucial check - the VM thread cannot and must not escape to Java code +# +# JRE version: Java(TM) SE Runtime Environment (8.0_371) (build 1.8.0_371-b11) +# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.371-b11 mixed mode windows-amd64 compressed oops) +# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows +# +# If you would like to submit a bug report, please visit: +# http://bugreport.java.com/bugreport/crash.jsp +# + +--------------- T H R E A D --------------- + +Current thread (0x000001ded177d800): VMThread [stack: 0x0000008ab0f00000,0x0000008ab1000000] [id=11572] + +Stack: [0x0000008ab0f00000,0x0000008ab1000000] +[error occurred during error reporting (printing stack bounds), id 0xc0000005] + +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +V [jvm.dll+0x34d9f9] +V [jvm.dll+0x28aa12] +V [jvm.dll+0x28b5dd] +V [jvm.dll+0x2a9756] +V [jvm.dll+0x2aa430] +V [jvm.dll+0x34d658] +C [ntdll.dll+0xa28bf] +C [ntdll.dll+0x52554] +C [ntdll.dll+0xa13ce] +C 0x000001ded8410b4a + +VM_Operation (0x0000008ab14ff540): GetOrSetLocal, mode: safepoint, requested by thread 0x000001deeec74800 + + +--------------- P R O C E S S --------------- + +Java Threads: ( => current thread ) + 0x000001def3bc5800 JavaThread "kafka-coordinator-heartbeat-thread | vote-group" daemon [_thread_blocked, id=28744, stack(0x0000008ab5200000,0x0000008ab5300000)] + 0x000001def3bc9000 JavaThread "http-nio-8091-Acceptor" daemon [_thread_blocked, id=32148, stack(0x0000008ab5100000,0x0000008ab5200000)] + 0x000001def3bc1800 JavaThread "http-nio-8091-ClientPoller" daemon [_thread_blocked, id=32608, stack(0x0000008ab5000000,0x0000008ab5100000)] + 0x000001def3bc7000 JavaThread "http-nio-8091-exec-10" daemon [_thread_blocked, id=31348, stack(0x0000008ab4f00000,0x0000008ab5000000)] + 0x000001def3bc8800 JavaThread "http-nio-8091-exec-9" daemon [_thread_blocked, id=15980, stack(0x0000008ab4e00000,0x0000008ab4f00000)] + 0x000001def39b5000 JavaThread "http-nio-8091-exec-8" daemon [_thread_blocked, id=29748, stack(0x0000008ab4d00000,0x0000008ab4e00000)] + 0x000001def39bb000 JavaThread "http-nio-8091-exec-7" daemon [_thread_blocked, id=33636, stack(0x0000008ab4c00000,0x0000008ab4d00000)] + 0x000001def39ba800 JavaThread "http-nio-8091-exec-6" daemon [_thread_blocked, id=23340, stack(0x0000008ab4b00000,0x0000008ab4c00000)] + 0x000001def39b9000 JavaThread "http-nio-8091-exec-5" daemon [_thread_blocked, id=18916, stack(0x0000008ab4a00000,0x0000008ab4b00000)] + 0x000001def39b8000 JavaThread "http-nio-8091-exec-4" daemon [_thread_blocked, id=23868, stack(0x0000008ab4900000,0x0000008ab4a00000)] + 0x000001def39b9800 JavaThread "http-nio-8091-exec-3" daemon [_thread_blocked, id=29744, stack(0x0000008ab4800000,0x0000008ab4900000)] + 0x000001def39b7800 JavaThread "http-nio-8091-exec-2" daemon [_thread_blocked, id=23860, stack(0x0000008ab4700000,0x0000008ab4800000)] + 0x000001def39b6800 JavaThread "http-nio-8091-exec-1" daemon [_thread_blocked, id=14900, stack(0x0000008ab4600000,0x0000008ab4700000)] + 0x000001def39bc000 JavaThread "http-nio-8091-BlockPoller" daemon [_thread_blocked, id=16256, stack(0x0000008ab4400000,0x0000008ab4500000)] + 0x000001def39b6000 JavaThread "org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1" [_thread_blocked, id=17664, stack(0x0000008ab4300000,0x0000008ab4400000)] + 0x000001def39ad800 JavaThread "ThreadPoolTaskScheduler-1" [_thread_blocked, id=3736, stack(0x0000008ab4200000,0x0000008ab4300000)] + 0x000001def39b4800 JavaThread "File Watcher" daemon [_thread_blocked, id=744, stack(0x0000008ab4100000,0x0000008ab4200000)] + 0x000001def39b3000 JavaThread "lettuce-eventExecutorLoop-62-16" daemon [_thread_blocked, id=31540, stack(0x0000008ab3f00000,0x0000008ab4000000)] + 0x000001def39b2000 JavaThread "lettuce-eventExecutorLoop-62-15" daemon [_thread_blocked, id=14556, stack(0x0000008ab3e00000,0x0000008ab3f00000)] + 0x000001def39b0000 JavaThread "lettuce-eventExecutorLoop-62-14" daemon [_thread_blocked, id=4308, stack(0x0000008ab3d00000,0x0000008ab3e00000)] + 0x000001def39af000 JavaThread "lettuce-eventExecutorLoop-62-13" daemon [_thread_blocked, id=31568, stack(0x0000008ab3c00000,0x0000008ab3d00000)] + 0x000001def39ae800 JavaThread "lettuce-eventExecutorLoop-62-12" daemon [_thread_blocked, id=29328, stack(0x0000008ab3b00000,0x0000008ab3c00000)] + 0x000001def39ad000 JavaThread "lettuce-eventExecutorLoop-62-11" daemon [_thread_blocked, id=31384, stack(0x0000008ab3a00000,0x0000008ab3b00000)] + 0x000001def4160000 JavaThread "lettuce-eventExecutorLoop-62-10" daemon [_thread_blocked, id=28416, stack(0x0000008ab3900000,0x0000008ab3a00000)] + 0x000001def415f800 JavaThread "lettuce-eventExecutorLoop-62-9" daemon [_thread_blocked, id=33712, stack(0x0000008ab3800000,0x0000008ab3900000)] + 0x000001def415d000 JavaThread "lettuce-eventExecutorLoop-62-8" daemon [_thread_blocked, id=1852, stack(0x0000008ab3700000,0x0000008ab3800000)] + 0x000001def415e000 JavaThread "lettuce-eventExecutorLoop-62-7" daemon [_thread_blocked, id=20324, stack(0x0000008ab3600000,0x0000008ab3700000)] + 0x000001def415c800 JavaThread "lettuce-eventExecutorLoop-62-6" daemon [_thread_blocked, id=19420, stack(0x0000008ab3500000,0x0000008ab3600000)] + 0x000001def415e800 JavaThread "lettuce-eventExecutorLoop-62-5" daemon [_thread_blocked, id=22788, stack(0x0000008ab3400000,0x0000008ab3500000)] + 0x000001def4155000 JavaThread "lettuce-eventExecutorLoop-62-4" daemon [_thread_blocked, id=25488, stack(0x0000008ab3300000,0x0000008ab3400000)] + 0x000001def415b800 JavaThread "lettuce-eventExecutorLoop-62-3" daemon [_thread_blocked, id=32320, stack(0x0000008ab3200000,0x0000008ab3300000)] + 0x000001def415b000 JavaThread "lettuce-eventExecutorLoop-62-2" daemon [_thread_blocked, id=30908, stack(0x0000008ab3100000,0x0000008ab3200000)] + 0x000001def415a000 JavaThread "lettuce-eventExecutorLoop-62-1" daemon [_thread_blocked, id=27428, stack(0x0000008ab3000000,0x0000008ab3100000)] + 0x000001def4159800 JavaThread "lettuce-nioEventLoop-64-1" daemon [_thread_in_native, id=25588, stack(0x0000008ab2d00000,0x0000008ab2e00000)] + 0x000001def4152000 JavaThread "HwgoldHikariCP housekeeper" daemon [_thread_blocked, id=26692, stack(0x0000008ab2c00000,0x0000008ab2d00000)] + 0x000001def4158800 JavaThread "lettuce-timer-63-1" [_thread_blocked, id=26464, stack(0x0000008ab2b00000,0x0000008ab2c00000)] + 0x000001def4154000 JavaThread "container-0" [_thread_blocked, id=23992, stack(0x0000008ab2a00000,0x0000008ab2b00000)] + 0x000001def4157000 JavaThread "Catalina-utility-2" [_thread_blocked, id=8032, stack(0x0000008ab2900000,0x0000008ab2a00000)] + 0x000001def4151000 JavaThread "Catalina-utility-1" [_thread_blocked, id=25140, stack(0x0000008aafd00000,0x0000008aafe00000)] + 0x000001def4156800 JavaThread "DestroyJavaVM" [_thread_blocked, id=13124, stack(0x0000008ab0100000,0x0000008ab0200000)] + 0x000001def3bc4000 JavaThread "Live Reload Server" daemon [_thread_in_native, id=28364, stack(0x0000008ab4500000,0x0000008ab4600000)] + 0x000001deeecfa000 JavaThread "mysql-cj-abandoned-connection-cleanup" daemon [_thread_blocked, id=13352, stack(0x0000008ab2e00000,0x0000008ab2f00000)] + 0x000001def0df7000 JavaThread "RMI Scheduler(0)" daemon [_thread_blocked, id=6252, stack(0x0000008ab2700000,0x0000008ab2800000)] + 0x000001def0c06000 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=24984, stack(0x0000008ab2400000,0x0000008ab2500000)] + 0x000001deeed7d000 JavaThread "Service Thread" daemon [_thread_blocked, id=25552, stack(0x0000008ab2300000,0x0000008ab2400000)] + 0x000001deeecf8800 JavaThread "C1 CompilerThread11" daemon [_thread_blocked, id=23664, stack(0x0000008ab2200000,0x0000008ab2300000)] + 0x000001deeecf5800 JavaThread "C1 CompilerThread10" daemon [_thread_blocked, id=23460, stack(0x0000008ab2100000,0x0000008ab2200000)] + 0x000001deeecf6000 JavaThread "C1 CompilerThread9" daemon [_thread_blocked, id=32216, stack(0x0000008ab2000000,0x0000008ab2100000)] + 0x000001deeecf7800 JavaThread "C1 CompilerThread8" daemon [_thread_blocked, id=31036, stack(0x0000008ab1f00000,0x0000008ab2000000)] + 0x000001deeecf7000 JavaThread "C2 CompilerThread7" daemon [_thread_blocked, id=32380, stack(0x0000008ab1e00000,0x0000008ab1f00000)] + 0x000001deeecf2800 JavaThread "C2 CompilerThread6" daemon [_thread_blocked, id=19188, stack(0x0000008ab1d00000,0x0000008ab1e00000)] + 0x000001deeecb7800 JavaThread "C2 CompilerThread5" daemon [_thread_blocked, id=25316, stack(0x0000008ab1c00000,0x0000008ab1d00000)] + 0x000001deeecb5800 JavaThread "C2 CompilerThread4" daemon [_thread_blocked, id=15592, stack(0x0000008ab1b00000,0x0000008ab1c00000)] + 0x000001deeeca8800 JavaThread "C2 CompilerThread3" daemon [_thread_blocked, id=7648, stack(0x0000008ab1a00000,0x0000008ab1b00000)] + 0x000001deeeca2800 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=32860, stack(0x0000008ab1900000,0x0000008ab1a00000)] + 0x000001deeec93800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=15684, stack(0x0000008ab1800000,0x0000008ab1900000)] + 0x000001deeec92000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=13424, stack(0x0000008ab1700000,0x0000008ab1800000)] + 0x000001deeec79800 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=19256, stack(0x0000008ab1600000,0x0000008ab1700000)] + 0x000001deeec78800 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=30992, stack(0x0000008ab1500000,0x0000008ab1600000)] + 0x000001deeec74800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=11428, stack(0x0000008ab1400000,0x0000008ab1500000)] + 0x000001deeec4a800 JavaThread "Attach Listener" daemon [_thread_blocked, id=18076, stack(0x0000008ab1300000,0x0000008ab1400000)] + 0x000001deeebf2800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=28564, stack(0x0000008ab1200000,0x0000008ab1300000)] + 0x000001deecece800 JavaThread "Finalizer" daemon [_thread_blocked, id=6584, stack(0x0000008ab1100000,0x0000008ab1200000)] + 0x000001deeebe2000 JavaThread "Reference Handler" daemon [_thread_blocked, id=30456, stack(0x0000008ab1000000,0x0000008ab1100000)] + +Other Threads: +=>0x000001ded177d800 VMThread [stack: 0x0000008ab0f00000,0x0000008ab1000000] [id=11572] + 0x000001def0c20000 WatcherThread [stack: 0x0000008ab2500000,0x0000008ab2600000] [id=22148] + +VM state:at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event]) +[0x000001ded16ed270] Threads_lock - owner thread: 0x000001ded177d800 + +heap address: 0x0000000081200000, size: 2030 MB, Compressed Oops mode: 32-bit +Narrow klass base: 0x0000000000000000, Narrow klass shift: 3 +Compressed class space size: 1073741824 Address: 0x0000000100000000 + +Heap: + PSYoungGen total 244224K, used 129333K [0x00000000d5b80000, 0x00000000e5480000, 0x0000000100000000) + eden space 233472K, 55% used [0x00000000d5b80000,0x00000000dd9cd438,0x00000000e3f80000) + from space 10752K, 0% used [0x00000000e4a00000,0x00000000e4a00000,0x00000000e5480000) + to space 10752K, 0% used [0x00000000e3f80000,0x00000000e3f80000,0x00000000e4a00000) + ParOldGen total 136192K, used 28542K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082ddf8c8,0x0000000089700000) + Metaspace used 67607K, capacity 74680K, committed 75008K, reserved 1114112K + class space used 8711K, capacity 10132K, committed 10240K, reserved 1048576K + +Card table byte_map: [0x000001dee77d0000,0x000001dee7bd0000] byte_map_base: 0x000001dee73c7000 + +Marking Bits: (ParMarkBitMap*) 0x00000000622fd980 + Begin Bits: [0x000001dee7e80000, 0x000001dee9e38000) + End Bits: [0x000001dee9e38000, 0x000001deebdf0000) + +Polling page: 0x000001ded33e0000 + +CodeCache: size=245760Kb used=25097Kb max_used=25097Kb free=220662Kb + bounds [0x000001ded8410000, 0x000001ded9ca0000, 0x000001dee7410000] + total_blobs=12855 nmethods=12196 adapters=574 + compilation: enabled + +Compilation events (10 events): +Event: 1499.885 Thread 0x000001deeecf7800 12345 1 org.apache.kafka.clients.consumer.KafkaConsumer::poll (16 bytes) +Event: 1499.885 Thread 0x000001deeecf8800 nmethod 12344 0x000001ded9c8fed0 code [0x000001ded9c90140, 0x000001ded9c90ba0] +Event: 1499.886 Thread 0x000001deeecf7800 nmethod 12345 0x000001ded9c91510 code [0x000001ded9c91680, 0x000001ded9c91800] +Event: 1499.886 Thread 0x000001deeecf8800 12346 1 org.apache.kafka.clients.consumer.internals.KafkaConsumerMetrics::recordPollStart (46 bytes) +Event: 1499.886 Thread 0x000001deeecf5800 nmethod 12343 0x000001ded9c91890 code [0x000001ded9c91b20, 0x000001ded9c92960] +Event: 1499.886 Thread 0x000001deeecf8800 nmethod 12346 0x000001ded9c93910 code [0x000001ded9c93a80, 0x000001ded9c93ce0] +Event: 1502.753 Thread 0x000001deeecf7800 12347 1 org.apache.coyote.Request::getRequestProcessor (5 bytes) +Event: 1502.753 Thread 0x000001deeecf7800 nmethod 12347 0x000001ded9c93f10 code [0x000001ded9c94060, 0x000001ded9c94178] +Event: 1502.758 Thread 0x000001deeecf6000 12348 1 org.springframework.core.MethodParameter::getParameterAnnotation (47 bytes) +Event: 1502.758 Thread 0x000001deeecf6000 nmethod 12348 0x000001ded9c941d0 code [0x000001ded9c94340, 0x000001ded9c94530] + +GC Heap History (10 events): +Event: 1451.740 GC heap before +{Heap before GC invocations=49 (full 21): + PSYoungGen total 244224K, used 4991K [0x00000000d5b80000, 0x00000000e5580000, 0x0000000100000000) + eden space 233472K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000e3f80000) + from space 10752K, 46% used [0x00000000e4b00000,0x00000000e4fdfc28,0x00000000e5580000) + to space 11264K, 0% used [0x00000000e3f80000,0x00000000e3f80000,0x00000000e4a80000) + ParOldGen total 136192K, used 28180K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082d85198,0x0000000089700000) + Metaspace used 66446K, capacity 73258K, committed 73472K, reserved 1112064K + class space used 8590K, capacity 9980K, committed 9984K, reserved 1048576K +Event: 1451.914 GC heap after +Heap after GC invocations=49 (full 21): + PSYoungGen total 244224K, used 0K [0x00000000d5b80000, 0x00000000e5580000, 0x0000000100000000) + eden space 233472K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000e3f80000) + from space 10752K, 0% used [0x00000000e4b00000,0x00000000e4b00000,0x00000000e5580000) + to space 11264K, 0% used [0x00000000e3f80000,0x00000000e3f80000,0x00000000e4a80000) + ParOldGen total 136192K, used 27964K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082d4f130,0x0000000089700000) + Metaspace used 66435K, capacity 73240K, committed 73472K, reserved 1112064K + class space used 8589K, capacity 9976K, committed 9984K, reserved 1048576K +} +Event: 1483.530 GC heap before +{Heap before GC invocations=50 (full 21): + PSYoungGen total 244224K, used 149310K [0x00000000d5b80000, 0x00000000e5580000, 0x0000000100000000) + eden space 233472K, 63% used [0x00000000d5b80000,0x00000000ded4f900,0x00000000e3f80000) + from space 10752K, 0% used [0x00000000e4b00000,0x00000000e4b00000,0x00000000e5580000) + to space 11264K, 0% used [0x00000000e3f80000,0x00000000e3f80000,0x00000000e4a80000) + ParOldGen total 136192K, used 27964K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082d4f130,0x0000000089700000) + Metaspace used 66640K, capacity 73442K, committed 73600K, reserved 1112064K + class space used 8613K, capacity 10020K, committed 10112K, reserved 1048576K +Event: 1483.538 GC heap after +Heap after GC invocations=50 (full 21): + PSYoungGen total 238592K, used 5036K [0x00000000d5b80000, 0x00000000e5480000, 0x0000000100000000) + eden space 233472K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000e3f80000) + from space 5120K, 98% used [0x00000000e3f80000,0x00000000e446b238,0x00000000e4480000) + to space 10752K, 0% used [0x00000000e4a00000,0x00000000e4a00000,0x00000000e5480000) + ParOldGen total 136192K, used 27972K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082d51130,0x0000000089700000) + Metaspace used 66640K, capacity 73442K, committed 73600K, reserved 1112064K + class space used 8613K, capacity 10020K, committed 10112K, reserved 1048576K +} +Event: 1483.538 GC heap before +{Heap before GC invocations=51 (full 22): + PSYoungGen total 238592K, used 5036K [0x00000000d5b80000, 0x00000000e5480000, 0x0000000100000000) + eden space 233472K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000e3f80000) + from space 5120K, 98% used [0x00000000e3f80000,0x00000000e446b238,0x00000000e4480000) + to space 10752K, 0% used [0x00000000e4a00000,0x00000000e4a00000,0x00000000e5480000) + ParOldGen total 136192K, used 27972K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082d51130,0x0000000089700000) + Metaspace used 66640K, capacity 73442K, committed 73600K, reserved 1112064K + class space used 8613K, capacity 10020K, committed 10112K, reserved 1048576K +Event: 1483.667 GC heap after +Heap after GC invocations=51 (full 22): + PSYoungGen total 238592K, used 0K [0x00000000d5b80000, 0x00000000e5480000, 0x0000000100000000) + eden space 233472K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000e3f80000) + from space 5120K, 0% used [0x00000000e3f80000,0x00000000e3f80000,0x00000000e4480000) + to space 10752K, 0% used [0x00000000e4a00000,0x00000000e4a00000,0x00000000e5480000) + ParOldGen total 136192K, used 28127K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082d77eb0,0x0000000089700000) + Metaspace used 66630K, capacity 73424K, committed 73600K, reserved 1112064K + class space used 8611K, capacity 10016K, committed 10112K, reserved 1048576K +} +Event: 1492.464 GC heap before +{Heap before GC invocations=52 (full 22): + PSYoungGen total 238592K, used 143859K [0x00000000d5b80000, 0x00000000e5480000, 0x0000000100000000) + eden space 233472K, 61% used [0x00000000d5b80000,0x00000000de7fce18,0x00000000e3f80000) + from space 5120K, 0% used [0x00000000e3f80000,0x00000000e3f80000,0x00000000e4480000) + to space 10752K, 0% used [0x00000000e4a00000,0x00000000e4a00000,0x00000000e5480000) + ParOldGen total 136192K, used 28127K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082d77eb0,0x0000000089700000) + Metaspace used 66971K, capacity 73792K, committed 73856K, reserved 1114112K + class space used 8656K, capacity 10093K, committed 10112K, reserved 1048576K +Event: 1492.472 GC heap after +Heap after GC invocations=52 (full 22): + PSYoungGen total 244224K, used 5356K [0x00000000d5b80000, 0x00000000e5480000, 0x0000000100000000) + eden space 233472K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000e3f80000) + from space 10752K, 49% used [0x00000000e4a00000,0x00000000e4f3b048,0x00000000e5480000) + to space 10752K, 0% used [0x00000000e3f80000,0x00000000e3f80000,0x00000000e4a00000) + ParOldGen total 136192K, used 28135K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082d79eb0,0x0000000089700000) + Metaspace used 66971K, capacity 73792K, committed 73856K, reserved 1114112K + class space used 8656K, capacity 10093K, committed 10112K, reserved 1048576K +} +Event: 1492.472 GC heap before +{Heap before GC invocations=53 (full 23): + PSYoungGen total 244224K, used 5356K [0x00000000d5b80000, 0x00000000e5480000, 0x0000000100000000) + eden space 233472K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000e3f80000) + from space 10752K, 49% used [0x00000000e4a00000,0x00000000e4f3b048,0x00000000e5480000) + to space 10752K, 0% used [0x00000000e3f80000,0x00000000e3f80000,0x00000000e4a00000) + ParOldGen total 136192K, used 28135K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082d79eb0,0x0000000089700000) + Metaspace used 66971K, capacity 73792K, committed 73856K, reserved 1114112K + class space used 8656K, capacity 10093K, committed 10112K, reserved 1048576K +Event: 1492.655 GC heap after +Heap after GC invocations=53 (full 23): + PSYoungGen total 244224K, used 0K [0x00000000d5b80000, 0x00000000e5480000, 0x0000000100000000) + eden space 233472K, 0% used [0x00000000d5b80000,0x00000000d5b80000,0x00000000e3f80000) + from space 10752K, 0% used [0x00000000e4a00000,0x00000000e4a00000,0x00000000e5480000) + to space 10752K, 0% used [0x00000000e3f80000,0x00000000e3f80000,0x00000000e4a00000) + ParOldGen total 136192K, used 28542K [0x0000000081200000, 0x0000000089700000, 0x00000000d5b80000) + object space 136192K, 20% used [0x0000000081200000,0x0000000082ddf8c8,0x0000000089700000) + Metaspace used 66961K, capacity 73774K, committed 73856K, reserved 1114112K + class space used 8654K, capacity 10089K, committed 10112K, reserved 1048576K +} + +Deoptimization events (0 events): +No events + +Classes redefined (10 events): +Event: 2170.327 Thread 0x000001ded177d800 redefined class name=com.lh.controller.VoteController, count=15 +Event: 2170.396 Thread 0x000001ded177d800 redefined class name=com.lh.controller.VoteController, count=14 +Event: 2170.460 Thread 0x000001ded177d800 redefined class name=com.lh.controller.VoteController, count=13 +Event: 2170.519 Thread 0x000001ded177d800 redefined class name=com.lh.controller.VoteController, count=12 +Event: 2170.577 Thread 0x000001ded177d800 redefined class name=com.lh.controller.VoteController, count=11 +Event: 2170.638 Thread 0x000001ded177d800 redefined class name=com.lh.controller.VoteController, count=10 +Event: 2170.704 Thread 0x000001ded177d800 redefined class name=com.lh.controller.VoteController, count=9 +Event: 2170.771 Thread 0x000001ded177d800 redefined class name=com.lh.controller.VoteController, count=8 +Event: 2170.841 Thread 0x000001ded177d800 redefined class name=com.lh.controller.VoteController, count=7 +Event: 2170.910 Thread 0x000001ded177d800 redefined class name=com.lh.controller.VoteController, count=6 + +Internal exceptions (10 events): +Event: 1491.925 Thread 0x000001def4151000 Exception (0x00000000ddd1ee90) thrown at [C:\jenkins\workspace\8-2-build-windows-x64-cygwin\jdk8u371\3355\hotspot\src\share\vm\prims\jni.cpp, line 737] +Event: 1491.925 Thread 0x000001def4151000 Exception (0x00000000ddd1f350) thrown at [C:\jenkins\workspace\8-2-build-windows-x64-cygwin\jdk8u371\3355\hotspot\src\share\vm\prims\jni.cpp, line 737] +Event: 1491.927 Thread 0x000001def4151000 Exception (0x00000000ddd20b70) thrown at [C:\jenkins\workspace\8-2-build-windows-x64-cygwin\jdk8u371\3355\hotspot\src\share\vm\prims\jni.cpp, line 737] +Event: 1491.928 Thread 0x000001def4151000 Exception (0x00000000ddd22390) thrown at [C:\jenkins\workspace\8-2-build-windows-x64-cygwin\jdk8u371\3355\hotspot\src\share\vm\prims\jni.cpp, line 737] +Event: 1491.929 Thread 0x000001def4151000 Exception (0x00000000ddd23988) thrown at [C:\jenkins\workspace\8-2-build-windows-x64-cygwin\jdk8u371\3355\hotspot\src\share\vm\prims\jni.cpp, line 737] +Event: 1491.930 Thread 0x000001def4151000 Exception (0x00000000ddd23e48) thrown at [C:\jenkins\workspace\8-2-build-windows-x64-cygwin\jdk8u371\3355\hotspot\src\share\vm\prims\jni.cpp, line 737] +Event: 1492.232 Thread 0x000001def3bcd000 Exception (0x00000000de6d90e0) thrown at [C:\jenkins\workspace\8-2-build-windows-x64-cygwin\jdk8u371\3355\hotspot\src\share\vm\prims\jvm.cpp, line 3359] +Event: 1493.074 Thread 0x000001def4155800 Exception (0x00000000d5d58770) thrown at [C:\jenkins\workspace\8-2-build-windows-x64-cygwin\jdk8u371\3355\hotspot\src\share\vm\prims\jni.cpp, line 710] +Event: 1494.277 Thread 0x000001def4155800 Exception (0x00000000d8ce6df0) thrown at [C:\jenkins\workspace\8-2-build-windows-x64-cygwin\jdk8u371\3355\hotspot\src\share\vm\prims\jni.cpp, line 710] +Event: 1494.321 Thread 0x000001def4155800 Exception (0x00000000d8e4edb8) thrown at [C:\jenkins\workspace\8-2-build-windows-x64-cygwin\jdk8u371\3355\hotspot\src\share\vm\prims\jni.cpp, line 710] + +Events (10 events): +Event: 2170.640 Executing VM operation: RedefineClasses done +Event: 2170.641 Executing VM operation: RedefineClasses +Event: 2170.706 Executing VM operation: RedefineClasses done +Event: 2170.707 Executing VM operation: RedefineClasses +Event: 2170.773 Executing VM operation: RedefineClasses done +Event: 2170.774 Executing VM operation: RedefineClasses +Event: 2170.844 Executing VM operation: RedefineClasses done +Event: 2170.845 Executing VM operation: RedefineClasses +Event: 2170.912 Executing VM operation: RedefineClasses done +Event: 2170.915 Executing VM operation: GetOrSetLocal + + +Dynamic libraries: +0x00007ff739000000 - 0x00007ff73904a000 D:\Devapp\Java\jdk-1.8\bin\java.exe +0x00007ffb5d970000 - 0x00007ffb5db68000 C:\Windows\SYSTEM32\ntdll.dll +0x00007ffb5cd30000 - 0x00007ffb5cdf2000 C:\Windows\System32\KERNEL32.DLL +0x00007ffb5b310000 - 0x00007ffb5b60e000 C:\Windows\System32\KERNELBASE.dll +0x00007ffb443c0000 - 0x00007ffb443d7000 C:\InetPub\ftproot\Tipray\Ldterm\ghijt64.DLL +0x00007ffb5ca20000 - 0x00007ffb5cad1000 C:\Windows\System32\ADVAPI32.dll +0x00007ffb5d6d0000 - 0x00007ffb5d76e000 C:\Windows\System32\msvcrt.dll +0x00007ffb5d630000 - 0x00007ffb5d6cf000 C:\Windows\System32\sechost.dll +0x00007ffb5cae0000 - 0x00007ffb5cc03000 C:\Windows\System32\RPCRT4.dll +0x00007ffb5b1a0000 - 0x00007ffb5b1c7000 C:\Windows\System32\bcrypt.dll +0x00007ffb436b0000 - 0x00007ffb436f1000 C:\Inetpub\ftproot\Tipray\LdTerm\LdUserInjectDll64.dll +0x00007ffb5bd20000 - 0x00007ffb5bebd000 C:\Windows\System32\USER32.dll +0x00007ffb5b810000 - 0x00007ffb5b832000 C:\Windows\System32\win32u.dll +0x00007ffb5cf10000 - 0x00007ffb5cf3b000 C:\Windows\System32\GDI32.dll +0x00007ffb5b010000 - 0x00007ffb5b127000 C:\Windows\System32\gdi32full.dll +0x00007ffb5b610000 - 0x00007ffb5b6ad000 C:\Windows\System32\msvcp_win.dll +0x00007ffb5b890000 - 0x00007ffb5b990000 C:\Windows\System32\ucrtbase.dll +0x00007ffb4d2d0000 - 0x00007ffb4d56a000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.4355_none_60b8b9eb71f62e16\COMCTL32.dll +0x00007ffb44140000 - 0x00007ffb443b7000 C:\InetPub\ftproot\Tipray\Ldterm\LdHook64.dll +0x00007ffb5bad0000 - 0x00007ffb5bbfb000 C:\Windows\System32\ole32.dll +0x00007ffb5bf50000 - 0x00007ffb5c2a3000 C:\Windows\System32\combase.dll +0x00007ffb5bc00000 - 0x00007ffb5bc08000 C:\Windows\System32\PSAPI.DLL +0x00007ffb49490000 - 0x00007ffb49534000 C:\Windows\SYSTEM32\WINSPOOL.DRV +0x00007ffb5ce60000 - 0x00007ffb5cf0d000 C:\Windows\System32\shcore.dll +0x00007ffb5a990000 - 0x00007ffb5a99c000 C:\Windows\SYSTEM32\CRYPTBASE.DLL +0x00007ffb5d190000 - 0x00007ffb5d1bf000 C:\Windows\System32\IMM32.DLL +0x00007ffb44470000 - 0x00007ffb444c7000 C:\Inetpub\ftproot\Tipray\LdTerm\ghhlp64.dll +0x00007ffb44460000 - 0x00007ffb44470000 C:\InetPub\ftproot\Tipray\Ldterm\HookDataInteractionx64.dll +0x00007ffb43e40000 - 0x00007ffb43eb2000 C:\InetPub\ftproot\Tipray\Ldterm\LdSmartEnc64.dll +0x00007ffb43e30000 - 0x00007ffb43e3b000 C:\Windows\SYSTEM32\FLTLIB.DLL +0x00007ffb43700000 - 0x00007ffb4371f000 C:\Inetpub\ftproot\Tipray\LdTerm\HookCreateProcessInternal64.dll +0x00007ffb4d020000 - 0x00007ffb4d076000 C:\Inetpub\ftproot\Tipray\LdTerm\MonFileOp64.dll +0x00007ffb5c2b0000 - 0x00007ffb5ca1d000 C:\Windows\System32\SHELL32.dll +0x00007ffb5cf40000 - 0x00007ffb5cf95000 C:\Windows\System32\SHLWAPI.dll +0x00007ffb4d600000 - 0x00007ffb4d61b000 D:\Devapp\Java\jdk-1.8\jre\bin\vcruntime140.dll +0x00007ffb54610000 - 0x00007ffb5461c000 D:\Devapp\Java\jdk-1.8\jre\bin\vcruntime140_1.dll +0x00007ffb31b80000 - 0x00007ffb31c0e000 D:\Devapp\Java\jdk-1.8\jre\bin\msvcp140.dll +0x0000000061ad0000 - 0x0000000062377000 D:\Devapp\Java\jdk-1.8\jre\bin\server\jvm.dll +0x00007ffb4d5f0000 - 0x00007ffb4d5f9000 C:\Windows\SYSTEM32\WSOCK32.dll +0x00007ffb546e0000 - 0x00007ffb546ea000 C:\Windows\SYSTEM32\VERSION.dll +0x00007ffb5ba60000 - 0x00007ffb5bacb000 C:\Windows\System32\WS2_32.dll +0x00007ffb4e450000 - 0x00007ffb4e477000 C:\Windows\SYSTEM32\WINMM.dll +0x00007ffb58f20000 - 0x00007ffb58f32000 C:\Windows\SYSTEM32\kernel.appcore.dll +0x00007ffb4d0d0000 - 0x00007ffb4d0e0000 D:\Devapp\Java\jdk-1.8\jre\bin\verify.dll +0x00007ffb4cda0000 - 0x00007ffb4cdcb000 D:\Devapp\Java\jdk-1.8\jre\bin\java.dll +0x00007ffb572f0000 - 0x00007ffb57326000 D:\Devapp\Java\jdk-1.8\jre\bin\jdwp.dll +0x00007ffb4a0c0000 - 0x00007ffb4a0c9000 D:\Devapp\Java\jdk-1.8\jre\bin\npt.dll +0x00007ffb3dfb0000 - 0x00007ffb3dfe4000 D:\Devapp\Java\jdk-1.8\jre\bin\instrument.dll +0x00007ffb4c960000 - 0x00007ffb4c978000 D:\Devapp\Java\jdk-1.8\jre\bin\zip.dll +0x00007ffb590b0000 - 0x00007ffb59854000 C:\Windows\SYSTEM32\windows.storage.dll +0x00007ffb5aa40000 - 0x00007ffb5aa6e000 C:\Windows\SYSTEM32\Wldp.dll +0x00007ffb5b990000 - 0x00007ffb5ba5d000 C:\Windows\System32\OLEAUT32.dll +0x00007ffb5af40000 - 0x00007ffb5af64000 C:\Windows\SYSTEM32\profapi.dll +0x00007ffb4a000000 - 0x00007ffb4a00a000 D:\Devapp\Java\jdk-1.8\jre\bin\dt_socket.dll +0x00007ffb5a7a0000 - 0x00007ffb5a80a000 C:\Windows\system32\mswsock.dll +0x00007ffb3cd30000 - 0x00007ffb3cd4c000 D:\Devapp\Java\jdk-1.8\jre\bin\net.dll +0x00007ffb5a480000 - 0x00007ffb5a54a000 C:\Windows\SYSTEM32\DNSAPI.dll +0x00007ffb5a430000 - 0x00007ffb5a46b000 C:\Windows\SYSTEM32\IPHLPAPI.DLL +0x00007ffb5bf40000 - 0x00007ffb5bf48000 C:\Windows\System32\NSI.dll +0x00007ffb53a80000 - 0x00007ffb53a8a000 C:\Windows\System32\rasadhlp.dll +0x00007ffb53060000 - 0x00007ffb530e0000 C:\Windows\System32\fwpuclnt.dll +0x00007ffb4ca50000 - 0x00007ffb4ca5d000 D:\Devapp\Java\jdk-1.8\jre\bin\management.dll +0x00007ffb34be0000 - 0x00007ffb34bf3000 D:\Devapp\Java\jdk-1.8\jre\bin\nio.dll +0x00007ffb5a9a0000 - 0x00007ffb5a9b8000 C:\Windows\SYSTEM32\CRYPTSP.dll +0x00007ffb5a050000 - 0x00007ffb5a084000 C:\Windows\system32\rsaenh.dll +0x00007ffb5af00000 - 0x00007ffb5af2e000 C:\Windows\SYSTEM32\USERENV.dll +0x00007ffb5b1d0000 - 0x00007ffb5b252000 C:\Windows\System32\bcryptprimitives.dll +0x00007ffb56ff0000 - 0x00007ffb57007000 C:\Windows\SYSTEM32\dhcpcsvc6.DLL +0x00007ffb56e10000 - 0x00007ffb56e2d000 C:\Windows\SYSTEM32\dhcpcsvc.DLL +0x00007ffb41fc0000 - 0x00007ffb41fd7000 C:\Windows\system32\napinsp.dll +0x00007ffb41fa0000 - 0x00007ffb41fbb000 C:\Windows\system32\pnrpnsp.dll +0x00007ffb41f80000 - 0x00007ffb41f95000 C:\Windows\system32\wshbth.dll +0x00007ffb571a0000 - 0x00007ffb571bd000 C:\Windows\system32\NLAapi.dll +0x00007ffb41f20000 - 0x00007ffb41f32000 C:\Windows\System32\winrnr.dll +0x00007ffb4a010000 - 0x00007ffb4a035000 D:\Devapp\Java\jdk-1.8\jre\bin\sunec.dll +0x00007ffb4ac40000 - 0x00007ffb4ac4d000 D:\Devapp\Java\jdk-1.8\jre\bin\sunmscapi.dll +0x00007ffb5b6b0000 - 0x00007ffb5b80c000 C:\Windows\System32\CRYPT32.dll +0x00007ffb5aab0000 - 0x00007ffb5aad7000 C:\Windows\SYSTEM32\ncrypt.dll +0x00007ffb5aa70000 - 0x00007ffb5aaab000 C:\Windows\SYSTEM32\NTASN1.dll +0x00007ffb58a80000 - 0x00007ffb58c64000 C:\Windows\SYSTEM32\dbghelp.dll + +VM Arguments: +jvm_args: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:64387,suspend=y,server=n -XX:TieredStopAtLevel=1 -Xverify:none -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dmanagement.endpoints.jmx.exposure.include=* -javaagent:C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2023.2\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 +java_command: com.lh.VoteSystemApplication +java_class_path (initial): D:\Devapp\Java\jdk-1.8\jre\lib\charsets.jar;D:\Devapp\Java\jdk-1.8\jre\lib\deploy.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\access-bridge-64.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\cldrdata.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\dnsns.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\jaccess.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\jfxrt.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\localedata.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\nashorn.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\sunec.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\sunjce_provider.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\sunmscapi.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\sunpkcs11.jar;D:\Devapp\Java\jdk-1.8\jre\lib\ext\zipfs.jar;D:\Devapp\Java\jdk-1.8\jre\lib\javaws.jar;D:\Devapp\Java\jdk-1.8\jre\lib\jce.jar;D:\Devapp\Java\jdk-1.8\jre\lib\jfr.jar;D:\Devapp\Java\jdk-1.8\jre\lib\jfxswt.jar;D:\Devapp\Java\jdk-1.8\jre\lib\jsse.jar;D:\Devapp\Java\jdk-1.8\jre\lib\management-agent.jar;D:\Devapp\Java\jdk-1.8\jre\lib\plugin.jar;D:\Devapp\Java\jdk-1.8\jre\lib\resources.jar;D:\Devapp\Java\jdk-1.8\jre\lib\rt.jar;C:\Users\Administrator\Desktop\project\vote\vote_system\target\classes;D:\repository\org\springframework\boot\spring-boot-starter-web\2.4.2\spring-boot-starter-web-2.4.2.jar;D:\repository\org\springframework\boot\spring-boot-starter\2.4.2\spring-boot-starter-2.4.2.jar;D:\repository\org\springframework\boot\spring-boot-starter-logging\2.4.2\spring-boot-starter-logging-2.4.2.jar;D:\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\repository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;D:\repository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;D:\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\repository\org\yaml\snakeyaml\1.27\snakeyaml-1.27.jar;D:\repository +Launcher Type: SUN_STANDARD + +Environment Variables: +JAVA_HOME=D:\Devapp\Java\jdk-1.8 +PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;D:\Devapp\Java\jdk-1.8\bin;D:\Devapp\go1.21.13.windows-amd64\go\bin;D:\Devapp\Git\cmd;D:\Devapp\node\;D:\Devapp\Bandizip\;D:\Devapp\Maven\apache-maven-3.9.2\bin;D:\Devapp\Memurai\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;D:\Devapp\VSCode\bin;C:\Users\Administrator\AppData\Roaming\npm +USERNAME=Administrator +OS=Windows_NT +PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 45 Stepping 7, GenuineIntel + + + +--------------- S Y S T E M --------------- + +OS: Windows 10 , 64 bit Build 19041 (10.0.19041.5198) + +CPU:total 16 (initial active 16) (8 cores per cpu, 2 threads per core) family 6 model 45 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, aes, clmul, ht, tsc, tscinvbit, tscinv + +Memory: 4k page, physical 8307720k(752056k free), swap 18891592k(3124708k free) + +vm_info: Java HotSpot(TM) 64-Bit Server VM (25.371-b11) for windows-amd64 JRE (1.8.0_371-b11), built on Mar 17 2023 04:03:45 by "java_re" with MS VC++ 17.1 (VS2022) + +time: Wed Dec 18 21:25:20 2024 +timezone: Intel64 Family 6 Model 45 Stepping 7, GenuineIntel +elapsed time: 2171.002354 seconds (0d 0h 36m 11s) + diff --git a/vote_new_year_JAVA/pom.xml b/vote_new_year_JAVA/pom.xml new file mode 100644 index 0000000..66ef9a2 --- /dev/null +++ b/vote_new_year_JAVA/pom.xml @@ -0,0 +1,131 @@ + + + 4.0.0 + com.lh + vote_new_year_java + 0.0.2 + vote_new_year + Demo project for Spring Boot + + 1.8 + UTF-8 + UTF-8 + 2.4.2 + + + + org.springframework.boot + spring-boot-starter-web + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.1.4 + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + mysql + mysql-connector-java + runtime + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.springframework.boot + spring-boot-starter-cache + + + + org.apache.httpcomponents + httpclient + + + + + com.fasterxml.jackson.core + jackson-databind + + + javax.servlet + javax.servlet-api + + + + + com.github.pagehelper + pagehelper-spring-boot-starter + 2.1.0 + + + + cn.hutool + hutool-all + 5.8.25 + + + + org.springframework.boot + spring-boot-starter-validation + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + repackage + + repackage + + + + + + + + diff --git a/vote_new_year_JAVA/src/main/java/com/lh/VoteSystemApplication.java b/vote_new_year_JAVA/src/main/java/com/lh/VoteSystemApplication.java new file mode 100644 index 0000000..bfdfe53 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/VoteSystemApplication.java @@ -0,0 +1,12 @@ +package com.lh; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication(scanBasePackages = "com.lh") +public class VoteSystemApplication { + + public static void main(String[] args) { + SpringApplication.run(VoteSystemApplication.class, args); + } +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/bean/Candidate.java b/vote_new_year_JAVA/src/main/java/com/lh/bean/Candidate.java new file mode 100644 index 0000000..fef4da9 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/bean/Candidate.java @@ -0,0 +1,33 @@ +package com.lh.bean; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class Candidate { + private Long id;//ID + @NotNull + private String jwcode;//精网号 + @NotNull + private String name;//候选人名称 + @NotNull + private String avatar;//头像 + private Integer votes = 0;//票数 + @NotNull + private Integer status;//状态 + private Integer location;//位置 + @NotNull + private Integer money;//价值 + private String spare1;//备用字段 + private String spare2;//备用字段 + private String spare3;//备用字段 + + + + private boolean isVoted;//是否被当前用户投票 +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/bean/RespBean.java b/vote_new_year_JAVA/src/main/java/com/lh/bean/RespBean.java new file mode 100644 index 0000000..774e401 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/bean/RespBean.java @@ -0,0 +1,82 @@ +package com.lh.bean; + +public class RespBean { + //状态码 10000-成功 10001-失败 + private Integer code; + //返回的附件信息 + private String msg; + //返回的数据 + private Object data; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } + + public static RespBean ok() { + RespBean respBean = new RespBean(); + respBean.setCode(10000); + + return respBean; + } + + public static RespBean ok(String msg) { + RespBean respBean = new RespBean(); + respBean.setCode(10000); + respBean.setMsg(msg); + + return respBean; + } + + public static RespBean ok(String msg, Object data) { + RespBean respBean = new RespBean(); + respBean.setCode(10000); + respBean.setMsg(msg); + respBean.setData(data); + + return respBean; + } + + public static RespBean error() { + RespBean respBean = new RespBean(); + respBean.setCode(10001); + + return respBean; + } + + public static RespBean error(String msg) { + RespBean respBean = new RespBean(); + respBean.setCode(10001); + respBean.setMsg(msg); + + return respBean; + } + + public static RespBean error(String msg, Object data) { + RespBean respBean = new RespBean(); + respBean.setCode(10001); + respBean.setMsg(msg); + respBean.setData(data); + + return respBean; + } +} \ No newline at end of file diff --git a/vote_new_year_JAVA/src/main/java/com/lh/bean/Voter.java b/vote_new_year_JAVA/src/main/java/com/lh/bean/Voter.java new file mode 100644 index 0000000..e742a1a --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/bean/Voter.java @@ -0,0 +1,24 @@ +package com.lh.bean; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class Voter { + private Long id;//投票人ID + @NotNull + private String jwCode;//投票人Jwcode + private String name;//投票人姓名 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @NotNull + private LocalDateTime voteTime;//投票时间 + @NotNull + private String candidateJwCode;//被投票人JwCode +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/bean/dto/TokenDTO.java b/vote_new_year_JAVA/src/main/java/com/lh/bean/dto/TokenDTO.java new file mode 100644 index 0000000..10618db --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/bean/dto/TokenDTO.java @@ -0,0 +1,13 @@ +package com.lh.bean.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class TokenDTO { + private int jwcode; + private String username; +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/config/CORSFilter.java b/vote_new_year_JAVA/src/main/java/com/lh/config/CORSFilter.java new file mode 100644 index 0000000..9f48e99 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/config/CORSFilter.java @@ -0,0 +1,35 @@ +package com.lh.config; + +import org.springframework.stereotype.Component; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Component +public class CORSFilter implements Filter { + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + HttpServletResponse res = (HttpServletResponse) response; + res.addHeader("Access-Control-Allow-Credentials", "true"); + res.addHeader("Access-Control-Allow-Origin", "*"); + res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); + res.addHeader("Access-Control-Allow-Headers", "*"); + if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) { + response.getWriter().println("ok"); + return; + } + chain.doFilter(request, response); + } + + @Override + public void destroy() { + } + + @Override + public void init(FilterConfig filterConfig) { + } +} \ No newline at end of file diff --git a/vote_new_year_JAVA/src/main/java/com/lh/config/CandidateCacheRepository.java b/vote_new_year_JAVA/src/main/java/com/lh/config/CandidateCacheRepository.java new file mode 100644 index 0000000..cbe6a97 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/config/CandidateCacheRepository.java @@ -0,0 +1,89 @@ +package com.lh.config; + +import com.lh.bean.Candidate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; +import org.springframework.stereotype.Repository; + +import javax.annotation.PostConstruct; +import java.util.Set; + +@Repository +public class CandidateCacheRepository { + + @Autowired + private RedisTemplate redisTemplate; + + @PostConstruct + public void init() { + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); + redisTemplate.afterPropertiesSet(); + } + + // 保存候选人信息到 Redis + + // 保存候选人信息到 Redis + public void saveCandidate(Candidate candidate) { + String key = "candidate:" + candidate.getJwcode(); + + // 确保所有值都是字符串类型 + redisTemplate.opsForHash().put(key, "id", String.valueOf(candidate.getId())); + redisTemplate.opsForHash().put(key, "jwcode", candidate.getJwcode()); + redisTemplate.opsForHash().put(key, "name", candidate.getName()); + redisTemplate.opsForHash().put(key, "avatar", candidate.getAvatar()); + redisTemplate.opsForHash().put(key, "votes", String.valueOf(candidate.getVotes())); + + // 更新 ZSET + redisTemplate.opsForZSet().add("candidate:votes", candidate.getJwcode(), candidate.getVotes()); + } + + // 获取候选人详细信息 + public Candidate getCandidate(String jwcode) { + String key = "candidate:" + jwcode; + Candidate candidate = new Candidate(); + + Object idObj = redisTemplate.opsForHash().get(key, "id"); + if (idObj != null) { + candidate.setId(Long.parseLong(idObj.toString())); + } + + candidate.setJwcode((String) redisTemplate.opsForHash().get(key, "jwcode")); + candidate.setName((String) redisTemplate.opsForHash().get(key, "name")); + candidate.setAvatar((String) redisTemplate.opsForHash().get(key, "avatar")); + + Object votesObj = redisTemplate.opsForHash().get(key, "votes"); + if (votesObj != null) { + candidate.setVotes(Integer.parseInt(votesObj.toString())); + } + //如果id,jwcode,name,avatar,votes都为空,则返回null + if (candidate.getId() == null && candidate.getJwcode() == null && candidate.getName() == null && candidate.getAvatar() == null) { + return null; + } + + return candidate; + } + + // 获取所有候选人的 jwcode 按投票数排序 + public Set getCandidateJwCodesByVotes() { + return redisTemplate.opsForZSet().reverseRange("candidate:votes", 0, -1); + } + + // 删除 Redis 中所有候选人数据 + public void deleteAllCandidatesFromCache() { + Set jwcodes = redisTemplate.opsForZSet().range("candidate:votes", 0, -1); + if (jwcodes != null) { + for (Object jwcode : jwcodes) { + redisTemplate.delete("candidate:" + jwcode); + } + } + redisTemplate.delete("candidate:votes"); + } + //删除Redis中指定候选人数据 + public void deleteCandidateFromCache(String jwcode) { + redisTemplate.delete("candidate:" + jwcode); + redisTemplate.opsForZSet().remove("candidate:votes", jwcode); + } +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/config/ExceptionHandler.java b/vote_new_year_JAVA/src/main/java/com/lh/config/ExceptionHandler.java new file mode 100644 index 0000000..a79e2fc --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/config/ExceptionHandler.java @@ -0,0 +1,22 @@ +package com.lh.config; + +import com.lh.bean.RespBean; +import com.lh.exception.MyException; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@Configuration +@RestControllerAdvice +public class ExceptionHandler { + @org.springframework.web.bind.annotation.ExceptionHandler(MyException.class) + public RespBean myException(MyException e) { + e.printStackTrace(); + return RespBean.error(e.getMessage()); + } + + @org.springframework.web.bind.annotation.ExceptionHandler(Exception.class) + public RespBean exception(Exception e) { + e.printStackTrace(); + return RespBean.error("未知错误,请联系管理员"); + } +} \ No newline at end of file diff --git a/vote_new_year_JAVA/src/main/java/com/lh/config/RedisConfig.java b/vote_new_year_JAVA/src/main/java/com/lh/config/RedisConfig.java new file mode 100644 index 0000000..df347a6 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/config/RedisConfig.java @@ -0,0 +1,37 @@ +package com.lh.config; + +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +@Configuration +@EnableCaching +public class RedisConfig { + @Bean + public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory connectionFactory) { + return new StringRedisTemplate(connectionFactory); + } + + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate template = new RedisTemplate<>(); + template.setConnectionFactory(redisConnectionFactory); + + // 设置 key 的序列化方式 + template.setKeySerializer(new StringRedisSerializer()); + + // 设置 hash key 和 hash value 的序列化方式 + template.setHashKeySerializer(new StringRedisSerializer()); + template.setHashValueSerializer(new StringRedisSerializer()); + + // 设置 value 的序列化方式 + template.setValueSerializer(new StringRedisSerializer()); + + return template; + } + +} \ No newline at end of file diff --git a/vote_new_year_JAVA/src/main/java/com/lh/controller/CandidateController.java b/vote_new_year_JAVA/src/main/java/com/lh/controller/CandidateController.java new file mode 100644 index 0000000..2c9e385 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/controller/CandidateController.java @@ -0,0 +1,67 @@ +package com.lh.controller; + +import com.github.pagehelper.PageInfo; +import com.lh.bean.Candidate; +import com.lh.bean.RespBean; +import com.lh.service.CandidatesService; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@CrossOrigin +@RestController +@RequestMapping +public class CandidateController { + @Autowired + private CandidatesService candidateService; + + //分页查询+条件查询 + @GetMapping("/getCandidatesPage") + public RespBean getCandidatesPage(@RequestParam(value = "name",defaultValue = "")String name,@RequestParam(value = "location",defaultValue = "")Integer location, @RequestParam(value = "pageNum",defaultValue = "0")Integer pageNum, @RequestParam(value = "pageSize",defaultValue = "10")Integer pageSize){ + pageNum = pageNum == 0 ? 1 : pageNum; + pageSize = pageSize == null ? 10 : pageSize; + Candidate candidate = new Candidate(); + candidate.setName(name); + candidate.setLocation(location); + PageInfo pageInfo = candidateService.selectCandidate(candidate, pageNum, pageSize); + return RespBean.ok("查询成功", pageInfo); + } + //添加 + @PostMapping("/addCandidate") + public RespBean addCandidate(@RequestBody Candidate candidate){ + candidateService.insertCandidate(candidate); + return RespBean.ok("添加成功:" + candidate.getJwcode()); + } + + //编辑 + @PostMapping("/updateCandidate") + public RespBean updateCandidate(@RequestBody Candidate candidate){ + candidateService.updateCandidate(candidate); + return RespBean.ok("修改成功:" + candidate.getJwcode()); + } + + //根据编号查询候选人/物品信息 + @GetMapping("/getCandidateByJwcode/{jwcode}") + public RespBean getCandidateById(@PathVariable("jwcode") String jwcode){ + return RespBean.ok("查询成功:" + jwcode, candidateService.selectCandidateByJwcode(jwcode)); + } + + //下架 + @GetMapping("/changeCandidateByJwcode/{jwcode}") + public RespBean changeCandidateByJwcode(@PathVariable("jwcode") String jwcode){ + candidateService.changeCandidateStatus(jwcode); + return RespBean.ok("状态修改成功:" + jwcode); + } + + //根据精网号查询被投票记录 + @GetMapping("/getVoterByCandidateAndVoterJwcode") + public RespBean getVoterByCandidateAndVoterJwcode(@RequestParam(value = "voterJwcode",defaultValue = "")String voterJwcode, @RequestParam(value = "candidateJwcode")String candidateJwcode){ + return RespBean.ok("查询成功:",candidateService.getVoterByCandidateAndVoterJwcode(candidateJwcode,voterJwcode)); + } + + //实际人数 + @GetMapping("/getRealCount/{candidateJwcode}") + public RespBean getRealCount(@PathVariable("candidateJwcode") String candidateJwcode){ + return RespBean.ok("实际人数", candidateService.realCount(candidateJwcode)); + } +} \ No newline at end of file diff --git a/vote_new_year_JAVA/src/main/java/com/lh/controller/VoteController.java b/vote_new_year_JAVA/src/main/java/com/lh/controller/VoteController.java new file mode 100644 index 0000000..4ac9047 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/controller/VoteController.java @@ -0,0 +1,45 @@ +package com.lh.controller; + +import com.lh.bean.RespBean; +import com.lh.exception.MyException; +import com.lh.service.VoteService; +import com.lh.until.Utils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.net.URLEncoder; +import java.util.Map; + +@CrossOrigin +@RestController +@RequestMapping +public class VoteController { + @Autowired + private VoteService voteService; + //投票. + @PostMapping("/vote") + public RespBean vote(@RequestParam("code") String candidateJwcode, @RequestParam("token") String token) throws Exception { + token = "token=" + URLEncoder.encode(token,"UTF-8"); + Utils utils = new Utils(); + String voterJwcode = String.valueOf(utils.getJwcode(token)); + String voterName = utils.getUsername(token); + Integer result =voteService.insertVote(voterJwcode, candidateJwcode, voterName); + return RespBean.ok("投票成功!今日还可以投" + result + "次"); + } + //获取所有候选人 + @PostMapping ("/getCandidates") + public RespBean getCandidates(@RequestBody Map query) throws IOException { + String token = query.get("token"); + token = "token=" + URLEncoder.encode(token, "UTF-8"); + System.out.println(token); + String voterJwcode = String.valueOf(new Utils().getJwcode(token)); + return RespBean.ok("获取成功",voteService.getCandidates(voterJwcode)); + } + + //获取某个候选人的被投票记录 + @GetMapping("/getVotesByCandidate/{candidateJwcode}") + public RespBean getVotesByCandidate(@PathVariable("candidateJwcode") String candidateJwcode) throws MyException { + return RespBean.ok("获取成功",voteService.getVotesByCandidate(candidateJwcode)); + } +} \ No newline at end of file diff --git a/vote_new_year_JAVA/src/main/java/com/lh/exception/MyException.java b/vote_new_year_JAVA/src/main/java/com/lh/exception/MyException.java new file mode 100644 index 0000000..20f44af --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/exception/MyException.java @@ -0,0 +1,7 @@ +package com.lh.exception; + +public class MyException extends RuntimeException{ + public MyException(String msg){ + super(msg); + } +} \ No newline at end of file diff --git a/vote_new_year_JAVA/src/main/java/com/lh/mapper/CandidatesMapper.java b/vote_new_year_JAVA/src/main/java/com/lh/mapper/CandidatesMapper.java new file mode 100644 index 0000000..ae5ffc5 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/mapper/CandidatesMapper.java @@ -0,0 +1,28 @@ +package com.lh.mapper; + +import com.lh.bean.Candidate; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface CandidatesMapper { + //获取所有候选人 + List getCandidates(); + + //通过精网号搜索候选人 + Candidate getByCandidateJwcode(@Param("jwcode") String jwcode); + + //候选人票数+1 + boolean addVotes(@Param("jwcode") String jwcode); + + //新增候选人 + boolean insertCandidate(Candidate candidate); + + //编辑候选人 + 候选人状态变更 + boolean updateCandidate(Candidate candidate); + + //条件查询 + List selectCandidate(Candidate candidate); +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/mapper/VoterMapper.java b/vote_new_year_JAVA/src/main/java/com/lh/mapper/VoterMapper.java new file mode 100644 index 0000000..af89cc9 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/mapper/VoterMapper.java @@ -0,0 +1,21 @@ +package com.lh.mapper; + +import com.lh.bean.Voter; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface VoterMapper { + // 查询用户今日投票信息 + List countVotesToday(@Param("jwcode") String jwcode); + //插入投票记录 + void insertVote(@Param("jwcode") String jwcode, @Param("candidateJwcode") String candidateJwcode,@Param("name") String namne); + //根据候选人的jwcode查询投票记录 + List getVotesByCandidate(@Param("candidateJwcode") String candidateJwcode); + //查询该候选人的实际票数 + int countVotesByCandidate(@Param("candidateJwcode") String candidateJwcode); + //根据精网号查询详情中的投票记录 + List getVoterByVoterAndCandidateJwcode(@Param("jwcode") String jwcode, @Param("candidateJwcode") String candidateJwcode); +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/service/CandidatesService.java b/vote_new_year_JAVA/src/main/java/com/lh/service/CandidatesService.java new file mode 100644 index 0000000..cab596f --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/service/CandidatesService.java @@ -0,0 +1,24 @@ +package com.lh.service; + +import com.github.pagehelper.PageInfo; +import com.lh.bean.Candidate; +import com.lh.bean.Voter; + +import java.util.List; + +public interface CandidatesService { + //新增候选人 + Boolean insertCandidate(Candidate candidate); + //下架候选人 + Boolean changeCandidateStatus(String candidateJwcode); + //修改候选人信息 + Boolean updateCandidate(Candidate candidate); + //条件查询+分页 + PageInfo selectCandidate(Candidate candidate, Integer pageNum, Integer pageSize); + //查看详情的根据精网号查询 + List getVoterByCandidateAndVoterJwcode(String voterJwcode, String candidateJwcode); + //查看详情的实际票数 + Integer realCount(String candidateJwcode); + //根据jwocde查询 + Candidate selectCandidateByJwcode(String jwcode); +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/service/CandidatesServiceImpl.java b/vote_new_year_JAVA/src/main/java/com/lh/service/CandidatesServiceImpl.java new file mode 100644 index 0000000..7eb9ab1 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/service/CandidatesServiceImpl.java @@ -0,0 +1,117 @@ +package com.lh.service; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.lh.bean.Candidate; +import com.lh.bean.Voter; +import com.lh.config.CandidateCacheRepository; +import com.lh.exception.MyException; +import com.lh.mapper.CandidatesMapper; +import com.lh.mapper.VoterMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +public class CandidatesServiceImpl implements CandidatesService { + @Autowired + private CandidatesMapper candidatesMapper; + @Autowired + private VoterMapper voterMapper; + @Autowired + private CandidateCacheRepository candidateCacheRepository; + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertCandidate(Candidate candidate){ + if(candidate == null || candidate.getJwcode()==null || candidate.getJwcode().equals("")){ + throw new MyException("候选人/物品信息不能为空!"); + } + // 候选人Jwcode不能重复 + if(candidatesMapper.getByCandidateJwcode(candidate.getJwcode()) != null){ + throw new MyException("候选人/物品编号不能重复!"); + } + //最大数量不能超过40个 + if(candidatesMapper.getCandidates().size() >= 40){ + throw new MyException("候选人/投票物品已达到最大数量40!"); + } + candidatesMapper.insertCandidate(candidate); + if (candidate.getStatus() == 1){ + // 缓存中添加候选人信息 + candidateCacheRepository.saveCandidate(candidate); + } + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean changeCandidateStatus(String candidateJwcode){ + Candidate candidate = candidatesMapper.getByCandidateJwcode(candidateJwcode); + //候选人不存在 + if(candidate == null){ + throw new MyException("候选人不存在!"); + } + //如果候选人状态为1,则设置为0,否则设置为1,三元运算符 + Integer status = candidate.getStatus(); + candidate = new Candidate(); + candidate.setStatus(status == 1 ? 0 : 1); + candidate.setJwcode(candidateJwcode); + candidatesMapper.updateCandidate(candidate); + //如果状态为1,则添加缓存,否则删除缓存 + if(candidate.getStatus() == 1){ + candidateCacheRepository.saveCandidate(candidate); + }else{ + candidateCacheRepository.deleteCandidateFromCache(candidateJwcode); + } + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateCandidate(Candidate candidate){ + //候选人不存在 + if(candidate == null){ + throw new MyException("候选人/物品信息不能为空!"); + } + //修改后的CandidateJwcode不能与其他的候选人重复但是可以与自己重复 + if(candidatesMapper.getByCandidateJwcode(candidate.getJwcode()) != null && !candidate.getJwcode().equals(candidate.getJwcode())){ + throw new MyException("候选人/物品编号不能重复!"); + } + candidatesMapper.updateCandidate(candidate); + if (candidatesMapper.getByCandidateJwcode(candidate.getJwcode()).getStatus() == 1){ + // 缓存中修改候选人信息 + candidateCacheRepository.saveCandidate(candidate); + } else{ + candidateCacheRepository.deleteCandidateFromCache(candidate.getJwcode()); + } + + return true; + } + + //分页查询 + @Override + public PageInfo selectCandidate(Candidate candidate, Integer pageNum, Integer pageSize) { + //设置分页参数 + PageHelper.startPage(pageNum, pageSize); + List candidateList = candidatesMapper.selectCandidate(candidate); + PageInfo candidatePageInfo = new PageInfo<>(candidateList); + return candidatePageInfo; + } + + @Override + public List getVoterByCandidateAndVoterJwcode(String voterJwcode, String candidateJwcode){ + return voterMapper.getVoterByVoterAndCandidateJwcode(voterJwcode,candidateJwcode); + } + + @Override + public Integer realCount(String candidateJwcode) { + return voterMapper.countVotesByCandidate(candidateJwcode); + } + + @Override + public Candidate selectCandidateByJwcode(String jwcode) { + System.out.println(candidatesMapper.getByCandidateJwcode(jwcode)); + return candidatesMapper.getByCandidateJwcode(jwcode); + } +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/service/VoteService.java b/vote_new_year_JAVA/src/main/java/com/lh/service/VoteService.java new file mode 100644 index 0000000..18c915e --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/service/VoteService.java @@ -0,0 +1,16 @@ +package com.lh.service; + +import com.lh.bean.Candidate; +import com.lh.bean.Voter; +import com.lh.exception.MyException; + +import java.util.List; + +public interface VoteService { + //投票 + Integer insertVote(String voterJwcode, String candidateJwcode, String voterName) throws MyException; + //获取所有候选人 + List getCandidates(String VoterJwcode); + //获取某个候选人的被投票记录 + List getVotesByCandidate(String candidateJwcode) throws MyException; +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/service/VoteServiceImpl.java b/vote_new_year_JAVA/src/main/java/com/lh/service/VoteServiceImpl.java new file mode 100644 index 0000000..6541ed9 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/service/VoteServiceImpl.java @@ -0,0 +1,191 @@ +package com.lh.service; + +import com.lh.bean.Candidate; +import com.lh.bean.Voter; +import com.lh.config.CandidateCacheRepository; +import com.lh.exception.MyException; +import com.lh.mapper.CandidatesMapper; +import com.lh.mapper.VoterMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.PostConstruct; +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +@Service +public class VoteServiceImpl implements VoteService { + + private static final Logger logger = LoggerFactory.getLogger(VoteServiceImpl.class); + + @Autowired + private VoterMapper voterMapper; + @Autowired + private CandidatesMapper candidatesMapper; + @Value("${vote.limit.daily}") + private int dailyVoteLimit; // 每日投票次数限制 + @Autowired + private StringRedisTemplate stringRedisTemplate; + @Autowired + private RedisTemplate redisTemplate; + @Autowired + private CandidateCacheRepository candidateCacheRepository; + + // 初始化时加载所有候选人数据并缓存到 Redis + @PostConstruct + public void initCandidatesCache() throws MyException { + try { + List candidates = candidatesMapper.getCandidates(); + candidates = candidates.stream() + .filter(candidate -> candidate.getStatus() != 0) + .collect(Collectors.toList()); + for (Candidate candidate : candidates) { + candidateCacheRepository.saveCandidate(candidate); + } + logger.info("Candidate cache initialized successfully."); + } catch (Exception e) { + logger.error("Failed to initialize candidate cache.", e); + throw new MyException("初始化候选人缓存失败"); + } + } + + // 投票 + @Override + @Transactional(rollbackFor = Exception.class) + public Integer insertVote(String voterJwcode, String candidateJwcode, String voterName) throws MyException { + Candidate candidate = candidateCacheRepository.getCandidate(candidateJwcode); + System.out.println(candidate); + if (candidateCacheRepository.getCandidate(candidateJwcode) == null) { + throw new MyException("候选人不存在"); + } + + String redisKey = "vote_count:" + voterJwcode + ":" + LocalDateTime.now().toLocalDate(); + String currentVoteCountStr = stringRedisTemplate.opsForValue().get(redisKey); + int voteCountToday = currentVoteCountStr == null ? 0 : Integer.parseInt(currentVoteCountStr); + + if (voteCountToday >= dailyVoteLimit) { + throw new MyException("今日投票次数已达上限"); + } + + String voteStatusKey = "vote_status:" + voterJwcode + ":" + candidateJwcode; + Boolean hasVoted = stringRedisTemplate.hasKey(voteStatusKey); + if (hasVoted != null && hasVoted) { + throw new MyException("您已经为该候选人投票,不能重复投票"); + } + + String candidateKey = "candidate:" + candidateJwcode; + + // 使用 Redis 的 Hash 增加候选人投票数 + redisTemplate.opsForHash().increment(candidateKey, "votes", 1); + + // 使用 Redis 的 ZSet 增加候选人投票数 + redisTemplate.opsForZSet().incrementScore("candidate:votes", candidateJwcode, 1); + + // 更新 Redis 中的投票次数 + redisTemplate.opsForValue().increment(redisKey, 1); + + // 设置 Redis 键的过期时间为当天的23:59:59 + LocalDateTime now = LocalDateTime.now(); + LocalDateTime endOfDay = now.toLocalDate().atTime(23, 59, 59); + long secondsUntilEndOfDay = Duration.between(now, endOfDay).getSeconds(); + // 更新投票次数的过期时间 + redisTemplate.expire(redisKey, secondsUntilEndOfDay, TimeUnit.SECONDS); + // 更新投票重复键 + stringRedisTemplate.opsForValue().set(voteStatusKey, "true", secondsUntilEndOfDay, TimeUnit.SECONDS); + + // 数据库操作 + processVote(voterJwcode, candidateJwcode, voterName); + + return dailyVoteLimit - voteCountToday - 1; + } + + // 获取所有候选人 + @Override + public List getCandidates(String voterJwcode) { + List candidateList = new ArrayList<>(); + try { + Set jwcodes = candidateCacheRepository.getCandidateJwCodesByVotes(); + List jwCodeList = new ArrayList<>(); + for (Object jwcode : jwcodes) { + jwCodeList.add(jwcode.toString()); + } + + for (String jwcode : jwCodeList) { + Candidate candidate = candidateCacheRepository.getCandidate(jwcode); + if (candidate != null) { + candidateList.add(candidate); + } + } + }catch(Exception e){ + //如果缓存中获取候选人失败,则从数据库中获取候选人列表 + candidateList = candidatesMapper.getCandidates(); + } + + // 插入投票记录,为 List 插入当日是否投过票的状态 + markVotedStatus(voterJwcode, candidateList); + + return candidateList; + } + + // 获取候选人被投票记录 + @Override + public List getVotesByCandidate(String candidateJwcode) throws MyException { + try { + return voterMapper.getVotesByCandidate(candidateJwcode); + } catch (Exception e) { + throw new MyException("获取候选人投票记录失败"); + } + } + + // 为用户标记投票状态 + private void markVotedStatus(String voterJwcode, List candidateList) { + String voteStatusKeyPrefix = "vote_status:" + voterJwcode + ":"; + Set votedKeys = stringRedisTemplate.keys(voteStatusKeyPrefix + "*"); + + if (votedKeys != null) { + for (Candidate candidate : candidateList) { + String fullKey = voteStatusKeyPrefix + candidate.getJwcode(); + if (votedKeys.contains(fullKey)) { + candidate.setVoted(true); + } + } + } + } + + //异步处理数据库操作 + @Async + @Transactional(rollbackFor = Exception.class) + protected void processVote(String voterJwcode, String candidateJwcode, String voterName) throws MyException { + // 获取候选人信息 + Candidate candidate = candidatesMapper.getByCandidateJwcode(candidateJwcode); + + // 2. 获取候选人信息 + if (candidate == null) { + throw new MyException("候选人不存在!"); + } + + // 4. 增加候选人票数 + if (!candidatesMapper.addVotes(candidateJwcode)) { + throw new MyException ("候选人票数更新失败,请联系管理员!"); + } + + // 5. 插入投票记录 + voterMapper.insertVote(voterJwcode, candidateJwcode, voterName); + + + System.out.println("投票成功!用户:" + voterJwcode + " 投给了 " + candidateJwcode); + } + +} diff --git a/vote_new_year_JAVA/src/main/java/com/lh/until/Utils.java b/vote_new_year_JAVA/src/main/java/com/lh/until/Utils.java new file mode 100644 index 0000000..c19fb88 --- /dev/null +++ b/vote_new_year_JAVA/src/main/java/com/lh/until/Utils.java @@ -0,0 +1,84 @@ +package com.lh.until; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.spring.SpringUtil; +import cn.hutool.json.JSONUtil; +import com.lh.bean.RespBean; +import com.lh.bean.dto.TokenDTO; +import com.lh.exception.MyException; +import lombok.extern.slf4j.Slf4j; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; + +@Slf4j +@Component +public class Utils { + // 编码Token + static String url; + + @PostConstruct + public void initAnalysisTokenUrl() { + boolean isProd = Arrays.asList(SpringUtil.getActiveProfiles()).contains("prod"); + if (isProd) { + url = SpringUtil.getProperty("homilychart.token.analysis.url.prod"); + } else { + url = SpringUtil.getProperty("homilychart.token.analysis.url.test"); + } + } + + // 获取token中的信息 + public TokenDTO analysisToken(String token) throws IOException { + // 创建HttpClient实例 + try (CloseableHttpClient httpClient = HttpClients.createDefault()) { + // 创建POST请求 + HttpPost postRequest = new HttpPost(url); + postRequest.setHeader("Content-Type", "application/x-www-form-urlencoded"); + System.out.println(token); + // 设置请求体参数 + StringEntity entity = new StringEntity(token, ContentType.APPLICATION_FORM_URLENCODED); + postRequest.setEntity(entity); + // 发送请求并获取响应 + try (CloseableHttpResponse response = httpClient.execute(postRequest)) { + int responseCode = response.getStatusLine().getStatusCode(); // 获取状态码 + // 读取响应体 + String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8); + log.info("[Utils] exec analysisToken url:{}, requestBody:{}, responseCode:{}, responseBody:{}", url, token, responseCode, responseBody); + + // 获取不到用户状态 + if (responseCode != 200 || StrUtil.isEmpty(responseBody)) { + throw new MyException("用户状态获取失败"); + } + + // 将token进行解析为RespBean + RespBean bean = JSONUtil.toBean(responseBody, RespBean.class); + if (bean.getCode() != 200) { + throw new MyException("用户状态获取失败"); + } + + return JSONUtil.toBean(bean.getData().toString(), TokenDTO.class); + } + } + } + + // 获取token中的jwcode + public Integer getJwcode(String token) throws IOException { + TokenDTO dto = analysisToken(token); + return dto.getJwcode(); + } + public String getUsername(String token) throws IOException { + TokenDTO dto = analysisToken(token); + return dto.getUsername(); + } + +} \ No newline at end of file diff --git a/vote_new_year_JAVA/src/main/resources/application.properties b/vote_new_year_JAVA/src/main/resources/application.properties new file mode 100644 index 0000000..7196c17 --- /dev/null +++ b/vote_new_year_JAVA/src/main/resources/application.properties @@ -0,0 +1,41 @@ +# 配置连接池 +spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/vote_new_year?serverTimezone=UTC +spring.datasource.username=root +spring.datasource.password=123456 +# HikariCP连接池配置 +spring.datasource.hikari.maximum-pool-size=10 +spring.datasource.hikari.minimum-idle=5 +spring.datasource.hikari.idle-timeout=30000 +spring.datasource.hikari.max-lifetime=1800000 +spring.datasource.hikari.connection-timeout=30000 +spring.datasource.hikari.pool-name=HwgoldHikariCP + +# mybatis配置 +# 打印log信息 +mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl +# 开启驼峰命名法,自动将数据库的命名方式,映射成Java中的命名方式 +mybatis.configuration.map-underscore-to-camel-case: true +#下面这些内容是为了让MyBatis映射 +#指定Mybatis的Mapper文件 +mybatis.mapper-locations=classpath:mappers/*xml +#指定Mybatis的实体目录 +mybatis.type-aliases-package=com.lh.mybatis.entity + +# 应用服务 WEB 访问端口 +server.port=8092 + +#Redis 配置 +spring.redis.host=localhost +spring.redis.port=26379 +spring.redis.password=123456 +spring.redis.timeout=2000 +spring.redis.jedis.pool.max-active=10 +spring.redis.jedis.pool.max-idle=5 +spring.redis.jedis.pool.min-idle=1 + +# 每日最大投票次数 +vote.limit.daily=3 + +homilychart.token.analysis.url.test = http://39.101.133.168:8828/hljw/api/v2/member/info +homilychart.token.analysis.url.prod = https://api.homilychart.com/hljw/api/v2/member/info diff --git a/vote_new_year_JAVA/src/main/resources/com/lh/mapper/CandidatesMapper.xml b/vote_new_year_JAVA/src/main/resources/com/lh/mapper/CandidatesMapper.xml new file mode 100644 index 0000000..c056315 --- /dev/null +++ b/vote_new_year_JAVA/src/main/resources/com/lh/mapper/CandidatesMapper.xml @@ -0,0 +1,51 @@ + + + + + update candidates set votes = votes + 1 where jwcode = #{jwcode} + + + insert into candidates(jwcode,name,avatar,votes,status,location,money) values(#{jwcode},#{name},#{avatar},#{votes},#{status},#{location},#{money}) + + + update candidates + + + name = #{name}, + + + avatar = #{avatar}, + + + votes = #{votes}, + + + status = #{status}, + + + location = #{location}, + + + money = #{money}, + + + where jwcode = #{jwcode} + + + + + \ No newline at end of file diff --git a/vote_new_year_JAVA/src/main/resources/com/lh/mapper/VoterMapper.xml b/vote_new_year_JAVA/src/main/resources/com/lh/mapper/VoterMapper.xml new file mode 100644 index 0000000..caecde1 --- /dev/null +++ b/vote_new_year_JAVA/src/main/resources/com/lh/mapper/VoterMapper.xml @@ -0,0 +1,20 @@ + + + + + INSERT INTO voters(jwcode, candidate_jwcode, name) + VALUES(#{jwcode}, #{candidateJwcode}, #{name}) + + + + + + \ No newline at end of file diff --git a/vote_new_year_JAVA/src/main/resources/static/index.html b/vote_new_year_JAVA/src/main/resources/static/index.html new file mode 100644 index 0000000..e2d94a2 --- /dev/null +++ b/vote_new_year_JAVA/src/main/resources/static/index.html @@ -0,0 +1,6 @@ + + +

hello word!!!

+

this is a html page

+ + \ No newline at end of file diff --git a/vote_new_year_JAVA/src/test/java/com/lh/VoteSystemApplicationTests.java b/vote_new_year_JAVA/src/test/java/com/lh/VoteSystemApplicationTests.java new file mode 100644 index 0000000..4422611 --- /dev/null +++ b/vote_new_year_JAVA/src/test/java/com/lh/VoteSystemApplicationTests.java @@ -0,0 +1,69 @@ +package com.lh; + +import com.lh.bean.Candidate; +import com.lh.mapper.CandidatesMapper; +import com.lh.mapper.VoterMapper; +import com.lh.service.CandidatesService; +import com.lh.service.VoteService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class VoteSystemApplicationTests { + @Autowired + private CandidatesMapper candidatesMapper; + @Autowired + private VoterMapper voterMapper; + @Autowired + private VoteService voteService; + @Autowired + private CandidatesService candidatesService; + + @Test + void contextLoads() { + candidatesMapper.getCandidates().forEach(System.out::println); + //System.out.print( voterMapper.countVotesToday("10010")); + voteService.getCandidates("90044599").forEach(System.out::println); + } + @Test + void contextLoads1() { + voterMapper.getVotesByCandidate("90044602").forEach(System.out::println); + } + @Test + void contextLoads2() { + voterMapper.insertVote("10010","20010","王五"); + } + @Test + void contextLoads3() { +// candidatesMapper.insertCandidate(new Candidate(null,"A001","口红","1.jpg",0,0,100,1,"王五","王五","王五",false)); +// candidatesMapper.updateCandidate(new Candidate(null,"A001","口红",null,null,null,null,null,null,null,null,false)) +// System.out.print(voterMapper.countVotesByCandidate("A001")); + candidatesMapper.selectCandidate(new Candidate(null,"A001",null,null,null,null,0,null,null,null,null,false)).forEach(System.out::println); + } + @Test + void contextLoads4(){ + candidatesService.insertCandidate(new Candidate(null,"011","iphone","1.jpg",0,1,2,1000,"王五","王五","王五",false)); + } + + @Test + void contextLoads5(){ + System.out.print(candidatesService.changeCandidateStatus("011")); + } + @Test + void contextLoads6(){ + System.out.print(candidatesService.updateCandidate(new Candidate(null,"011","iphone16","1.jpg",0,null,null,null,null,null,null,false))); + } + @Test + void contextLoads7(){ + System.out.print(candidatesService.updateCandidate(new Candidate(null,"011","iphone18","1.jpg",0,null,null,null,null,null,null,false))); + } + @Test + void contextLoads8(){ +// candidatesService.selectCandidate(new Candidate(null,null,null,null,null,null,2,null,null,null,null,false)).forEach(System.out::println); + } + @Test + void contextLoads9(){ + candidatesService.getVoterByCandidateAndVoterJwcode("90044599","010").forEach(System.out::println); + } +} diff --git a/投票基本设计(目前前台未完成).xlsx b/投票基本设计(目前前台未完成).xlsx new file mode 100644 index 0000000..9175e1f Binary files /dev/null and b/投票基本设计(目前前台未完成).xlsx differ