From 8676f4cb37ef31fa9fcfe2a7faf5f4c4ea77cc1a Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 29 一月 2026 09:46:05 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/zbom_dianjiang
---
server/admin/src/main/java/com/doumee/api/business/CategoryController.java | 6
server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java | 26
server/web/src/main/java/com/doumee/api/web/ApiController.java | 5
admin/src/components/business/OperaMemberImportWindow.vue | 86 +
admin/src/views/business/categoryBusType.vue | 23
admin/public/template/casees.xlsx | 0
admin/package-lock.json | 169 +-
server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java | 31
admin/src/api/business/category.js | 5
server/admin/src/main/java/com/doumee/api/business/ImportRecordController.java | 21
server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java | 14
admin/src/api/business/importRecord.js | 48
admin/src/views/business/categoryLevel.vue | 21
server/services/src/main/java/com/doumee/api/common/PublicController.java | 168 ++
server/services/src/main/java/com/doumee/core/constants/Constants.java | 24
server/services/src/main/java/com/doumee/service/business/InterfaceLogService.java | 100 +
admin/admin/index.html | 2
server/services/src/main/java/com/doumee/core/utils/tyyun/TyyZosUtil.java | 185 +++
server/services/src/main/java/com/doumee/service/business/MemberService.java | 5
admin/.env.development | 3
server/services/src/main/java/com/doumee/dao/business/model/Category.java | 27
server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java | 135 ++
admin/src/api/business/member.js | 3
.idea/jarRepositories.xml | 10
admin/admin/favicon.ico | 0
admin/public/template/member.xlsx | 0
admin/src/views/business/interfaceLog.vue | 148 ++
admin/package.json | 7
admin/src/views/business/category.vue | 12
admin/src/views/business/member.vue | 246 ++-
admin/src/views/index.vue | 2
server/web/src/main/java/com/doumee/api/web/LoginController.java | 161 ++
admin/src/components/common/UploadImage.vue | 124 -
server/admin/src/main/java/com/doumee/api/business/MemberController.java | 10
server/services/src/main/resources/application-pro.yml | 50
.idea/compiler.xml | 1
server/services/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java | 1
admin/public/index.html | 2
server/services/src/main/java/com/doumee/dao/business/dto/CasesImport.java | 36
admin/src/components/common/Menu.vue | 2
server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java | 22
server/services/src/main/java/com/doumee/dao/business/dto/LoginRequestNewParam.java | 17
admin/public/favicon.ico | 0
server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java | 24
server/services/src/main/resources/application-test.yml | 47
admin/src/api/business/interfaceLog.js | 18
server/services/src/main/java/com/doumee/service/business/ImportRecordService.java | 5
admin/src/components/common/UploadAvatarImage.vue | 2
server/services/src/main/java/com/doumee/dao/business/dto/RoleRequestParam.java | 11
admin/src/views/login.vue | 2
server/services/pom.xml | 15
server/services/src/main/java/com/doumee/dao/business/InterfaceLogMapper.java | 12
server/services/src/main/java/com/doumee/service/business/impl/InterfaceLogServiceImpl.java | 191 +++
server/services/src/main/resources/application-dev.yml | 8
server/services/src/main/java/com/doumee/dao/business/model/Multifile.java | 6
server/services/src/main/java/com/doumee/dao/business/model/InterfaceLog.java | 98 +
server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java | 113 +
admin/src/components/business/OperaCategoryWindow.vue | 87
/dev/null | 54
server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java | 7
server/services/src/main/java/com/doumee/dao/business/dto/MemberImport.java | 42
server/services/lib/zos-sdk.jar | 0
server/pom.xml | 5
server/services/src/main/java/com/doumee/core/annotation/excel/ExcelPictureUtil.java | 309 +++++
server/services/src/main/java/com/doumee/dao/vo/WebLoginUserVO.java | 28
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 218 ++
admin/src/components/business/OperaInterfaceLogWindow.vue | 102 +
server/web/src/main/resources/application.yml | 8
admin/src/views/business/categoryField.vue | 17
server/services/src/main/java/com/doumee/dao/business/model/Member.java | 48
server/web/src/main/java/com/doumee/DJWebApplication.java | 5
admin/src/assets/logo.png | 0
72 files changed, 2,767 insertions(+), 673 deletions(-)
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index baa301d..3a29174 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -2,6 +2,7 @@
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
+ <profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 712ab9d..380b522 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -7,6 +7,11 @@
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
+ <option name="id" value="nexus" />
+ <option name="name" value="Nexus" />
+ <option name="url" value="http://47.97.118.181:8089/nexus/content/groups/public/" />
+ </remote-repository>
+ <remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
@@ -16,5 +21,10 @@
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
+ <remote-repository>
+ <option name="id" value="central" />
+ <option name="name" value="Central Repository" />
+ <option name="url" value="http://47.97.118.181:8089/nexus/content/groups/public/" />
+ </remote-repository>
</component>
</project>
\ No newline at end of file
diff --git a/admin/.env.development b/admin/.env.development
index 8df256e..fafd2c3 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -1,4 +1,3 @@
# 寮�鍙戠幆澧冮厤缃�
NODE_ENV = 'development'
-#VUE_APP_API_URL = 'http://192.168.1.54:10010'
-VUE_APP_API_URL = 'https://jinkuai.832smartfarm.com/jinkuai_admin'
+VUE_APP_API_URL = 'http://localhost:10010'
diff --git a/admin/admin/favicon.ico b/admin/admin/favicon.ico
index 834a418..e7a2ce9 100644
--- a/admin/admin/favicon.ico
+++ b/admin/admin/favicon.ico
Binary files differ
diff --git a/admin/admin/index.html b/admin/admin/index.html
index 4a878cd..df8c58b 100644
--- a/admin/admin/index.html
+++ b/admin/admin/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>杩戝揩鍚庡彴绠$悊绯荤粺</title><link href="static/css/app.daf6fc74.css" rel="preload" as="style"><link href="static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="static/js/app.83e26f0e.js" rel="preload" as="script"><link href="static/js/chunk-vendors.2417847b.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="static/css/app.daf6fc74.css" rel="stylesheet"></head><body><div id="app"></div><script src="static/js/chunk-vendors.2417847b.js"></script><script src="static/js/app.83e26f0e.js"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>蹇楅偊鐐瑰皢鍚庡彴绠$悊绯荤粺</title><link href="static/css/app.daf6fc74.css" rel="preload" as="style"><link href="static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="static/js/app.83e26f0e.js" rel="preload" as="script"><link href="static/js/chunk-vendors.2417847b.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="static/css/app.daf6fc74.css" rel="stylesheet"></head><body><div id="app"></div><script src="static/js/chunk-vendors.2417847b.js"></script><script src="static/js/app.83e26f0e.js"></script></body></html>
diff --git a/admin/package-lock.json b/admin/package-lock.json
index 9256a01..1bd4443 100644
--- a/admin/package-lock.json
+++ b/admin/package-lock.json
@@ -1871,63 +1871,6 @@
"integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
"dev": true
},
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "optional": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "optional": true
- },
- "loader-utils": {
- "version": "2.0.4",
- "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
- "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
- "dev": true,
- "optional": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- }
- },
"ssri": {
"version": "8.0.1",
"resolved": "https://registry.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
@@ -1935,28 +1878,6 @@
"dev": true,
"requires": {
"minipass": "^3.1.1"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "optional": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "vue-loader-v16": {
- "version": "npm:vue-loader@16.8.3",
- "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
- "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
- "dev": true,
- "optional": true,
- "requires": {
- "chalk": "^4.1.0",
- "hash-sum": "^2.0.0",
- "loader-utils": "^2.0.0"
}
}
}
@@ -13675,6 +13596,15 @@
"integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=",
"dev": true
},
+ "vue-json-viewer": {
+ "version": "2.2.22",
+ "resolved": "https://registry.npmmirror.com/vue-json-viewer/-/vue-json-viewer-2.2.22.tgz",
+ "integrity": "sha512-3oPH5BxoUWva/qp7wNJj+15FBXyi9Yu5VDW4mCWivjHR1pUpMv34fjqqxML7jh2uOqm1S/3Xks5nQ5JjC5+OWw==",
+ "dev": true,
+ "requires": {
+ "clipboard": "^2.0.4"
+ }
+ },
"vue-loader": {
"version": "15.9.7",
"resolved": "https://registry.nlark.com/vue-loader/download/vue-loader-15.9.7.tgz",
@@ -13696,6 +13626,87 @@
}
}
},
+ "vue-loader-v16": {
+ "version": "npm:vue-loader@16.8.3",
+ "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
+ "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "hash-sum": "^2.0.0",
+ "loader-utils": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "optional": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "optional": true
+ },
+ "loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
"vue-router": {
"version": "3.5.1",
"resolved": "https://registry.nlark.com/vue-router/download/vue-router-3.5.1.tgz?cache=0&sync_timestamp=1620899536020&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-router%2Fdownload%2Fvue-router-3.5.1.tgz",
diff --git a/admin/package.json b/admin/package.json
index 81a4b79..718c85f 100644
--- a/admin/package.json
+++ b/admin/package.json
@@ -37,19 +37,20 @@
"@vue/cli-service": "~4.5.0",
"@vue/eslint-config-standard": "^5.1.2",
"babel-eslint": "^10.1.0",
+ "crypto-js": "^4.2.0",
"eslint": "^6.7.2",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.0",
"eslint-plugin-vue": "^6.2.2",
+ "jsencrypt": "^3.3.2",
"lint-staged": "^9.5.0",
"node-sass": "^4.12.0",
"sass-loader": "^8.0.2",
"vue-cli-plugin-element-ui": "~1.1.4",
- "vue-template-compiler": "^2.6.11",
- "crypto-js": "^4.2.0",
- "jsencrypt": "^3.3.2"
+ "vue-json-viewer": "^2.2.22",
+ "vue-template-compiler": "^2.6.11"
},
"eslintConfig": {
"root": true,
diff --git a/admin/public/favicon.ico b/admin/public/favicon.ico
index 834a418..e69de29 100644
--- a/admin/public/favicon.ico
+++ b/admin/public/favicon.ico
Binary files differ
diff --git a/admin/public/index.html b/admin/public/index.html
index 339846b..b90b5b8 100644
--- a/admin/public/index.html
+++ b/admin/public/index.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
- <title>杩戝揩鍚庡彴绠$悊绯荤粺</title>
+ <title>蹇楅偊鐐瑰皢鍚庡彴绠$悊绯荤粺</title>
</head>
<body>
<div id="app"></div>
diff --git a/admin/public/template/casees.xlsx b/admin/public/template/casees.xlsx
new file mode 100644
index 0000000..38aaf8c
--- /dev/null
+++ b/admin/public/template/casees.xlsx
Binary files differ
diff --git a/admin/public/template/member.xlsx b/admin/public/template/member.xlsx
new file mode 100644
index 0000000..be97d45
--- /dev/null
+++ b/admin/public/template/member.xlsx
Binary files differ
diff --git a/admin/src/api/business/category.js b/admin/src/api/business/category.js
index 3162d80..12abda9 100644
--- a/admin/src/api/business/category.js
+++ b/admin/src/api/business/category.js
@@ -6,6 +6,11 @@
trim: true
})
}
+export function findAll (data) {
+ return request.post('/business/category/list', data, {
+ trim: true
+ })
+}
// 鍒涘缓
export function create (data) {
diff --git a/admin/src/api/business/importRecord.js b/admin/src/api/business/importRecord.js
new file mode 100644
index 0000000..82a5f2e
--- /dev/null
+++ b/admin/src/api/business/importRecord.js
@@ -0,0 +1,48 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/business/importRecord/page', data, {
+ trim: true
+ })
+}
+
+// 鍒涘缓
+export function create (data) {
+ return request.post('/business/importRecord/create', data)
+}
+export function updateStatus (data) {
+ return request.post('/business/importRecord/updateStatus', data)
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+ return request.post('/business/importRecord/exportExcel', data, {
+ download: true
+ })
+}
+export function importExcel (data) {
+ return request.post('/business/importRecord/importExcel', data)
+}
+
+// 淇敼
+export function updateById (data) {
+ return request.post('/business/importRecord/updateById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+ return request.get(`/business/importRecord/delete/${id}`)
+}
+export function getById (id) {
+ return request.get(`/business/importRecord/${id}`)
+}
+
+// 鎵归噺鍒犻櫎
+export function deleteByIdInBatch (ids) {
+ return request.get('/business/importRecord/delete/batch', {
+ params: {
+ ids
+ }
+ })
+}
diff --git a/admin/src/api/business/interfaceLog.js b/admin/src/api/business/interfaceLog.js
new file mode 100644
index 0000000..7d6ff29
--- /dev/null
+++ b/admin/src/api/business/interfaceLog.js
@@ -0,0 +1,18 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/business/interfaceLog/page', data, {
+ trim: true
+ })
+}
+
+// 鍒涘缓
+export function create (data) {
+ return request.post('/business/interfaceLog/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+ return request.post('/business/interfaceLog/updateById', data)
+}
diff --git a/admin/src/api/business/member.js b/admin/src/api/business/member.js
index 9901389..df77a7f 100644
--- a/admin/src/api/business/member.js
+++ b/admin/src/api/business/member.js
@@ -21,6 +21,9 @@
download: true
})
}
+export function importExcel (data) {
+ return request.post('/business/member/importExcel', data)
+}
// 淇敼
export function updateById (data) {
diff --git a/admin/src/assets/logo.png b/admin/src/assets/logo.png
index 834a418..271e35f 100644
--- a/admin/src/assets/logo.png
+++ b/admin/src/assets/logo.png
Binary files differ
diff --git a/admin/src/components/business/OperaCategoryWindow.vue b/admin/src/components/business/OperaCategoryWindow.vue
index 326f991..c897b92 100644
--- a/admin/src/components/business/OperaCategoryWindow.vue
+++ b/admin/src/components/business/OperaCategoryWindow.vue
@@ -7,45 +7,34 @@
>
<el-form :model="form" ref="form" :rules="rules">
<el-form-item label="鍚嶇О" prop="name">
- <el-input v-if="form.type !=3" v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
- <el-select v-else v-model="form.name" placeholder="璇烽�夋嫨璁㈠崟绫诲瀷" v-trim>
- <el-option :value="'0'" label="鐢ㄥ伐鍗�"></el-option>
- <el-option :value="'1'" label="璐ц繍鍗�"></el-option>
- <el-option :value="'2'" label="璁㈤鍗�"></el-option>
- </el-select>
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
</el-form-item>
- <el-form-item v-if="form.type ==3 " label="鎵嬬画璐癸紙%锛�" prop="detail">
- <el-input type="number" v-model="form.detail" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+ <el-form-item label="鎴樺尯缂栫爜" prop="detail" v-if="form.type ==0" >
+ <el-input v-model="form.detail" placeholder="璇疯緭鍏ユ垬鍖虹紪鐮�" v-trim/>
</el-form-item>
- <el-form-item v-if="form.type == 1 || form.type == 2" :label=" form.type == 1?'杞﹁締瑙勬牸':'椁愭爣閰嶇疆锛堝厓锛�'" prop="detailList">
- <div style="display: flex;flex-direction: column">
- <div style="position: relative;display: block;width: 100%;" v-for="(item,index) in form.detailList" >
- <el-input :type="form.type == 1?'text':'number'" style="display:inline-block;width: 60%;margin:5px ;float: left" v-model="form.detailList[index]" placeholder="璇疯緭鍏ュ唴瀹�" v-trim/>
- <el-button style="display:inline-block;margin : 5px " @click="del(index)" v-if="form.detailList.length>0">x</el-button>
- </div>
- <div style="position: relative;display: block;width: 100%;">
- <el-button style="width: 100px;margin: 5px;" type="primary" @click="add()">娣诲姞瑙勬牸</el-button>
- </div>
- </div>
- </el-form-item>
- <el-form-item v-if="form.type == 1" label="鍥炬爣" prop="icon">
+ <el-form-item v-if="form.type == 3" label="鍥炬爣" prop="icon">
<UploadAvatarImage
:file="{ imgurlfull: form.iconFull, imgurl: form.icon }"
:uploadData="uploadData"
@uploadSuccess="uploadAvatarSuccess"
/>
</el-form-item>
- <el-form-item v-if="form.id ==null && form.type == 1" label="鏄惁鍥哄畾杞﹁締" prop="isFixed">
- <el-radio-group v-model="form.isFixed">
- <el-radio :label="0">闈炲浐瀹�</el-radio>
- <el-radio :label="1">鍥哄畾杞﹀瀷</el-radio>
- </el-radio-group>
+ <el-form-item v-if="form.type == 1" label="鎺掕姒滃浘闆�" prop="icon">
+ <UploadImage
+ :fileList="tempfileList"
+ :uploadData="uploadData"
+ @beginUpload="isUploading=true"
+ @endUpload="isUploading=false"/>
+ <p class="tip-warn">
+ 寤鸿灏哄锛�750px X 750px锛屼笂闄�6寮�
+ 鏀寔png銆乯pg銆乯peg鏍煎紡锛屽ぇ灏忎笉瓒呰繃2M锛屼笂浼犲浘鐗囦笉鍏佽娑夊強鏀挎不鏁忔劅涓庤壊鎯�,
+ </p>
</el-form-item>
<el-form-item label="鎺掑簭鐮�" prop="sortnum">
- <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+ <el-input v-model="form.sortnum" type="" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
</el-form-item>
<el-form-item label="鎻忚堪" prop="remark">
- <el-input v-model="form.remark" placeholder="璇疯緭鍏ユ弿杩�" v-trim/>
+ <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ユ弿杩�" v-trim/>
</el-form-item>
</el-form>
</GlobalWindow>
@@ -54,16 +43,17 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadImage from '@/components/common/UploadImage'
import UploadAvatarImage from '@/components/common/UploadAvatarImage'
export default {
name: 'OperaCategoryWindow',
extends: BaseOpera,
- components: { GlobalWindow ,UploadAvatarImage},
+ components: { GlobalWindow, UploadAvatarImage,UploadImage },
data () {
return {
isUploading: false,
uploadData: {
- folder: 'category'
+ folder: 'dianjiang/category'
},
// 琛ㄥ崟鏁版嵁
form: {
@@ -74,14 +64,15 @@
type: null,
detail: null,
remark: null,
- detailList: [''],
+ fileList: [],
icon: '',
iconFull: '',
isFixed: 0
},
+ tempfileList: [],
// 楠岃瘉瑙勫垯
rules: {
- name: [{ required: true, message: '璇疯緭鍏ラ厤缃悕绉�' }]
+ name: [{ required: true, message: '璇疯緭鍏ュ悕绉�' }]
}
}
},
@@ -91,23 +82,32 @@
'field.id': 'id'
})
},
- methods:{
- del(index){
- if(this.form.detailList.length<=1){
+ methods: {
+ del (index) {
+ if (this.form.detailList.length <= 1) {
return
}
- this.form.detailList.splice(index,1)
+ this.form.detailList.splice(index, 1)
},
- add(){
+ add () {
this.form.detailList.push('')
},
uploadAvatarSuccess (file) {
this.$set(this.form, 'icon', file.imgurl)
this.$set(this.form, 'iconFull', file.imgurlfull)
},
- open(title, target, type) {
+ confirm () {
+ this.form.fileList = this.tempfileList
+ if (this.form[this.configData['field.id']] == null || this.form[this.configData['field.id']] === '') {
+ this.__confirmCreate()
+ return
+ }
+ this.__confirmEdit()
+ },
+ open (title, target, type) {
this.title = title
this.visible = true
+ this.tempfileList = []
this.form = {
id: null,
status: 0,
@@ -116,7 +116,7 @@
detail: null,
type: type,
remark: null,
- detailList: [''],
+ fileList: [],
icon: '',
iconFull: '',
isFixed: 0
@@ -135,9 +135,14 @@
for (const key in this.form) {
this.form[key] = target[key]
}
- if(this.form.detailList==null){
- this.form.detailList = ['']
- }
+ this.form.fileList = this.form.fileList||[]
+ this.form.fileList.forEach(item=>{
+ this.tempfileList.push({
+ fileurl: item.fileurl,
+ name: item.name,
+ url: item.url
+ })
+ })
})
}
}
diff --git a/admin/src/components/business/OperaInterfaceLogWindow.vue b/admin/src/components/business/OperaInterfaceLogWindow.vue
new file mode 100644
index 0000000..1533647
--- /dev/null
+++ b/admin/src/components/business/OperaInterfaceLogWindow.vue
@@ -0,0 +1,102 @@
+<template>
+ <el-dialog
+ :title="title"
+ width="60%"
+ :withFooter="false"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ append-to-body
+ @confirm="confirm"
+ >
+ <div class="codeEditBox">
+ <json-viewer
+ :value="form.formatContent"
+ :expand-depth="5"
+ copyable
+ boxed
+ :expanded="false"
+ @copied="copyText"
+ sort
+ :show-array-index="false"
+ class="w-100%">
+ <template slot="copy">
+ <i class="el-icon-document-copy" title="澶嶅埗">澶嶅埗浠g爜</i>
+ </template>
+ </json-viewer>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import JsonViewer from 'vue-json-viewer'
+
+export default {
+ name: 'OperaInterfaceLogWindow',
+ extends: BaseOpera,
+ components: { JsonViewer },
+ data () {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ content: '',
+ formatContent: {}
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ },
+ copyable: { copyText: 'copy', copiedText: 'copied' }
+ }
+ },
+ created () {
+ this.config({
+ api: '/business/interfaceLog',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ copyText (val) {
+ this.$message.success('鍐呭宸叉垚鍔熷鍒跺埌鍓垏鏉匡紒')
+ },
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ try {
+ this.form.formatContent = JSON.parse(this.form.content)
+ } catch (e) {
+ this.form.formatContent = this.form.content
+ }
+ })
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+ .codeEditBox {
+ width: 100%;
+ height: 90%;
+ overflow:auto;
+ display: block;
+ border: 1px solid #dcdee2;
+ overflow-y: auto;
+ }
+ ::v-deep .el-dialog__body{height:70vh;overflow-y: auto}
+ ::v-deep .el-dialog{height:78vh;overflow: hidden}
+ .jv-container {
+ //height: 60vh;
+ }
+</style>
diff --git a/admin/src/components/business/OperaMemberImportWindow.vue b/admin/src/components/business/OperaMemberImportWindow.vue
new file mode 100644
index 0000000..4f2c245
--- /dev/null
+++ b/admin/src/components/business/OperaMemberImportWindow.vue
@@ -0,0 +1,86 @@
+<template>
+ <el-dialog
+ class="center-title"
+ :title="title"
+ width="500px"
+ top="30vh"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ @confirm="confirm"
+ >
+ <p class="tip-warn"><i class="el-icon-warning"></i>瀵煎叆璇存槑锛�<br>
+ 1.璇峰厛涓嬭浇鏂囦欢妯℃澘锛屽苟鎸夌収妯℃澘瑕佸幓濉啓琛ㄦ牸鍐呭;<br>
+ </p>
+ <el-form class="demo-form-inline" >
+ <el-form-item label="鑰佸笀鍚嶅崟" required>
+ <div style="width: 100%;display: flex;align-items: center;">
+ <el-button type="primary" :loading="importing" @click="clickRef">鐐瑰嚮涓婁紶</el-button>
+ <el-button type="text" @click="exportTemplate">鐐瑰嚮涓嬭浇妯$増.EXCEL</el-button>
+ </div>
+ <div style="font-size: 14px; color: black;" v-if="fileName">{{fileName}}</div>
+ </el-form-item>
+ </el-form>
+ <input type="file" style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" />
+ <template v-slot:footer>
+ <el-button @click="visible=false">杩斿洖</el-button>
+ </template>
+ </el-dialog>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { importExcel } from '@/api/business/importRecord'
+export default {
+ name: 'OperaMemberImportWindow',
+ extends: BaseOpera,
+ // eslint-disable-next-line vue/no-unused-components
+ components: { GlobalWindow },
+ data () {
+ return {
+ importing: false,
+ fileName: '',
+ type: 0
+ }
+ },
+ methods: {
+ open (title) {
+ this.title = title
+ this.fileName = ''
+ this.visible = true
+ this.type = 0
+ },
+ // 瀵煎嚭妯℃澘
+ exportTemplate () {
+ // 鎶曚繚鐢宠
+ window.open('/template/member.xlsx')
+ },
+ clickRef () {
+ this.$refs.fileExcel.click()
+ },
+ result (e) {
+ this.importing=true
+ const data = new FormData()
+ data.append('file', e.target.files[0])
+ data.append('type', this.type)
+ importExcel(data)
+ .then(res => {
+ this.$message.success('鍚嶅崟宸蹭笂浼犳垚鍔燂紝鍙墠寰�銆愬鍏ヨ褰曘�戣彍鍗曟煡鐪嬩换鍔℃墽琛岃繘搴︺��')
+ this.$emit('success')
+ this.visible = false
+ })
+ .catch(err => {
+ this.fileName = ''
+ })
+ .finally(() => {
+ this.$refs.fileExcel.value = null
+ this.importing=false
+ })
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/admin/src/components/common/Menu.vue b/admin/src/components/common/Menu.vue
index 44d89d3..4559e83 100644
--- a/admin/src/components/common/Menu.vue
+++ b/admin/src/components/common/Menu.vue
@@ -2,7 +2,7 @@
<div class="menu" :class="{collapse: menuData.collapse}">
<div class="logo">
<div><img src="@/assets/logo.png"></div>
- <h1 :class="{hidden: menuData.collapse}">杩戝揩鍚庡彴绠$悊绯荤粺</h1>
+ <h1 :class="{hidden: menuData.collapse}">蹇楅偊鐐瑰皢鍚庡彴绠$悊绯荤粺</h1>
</div>
<scrollbar>
<el-menu
diff --git a/admin/src/components/common/UploadAvatarImage.vue b/admin/src/components/common/UploadAvatarImage.vue
index e39f3e5..e541df7 100644
--- a/admin/src/components/common/UploadAvatarImage.vue
+++ b/admin/src/components/common/UploadAvatarImage.vue
@@ -31,7 +31,7 @@
data() {
return {
loading: null,
- uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/web/public/upload'
+ uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload'
}
},
diff --git a/admin/src/components/common/UploadImage.vue b/admin/src/components/common/UploadImage.vue
index 8ada0f0..d9237a4 100644
--- a/admin/src/components/common/UploadImage.vue
+++ b/admin/src/components/common/UploadImage.vue
@@ -8,32 +8,13 @@
accept=".jpg,.png"
:before-upload="beforeUpload"
:on-success="uploadSuccess"
+ :on-preview="handlePreview"
+ :on-remove="handleRemove"
:on-error="fail"
>
<i class="el-icon-plus icon"></i>
- <div slot="file" slot-scope="{file}">
- <img
- class="el-upload-list__item-thumbnail"
- :src="file.url" alt=""
- style="width: 100px;height: 100px;"
- >
- <span class="el-upload-list__item-actions">
- <span
- class="el-upload-list__item-preview"
- @click="handlePictureCardPreview(file)"
- >
- <i class="el-icon-zoom-in"></i>
- </span>
- <span
- class="el-upload-list__item-delete"
- @click="handleRemove(file)"
- >
- <i class="el-icon-delete"></i>
- </span>
- </span>
- </div>
</el-upload>
- <el-image-viewer
+ <el-image-viewer
v-if="showViewer"
:on-close="closeViewer"
:initialIndex="tempIndex"
@@ -55,79 +36,77 @@
type: Array,
default: () => []
},
- uploadData: Object,
+ maxNum: {
+ type: Number,
+ default: () => null
+ },
+ uploadData: Object
},
- data() {
+ data () {
return {
- uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/web/public/uploadLocal',
+ uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload',
realList: [],
- srcList: [],
+ // srcList: [],
tempIndex: 0,
- showViewer: false,
+ showViewer: false
+ }
+ },
+ computed:{
+ srcList(){
+ return this.fileList.map(item => { return item.url })
}
},
watch: {
- fileList: {
- handler(val) {
- console.log(val);
- if (val.length==0) {
- this.realList = []
- this.srcList = []
- }
- }
-
- }
},
methods: {
- beforeUpload(file) {
+ handlePreview(file) {
+ // console.log('棰勮鏂囦欢锛�', file,this.fileList);
+ this.tempIndex = this.srcList.findIndex(item => item == file.url)
+ this.showViewer = true
+ },
+ beforeUpload (file) {
this.$emit('beginUpload')
+ const isJPGOrPNG = file.type === 'image/jpeg' || file.type === 'image/png'
+ const isLt2M = file.size / 1024 / 1024 < 1; // 500kb
+ if (!isJPGOrPNG) {
+ this.$message.error('涓婁紶澶村儚鍥剧墖鍙兘鏄� JPG/PNG 鏍煎紡!');
+ return false
+ }
+ if (!isLt2M) {
+ this.$message.error('涓婁紶澶村儚鍥剧墖澶у皬涓嶈兘瓒呰繃 500KB!');
+ return false
+ }
return true
},
- // 涓婁紶鍥剧墖鎴愬姛
- uploadSuccess (res, file, fileList) {
- // console.log('this.fileList', this.fileList);
- // console.log('fileList', fileList);
- this.$emit('uploadEnd')
- this.realList = fileList
- this.srcList.push(res.data.url)
- // console.log('file', file);
+ // 涓婁紶鍥剧墖鎴愬姛
+ uploadSuccess (res, file, fileList) {
+ this.$emit('endUpload')
+ console.log('涓婁紶鎴愬姛1锛�',fileList);
if (res.code === 200) {
- this.fileList.push(
- {
- fileurl: res.data.imgaddr,
- name: res.data.originname,
- url: res.data.url
- }
- )
+ this.fileList.push({
+ fileurl: res.data.imgaddr,
+ name: res.data.originname,
+ url: res.data.url
+ })
+ console.log('涓婁紶鎴愬姛2锛�', this.fileList);
} else {
this.$message.error(res.msg || '涓婁紶澶辫触')
}
},
fail (err, file, fileList) {
- this.$emit('uploadEnd')
+ this.$emit('endUpload')
this.$message.error('涓婁紶澶辫触')
},
- handlePictureCardPreview(file) {
- // this.tempIndex = this.srcList.findIndex(item => item == file.response.data.url )
- // console.log(file);
- this.tempIndex = this.fileList.findIndex(item => item.url == file.url )
- // console.log( this.tempIndex);
- this.srcList = this.fileList.map(item => item.url)
- this.showViewer = true
- },
- closeViewer() {
+ closeViewer () {
this.showViewer = false
},
- handleRemove(file) {
- console.log(this.fileList);
- let tempIndex = this.realList.findIndex(item => item.url === file.url)
- // debugger
- this.realList.splice(tempIndex, 1)
- this.fileList.splice(tempIndex, 1)
- this.srcList.splice(tempIndex, 1)
-
+ handleRemove (file) {
+ const tempIndex = this.fileList.findIndex(item => item.url === file.url)
+ if(tempIndex >= 0){
+ this.fileList.splice(tempIndex, 1)
+ }
}
- },
+ }
}
</script>
@@ -150,4 +129,3 @@
height: 90px !important;
}
</style>
-
diff --git a/admin/src/views/business/category.vue b/admin/src/views/business/category.vue
index 0581cdd..c202c48 100644
--- a/admin/src/views/business/category.vue
+++ b/admin/src/views/business/category.vue
@@ -13,8 +13,9 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鍝佺閰嶇疆',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鎴樺尯',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" icon="el-icon-refresh" v-permissions="['business:category:create']">鍚屾</el-button></li>
+ <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
</ul>
<el-table
:height="tableHeightNew"
@@ -24,7 +25,8 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="name" label="鍗曚綅鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="鎴樺尯鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column prop="detail" label="鎴樺尯缂栫爜" min-width="100px"></el-table-column>
<el-table-column label="鐘舵��">
<template slot-scope="{row}">
<el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
@@ -42,8 +44,8 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鏂板缓鍝佺閰嶇疆', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+ <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鎴樺尯', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
diff --git a/admin/src/views/business/categoryCb.vue b/admin/src/views/business/categoryBusType.vue
similarity index 79%
copy from admin/src/views/business/categoryCb.vue
copy to admin/src/views/business/categoryBusType.vue
index 38054d1..e952fe4 100644
--- a/admin/src/views/business/categoryCb.vue
+++ b/admin/src/views/business/categoryBusType.vue
@@ -13,7 +13,7 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓椁愭爣閰嶇疆',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鍟嗕笟鍖栫被鍨�',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
<li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
</ul>
<el-table
@@ -24,17 +24,19 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" :selectable="isChangeSelected" width="55"></el-table-column>
- <el-table-column prop="name" label="鐢ㄩ鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="detail" label="椁愭爣" min-width="200px">
+ <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column prop="icon" label="鎺掕姒滃浘闆�" min-width="220px">
<template slot-scope="{row}">
- <div v-if="row.detailList && row.detailList.length">
- <span v-for="(item,index) in row.detailList">
- {{item || 0}}鍏�
- <span v-if="index < row.detailList.length-1" style="margin: 5px">|</span>
- </span>
+ <div style="display: flex; flex-wrap: wrap;width: 200px;" v-if="row.fileList && row.fileList.length">
+ <div v-for="item in row.fileList" :key="row.id+'_img'+item.id" style=" box-sizing: border-box; margin-right: 10px; " >
+ <el-image style="width: 50px; height: 50px;" :src="item.url"
+ :preview-src-list="[item.url]">
+ </el-image>
</div>
+ </div>
</template>
</el-table-column>
+
<el-table-column label="鐘舵��">
<template slot-scope="{row}">
<el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
@@ -42,6 +44,7 @@
</el-switch>
</template>
</el-table-column>
+ <el-table-column prop="remark" label="鎻忚堪" min-width="100px"></el-table-column>
<el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
<el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
<el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
@@ -52,7 +55,7 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫椁愭爣閰嶇疆', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鍟嗕笟鍖栫被鍨�', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
@@ -83,7 +86,7 @@
// 鎼滅储
searchForm: {
name: '',
- type: 2
+ type: 1
}
}
},
diff --git a/admin/src/views/business/categoryCar.vue b/admin/src/views/business/categoryCar.vue
deleted file mode 100644
index a848f63..0000000
--- a/admin/src/views/business/categoryCar.vue
+++ /dev/null
@@ -1,136 +0,0 @@
-<template>
- <TableLayout :permissions="['business:category:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鍚嶇О" prop="name">
- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓璐ц繍閰嶇疆',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" :selectable="isChangeSelected" width="55"></el-table-column>
- <el-table-column prop="icon" label="鍥炬爣" min-width="100px">
- <template slot-scope="{row}">
- <el-image v-if="row.iconFull" style="width: 50px; height: 50px; margin-right: 10px" :src="row.iconFull"
- :preview-src-list="[row.iconFull]">
- </el-image>
- </template>
- </el-table-column>
- <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="isFixed" label="鏄惁鍥哄畾杞﹁締" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.isFixed ==1" >鏄�</span>
- <span v-else >鍚�</span>
- </template>
- </el-table-column>
- <el-table-column prop="detail" label="鍙�夎鏍�" min-width="200px">
- <template slot-scope="{row}">
- <div v-if="row.detailList && row.detailList.length">
- <span v-for="(item,index) in row.detailList">
- {{item || ''}}
- <span v-if="index < row.detailList.length-1" style="margin: 5px">|</span>
- </span>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="鐘舵��">
- <template slot-scope="{row}">
- <el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
- inactive-color="#ff4949" :active-value="0" :inactive-value="1">
- </el-switch>
- </template>
- </el-table-column>
- <el-table-column prop="remark" label="鎻忚堪" min-width="100px"></el-table-column>
- <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:category:update', 'business:category:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鏂板缓璐ц繍閰嶇疆', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
-export default {
- name: 'Category',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaCategoryWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- name: '',
- type: 1
- }
- }
- },
- created () {
- this.config({
- module: '鍒嗙被淇℃伅琛�',
- api: '/business/category',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- },
- methods: {
- isChangeSelected(row,index){
- // if(row.isFixed ==1) {
- // return false
- // }
- return true
- },
- changeStatus (e, row) {
- this.working = true
- this.api.updateStatus({ id: row.id, status: e })
- .then(res => {
- this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
- this.search()
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.working = false
- })
- }
- }
-}
-</script>
diff --git a/admin/src/views/business/categoryFee.vue b/admin/src/views/business/categoryFee.vue
deleted file mode 100644
index 8e5631d..0000000
--- a/admin/src/views/business/categoryFee.vue
+++ /dev/null
@@ -1,112 +0,0 @@
-<template>
- <TableLayout :permissions="['business:category:query']">
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鎵嬬画璐归厤缃�',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" :selectable="isChangeSelected" width="55"></el-table-column>
- <el-table-column prop="name" label="宸ュ崟绫诲瀷" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.name=='0'">鐢ㄥ伐鍗�</span>
- <span v-if="row.name=='1'">璐ц繍鍗�</span>
- <span v-if="row.name=='2'">璁㈤鍗�</span>
- </template>
- </el-table-column>
- <el-table-column prop="detail" label="鎵嬬画璐癸紙%锛�" min-width="100px">
- <template slot-scope="{row}">
- <span class="yellowstate">{{row.detail||0}}%</span>
- </template>
- </el-table-column>
- <el-table-column label="鐘舵��">
- <template slot-scope="{row}">
- <el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
- inactive-color="#ff4949" :active-value="0" :inactive-value="1">
- </el-switch>
- </template>
- </el-table-column>
- <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:category:update', 'business:category:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鎵嬬画璐归厤缃�', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
-export default {
- name: 'Category',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaCategoryWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- name: '',
- type: 3
- }
- }
- },
- created () {
- this.config({
- module: '鍒嗙被淇℃伅琛�',
- api: '/business/category',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- },
- methods: {
- isChangeSelected(row,index){
- // if(row.isFixed ==1) {
- // return false
- // }
- return true
- },
- changeStatus (e, row) {
- this.working = true
- this.api.updateStatus({ id: row.id, status: e })
- .then(res => {
- this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
- this.search()
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.working = false
- })
- }
- }
-}
-</script>
diff --git a/admin/src/views/business/categoryCb.vue b/admin/src/views/business/categoryField.vue
similarity index 85%
copy from admin/src/views/business/categoryCb.vue
copy to admin/src/views/business/categoryField.vue
index 38054d1..3b6135c 100644
--- a/admin/src/views/business/categoryCb.vue
+++ b/admin/src/views/business/categoryField.vue
@@ -13,7 +13,7 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓椁愭爣閰嶇疆',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鎿呴暱棰嗗煙',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
<li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
</ul>
<el-table
@@ -24,17 +24,7 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" :selectable="isChangeSelected" width="55"></el-table-column>
- <el-table-column prop="name" label="鐢ㄩ鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="detail" label="椁愭爣" min-width="200px">
- <template slot-scope="{row}">
- <div v-if="row.detailList && row.detailList.length">
- <span v-for="(item,index) in row.detailList">
- {{item || 0}}鍏�
- <span v-if="index < row.detailList.length-1" style="margin: 5px">|</span>
- </span>
- </div>
- </template>
- </el-table-column>
+ <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
<el-table-column label="鐘舵��">
<template slot-scope="{row}">
<el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
@@ -42,6 +32,7 @@
</el-switch>
</template>
</el-table-column>
+ <el-table-column prop="remark" label="鎻忚堪" min-width="100px"></el-table-column>
<el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
<el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
<el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
@@ -52,7 +43,7 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫椁愭爣閰嶇疆', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鎿呴暱棰嗗煙', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
diff --git a/admin/src/views/business/categoryCb.vue b/admin/src/views/business/categoryLevel.vue
similarity index 86%
rename from admin/src/views/business/categoryCb.vue
rename to admin/src/views/business/categoryLevel.vue
index 38054d1..e080855 100644
--- a/admin/src/views/business/categoryCb.vue
+++ b/admin/src/views/business/categoryLevel.vue
@@ -13,7 +13,7 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓椁愭爣閰嶇疆',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鑰佸笀绛夌骇',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
<li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
</ul>
<el-table
@@ -24,17 +24,15 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" :selectable="isChangeSelected" width="55"></el-table-column>
- <el-table-column prop="name" label="鐢ㄩ鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="detail" label="椁愭爣" min-width="200px">
+ <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column prop="icon" label="鍥炬爣" min-width="100px">
<template slot-scope="{row}">
- <div v-if="row.detailList && row.detailList.length">
- <span v-for="(item,index) in row.detailList">
- {{item || 0}}鍏�
- <span v-if="index < row.detailList.length-1" style="margin: 5px">|</span>
- </span>
- </div>
+ <el-image v-if="row.iconFull" style="width: 50px; height: 50px; margin-right: 10px" :src="row.iconFull"
+ :preview-src-list="[row.iconFull]">
+ </el-image>
</template>
</el-table-column>
+
<el-table-column label="鐘舵��">
<template slot-scope="{row}">
<el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
@@ -42,6 +40,7 @@
</el-switch>
</template>
</el-table-column>
+ <el-table-column prop="remark" label="鎻忚堪" min-width="100px"></el-table-column>
<el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
<el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
<el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
@@ -52,7 +51,7 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫椁愭爣閰嶇疆', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鑰佸笀绛夌骇', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
@@ -83,7 +82,7 @@
// 鎼滅储
searchForm: {
name: '',
- type: 2
+ type: 3
}
}
},
diff --git a/admin/src/views/business/categoryOld.vue b/admin/src/views/business/categoryOld.vue
deleted file mode 100644
index 2ff4c1a..0000000
--- a/admin/src/views/business/categoryOld.vue
+++ /dev/null
@@ -1,106 +0,0 @@
-<template>
- <TableLayout :permissions="['business:category:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鍚嶇О" prop="name">
- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鍒嗙被淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="updateUser" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
- <el-table-column prop="name" label="鍗曚綅鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column label="鐘舵��">
- <template slot-scope="{row}">
- <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
- inactive-color="#ff4949" :active-value="0" :inactive-value="1">
- </el-switch>
- </template>
- </el-table-column>
- <el-table-column prop="type" label="绫诲瀷:0=鍝佺閰嶇疆锛�1=杞﹁締绫诲瀷閰嶇疆锛�2=椁愭爣閰嶇疆锛�3=鎵嬬画璐归厤缃紱" min-width="100px"></el-table-column>
- <el-table-column prop="detail" label="鍐呭锛堣溅杈嗚鏍笺�侀鏍囥�佹墜缁垂姣斾緥锛�" min-width="100px"></el-table-column>
- <el-table-column prop="icon" label="鍥炬爣锛堣溅杈嗙被鍨嬩娇鐢級" min-width="100px"></el-table-column>
- <el-table-column prop="isFixed" label="鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱" min-width="100px">
- </el-table-column>
- <el-table-column
- v-if="containPermissions(['business:category:update', 'business:category:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鍒嗙被淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
-export default {
- name: 'Category',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaCategoryWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- id: '',
- deleted: '',
- status: '',
- createUser: '',
- createTime: '',
- updateUser: '',
- updateTime: '',
- remark: '',
- name: '',
- type: '',
- detail: '',
- icon: '',
- isFixed: ''
- }
- }
- },
- created () {
- this.config({
- module: '鍒嗙被淇℃伅琛�',
- api: '/business/category',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- }
-}
-</script>
diff --git a/admin/src/views/business/identityInfo.vue b/admin/src/views/business/identityInfo.vue
deleted file mode 100644
index d7c3fd3..0000000
--- a/admin/src/views/business/identityInfo.vue
+++ /dev/null
@@ -1,160 +0,0 @@
-<template>
- <TableLayout :permissions="['business:identityinfo:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="韬唤绫诲瀷" prop="type">
- <el-select v-model="searchForm.type" clearable placeholder="璇烽�夋嫨韬唤绫诲瀷" @change="search">
- <el-option :value="0" label="鐢ㄥ伐韬唤"></el-option>
- <el-option :value="1" label="璐ц繍韬唤"></el-option>
- <el-option :value="2" label="渚涢韬唤"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="璁よ瘉绫诲瀷 " prop="authType">
- <el-select v-model="searchForm.authType" clearable placeholder="璇烽�夋嫨璁よ瘉绫诲瀷" @change="search">
- <el-option :value="0" label="涓汉"></el-option>
- <el-option :value="1" label="浼佷笟"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="鑱旂郴浜�" prop="linkName">
- <el-input v-model="searchForm.linkName" placeholder="璇疯緭鍏ヨ仈绯讳汉" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鑱旂郴鏂瑰紡" prop="telephone">
- <el-input v-model="searchForm.telephone" placeholder="璇疯緭鍏ヨ仈绯绘柟寮�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鎺ュ崟浣嶇疆" prop="location">
- <el-input v-model="searchForm.location" placeholder="璇疯緭鍏ユ帴鍗曚綅缃�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鍗曚綅鍚嶇О" prop="companyName">
- <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ュ崟浣嶅悕绉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- <el-button type="primary" :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
-<!-- <ul class="toolbar" v-permissions="['business:identityinfo:create', 'business:identityinfo:delete']">
- <li><el-button type="primary" @click="$refs.operaIdentityInfoWindow.open('鏂板缓浼氬憳韬唤璁よ瘉淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:identityinfo:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:identityinfo:delete']">鍒犻櫎</el-button></li>
- </ul>-->
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="auditStatus" label="瀹℃牳鐘舵��" min-width="100px" fixed="left">
- <template slot-scope="{row}">
- <span class="bluestate" v-if="row.auditStatus ==1">鐢宠涓�</span>
- <span class="greenstate" v-if="row.auditStatus ==2">宸查�氳繃</span>
- <span class="redstate" v-if="row.auditStatus ==3">鏈�氳繃</span>
- </template>
- </el-table-column>
- <el-table-column prop="openid" label="openid" min-width="180px" :show-overflow-tooltip='true'></el-table-column>
- <el-table-column prop="memberName" label="浼氬憳鏄电О" min-width="100px" :show-overflow-tooltip='true'></el-table-column>
- <el-table-column prop="type" label="绫诲瀷" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.type ==0">鐢ㄥ伐韬唤</span>
- <span v-if="row.type ==1">璐ц繍韬唤</span>
- <span v-if="row.type ==2">渚涢韬唤</span>
- </template>
- </el-table-column>
- <el-table-column prop="authType" label="璁よ瘉绫诲瀷" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.authType ==0">涓汉</span>
- <span v-if="row.authType ==1">浼佷笟</span>
- </template>
- </el-table-column>
- <el-table-column prop="linkName" label="鑱旂郴浜�" min-width="100px" :show-overflow-tooltip='true'></el-table-column>
- <el-table-column prop="telephone" label="鑱旂郴鏂瑰紡" min-width="100px" :show-overflow-tooltip='true'></el-table-column>
- <el-table-column prop="location" label="鎺ュ崟浣嶇疆" min-width="180px" :show-overflow-tooltip='true'></el-table-column>
- <el-table-column prop="companyName" label="鍗曚綅鍚嶇О" min-width="150px" :show-overflow-tooltip='true'></el-table-column>
- <el-table-column prop="createTime" label="鐢宠鏃堕棿" min-width="150px"></el-table-column>
- <el-table-column prop="editorName" label="瀹℃牳浜�" min-width="100px" :show-overflow-tooltip='true'></el-table-column>
- <el-table-column prop="auditTime" label="璁よ瘉瀹℃壒鏃堕棿" min-width="150px"></el-table-column>
- <el-table-column prop="auditRemark" label="璁よ瘉瀹℃壒澶囨敞" min-width="120px" :show-overflow-tooltip='true'></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:identityinfo:update','business:identityinfo:query'])"
- label="鎿嶄綔"
- min-width="160"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" v-if="row.auditStatus==1" @click="$refs.OperaIdentityDetailWindow.open('鐢ㄦ埛璁よ瘉瀹℃牳', row)" icon="el-icon-edit" v-permissions="['business:identityinfo:update']">瀹℃牳</el-button>
- <el-button type="text" @click="$refs.OperaIdentityDetailWindow.open('鐢ㄦ埛璁よ瘉璇︽儏', row)" icon="el-icon-info" >璇︽儏</el-button>
-<!--
- <el-button type="text" @click="$refs.operaIdentityInfoWindow.open('缂栬緫浼氬憳韬唤璁よ瘉淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:identityinfo:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:identityinfo:delete']">鍒犻櫎</el-button>
--->
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaIdentityDetailWindow ref="OperaIdentityDetailWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaIdentityDetailWindow from '@/components/business/OperaIdentityDetailWindow'
-export default {
- name: 'IdentityInfo',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaIdentityDetailWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- id: '',
- deleted: '',
- createUser: '',
- createTime: '',
- updateUser: '',
- updateTime: '',
- remark: '',
- type: '',
- memberId: '',
- authType: '',
- linkName: '',
- telephone: '',
- location: '',
- companyName: '',
- lat: '',
- lgt: '',
- identityFront: '',
- identityBack: '',
- businessLicense: '',
- otherFile: '',
- transportFile: '',
- foodBusinessFile: '',
- healthFile: '',
- auditStatus: '',
- auditTime: '',
- auditRemark: ''
- }
- }
- },
- created () {
- this.config({
- module: '浼氬憳韬唤璁よ瘉淇℃伅琛�',
- api: '/business/identityInfo',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- }
-}
-</script>
diff --git a/admin/src/views/business/interfaceLog.vue b/admin/src/views/business/interfaceLog.vue
new file mode 100644
index 0000000..d31cd1f
--- /dev/null
+++ b/admin/src/views/business/interfaceLog.vue
@@ -0,0 +1,148 @@
+<template>
+ <TableLayout :permissions="['business:interfacelog:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="鎺ュ彛鍚嶇О" prop="name">
+ <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ユ帴鍙e悕绉�" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="绫诲瀷" prop="type">
+ <el-select v-model="searchForm.type" @change="search" placeholder="璇烽�夋嫨">
+ <el-option label="璋冪敤" value="0"></el-option>
+ <el-option label="鎺ㄩ�佹帴鍙�" value="1"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璧锋鏃堕棿" prop="startDate">
+ <!-- <el-date-picker
+ @change="seleTime"
+ v-model="time"
+ type="datetimerange"
+ format="yyyy-MM-dd HH:mm:ss"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿">
+ </el-date-picker> -->
+ <el-date-picker type="datetime" v-model="searchForm.startDate" value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="璇烽�夋嫨寮�濮嬫椂闂�" @change="changeRadio" />
+ <el-date-picker type="datetime" v-model="searchForm.endDate" value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="璇烽�夋嫨缁撴潫鏃堕棿" @change="changeRadio" />
+ </el-form-item>
+ <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+ <el-radio-button label="0">褰撳ぉ</el-radio-button>
+ <el-radio-button label="1">杩�7澶�</el-radio-button>
+ <el-radio-button label="2">杩�30澶�</el-radio-button>
+ </el-radio-group>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <el-table :height="tableHeightNew" v-loading="isWorking.search" :data="tableData.list" stripe>
+ <el-table-column prop="name" label="鎺ュ彛鍚嶇О" min-width="180px"></el-table-column>
+ <el-table-column prop="url" label="鍦板潃淇℃伅" min-width="180px"></el-table-column>
+ <el-table-column label="绫诲瀷" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.type == 0">璋冪敤</span>
+ <span v-if="row.type == 1">鎺ㄩ�佹帴鏀�</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="骞冲彴" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.plat == 0">娴峰悍瀹夐槻骞冲彴</span>
+ <span v-if="row.plat == 1">ERP绯荤粺</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="request" label="璇锋眰鍙傛暟" min-width="100px">
+ <template slot-scope="{row}">
+ <el-button type="text"
+ @click="$refs.operaInterfaceLogWindow.open('璇锋眰鍙傛暟', { content: row.request })">鏌ョ湅</el-button>
+ </template>
+ </el-table-column>
+ <el-table-column prop="repose" label="鍝嶅簲鍙傛暟" min-width="100px">
+ <template slot-scope="{row}">
+ <el-button type="text"
+ @click="$refs.operaInterfaceLogWindow.open('鍝嶅簲鍙傛暟', { content: row.repose })">鏌ョ湅</el-button>
+ </template>
+ </el-table-column>
+ <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
+ </el-table>
+ <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+ </pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaInterfaceLogWindow ref="operaInterfaceLogWindow" @success="handlePageChange" />
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaInterfaceLogWindow from '@/components/business/OperaInterfaceLogWindow'
+import { timeForMat } from '@/utils/util'
+export default {
+ name: 'InterfaceLog',
+ extends: BaseTable,
+ components: { TableLayout, Pagination, OperaInterfaceLogWindow },
+ data() {
+ return {
+ // 鎼滅储
+ searchForm: {
+ name: '',
+ type: '',
+ endDate: '',
+ startDate: '',
+ radio: '0'
+ },
+ time: []
+ }
+ },
+ created() {
+ this.config({
+ module: '涓夋柟骞冲彴鎺ュ彛浜や簰璁板綍',
+ api: '/business/interfaceLog',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.changeRadio('0')
+ },
+ methods: {
+ changeRadio(e) {
+ if (e === '0') {
+ this.searchForm.startDate = timeForMat(0)[0]
+ this.searchForm.endDate = timeForMat(0)[1]
+ } else if (e === '1') {
+ this.searchForm.startDate = timeForMat(6)[0]
+ this.searchForm.endDate = timeForMat(6)[1]
+ } else if (e === '2') {
+ this.searchForm.startDate = timeForMat(29)[0]
+ this.searchForm.endDate = timeForMat(29)[1]
+ } else {
+ this.searchForm.radio = ''
+ }
+ if (this.searchForm.startDate && this.searchForm.endDate && new Date(this.searchForm.startDate).getTime() > new Date(this.searchForm.endDate).getTime()) {
+ this.$message.error('寮�濮嬫椂闂翠笉鑳藉ぇ浜庣粨鏉熸椂闂�')
+ this.searchForm.startDate = ''
+ return
+ }
+ this.search()
+ },
+ seleTime(e) {
+ this.searchForm.startDate = e[0]
+ this.searchForm.endDate = e[1]
+ this.searchForm.radio = null
+ this.search()
+ },
+ reset() {
+ this.$refs.searchForm.resetFields()
+ this.searchForm.startDate = ''
+ this.searchForm.endDate = ''
+ this.searchForm.radio = ''
+ this.time = []
+ this.search()
+ }
+ }
+}
+</script>
diff --git a/admin/src/views/business/member.vue b/admin/src/views/business/member.vue
index 6e99eef..c89fec6 100644
--- a/admin/src/views/business/member.vue
+++ b/admin/src/views/business/member.vue
@@ -2,42 +2,104 @@
<TableLayout :permissions="['business:member:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鎵嬫満鍙�" prop="telephone">
- <el-input v-model="searchForm.telephone" clearable placeholder="璇疯緭鍏ユ墜鏈哄彿" @keypress.enter.native="search"></el-input>
+ <el-form-item label="鍚嶇О" prop="name">
+ <el-input v-model="searchForm.name" style="width: 150px" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
</el-form-item>
- <el-form-item label="鐪熷疄濮撳悕" prop="name">
- <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ョ湡瀹炲鍚�" @keypress.enter.native="search"></el-input>
+ <el-form-item label="宸ュ彿" prop="code">
+ <el-input v-model="searchForm.code" style="width: 150px" placeholder="璇疯緭鍏ュ伐鍙�" @keypress.enter.native="search"></el-input>
</el-form-item>
- <el-form-item label="绫诲瀷" prop="type">
- <el-select v-model="searchForm.type" clearable placeholder="璇烽�夋嫨绫诲瀷" @change="search">
- <el-option :value="0" label="鍏ㄩ儴"></el-option>
- <el-option :value="1" label="鎺ュ崟鏂�"></el-option>
+ <el-form-item label="鎴樺尯" prop="fieldIdList">
+ <el-select
+ v-model="searchForm.fieldIdList"
+ style="width: 150px"
+ placeholder="鎴樺尯"
+ clearable
+ multiple
+ @change="search"
+ >
+ <el-option
+ v-for="item in cateList"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
</el-select>
</el-form-item>
-<!-- <el-form-item label="鐘舵��" prop="status">
- <el-select v-model="searchForm.status" @keypress.enter.native="search" clearable placeholder="鐘舵��">
- <el-option label="鍚敤" value="0"></el-option>
- <el-option label="绂佺敤" value="1"></el-option>
+ <el-form-item label="鍟嗕笟鍖栫被鍨�" prop="busTypeIdList">
+ <el-select
+ v-model="searchForm.busTypeIdList"
+ style="width: 150px"
+ placeholder="鍟嗕笟鍖栫被鍨�"
+ clearable
+ multiple
+ @change="search"
+ >
+ <el-option
+ v-for="item in cateList1"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
</el-select>
- </el-form-item>-->
- <el-form-item label="娉ㄥ唽鏃堕棿" prop="eventType">
- <el-date-picker type="datetime" style="width: 120px" v-model="searchForm.startTime" clearable value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="寮�濮嬫椂闂�" />-
- <el-date-picker type="datetime" style="width: 120px" v-model="searchForm.endTime" clearable value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="缁撴潫鏃堕棿" />
+ </el-form-item>
+ <el-form-item label="鎿呴暱棰嗗煙" prop="levelIdList">
+ <el-select
+ v-model="searchForm.levelIdList"
+ style="width: 150px"
+ placeholder="鎿呴暱棰嗗煙"
+ clearable
+ multiple
+ @change="search"
+ >
+ <el-option
+ v-for="item in cateList2"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鑰佸笀绛夌骇" prop="levelIdList">
+ <el-select
+ v-model="searchForm.levelIdList"
+ style="width: 150px"
+ placeholder="鑰佸笀绛夌骇"
+ clearable
+ multiple
+ @change="search"
+ >
+ <el-option
+ v-for="item in cateList3"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
+ </el-select>
+ <el-form-item label="鐘舵��" prop="status">
+ <el-select
+ v-model="searchForm.status"
+ placeholder="鐘舵��"
+ clearable
+ style="width: 150px"
+ @change="search"
+ >
+ <el-option :key="0" :value="0" label="鍚敤"></el-option>
+ <el-option :key="1" :value="1" label="绂佺敤"></el-option>
+ </el-select>
+ </el-form-item>
</el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
<el-button @click="reset">閲嶇疆</el-button>
- <el-button type="primary" :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
</section>
</el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
-<!-- <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
- <li><el-button type="primary" @click="$refs.operaMemberWindow.open('鏂板缓浼氬憳淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:member:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">鍒犻櫎</el-button></li>
- </ul>-->
+ <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
+ <li><el-button type="primary" @click="$refs.operaMemberWindow.open('鏂板缓鑰佸笀',null)" icon="el-icon-plus" v-permissions="['business:member:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" icon="el-icon-refresh" v-permissions="['business:member:create']" @click="$refs.OperaMemberImportWindow.open('鑰佸笀瀵煎叆', searchForm.companyType)">鎵归噺瀵煎叆</el-button></li>
+ <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">鍒犻櫎</el-button></li>
+ </ul>
<el-table
:height="tableHeightNew"
v-loading="isWorking.search"
@@ -46,55 +108,57 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="openid" label="openid" min-width="100px">
+ <el-table-column prop="imgurl" label="鍥剧墖" min-width="100px">
<template slot-scope="{row}">
- <span style="cursor: pointer;color: #2E68EC" @click="openDetail(row)">{{row.openid}}</span>
+ <el-image v-if="row.imgurlfull" style="width: 50px; height: 50px; margin-right: 10px" :src="row.imgurlfull"
+ :preview-src-list="[row.imgurlfull]">
+ </el-image>
</template>
</el-table-column>
- <el-table-column prop="nickName" label="鏄电О" min-width="100px"></el-table-column>
- <el-table-column prop="name" label="鐪熷疄濮撳悕" min-width="100px"></el-table-column>
- <el-table-column prop="telephone" label="鎵嬫満鍙�" min-width="100px"></el-table-column>
- <el-table-column prop="workerIdentity" label="韬唤" min-width="100px">
+ <el-table-column prop="code" label="宸ュ彿" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column>
+ <el-table-column prop="sex" label="鎬у埆" min-width="100px">
<template slot-scope="{row}">
- 鍙戝崟鏂�<span v-if="row.workerIdentity == 2 || row.driverIdentity == 2 || row.chefIdentity == 2">{{' | 鎺ュ崟鏂�'}}</span>
+ <span v-if="row.sex ==0">鐢�</span>
+ <span v-if="row.sex ==1">濂�</span>
</template>
</el-table-column>
- <el-table-column prop="workerIdentity" label="鎺ュ崟璁よ瘉韬唤" width="120px">
+ <el-table-column prop="position" label="宀椾綅" min-width="120px"></el-table-column>
+ <el-table-column prop="levelName" label="绛夌骇" min-width="100px"></el-table-column>
+ <el-table-column prop="jobYear" label="浠庝笟骞翠唤" min-width="100px"></el-table-column>
+ <el-table-column prop="serveNum" label="鏈嶅姟鍟嗗満" min-width="100px">
<template slot-scope="{row}">
- <div v-if="row.workerIdentity == 2" class="renzhen">宸ヤ汉</div>
- <div v-if=" row.driverIdentity == 2" class="renzhen">鍙告満</div>
- <div v-if="row.chefIdentity == 2" class="renzhen">渚涢</div>
+ <span v-if="row.serveNum">{{row.serveNum}}涓�</span>
</template>
</el-table-column>
- <el-table-column prop="amount" label="褰撳墠浣欓(鍏�)" min-width="100px">
+ <el-table-column prop="caseNum" label="鏍囨潌妗堜緥" min-width="100px">
<template slot-scope="{row}">
- <span class="yellowstate">{{((row.amount || 0)/100).toFixed(2)}}</span>
+ <span v-if="row.caseNum">{{row.caseNum}}涓�</span>
</template>
</el-table-column>
- <el-table-column prop="createTime" label="娉ㄥ唽鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="autoReciveStatus" label="鎺ュ彈鑷姩娲惧崟" min-width="100px">
- <template slot-scope="{row}">
- {{row.autoReceiveStatus ==1?"鏄�":"鍚�"}}
- </template>
- </el-table-column>
-<!-- <el-table-column label="鐘舵��">
+ <el-table-column prop="busTypeNames" label="鍟嗕笟鍖栫被鍨�" min-width="200px"></el-table-column>
+ <el-table-column prop="areaNames" label="鏈嶅姟鎴樺尯" min-width="200px"></el-table-column>
+ <el-table-column prop="fieldNames" label="鎿呴暱棰嗗煙" min-width="200px"></el-table-column>
+ <el-table-column label="鐘舵��">
<template slot-scope="{row}">
<el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
- inactive-color="#ff4949" :active-value="0" :inactive-value="1">
+ inactive-color="#ff4949" :active-value="0" :inactive-value="1">
</el-switch>
</template>
</el-table-column>
- <el-table-column
- v-if="containPermissions(['business:member:update', 'business:member:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
+ <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
+ <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
+ <el-table-column
+ v-if="containPermissions(['business:member:update', 'business:member:delete'])"
+ label="鎿嶄綔"
+ min-width="120"
+ fixed="right"
+ >
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaMemberWindow.open('缂栬緫浼氬憳淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:member:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:member:delete']">鍒犻櫎</el-button>
+ <el-button type="text" @click="$refs.operaMemberWindow.open('缂栬緫鑰佸笀', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:member:update']">缂栬緫</el-button>
+ <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:member:delete']">鍒犻櫎</el-button>
</template>
- </el-table-column>-->
+ </el-table-column>
</el-table>
<pagination
@size-change="handleSizeChange"
@@ -104,8 +168,8 @@
</pagination>
</template>
<!-- 鏂板缓/淇敼 -->
- <OperaMemberDetailWindow ref="OperaMemberDetailWindow" />
<OperaMemberWindow ref="operaMemberWindow" @success="handlePageChange"/>
+ <OperaMemberImportWindow ref="OperaMemberImportWindow" @success="handlePageChange" />
</TableLayout>
</template>
@@ -114,51 +178,63 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaMemberWindow from '@/components/business/OperaMemberWindow'
-import OperaMemberDetailWindow from '@/components/business/OperaMemberDetailWindow'
+import OperaMemberImportWindow from '@/components/business/OperaMemberImportWindow'
+import { findAll as cateList } from '@/api/business/category'
export default {
- name: 'Member',
+ name: 'Category',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaMemberDetailWindow, OperaMemberWindow },
+ components: { TableLayout, Pagination, OperaMemberWindow ,OperaMemberImportWindow},
data () {
return {
// 鎼滅储
searchForm: {
- type: 0,
- startTime: '',
- endTime: '',
- telephone: '',
name: '',
- status: ''
- }
+ code: '',
+ status: null,
+ levelIdList:[],
+ fieldIdList: [],
+ busTypeIdList:[],
+ type: 0
+ },
+ cateList:[],
+ cateList1:[],
+ cateList2:[],
+ cateList3:[],
}
},
created () {
this.config({
- module: '浼氬憳淇℃伅琛�',
+ module: '璁插笀淇℃伅琛�',
api: '/business/member',
'field.id': 'id',
'field.main': 'id'
})
this.search()
+ cateList({
+ type: 0 , //鎴樺尯
+ }).then(res => {
+ this.cateList = res
+ })
+ cateList({
+ type: 1 , //鍟嗕笟鍖�
+ }).then(res => {
+ this.cateList1 = res
+ })
+ cateList({
+ type: 2 , //鎿呴暱棰嗙敤
+ }).then(res => {
+ this.cateList2 = res
+ })
+ cateList({
+ type: 3 , //绛夌骇
+ }).then(res => {
+ this.cateList3 = res
+ })
},
methods: {
- reset () {
- this.searchForm = {
- type: 0,
- startTime: '',
- endTime: '',
- telephone: '',
- name: '',
- status: ''
- }
- this.search()
- },
- openDetail (row) {
- this.$refs.OperaMemberDetailWindow.open('鐢ㄦ埛璇︽儏', row.id)
- },
changeStatus (e, row) {
this.working = true
- this.api.updateStatus({ id: row.id, workStatus: e })
+ this.api.updateStatus({ id: row.id, status: e })
.then(res => {
this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
this.search()
@@ -169,19 +245,7 @@
.finally(() => {
this.working = false
})
- .catch(() => { })
}
}
}
</script>
-<style scoped lang="scss">
-.renzhen{
- margin: 5px;
- line-height: 30px;
- color:#67c23a;
- height: 30px;
- text-align:center;
- border-color: #e1f3d8;
- background-color: #f0f9eb;
-}
-</style>
diff --git a/admin/src/views/business/memberRevenue.vue b/admin/src/views/business/memberRevenue.vue
deleted file mode 100644
index cd8a473..0000000
--- a/admin/src/views/business/memberRevenue.vue
+++ /dev/null
@@ -1,154 +0,0 @@
-<template>
- <TableLayout :permissions="['business:memberrevenue:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="涓婚敭" prop="id">
- <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" prop="deleted">
- <el-input v-model="searchForm.deleted" placeholder="璇疯緭鍏ユ槸鍚﹀凡鍒犻櫎 0鏈垹闄� 1宸插垹闄�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鍒涘缓浜虹紪鐮�" prop="createUser">
- <el-input v-model="searchForm.createUser" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
- <el-date-picker v-model="searchForm.createTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
- </el-form-item>
- <el-form-item label="鏇存柊浜虹紪鐮�" prop="updateUser">
- <el-input v-model="searchForm.updateUser" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鏇存柊鏃堕棿" prop="updateTime">
- <el-date-picker v-model="searchForm.updateTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
- </el-form-item>
- <el-form-item label="澶囨敞" prop="remark">
- <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="浼氬憳涓婚敭" prop="memberId">
- <el-input v-model="searchForm.memberId" placeholder="璇疯緭鍏ヤ細鍛樹富閿�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鍙樺姩绫诲瀷:0=鐢ㄥ伐鍗曟敹鍏ワ紱1=璐ц繍鍗曟敹鍏ワ紱2=渚涢鍗曟敹鍏ワ紱3=鎻愮幇鐢宠锛�" prop="type">
- <el-input v-model="searchForm.type" placeholder="璇疯緭鍏ュ彉鍔ㄧ被鍨�:0=鐢ㄥ伐鍗曟敹鍏ワ紱1=璐ц繍鍗曟敹鍏ワ紱2=渚涢鍗曟敹鍏ワ紱3=鎻愮幇鐢宠锛�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鏀舵敮绫诲瀷:1=鏀跺叆锛�-1=鏀嚭锛�" prop="optType">
- <el-input v-model="searchForm.optType" placeholder="璇疯緭鍏ユ敹鏀被鍨�:1=鏀跺叆锛�-1=鏀嚭锛�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鍙樺姩閲戦" prop="amount">
- <el-input v-model="searchForm.amount" placeholder="璇疯緭鍏ュ彉鍔ㄩ噾棰�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鍙樺姩鍓嶉噾棰�" prop="beforeAmount">
- <el-input v-model="searchForm.beforeAmount" placeholder="璇疯緭鍏ュ彉鍔ㄥ墠閲戦" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鍙樺姩鍚庨噾棰�" prop="afterAmount">
- <el-input v-model="searchForm.afterAmount" placeholder="璇疯緭鍏ュ彉鍔ㄥ悗閲戦" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="涓氬姟璁板綍涓婚敭" prop="objId">
- <el-input v-model="searchForm.objId" placeholder="璇疯緭鍏ヤ笟鍔¤褰曚富閿�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="涓氬姟绫诲瀷:0=璁㈠崟涓氬姟锛�1=鎻愮幇涓氬姟锛�" prop="objType">
- <el-input v-model="searchForm.objType" placeholder="璇疯緭鍏ヤ笟鍔$被鍨�:0=璁㈠崟涓氬姟锛�1=鎻愮幇涓氬姟锛�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="涓氬姟鐘舵��:0=鎴愬姛锛�1=澶辫触锛�2=澶勭悊涓紱" prop="status">
- <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ヤ笟鍔$姸鎬�:0=鎴愬姛锛�1=澶辫触锛�2=澶勭悊涓紱" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:memberrevenue:create', 'business:memberrevenue:delete']">
- <li><el-button type="primary" @click="$refs.operaMemberRevenueWindow.open('鏂板缓浼氬憳鏀舵敮璁板綍')" icon="el-icon-plus" v-permissions="['business:memberrevenue:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:memberrevenue:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
- <el-table-column prop="deleted" label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" min-width="100px"></el-table-column>
- <el-table-column prop="createUser" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="updateUser" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
- <el-table-column prop="memberId" label="浼氬憳涓婚敭" min-width="100px"></el-table-column>
- <el-table-column prop="type" label="鍙樺姩绫诲瀷:0=鐢ㄥ伐鍗曟敹鍏ワ紱1=璐ц繍鍗曟敹鍏ワ紱2=渚涢鍗曟敹鍏ワ紱3=鎻愮幇鐢宠锛�" min-width="100px"></el-table-column>
- <el-table-column prop="optType" label="鏀舵敮绫诲瀷:1=鏀跺叆锛�-1=鏀嚭锛�" min-width="100px"></el-table-column>
- <el-table-column prop="amount" label="鍙樺姩閲戦" min-width="100px"></el-table-column>
- <el-table-column prop="beforeAmount" label="鍙樺姩鍓嶉噾棰�" min-width="100px"></el-table-column>
- <el-table-column prop="afterAmount" label="鍙樺姩鍚庨噾棰�" min-width="100px"></el-table-column>
- <el-table-column prop="objId" label="涓氬姟璁板綍涓婚敭" min-width="100px"></el-table-column>
- <el-table-column prop="objType" label="涓氬姟绫诲瀷:0=璁㈠崟涓氬姟锛�1=鎻愮幇涓氬姟锛�" min-width="100px"></el-table-column>
- <el-table-column prop="status" label="涓氬姟鐘舵��:0=鎴愬姛锛�1=澶辫触锛�2=澶勭悊涓紱" min-width="100px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:memberrevenue:update', 'business:memberrevenue:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaMemberRevenueWindow.open('缂栬緫浼氬憳鏀舵敮璁板綍', row)" icon="el-icon-edit" v-permissions="['business:memberrevenue:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:memberrevenue:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaMemberRevenueWindow ref="operaMemberRevenueWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaMemberRevenueWindow from '@/components/business/OperaMemberRevenueWindow'
-export default {
- name: 'MemberRevenue',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaMemberRevenueWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- id: '',
- deleted: '',
- createUser: '',
- createTime: '',
- updateUser: '',
- updateTime: '',
- remark: '',
- memberId: '',
- type: '',
- optType: '',
- amount: '',
- beforeAmount: '',
- afterAmount: '',
- objId: '',
- objType: '',
- status: ''
- }
- }
- },
- created () {
- this.config({
- module: '浼氬憳鏀舵敮璁板綍',
- api: '/business/memberRevenue',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- }
-}
-</script>
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index c05ce02..1a09910 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -3,7 +3,7 @@
<div class="home_header">
<div class="mb10 fs17">涓嬪崍濂斤紝{{ userInfo.realname }}</div>
<div class="fs13">
- 浠婂ぉ鏄� {{ nowDate }} {{ nowWeek }}锛屾杩庤闂繎蹇悗鍙扮鐞嗙郴缁�
+ 浠婂ぉ鏄� {{ nowDate }} {{ nowWeek }}锛屾杩庤闂織閭︾偣灏嗗悗鍙扮鐞嗙郴缁�
</div>
</div>
</div>
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 9d4a68c..4003310 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -1,7 +1,7 @@
<template>
<div class="wrap">
<div class="introduce">
- <h2>杩戝揩鍚庡彴绠$悊绯荤粺</h2>
+ <h2>蹇楅偊鐐瑰皢鍚庡彴绠$悊绯荤粺</h2>
<h3></h3>
</div>
<div class="login">
diff --git a/server/admin/src/main/java/com/doumee/api/business/CategoryController.java b/server/admin/src/main/java/com/doumee/api/business/CategoryController.java
index e949e2b..6bec36e 100644
--- a/server/admin/src/main/java/com/doumee/api/business/CategoryController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/CategoryController.java
@@ -85,6 +85,12 @@
public ApiResponse<PageData<Category>> findPage (@RequestBody PageWrap<Category> pageWrap) {
return ApiResponse.success(categoryService.findPage(pageWrap));
}
+ @ApiOperation("鍒楄〃鏌ヨ")
+ @PostMapping("/list")
+ @RequiresPermissions("business:category:query")
+ public ApiResponse<List<Category>> findList (@RequestBody Category pageWrap) {
+ return ApiResponse.success(categoryService.findList(pageWrap));
+ }
@ApiOperation("瀵煎嚭Excel")
@PostMapping("/exportExcel")
diff --git a/server/admin/src/main/java/com/doumee/api/business/ImportRecordController.java b/server/admin/src/main/java/com/doumee/api/business/ImportRecordController.java
index 4f83adc..b506794 100644
--- a/server/admin/src/main/java/com/doumee/api/business/ImportRecordController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/ImportRecordController.java
@@ -9,20 +9,23 @@
import com.doumee.dao.business.model.ImportRecord;
import com.doumee.core.utils.Utils;
import com.doumee.service.business.ImportRecordService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import com.doumee.api.BaseController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+
/**
* 鍒嗙被淇℃伅琛–ontroller瀹氫箟
* @author doumee
* @date 2026-01-27 16:02:37
*/
-@Api(tags = "tableName鎺ュ彛")
+@Api(tags = "鍒嗙被淇℃伅琛ㄦ帴鍙�")
@RestController
@RequestMapping("/business/importRecord")
public class ImportRecordController extends BaseController {
@@ -82,4 +85,16 @@
public ApiResponse findById(@PathVariable Integer id) {
return ApiResponse.success(importRecordService.findById(id));
}
+
+ @ApiOperation(value = "淇℃伅瀵煎叆" ,notes = "淇濆崟鐢宠")
+ @PostMapping("/importExcel")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class),
+ @ApiImplicitParam(name = "瀵煎叆绫诲瀷 0浜哄憳 1妗堜緥", value = "type", required = true, paramType = "query", dataType = "Integer",example = "0",dataTypeClass = Integer.class),
+ })
+ public ApiResponse<String> importExcel (@ApiParam(value = "file") MultipartFile file, @ApiParam(value = "type") Integer type) {
+ ImportRecord importRecord = importRecordService.importBatch(file,type);
+ importRecordService.dealImporTask(importRecord);
+ return ApiResponse.success("鏂囦欢涓婁紶鎴愬姛");
+ }
}
diff --git a/server/admin/src/main/java/com/doumee/api/business/MemberController.java b/server/admin/src/main/java/com/doumee/api/business/MemberController.java
index c174e23..42bf73a 100644
--- a/server/admin/src/main/java/com/doumee/api/business/MemberController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/MemberController.java
@@ -9,20 +9,23 @@
import com.doumee.dao.business.model.Member;
import com.doumee.core.utils.Utils;
import com.doumee.service.business.MemberService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import com.doumee.api.BaseController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+
/**
* 浼氬憳淇℃伅琛–ontroller瀹氫箟
* @author doumee
* @date 2026-01-27 16:02:37
*/
-@Api(tags = "tableName鎺ュ彛")
+@Api(tags = "浼氬憳淇℃伅琛ㄦ帴鍙�")
@RestController
@RequestMapping("/business/member")
public class MemberController extends BaseController {
@@ -76,6 +79,7 @@
ExcelExporter.build(Member.class).export(memberService.findPage(pageWrap).getRecords(), "浼氬憳淇℃伅琛�", response);
}
+
@ApiOperation("鏍规嵁ID鏌ヨ")
@GetMapping("/{id}")
@RequiresPermissions("business:member:query")
diff --git a/server/pom.xml b/server/pom.xml
index 195fccc..4c972ee 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -46,6 +46,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
+ <dependency>
+ <groupId>cn.hutool</groupId>
+ <artifactId>hutool-all</artifactId>
+ <version>5.8.40</version>
+ </dependency>
<!-- Shiro -->
<dependency>
<groupId>org.apache.shiro</groupId>
diff --git a/server/services/lib/zos-sdk.jar b/server/services/lib/zos-sdk.jar
new file mode 100644
index 0000000..e4254fb
--- /dev/null
+++ b/server/services/lib/zos-sdk.jar
Binary files differ
diff --git a/server/services/pom.xml b/server/services/pom.xml
index 0c39221..f8eb953 100644
--- a/server/services/pom.xml
+++ b/server/services/pom.xml
@@ -10,6 +10,21 @@
<version>1.0.0-SNAPSHOT</version>
</parent>
+ <dependencies>
+ <dependency>
+ <groupId>com.tianyiyun</groupId>
+ <artifactId>zob</artifactId>
+ <version>1.0</version>
+ <scope>system</scope>
+ <!--鏈湴鐨刯acob.jar鐨勮矾寰�-->
+ <systemPath>${project.basedir}/lib/zos-sdk.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>cn.hutool</groupId>
+ <artifactId>hutool-all</artifactId>
+ <version>5.8.40</version>
+ </dependency>
+ </dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
diff --git a/server/services/src/main/java/com/doumee/api/common/PublicCloudController.java b/server/services/src/main/java/com/doumee/api/common/PublicCloudController.java
deleted file mode 100644
index f4addb1..0000000
--- a/server/services/src/main/java/com/doumee/api/common/PublicCloudController.java
+++ /dev/null
@@ -1,249 +0,0 @@
-package com.doumee.api.common;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.doumee.api.BaseController;
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.config.annotation.EncryptionReq;
-import com.doumee.config.annotation.EncryptionResp;
-import com.doumee.core.annotation.trace.Trace;
-import com.doumee.core.constants.Constants;
-import com.doumee.core.constants.ResponseStatus;
-import com.doumee.core.exception.BusinessException;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.utils.DateUtil;
-import com.doumee.core.utils.FtpUtil;
-import com.doumee.core.utils.azure.AzureBlobUtil;
-import com.doumee.core.utils.huaweiOBS.ObsUtil;
-import com.doumee.core.utils.qiyeweixin.QywxUtil;
-import com.doumee.core.utils.qiyeweixin.model.response.QywxUploadMediaResponse;
-import com.doumee.dao.system.model.SystemDictData;
-import com.doumee.service.common.EmailService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.multipart.MultipartRequest;
-import org.springframework.web.multipart.commons.CommonsMultipartResolver;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintWriter;
-import java.util.*;
-
-/**
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Api(tags = "鍏叡涓婁紶鎺ュ彛")
-@Trace(exclude = true)
-@RestController
-@RequestMapping("/web/public")
-@Slf4j
-public class PublicCloudController extends BaseController {
- @Autowired
- private SystemDictDataBiz systemDictDataBiz;
-
- @ApiOperation(value = "涓婁紶OBS", notes = "涓婁紶OBS", httpMethod = "POST", position = 6)
- @ApiImplicitParams({
- @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
- @ApiImplicitParam(name = "file", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
- })
- @PostMapping(value = "/upload", headers = "content-type=multipart/form-data")
- @ResponseBody
- public void upload(HttpServletRequest request, HttpServletResponse response, String folder,String flag) throws Exception {
- Date d1 = new Date();
- log.error("鎬诲緱涓婁紶鏂囦欢鎴愬姛=============寮�濮�========="+DateUtil.getPlusTime2(d1));
- if(Objects.isNull(folder)){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐩爣鏂囦欢澶归敊璇�");
- }
- String prefixPath = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode();
- InputStream is = null;
- response.setCharacterEncoding("UTF-8");
- response.setContentType("text/html;charset=UTF-8");
- Map<String, Object> context = new HashMap<>();
- try {
- CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
- if (multipartResovler.isMultipart(request)) {
- MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
- Iterator<String> it = multipartRequest.getFileNames();
- while (it.hasNext()) {
- MultipartFile file = multipartRequest.getFile(it.next());
- System.out.println(file.getSize());
- String originname = file.getOriginalFilename();
- is = file.getInputStream();
- String endType = ".jpg";
- if(originname.indexOf(".")>0){
- endType=originname.substring(originname.lastIndexOf("."),originname.length());
- }
- String date = DateUtil.getNowShortDate();
- String fName = date+"/"+ UUID.randomUUID()+endType;
- String fileName = folder+"/"+fName;
- boolean r =false;
- ObsUtil obsUtil = new ObsUtil( systemDictDataBiz.queryByCode(Constants.HWY_OBS,Constants.HWY_OBS_ACCESSID).getCode(),
- systemDictDataBiz.queryByCode(Constants.HWY_OBS,Constants.HWY_OBS_ACCESSKEY).getCode(),
- systemDictDataBiz.queryByCode(Constants.HWY_OBS,Constants.HWY_OBS_ENDPOINT).getCode());
- r = obsUtil.uploadFile( systemDictDataBiz.queryByCode(Constants.HWY_OBS,Constants.HWY_OBS_BUCKET).getCode(),is,fileName);//涓婁紶
- if(r){
- context.put("success", true);
- context.put("code", 200);
- context.put("errno",0);
- JSONObject fileJSON = new JSONObject();
-// fileJSON.put("prefixPath", prefixPath);
-// fileJSON.put("folder", folder);
- fileJSON.put("url", prefixPath+fileName);
- fileJSON.put("imgaddr", fName);
- fileJSON.put("imgname", fileName);
- fileJSON.put("originname", originname);
- fileJSON.put("flag", flag);
- context.put("data",fileJSON);
- context.put("message","璇锋眰鎴愬姛");
- writerJson(response, context);
- Date d2= new Date();
- log.error("鎬荤殑涓婁紶鏂囦欢鎴愬姛=============缁撴潫========="+DateUtil.getPlusTime2(d2) +"鑰楁椂绉掞細"+( (d2.getTime()-d1.getTime()) /1000));
- return;
- }
- }
- }
- } catch (Exception e) {
- log.error("銆愪笂浼燜TP澶辫触銆�======================"+e.getMessage());
- }
- context.put("code", 0);
- context.put("message", "涓婁紶澶辫触");
- context.put("errno",0);
- writerJson(response, context);
- return;
- }
-
-
- public void uploadFileLocal(HttpServletRequest request, HttpServletResponse response, String rootPath,String dir) throws Exception {
- response.setCharacterEncoding("UTF-8");
- response.setContentType("text/html;charset=UTF-8");
- CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
- Map<String, Object> context = new HashMap<>();
- if (multipartResovler.isMultipart(request)) {
- MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
- Iterator<String> it = multipartRequest.getFileNames();
- while (it.hasNext()) {
- MultipartFile file = multipartRequest.getFile((String) it.next());
- if (file != null) {
- if (file.getSize() > 200 * 1024 * 1024L) {
- context.put("code", 4000);
- context.put("message", "涓婁紶鏂囦欢杩囧ぇ");
- return;
- }
- System.out.println(file.getOriginalFilename());
- if (file.getOriginalFilename() == null) {
- context.put("code", 4000);
- context.put("message", "鏂囦欢鍚嶄笉鍙负绌�");
- return;
- }
- String nowDate = DateUtil.getNowShortDate();
- String folder = nowDate + "/";
- String strDirPath = rootPath + folder;
- File dirPath = new File(strDirPath);
- if (!dirPath.exists()) {
- dirPath.mkdirs();
- }
- String uploadFileName = file.getOriginalFilename();
- String x = UUID.randomUUID().toString().replace("-", "")
- + uploadFileName.substring(uploadFileName.lastIndexOf("."));
- String fileName = folder + x;
- String fileNames = nowDate + "/" + x;
- uploadFileName = uploadFileName.replace(" ", "");
- uploadFileName = uploadFileName.replace("锛�", ",");
- uploadFileName = uploadFileName.replaceAll(",", "-");
- String fileAndPath = dir + fileName;
- // 鍒ゆ柇濡傛灉涓存椂鐩綍涓瓨鍦ㄧ浉鍚屽悕绉扮殑鏂囦欢鍏堝垹闄わ紝鍦ㄤ笂浼�
- File tempFile = new File(rootPath + fileName);
- if (tempFile.isFile() && tempFile.exists()) {
- tempFile.getAbsoluteFile().delete();
- }
- // 涓婁紶鍒版湇鍔″櫒涓存椂鏂囦欢澶�
- file.transferTo(tempFile);
- // 杞Щ鍒癋TP鏈嶅姟鍣�
- String nfix = "";
- if (null != uploadFileName) {
- nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
- }
-
- if (StringUtils.equalsIgnoreCase(nfix, ".exe")) {
- context.put("code", 4000);
- context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
- return;
- }
- if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
- context.put("code", 4000);
- context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
- return;
- }
-
- String remoteFileName = fileAndPath;
-
- if (true) {
- context.put("success", true);
- context.put("code", 200);
- context.put("errno",0);
- JSONObject fileJSON = new JSONObject();
- fileJSON.put("url", remoteFileName);
- fileJSON.put("imgaddr", fileNames);
- fileJSON.put("imgname", uploadFileName);
- fileJSON.put("originname", uploadFileName);
- context.put("data",fileJSON);
- context.put("message","璇锋眰鎴愬姛");
- writerJson(response, context);
- return;
- } else {
- // 绉诲姩澶辫触
- context.put("code", 0);
- context.put("message", "涓婁紶澶辫触");
- writerJson(response, context);
- }
- }
- context.put("code", 0);
- context.put("message", "涓婁紶澶辫触");
- writerJson(response, context);
- return;
- }
- }
- context.put("code", 0);
- context.put("message", "涓婁紶澶辫触");
- writerJson(response, context);
- return;
- }
-
-
-
- public static void writerJson(HttpServletResponse response, Object object) {
- response.setContentType("application/json");
- writer(response, JSONObject.toJSONString(object));
- }
-
- private static void writer(HttpServletResponse response, String str) {
- try {
- StringBuffer result = new StringBuffer();
- //璁剧疆椤甸潰涓嶇紦瀛�
- response.setHeader("Pragma", "No-cache");
- response.setHeader("Cache-Control", "no-cache");
- response.setCharacterEncoding("UTF-8");
- PrintWriter out = null;
- out = response.getWriter();
- out.print(str);
- out.flush();
- out.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-}
diff --git a/server/services/src/main/java/com/doumee/api/common/PublicController.java b/server/services/src/main/java/com/doumee/api/common/PublicController.java
new file mode 100644
index 0000000..74591df
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/api/common/PublicController.java
@@ -0,0 +1,168 @@
+package com.doumee.api.common;
+
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.FtpUtil;
+import com.doumee.core.utils.tyyun.TyyZosUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.multipart.commons.CommonsMultipartResolver;
+
+import javax.imageio.ImageIO;
+import javax.imageio.stream.ImageOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Api(tags = "鍏叡鎺ュ彛")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/public")
+@Slf4j
+public class PublicController extends BaseController {
+
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+
+ public static FtpUtil ftp = null;
+
+ @ApiOperation(value = "涓婁紶", notes = "涓婁紶", httpMethod = "POST", position = 6)
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
+ })
+ @PostMapping(value = "/upload", headers = "content-type=multipart/form-data")
+ public void uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+ upload(multipartRequest, response, folder + "/",
+ systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.BUCKETNAME).getCode(),
+ systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_ID).getCode(),
+ systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_KEY).getCode(),
+ systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode(),
+ systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ENDPOINT).getCode());
+ }
+
+
+ public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName,
+ String access_id, String access_key, String resourcePath, String endpoint) throws Exception {
+ response.setCharacterEncoding("UTF-8");
+ response.setContentType("text/html;charset=UTF-8");
+ Map<String, Object> context = new HashMap<>();
+ CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
+ if (multipartResovler.isMultipart(request)) {
+ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+ Iterator<String> it = multipartRequest.getFileNames();
+ while (it.hasNext()) {
+ MultipartFile file = multipartRequest.getFile((String) it.next());// file
+ // multipartRequest.getFile((String)
+ // it.next());
+ if (file != null) {
+ // 1銆佷笂浼犲埌鏈嶅姟鍣ㄤ复鏃舵枃浠跺す
+ String uploadFileName = file.getOriginalFilename();
+ String originname = uploadFileName;
+ if (originname.lastIndexOf("/") >= 0) {
+ originname = originname.substring(originname.lastIndexOf("/") + 1);
+ }
+ String nfix = "";// 鍚庣紑鍚�
+ if (StringUtils.isNotBlank(uploadFileName)) {
+ nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
+ }
+ if (StringUtils.equalsIgnoreCase(nfix, ".exe")) {
+ context.put("code", 4000);
+ context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
+ return;
+ }
+ if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
+ context.put("code", 4000);
+ context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
+ return;
+ }
+ if (StringUtils.equalsIgnoreCase(nfix, ".so")) {
+ context.put("code", 4000);
+ context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".so\"涓婁紶鏈夎锛�");
+ return;
+ }
+ String nowDate = DateUtil.getNowShortDate();// 褰撳墠鏃堕棿锛堝勾鏈堟棩锛�
+ String fileName = UUID.randomUUID().toString() + nfix;
+ String tempFileName = nowDate + "/" + fileName;
+ String key = folder + tempFileName;// 鏂囦欢鍚�
+ TyyZosUtil obs = new TyyZosUtil(endpoint,access_id, access_key);
+ if (obs.uploadInputstreamObject(file.getInputStream(),bucketName, key)) {
+ // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
+ // sendSuccessMessage(response, resourcePath+key);
+ context.put("success", true);
+ context.put("code", 200);
+ context.put("errno",0);
+ JSONObject fileJSON = new JSONObject();
+ fileJSON.put("url", resourcePath + key);
+ fileJSON.put("imgaddr", tempFileName);
+ fileJSON.put("imgname", fileName);
+ fileJSON.put("originname", originname);
+ context.put("data",fileJSON);
+ context.put("message","璇锋眰鎴愬姛");
+ writerJson(response, context);
+ return;
+ } else {
+ // 绉诲姩澶辫触
+ context.put("code", 0);
+ context.put("message", "涓婁紶澶辫触");
+ writerJson(response, context);
+ return;
+ }
+ }
+
+ }
+ }
+ context.put("code", 0);
+ context.put("message", "涓婁紶澶辫触");
+ context.put("errno",0);
+ writerJson(response, context);
+ return;
+ }
+
+ public static void writerJson(HttpServletResponse response, Object object) {
+ response.setContentType("application/json");
+ writer(response, JSONObject.toJSONString(object));
+ }
+
+ private static void writer(HttpServletResponse response, String str) {
+ try {
+ StringBuffer result = new StringBuffer();
+ //璁剧疆椤甸潰涓嶇紦瀛�
+ response.setHeader("Pragma", "No-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ response.setCharacterEncoding("UTF-8");
+ PrintWriter out = null;
+ out = response.getWriter();
+ out.print(str);
+ out.flush();
+ out.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java b/server/services/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java
index 2c25530..78ace21 100644
--- a/server/services/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java
+++ b/server/services/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java
@@ -34,7 +34,6 @@
*/
void sort(UpdateSortDTO dto);
- String updateQywxToken();
void updateByIdNew(SystemDictData systemDictData);
SystemDictData queryByCode(String dicCode, String label);
diff --git a/server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java b/server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
index a3541d3..8c3ed57 100644
--- a/server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
+++ b/server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
@@ -5,7 +5,6 @@
import com.doumee.core.exception.BusinessException;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.model.LoginUserInfo;
-import com.doumee.core.utils.qiyeweixin.QywxUtil;
import com.doumee.dao.common.dto.UpdateSortDTO;
import com.doumee.dao.system.model.SystemDict;
import com.doumee.dao.system.model.SystemDictData;
@@ -50,27 +49,6 @@
@Override
public void updateById(SystemDictData systemDictData) {
systemDictDataService.updateById(systemDictData);
- }
-
- @Override
- public String updateQywxToken(){
- String corpid = queryByCode(Constants.QYWX,Constants.QYWX_CORPID).getCode();
- String secret = queryByCode(Constants.QYWX,Constants.QYWX_SECRET).getCode();
- String token = QywxUtil.getAccessToken(corpid,secret);
- SystemDictData dictData = queryByCode(Constants.QYWX,Constants.QYWX_TOKEN);
- if (dictData != null ) {
- dictData.setCode(token);
- dictData.setUpdateTime(new Date());
- systemDictDataService.updateById(dictData);
- String ticket = QywxUtil.getJsApiTicket(token);
- SystemDictData ticketDictData = queryByCode(Constants.QYWX,Constants.QYWX_JS_API_TICKET);
- if (dictData != null ) {
- ticketDictData.setCode(ticket);
- ticketDictData.setUpdateTime(new Date());
- systemDictDataService.updateById(ticketDictData);
- }
- }
- return token;
}
@Override
diff --git a/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
index c065f29..9c0b262 100644
--- a/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
+++ b/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.doumee.core.constants.Constants;
import com.doumee.dao.business.model.Member;
+import com.doumee.dao.vo.WebLoginUserVO;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.slf4j.Slf4j;
@@ -34,23 +35,21 @@
/**
* 鐢熸垚token浠ょ墝
*
- * @param member 浠ょ墝涓惡甯︾殑闄勫姞淇℃伅
+ * @param webLoginUser 浠ょ墝涓惡甯︾殑闄勫姞淇℃伅
* @return 浠oken鐗�
*/
- public String generateToken(Member member) {
- if(member == null){
+ public String generateToken(WebLoginUserVO webLoginUser) {
+ if(webLoginUser == null){
return null;
}
- Map<String,Object> map = new HashMap<>();
- map.put("id",member.getId());
- return generateTokenDo(member);
+ return generateTokenDo(webLoginUser);
}
- public Member getUserInfoByToken(String token) {
+ public WebLoginUserVO getUserInfoByToken(String token) {
try {
- Member member = getClaimsFromToken(token);
- return member;
+ WebLoginUserVO userVO = getClaimsFromToken(token);
+ return userVO;
} catch (Exception e) {
e.printStackTrace();
}
@@ -97,17 +96,15 @@
*
* @return 浠ょ墝
*/
- private String generateTokenDo(Member member) {
+ private String generateTokenDo(WebLoginUserVO webLoginUser) {
Map<String, Object> claims = new HashMap<>();
- claims.put("id",member.getId());
+ claims.put("id",webLoginUser.getId());
Date expirationDate = new Date(System.currentTimeMillis() + jwtProperties.getExpiration());
String token = Jwts.builder().setClaims(claims)
.setExpiration(expirationDate)
.signWith(SignatureAlgorithm.HS512, jwtProperties.getSecret())
.compact();
- redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(member)
-// , jwtProperties.getExpiration(), TimeUnit.MILLISECONDS
- );
+ redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(webLoginUser));
return token;
}
@@ -118,11 +115,11 @@
* @param token 浠ょ墝
* @return 鏁版嵁澹版槑
*/
- private Member getClaimsFromToken(String token) {
- Member claims;
+ private WebLoginUserVO getClaimsFromToken(String token) {
+ WebLoginUserVO claims;
try {
String userInfo = (String) redisTemplate.opsForValue().get(Constants.REDIS_TOKEN_KEY+token);
- claims = JSONObject.toJavaObject(JSONObject.parseObject(userInfo),Member.class);
+ claims = JSONObject.toJavaObject(JSONObject.parseObject(userInfo),WebLoginUserVO.class);
} catch (Exception e) {
claims = null;
}
diff --git a/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java b/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java
index a52062a..0d90178 100644
--- a/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java
+++ b/server/services/src/main/java/com/doumee/config/jwt/WebMvcConfig.java
@@ -1,11 +1,10 @@
package com.doumee.config.jwt;
import com.alibaba.fastjson.JSONObject;
-import com.doumee.core.annotation.LoginRequired;
-import com.doumee.core.constants.Constants;
+import com.doumee.config.annotation.LoginRequired;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
-import com.doumee.dao.business.model.Member;
+import com.doumee.dao.vo.WebLoginUserVO;
import io.jsonwebtoken.JwtException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -79,23 +78,14 @@
public Boolean checkLogin(HttpServletRequest request, HttpServletResponse response){
String token = request.getHeader(JwtTokenUtil.HEADER_KEY);
try {
- Member member = jwtTokenUtil.getUserInfoByToken(token);
- if(Objects.isNull(member)){
+ WebLoginUserVO webLoginUserVO = jwtTokenUtil.getUserInfoByToken(token);
+ if(Objects.isNull(webLoginUserVO)){
throw new BusinessException(ResponseStatus.TOKEN_EXCEED_TIME.getCode(),"闀挎椂闂存湭鎿嶄綔,璇烽噸鏂扮櫥褰�");
}
- Integer isDeleted = dao.queryForObject(" select COALESCE(DELETED,1) from member where id = ?", Integer.class, member.getId());
- if(isDeleted.equals(Constants.ONE)){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
- }
- Integer count = dao.queryForObject("select count(1) from member where id = ?", Integer.class, member.getId());
- if (count != null && count > 0) {
// jwtTokenUtil.refreshToken(token,member);
- request.setAttribute(JwtTokenUtil.MEMBER_INFO, JSONObject.toJSONString(member));
- request.setAttribute(JwtTokenUtil.MEMBER_ID, member.getId());
- return true;
- }else{
- throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鐢ㄦ埛淇℃伅鍑洪敊");
- }
+ request.setAttribute(JwtTokenUtil.MEMBER_INFO, JSONObject.toJSONString(webLoginUserVO));
+ request.setAttribute(JwtTokenUtil.MEMBER_ID, webLoginUserVO.getId());
+ return true;
} catch (IllegalArgumentException | JwtException e) {
throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鏈櫥褰�");
}
diff --git a/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java b/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java
deleted file mode 100644
index e406b69..0000000
--- a/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.doumee.core.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target({ElementType.METHOD,ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface LoginRequired {
-
-}
diff --git a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java
index f8f067c..a1d7252 100644
--- a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java
+++ b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java
@@ -4,6 +4,7 @@
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFPictureData;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,7 +43,7 @@
* 鏍囬琛屽彿
*/
private CellType changeType;
-
+ private Map<String, XSSFPictureData> pictureList;
/**
* 鏋勯�犲嚱鏁�
* @param--path 瀵煎叆鏂囦欢锛岃鍙栫涓�涓伐浣滆〃
@@ -161,6 +162,7 @@
this.sheet = this.wb.getSheetAt(sheetIndex);
this.headerNum = headerNum;
this.changeType = cellType;
+ this.pictureList = ExcelPictureUtil.getExcelPictures(in);
log.debug("Initialize success.");
}
@@ -228,6 +230,9 @@
}
return val;
}
+ public Map<String,XSSFPictureData> getExcelPictures(){
+ return this.pictureList;
+ }
/**
* 鑾峰彇瀵煎叆鏁版嵁鍒楄〃
diff --git a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelPictureUtil.java b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelPictureUtil.java
new file mode 100644
index 0000000..de3c552
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelPictureUtil.java
@@ -0,0 +1,309 @@
+package com.doumee.core.annotation.excel;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.XML;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.map.HashedMap;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.openxml4j.opc.PackagePartName;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
+import org.apache.poi.xssf.usermodel.*;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+
+/**
+ * @author bianhl
+ * @version 1.0
+ * @description 鑾峰彇鍥剧墖璧勬簮
+ * @date 2024骞�4鏈�28鏃�08:44:42
+ */
+@Slf4j
+public class ExcelPictureUtil {
+
+ public static Map<String, XSSFPictureData> getExcelPictures(InputStream is) {
+ try {
+ byte[] fileData = getFileStream(is);
+ Map<String, XSSFPictureData> pictures = getPictures(fileData);
+ pictures.forEach((id, xssfPictureData) -> {
+ System.out.println("id锛�" + id);
+ String fileName = xssfPictureData.getPackagePart().getPartName().getName();
+ System.out.println("fileName锛�" + fileName);
+ });
+ return pictures;
+ }catch (Exception e){
+ return null;
+ }
+
+ }
+
+ /**
+ * 鑾峰彇娴姩鍥剧墖锛屼互 map 褰㈠紡杩斿洖锛岄敭涓鸿鍒楁牸寮� x-y銆�
+ *
+ * @param xssfSheet WPS 宸ヤ綔琛�
+ * @return 娴姩鍥剧墖鐨� map
+ */
+ public static Map<String, XSSFPictureData> getFloatingPictures(XSSFSheet xssfSheet) {
+ Map<String, XSSFPictureData> mapFloatingPictures = new HashMap<>();
+ XSSFDrawing drawingPatriarch = xssfSheet.getDrawingPatriarch();
+ if (drawingPatriarch != null) {
+ List<XSSFShape> shapes = drawingPatriarch.getShapes();
+ for (XSSFShape shape : shapes) {
+ if (shape instanceof XSSFPicture ) {
+ XSSFPicture picture = (XSSFPicture)shape;
+ XSSFClientAnchor anchor = (XSSFClientAnchor) picture.getAnchor();
+ XSSFPictureData pictureData = picture.getPictureData();
+ String key = anchor.getRow1() + "-" + anchor.getCol1();
+ mapFloatingPictures.put(key, pictureData);
+ }
+ }
+ }
+ return mapFloatingPictures;
+ }
+
+ /**
+ * 澶勭悊 WPS 鏂囦欢涓殑鍥剧墖鏁版嵁锛岃繑鍥炲浘鐗囦俊鎭� map銆�
+ *
+ * @param stream 杈撳叆娴�
+ * @param mapConfig 閰嶇疆鏄犲皠
+ * @return 鍥剧墖淇℃伅鐨� map
+ * @throws IOException
+ */
+ private static Map<String, XSSFPictureData> processPictures(ByteArrayInputStream stream, Map<String, String> mapConfig) throws IOException {
+ Map<String, XSSFPictureData> mapPictures = new HashedMap<>();
+ Workbook workbook = WorkbookFactory.create(stream);
+ List<XSSFPictureData> allPictures = (List<XSSFPictureData>) workbook.getAllPictures();
+ for (XSSFPictureData pictureData : allPictures) {
+ PackagePartName partName = pictureData.getPackagePart().getPartName();
+ String uri = partName.getURI().toString();
+ if (mapConfig.containsKey(uri)) {
+ String strId = mapConfig.get(uri);
+ mapPictures.put(strId, pictureData);
+ }
+ }
+ return mapPictures;
+ }
+
+ /**
+ * 鑾峰彇 WPS 鏂囨。涓殑鍥剧墖锛屽寘鎷祵鍏ュ紡鍥剧墖鍜屾诞鍔ㄥ紡鍥剧墖銆�
+ *
+ * @param data 浜岃繘鍒舵暟鎹�
+ * @return 鍥剧墖淇℃伅鐨� map
+ * @throws IOException
+ */
+ public static Map<String, XSSFPictureData> getPictures(byte[] data) {
+ try {
+ Map<String, String> mapConfig = processZipEntries(new ByteArrayInputStream(data));
+ Map<String, XSSFPictureData> mapPictures = processPictures(new ByteArrayInputStream(data), mapConfig);
+ Iterator<Sheet> sheetIterator = WorkbookFactory.create(new ByteArrayInputStream(data)).sheetIterator();
+ while (sheetIterator.hasNext()) {
+ mapPictures.putAll(getFloatingPictures((XSSFSheet) sheetIterator.next()));
+ }
+ return mapPictures;
+ } catch (IOException e) {
+ return new HashedMap<>();
+ }
+ }
+
+ /**
+ * 澶勭悊 Zip 鏂囦欢涓殑鏉$洰锛屾洿鏂板浘鐗囬厤缃俊鎭��
+ *
+ * @param stream Zip 杈撳叆娴�
+ * @return 閰嶇疆淇℃伅鐨� map
+ * @throws IOException
+ */
+ private static Map<String, String> processZipEntries(ByteArrayInputStream stream) throws IOException {
+ Map<String, String> mapConfig = new HashedMap<>();
+ ZipInputStream zipInputStream = new ZipInputStream(stream);
+ ZipEntry zipEntry;
+ while ((zipEntry = zipInputStream.getNextEntry()) != null) {
+ try {
+ final String fileName = zipEntry.getName();
+ if ("xl/cellimages.xml".equals(fileName)) {
+ processCellImages(zipInputStream, mapConfig);
+ } else if ("xl/_rels/cellimages.xml.rels".equals(fileName)) {
+ return processCellImagesRels(zipInputStream, mapConfig);
+ }
+ } finally {
+ zipInputStream.closeEntry();
+ }
+ }
+ return new HashedMap<>();
+ }
+
+ /**
+ * 澶勭悊 Zip 鏂囦欢涓殑 cellimages.xml 鏂囦欢锛屾洿鏂板浘鐗囬厤缃俊鎭��
+ *
+ * @param zipInputStream Zip 杈撳叆娴�
+ * @param mapConfig 閰嶇疆淇℃伅鐨� map
+ * @throws IOException
+ */
+ private static void processCellImages(ZipInputStream zipInputStream, Map<String, String> mapConfig) throws IOException {
+ String content = IOUtils.toString(zipInputStream);
+ JSONObject jsonObject = XML.toJSONObject(content);
+ if (jsonObject != null) {
+ JSONObject cellImages = jsonObject.getJSONObject("etc:cellImages");
+ if (cellImages != null) {
+ JSONArray cellImageArray = null;
+ Object cellImage = cellImages.get("etc:cellImage");
+ if (cellImage != null && cellImage instanceof JSONArray) {
+ cellImageArray = (JSONArray) cellImage;
+ } else if (cellImage != null && cellImage instanceof JSONObject) {
+ JSONObject cellImageObj = (JSONObject) cellImage;
+ if (cellImageObj != null) {
+ cellImageArray = new JSONArray();
+ cellImageArray.add(cellImageObj);
+ }
+ }
+ if (cellImageArray != null) {
+ processImageItems(cellImageArray, mapConfig);
+ }
+ }
+ }
+ }
+
+ /**
+ * 澶勭悊 cellImageArray 涓殑鍥剧墖椤癸紝鏇存柊鍥剧墖閰嶇疆淇℃伅銆�
+ *
+ * @param cellImageArray 鍥剧墖椤圭殑 JSONArray
+ * @param mapConfig 閰嶇疆淇℃伅鐨� map
+ */
+ private static void processImageItems(JSONArray cellImageArray, Map<String, String> mapConfig) {
+ for (int i = 0; i < cellImageArray.size(); i++) {
+ JSONObject imageItem = cellImageArray.getJSONObject(i);
+ if (imageItem != null) {
+ JSONObject pic = imageItem.getJSONObject("xdr:pic");
+ if (pic != null) {
+ processPic(pic, mapConfig);
+ }
+ }
+ }
+ }
+
+ /**
+ * 澶勭悊 pic 涓殑鍥剧墖淇℃伅锛屾洿鏂板浘鐗囬厤缃俊鎭��
+ *
+ * @param pic 鍥剧墖鐨� JSONObject
+ * @param mapConfig 閰嶇疆淇℃伅鐨� map
+ */
+ private static void processPic(JSONObject pic, Map<String, String> mapConfig) {
+ JSONObject nvPicPr = pic.getJSONObject("xdr:nvPicPr");
+ if (nvPicPr != null) {
+ JSONObject cNvPr = nvPicPr.getJSONObject("xdr:cNvPr");
+ if (cNvPr != null) {
+ String name = cNvPr.getStr("name");
+ if (StringUtils.isNotEmpty(name)) {
+ String strImageEmbed = updateImageEmbed(pic);
+ if (strImageEmbed != null) {
+ mapConfig.put(strImageEmbed, name);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 鑾峰彇宓屽叆寮忓浘鐗囩殑 embed 淇℃伅銆�
+ *
+ * @param pic 鍥剧墖鐨� JSONObject
+ * @return embed 淇℃伅
+ */
+ private static String updateImageEmbed(JSONObject pic) {
+ JSONObject blipFill = pic.getJSONObject("xdr:blipFill");
+ if (blipFill != null) {
+ JSONObject blip = blipFill.getJSONObject("a:blip");
+ if (blip != null) {
+ return blip.getStr("r:embed");
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 澶勭悊 Zip 鏂囦欢涓殑 relationship 鏉$洰锛屾洿鏂伴厤缃俊鎭��
+ *
+ * @param zipInputStream Zip 杈撳叆娴�
+ * @param mapConfig 閰嶇疆淇℃伅鐨� map
+ * @return 閰嶇疆淇℃伅鐨� map
+ * @throws IOException
+ */
+ private static Map<String, String> processCellImagesRels(ZipInputStream zipInputStream, Map<String, String> mapConfig) throws IOException {
+ String content = IOUtils.toString(zipInputStream );
+ JSONObject jsonObject = XML.toJSONObject(content);
+ JSONObject relationships = jsonObject.getJSONObject("Relationships");
+ if (relationships != null) {
+ JSONArray relationshipArray = null;
+ Object relationship = relationships.get("Relationship");
+
+ if (relationship != null && relationship instanceof JSONArray) {
+ relationshipArray = (JSONArray) relationship;
+ } else if (relationship != null && relationship instanceof JSONObject ) {
+ JSONObject relationshipObj = (JSONObject) relationship;
+ if (relationshipObj != null) {
+ relationshipArray = new JSONArray();
+ relationshipArray.add(relationshipObj);
+ }
+ }
+ if (relationshipArray != null) {
+ return processRelationships(relationshipArray, mapConfig);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 澶勭悊 relationshipArray 涓殑鍏崇郴椤癸紝鏇存柊閰嶇疆淇℃伅銆�
+ *
+ * @param relationshipArray 鍏崇郴椤圭殑 JSONArray
+ * @param mapConfig 閰嶇疆淇℃伅鐨� map
+ * @return 閰嶇疆淇℃伅鐨� map
+ */
+ private static Map<String, String> processRelationships(JSONArray relationshipArray, Map<String, String> mapConfig) {
+ Map<String, String> mapRelationships = new HashedMap<>();
+ for (int i = 0; i < relationshipArray.size(); i++) {
+ JSONObject relaItem = relationshipArray.getJSONObject(i);
+ if (relaItem != null) {
+ String id = relaItem.getStr("Id");
+ String value = "/xl/" + relaItem.getStr("Target");
+ if (mapConfig.containsKey(id)) {
+ String strImageId = mapConfig.get(id);
+ mapRelationships.put(value, strImageId);
+ }
+ }
+ }
+ return mapRelationships;
+ }
+
+ /**
+ * @return {@link byte[]}
+ * @description
+ * @author bianhl
+ * @date 2024/4/26 13:52
+ */
+ private static byte[] getFileStream(InputStream inputStream) {
+ // 鍒涘缓 ByteArrayOutputStream 鏉ユ殏瀛樻祦鏁版嵁
+ try {
+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+ byte[] buffer = new byte[1024];
+ int length;
+ while ((length = inputStream.read(buffer)) != -1) {
+ byteArrayOutputStream.write(buffer, 0, length);
+ }
+ // 灏� byteArrayOutputStream 鐨勫唴瀹硅幏鍙栦负瀛楄妭鏁扮粍
+ return byteArrayOutputStream.toByteArray();
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index 91cd7ad..5fe8c94 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -19,6 +19,8 @@
public static final String HWY_OBS_ENDPOINT ="HWY_OBS_ENDPOINT" ;
public static final String HWY_OBS_BUCKET ="HWY_OBS_BUCKET" ;
public static final String RESOURCE_PATH ="RESOURCE_PATH" ;
+ public static final String ROLE_CONFIG ="ROLE_CONFIG" ;
+
public static final String QYWX_CORPID = "QYWX_CORPID";
public static final String QYWX_SECRET = "QYWX_SECRET";
public static final String QYWX_TOKEN = "QYWX_TOKEN";
@@ -58,6 +60,14 @@
public static final String AUTO_CONFIRM ="AUTO_CONFIRM" ;
public static final String AUTO_CANCEL_WAIT_PAY ="AUTO_CANCEL_WAIT_PAY" ;
+
+ public static final String ACCESS_ID="ACCESS_ID";
+ public static final String BUCKETNAME = "BUCKETNAME";
+ public static final String ACCESS_KEY = "ACCESS_KEY";
+ public static final String ENDPOINT = "ENDPOINT";
+
+
+ public static final String UTF = "UTF-8";
public static final String QYWX = "QYWX";
public static final Integer ONE = 1;
public static final Integer TWO = 2;
@@ -70,6 +80,11 @@
public static final String MEMBER_FILES = "MEMBER_FILES";
public static final String CATEGORY_FILES = "CATEGORY_FILES";
public static final String ORDERS_FILES = "ORDERS_FILES";
+ public static final String ZBOM_PARAM ="ZBOM_PARAM" ;
+ public static final String ZBOM_UK_ERROR_URL ="ZBOM_UK_ERROR_URL" ;
+ public static final String ZBOM_TICKET_LOGIN_URL ="ZBOM_TICKET_LOGIN_URL" ;
+ public static final String OBJCET_STORAGE = "OBJCET_STORAGE";
+ public static final Object OBJECT_TYPE_CASES = "OBJECT_TYPE_CASES";
public static boolean WORKORDER_SHE_EMAIL_SENDING = false;
public static boolean DEALING_COMPANY_SYNC = false ;
public static boolean DEALING_MEMBER_SYNC = false ;
@@ -77,10 +92,16 @@
public static final String WORKORDER_LOG_FILE_PATH ="WORKORDER_LOG_FILE_PATH" ;
public static final String REDIS_TOKEN_KEY = "token_";
+ public static final String CASES_FILES = "CASES_FILES";
public static final String SUCCESS = "SUCCESS";
public static final String FAIL = "FAIL";
public static final String CANCELLED = "CANCELLED";
+
+ public interface ZbomConst{
+ String TICKET_LOGIN = "https://sso.zbom.com/esc-idm/api/v1/getUserInfo";
+ String TICKET_LOGIN_TEST = "http://testsso.zhibang.com:8080/esc-idm/api/v1/getUserInfo";
+ }
public interface uploadType{
@@ -94,7 +115,8 @@
interface CacheKey {
}
public interface RedisKeys {
- public static final String ORDER_CODE = "ORDER_CODE";
+ String IMPORTING_RECORD = "IMPORTING_RECORD";
+ String ORDER_CODE = "ORDER_CODE";
}
/**
* 鎿嶄綔绫诲瀷锛岀敤浜庡仛鎺ュ彛楠岃瘉鍒嗙粍
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/QywxConstant.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/QywxConstant.java
deleted file mode 100644
index b2bad0f..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/QywxConstant.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.doumee.core.utils.qiyeweixin;
-
-public class QywxConstant {
- public final static String MSGCORPSECRET = "WXvaZzwN9A3F-oGTHKY03Rxbl1niz1P_3odjwBdRs8g";//浼佷笟寰俊 娑堟伅鎺ㄩ�丼ECRET
- public final static String SCHEDULESECRET = "kDucV45wtQaWjRRZoIlvxbBrLp3khHFouJhsDywBe0I";//浼佷笟寰俊 鏃ョ▼SECRET
- public final static String DOUMIGUANJIA = "1000002";//浼佷笟寰俊 SECRET
- public final static String PARENTID = "1";//椤剁骇閮ㄩ棬缂栫爜
- public final static String PASSWORD = "123456";//榛樿瀵嗙爜
- public final static String CORPID = "wweea8f71b54e3b835";
- public final static String DMSECRET = "mfmGJpvqj1WNPTwo0Cue42uibhUd5W6_iSWpF39XZQ0";//瀹㈢瀹跺簲鐢� SECRET
- public final static String CORPSECRET = "8gl5ndGr824OHZ90CkZdcIewUKHoyk13XN4hfxBS_io";
- public final static String ACCESS_TOKEN = "aOpknXCW7KBBwgGAPuacwfhJRcT1PeIg-IroZicxWamj0JayKJ0rKw2sNXGzpQzK8AMDeDrEJC_kTvPPWTgtefDNLtfsdHS7IpXqBV1P8znLG1EmsYPNgvn78dsQd5bBomLl_qPpOob9hUUsSJJKcEmxXldCNEYVBhKmYnQ4yY8WE8i4xp7aLmm-hRql0AzhzaNhUA7nAzNN5BsgSgbXMA";
- //鑾峰彇accesstoken,corpid=浼佷笟ID,corpsecret=搴旂敤鐨勫嚟璇佸瘑閽�
- public final static String[] GET_ACCESS_TOKEN = new String[]{"/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${secret}","鑾峰彇浼佷笟寰俊accesstoken"};
- //鑾峰彇閮ㄩ棬淇℃伅,閮ㄩ棬id銆傝幏鍙栨寚瀹氶儴闂ㄥ強鍏朵笅鐨勫瓙閮ㄩ棬锛堜互鍙婂強瀛愰儴闂ㄧ殑瀛愰儴闂ㄧ瓑绛夛紝閫掑綊锛夈�� 濡傛灉涓嶅~锛岄粯璁よ幏鍙栧叏閲忕粍缁囨灦鏋�
- public final static String[] GET_DEPARTMENT_LIST = new String[]{"/cgi-bin/department/list?access_token=${accesstoken}&id=${id}","鑾峰彇閮ㄩ棬淇℃伅"};
- public final static String[] GET_DEPARTMENT_SIMPLELIST = new String[]{"/cgi-bin/department/simplelist?access_token=${accesstoken}&id=${id}","鑾峰彇閮ㄩ棬淇℃伅"};
- public final static String[] GET_DEPARTMENT_INFO = new String[]{"/cgi-bin/department/get?access_token=${accesstoken}&id=${id}","鑾峰彇鍗曚釜閮ㄩ棬璇︽儏"};
- //鑾峰彇閮ㄩ棬鎴愬憳,access_token=璋冪敤鎺ュ彛鍑瘉,department_id=鑾峰彇鐨勯儴闂╥d,fetch_child= 鏄惁閫掑綊鑾峰彇瀛愰儴闂ㄤ笅闈㈢殑鎴愬憳锛�1-閫掑綊鑾峰彇锛�0-鍙幏鍙栨湰閮ㄩ棬
- public final static String[] GET_DEPARTMENT_SIMPLE_LIST = new String[]{"/cgi-bin/user/simplelist?access_token=${accesstoken}&department_id=${departmentId}","鑾峰彇閮ㄩ棬鎴愬憳"};
- public final static String[] GET_DEPARTMENT_USER_LIST = new String[]{"/cgi-bin/user/list?access_token=${accesstoken}&department_id=${departmentId}","鑾峰彇閮ㄩ棬鎴愬憳"};
- public final static String[] GET_MEDIA = new String[]{"/cgi-bin/media/get?access_token=${accesstoken}&media_id=${media_id}","鑾峰彇涓存椂绱犳潗"};
- public final static String[] UPLOAD_TEMP_MEDIA = new String[]{"/cgi-bin/media/upload?access_token=${accesstoken}&type=${type}","涓婁紶涓存椂绱犳潗"};
- //鑾峰彇鎴愬憳璇︽儏,access_token=璋冪敤鎺ュ彛鍑瘉,userid=鎴愬憳UserID
- public final static String[] GET_USER_DETAIL =new String[]{ "/cgi-bin/user/get?access_token=${accesstoken}&userid=${id}","鑾峰彇鎴愬憳璇︽儏"};
- //鍙戦�佸簲鐢ㄦ秷鎭�,access_token=璋冪敤鎺ュ彛鍑瘉 POST璇锋眰锛�
- public final static String[] SEND_MSG =new String[]{ "/cgi-bin/message/send?access_token=${accesstoken}","鍙戦�佹帹閫佹秷鎭�"};
- public final static String[] GET_USER_BY_AUTH_CODE =new String[]{ "/cgi-bin/auth/getuserinfo?access_token=${accesstoken}&code=${code}","鑾峰彇鐢ㄦ埛鐧诲綍韬唤"};
- public final static String[] GET_JSAPI_TICKET =new String[]{ "/cgi-bin/get_jsapi_ticket?access_token=${accesstoken}","鑾峰彇浼佷笟 jsapi_ticket"};
-
-
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java
deleted file mode 100644
index a501b01..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/QywxUtil.java
+++ /dev/null
@@ -1,253 +0,0 @@
-package com.doumee.core.utils.qiyeweixin;
-
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.TypeReference;
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.utils.HttpsUtil;
-import com.doumee.core.utils.qiyeweixin.model.request.QywxSendMsgRequest;
-import com.doumee.core.utils.qiyeweixin.model.response.*;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-
-@Component
-@Slf4j
-public class QywxUtil {
- private static JSONObject json = new JSONObject();
-
-
-
- private static QywxUtil qyUtil;
-
- @Value("${qiwei.serviceurl}")
- private String qiweiUrl;
-
- @PostConstruct
- private void init() {
- qyUtil = this;
-// QywxUtil.qiweiUrl = serviceurl;
- }
-
-
- public static String create(Map<String, Object> map, String url, String token) throws IOException {
- // String token = getToken(QY_Constant.CORPID, QY_Constant.SCHEDULESECRET);
- String postData = createPostData(map);
- String response = HttpsUtil.post(url + token, postData, "application/json", false);
- System.out.println("鑾峰彇鍒扮殑token======>" + token);
- System.out.println("璇锋眰鏁版嵁======>" + postData);
- System.out.println("鍙戦�佸井淇$殑鍝嶅簲鏁版嵁======>" + response);
- return response;
- }
-
- private static String createPostData(Map<String, Object> map) {
- System.out.println("杩涘叆createPostData鏂规硶-------------------------");
- return JSONObject.toJSONString(map);
- }
-
-
- public static String getAccessToken(String corpId, String corpSecret) {
- String[] interfaceUrl = QywxConstant.GET_ACCESS_TOKEN;
- String url = interfaceUrl[0].replace("${corpid}",corpId).replace("${secret}",corpSecret);
- QywxBaseResponse response = sendHttpRequest(url,interfaceUrl[1],"",new TypeReference<QywxBaseResponse<String>>(){});
- if(response.getErrcode()!=null && response.getErrcode() ==0){
- return response.getAccess_token();
- }
- return null;
- }
- public static List<QywxDepartInfoResponse> getDepartmentAll(String token) {
- String[] interfaceUrl = QywxConstant.GET_DEPARTMENT_LIST;
- String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${id}","");
- QywxBaseResponse<List<QywxDepartInfoResponse>> response = sendHttpRequest(url,interfaceUrl[1],"",new TypeReference<QywxBaseResponse<List<QywxDepartInfoResponse>>>(){});
- if(response.getErrcode()!=null && response.getErrcode() ==0){
- return response.getData();
- }
- return null;
- }
- public static QywxDepartInfoResponse getDepartmentInfo(String token,String departid) {
- String[] interfaceUrl = QywxConstant.GET_DEPARTMENT_INFO;
- String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${id}",departid);
- QywxBaseResponse<QywxDepartInfoResponse> response = sendHttpRequest(url,interfaceUrl[1],""
- ,new TypeReference< QywxBaseResponse<QywxDepartInfoResponse>>(){});
- if(response.getErrcode()!=null && response.getErrcode() ==0){
- return response.getData();
- }
- return null;
- }
- public static QywxSendMsgResponse sendMsg(String token, QywxSendMsgRequest param) {
- try{
- String[] interfaceUrl = QywxConstant.SEND_MSG;
- String url = interfaceUrl[0].replace("${accesstoken}",token);
- QywxSendMsgResponse response = sendHttpRequestSingle(url,interfaceUrl[1],JSONObject.toJSONString(param)
- ,new TypeReference<QywxSendMsgResponse>(){});
- log.error("鎺ㄩ�佹秷鎭粨鏋渰}",JSONObject.toJSONString(response));
- if(response.getErrcode()!=null && response.getErrcode() ==0){
- return response;
- }
- }catch (Exception e){
-
- }
-
- return null;
- }
- public static List<QywxUserListResponse> getUserList(String token,String depatId) {
- try {
- String[] interfaceUrl = QywxConstant.GET_DEPARTMENT_USER_LIST;
- String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${departmentId}",depatId);
- QywxBaseResponse<List<QywxUserListResponse>> response = sendHttpRequest(url,interfaceUrl[1],"",new TypeReference<QywxBaseResponse<List<QywxUserListResponse>>>(){});
- if(response.getErrcode()!=null && response.getErrcode() ==0){
- return response.getData();
- }
- }catch (Exception e){
- e.printStackTrace();
- }
-
- return null;
- }
- public static InputStream getMediaInputstream(String token, String media) {
- try {
- String[] interfaceUrl = QywxConstant.GET_MEDIA;
- String url = qyUtil.qiweiUrl+interfaceUrl[0].replace("${accesstoken}",token).replace("${media_id}",media);
- log.info("浼佷笟寰俊涓存椂绱犳潗鑾峰彇url=========="+url);
- return HttpsUtil.connectionInputsteam(url,"GET",null,null);
- }catch (Exception e){
- e.printStackTrace();
- log.error("浼佷笟寰俊涓存椂绱犳潗鑾峰彇error=========="+e.getMessage());
- }
-
- return null;
- }
- public static QywxUserInfoResponse getUserInfo(String token,String id) {
- String[] interfaceUrl = QywxConstant.GET_USER_DETAIL;
- String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${id}",id);
- QywxUserInfoResponse response = sendHttpRequestSingle(url,interfaceUrl[1],""
- ,new TypeReference<QywxUserInfoResponse>(){});
- if(response.getErrcode()!=null && response.getErrcode() ==0){
- return response;
- }
- return null;
- }
-
- /**
- *
- * @param token
- * @param type 濯掍綋鏂囦欢绫诲瀷锛屽垎鍒湁鍥剧墖锛坕mage锛夈�佽闊筹紙voice锛夈�佽棰戯紙video锛夛紝鏅�氭枃浠讹紙file锛�
- * @return
- */
- public static QywxUploadMediaResponse uploadMedia(String token,String type,String imgurl) {
- String[] interfaceUrl = QywxConstant.UPLOAD_TEMP_MEDIA;
- String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${type}",type);
- QywxUploadMediaResponse response = sendHttpRequestMultifile(url,interfaceUrl[1],imgurl
- ,new TypeReference<QywxUploadMediaResponse>(){});
- if(response !=null && response.getErrcode()!=null && response.getErrcode() ==0){
- return response;
- }
- return null;
- }
- public static QywxBaseResponse<String> getUserInfoByCode(String token,String code) {
- String[] interfaceUrl = QywxConstant.GET_USER_BY_AUTH_CODE;
- String url = interfaceUrl[0].replace("${accesstoken}",token).replace("${code}",code);
- QywxBaseResponse<String> response = sendHttpRequest(url,interfaceUrl[1],""
- ,new TypeReference<QywxBaseResponse<String>>(){});
- if(response.getErrcode()!=null && response.getErrcode() ==0){
- return response;
- }
- return null;
- }
-
-
- public static String getJsApiTicket(String token) {
- String[] interfaceUrl = QywxConstant.GET_JSAPI_TICKET;
- String url = interfaceUrl[0].replace("${accesstoken}",token);
- QywxBaseResponse<String> response = sendHttpRequest(url,interfaceUrl[1],""
- ,new TypeReference<QywxBaseResponse<String>>(){});
- if(response.getErrcode()!=null && response.getErrcode() ==0){
- return response.getTicket();
- }
- return null;
- }
-
-
- /**
- * 鍙戣捣wms鎺ュ彛璇锋眰
- * @param url
- * @param name
- * @param param
- * @param typeReference
- * @return
- * @param <T>
- */
- public static <T> QywxBaseResponse<T> sendHttpRequest(String url, String name, String param, TypeReference<QywxBaseResponse<T>> typeReference){
- log.info("銆�"+name+"銆�================寮�濮�===="+url+"\nparam==========================:"+ JSONObject.toJSONString(param));
- if ( StringUtils.isNotBlank(url)) {
- String res = null;
- try {
- Map<String,String> headers = new HashMap<>();
- res = HttpsUtil.postJson(qyUtil.qiweiUrl+url,param);
- QywxBaseResponse result = JSONObject.parseObject(res, typeReference.getType());
- logResult(result,name);
- return result;
- }catch (Exception e){
- e.printStackTrace();
- log.error("銆�"+name+"銆�================澶辫触===="+ JSONObject.toJSONString(param));
- }
- }
- return null;
- }
- public static <T extends QywxBaseSingleResponse> T sendHttpRequestMultifile(String url, String name, String imgUrl , TypeReference<T> typeReference){
- log.info("銆�"+name+"銆�================寮�濮�===="+ imgUrl);
- if ( StringUtils.isNotBlank(url)) {
- String res = null;
- try {
- res = HttpsUtil.uploadTempMedia (qyUtil.qiweiUrl+url,imgUrl);
- log.info("浠庝紒寰帴鍙�:{}----涓婁紶涓存椂绱犳潗缁撴灉:{}",url,res);
- JSONObject jsonObject = JSONObject.parseObject(res);
- T result = JSONObject.parseObject(res, typeReference.getType());
- return result;
- }catch (Exception e){
- e.printStackTrace();
- log.error("銆�"+name+"銆�================澶辫触===="+ imgUrl);
- }
- }
- return null;
- }
- public static <T extends QywxBaseSingleResponse> T sendHttpRequestSingle(String url, String name, String param, TypeReference<T> typeReference){
- log.info("銆�"+name+"銆�================寮�濮�===="+ JSONObject.toJSONString(param));
- if ( StringUtils.isNotBlank(url)) {
- String res = null;
- try {
- Map<String,String> headers = new HashMap<>();
- res = HttpsUtil.postJson(qyUtil.qiweiUrl+url,param);
- T result = JSONObject.parseObject(res, typeReference.getType());
-// logResult(result,name);
- return result;
- }catch (Exception e){
- e.printStackTrace();
- log.error("銆�"+name+"銆�================澶辫触===="+ JSONObject.toJSONString(param));
- }
- }
- return null;
- }
- private static void logResult(QywxBaseResponse res,String name) {
- if( res.getErrcode() !=null && res.getErrcode().equals(0)){
- log.info("銆愪紒涓氬井淇℃帴鍙o細"+name+"銆�================鎴愬姛====\n"+ JSONObject.toJSONString(res));
- }else{
- log.error("銆愪紒涓氬井淇℃帴鍙o細"+name+"銆�================澶辫触====锛歕n"+ JSONObject.toJSONString(res));
- }
- }
-}
-
-
-
-
-
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/request/QywxBaseRequest.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/request/QywxBaseRequest.java
deleted file mode 100644
index a689d33..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/request/QywxBaseRequest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.request;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("wms璇锋眰鍏叡鍙傛暟")
-public class QywxBaseRequest<T> {
-
- @ApiModelProperty(value = "data" )
- private List<T> data;
- private List<Integer> jobIdList;
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/request/QywxSendMsgRequest.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/request/QywxSendMsgRequest.java
deleted file mode 100644
index 05e9597..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/request/QywxSendMsgRequest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.request;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊鏂囦欢鍗$墖娑堟伅璇锋眰鍙傛暟")
-public class QywxSendMsgRequest {
- @ApiModelProperty(value = "鎴愬憳ID鍒楄〃锛堟秷鎭帴鏀惰�咃紝澶氫釜鎺ユ敹鑰呯敤鈥榺鈥欏垎闅旓紝鏈�澶氭敮鎸�1000涓級銆傜壒娈婃儏鍐碉細鎸囧畾涓篅all锛屽垯鍚戝叧娉ㄨ浼佷笟搴旂敤鐨勫叏閮ㄦ垚鍛樺彂閫�")
- private String touser;//
- @ApiModelProperty(value = "閮ㄩ棬ID鍒楄〃锛屽涓帴鏀惰�呯敤鈥榺鈥欏垎闅旓紝鏈�澶氭敮鎸�100涓�傚綋touser涓篅all鏃跺拷鐣ユ湰鍙傛暟 ")
- private String toparty;//
- @ApiModelProperty(value = "鏍囩ID鍒楄〃锛屽涓帴鏀惰�呯敤鈥榺鈥欏垎闅旓紝鏈�澶氭敮鎸�100涓�傚綋touser涓篅all鏃跺拷鐣ユ湰鍙傛暟")
- private String totag;//
- @ApiModelProperty(value = "娑堟伅绫诲瀷锛屾鏃跺浐瀹氫负锛歵extcard")
- private String msgtype;//
- @ApiModelProperty(value = "浼佷笟搴旂敤鐨刬d锛屾暣鍨嬨�備紒涓氬唴閮ㄥ紑鍙戯紝鍙湪搴旂敤鐨勮缃〉闈㈡煡鐪嬶紱绗笁鏂规湇鍔″晢锛屽彲閫氳繃鎺ュ彛 鑾峰彇浼佷笟鎺堟潈淇℃伅 鑾峰彇璇ュ弬鏁板��")
- private String agentid;//
- @ApiModelProperty(value = "鏂囨湰鍗$墖娑堟伅瀵硅薄")
- private QywxTextCardMsgRequest textcard;//
- @ApiModelProperty(value = "琛ㄧず鏄惁寮�鍚痠d杞瘧锛�0琛ㄧず鍚︼紝1琛ㄧず鏄紝榛樿0")
- private String enable_id_trans;//
- @ApiModelProperty(value = "琛ㄧず鏄惁寮�鍚噸澶嶆秷鎭鏌ワ紝0琛ㄧず鍚︼紝1琛ㄧず鏄紝榛樿0")
- private String enable_duplicate_check;//
- @ApiModelProperty(value = "琛ㄧず鏄惁閲嶅娑堟伅妫�鏌ョ殑鏃堕棿闂撮殧锛岄粯璁�1800s锛屾渶澶т笉瓒呰繃4灏忔椂")
- private String duplicate_check_interval;//
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/request/QywxTextCardMsgRequest.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/request/QywxTextCardMsgRequest.java
deleted file mode 100644
index 8171fd9..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/request/QywxTextCardMsgRequest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.request;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊鏂囦欢鍗$墖娑堟伅璇锋眰鍙傛暟")
-public class QywxTextCardMsgRequest {
- @ApiModelProperty(value = "鏍囬锛屼笉瓒呰繃128涓瓧绗︼紝瓒呰繃浼氳嚜鍔ㄦ埅鏂紙鏀寔id杞瘧锛�")
- private String title;//
- @ApiModelProperty(value = "鎻忚堪锛屼笉瓒呰繃512涓瓧绗︼紝瓒呰繃浼氳嚜鍔ㄦ埅鏂紙鏀寔id杞瘧锛�")
- private String description;//
- @ApiModelProperty(value = "鐐瑰嚮鍚庤烦杞殑閾炬帴銆傛渶闀�2048瀛楄妭锛岃纭繚鍖呭惈浜嗗崗璁ご(http/https)")
- private String url;//
- @ApiModelProperty(value = "鎸夐挳鏂囧瓧銆� 榛樿涓衡�滆鎯呪�濓紝 涓嶈秴杩�4涓枃瀛楋紝瓒呰繃鑷姩鎴柇銆�")
- private String btntxt;//
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseResponse.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseResponse.java
deleted file mode 100644
index f0e02e8..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseResponse.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.response;
-
-import com.alibaba.fastjson.annotation.JSONField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊鎺ュ彛澶勭悊杩斿洖鍙傛暟")
-public class QywxBaseResponse<T> {
- public static final String CODE_SUCCESS = "1";
- @ApiModelProperty(value = "杩斿洖鍙傛暟" )
- @JSONField(name="records",alternateNames = {"department","userlist","userid"})
- private T data;
- @ApiModelProperty(value = "鍑洪敊杩斿洖鐮侊紝涓�0琛ㄧず鎴愬姛锛岄潪0琛ㄧず璋冪敤澶辫触")
- private Integer errcode;
-
- @ApiModelProperty(value = "杩斿洖鐮佹彁绀鸿")
- private String errmsg;
- @ApiModelProperty(value = "鑾峰彇鍒扮殑鍑瘉锛屾渶闀夸负512瀛楄妭")
- private String access_token;
- @ApiModelProperty(value = "鑾峰彇鍒扮殑鍑瘉锛屾渶闀夸负512瀛楄妭")
- private String ticket;
-
- @ApiModelProperty(value = "鍑瘉鐨勬湁鏁堟椂闂�")
- private Long expires_in;
-
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseSingleResponse.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseSingleResponse.java
deleted file mode 100644
index 1b71cd7..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxBaseSingleResponse.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.response;
-
-import com.alibaba.fastjson.annotation.JSONField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊鎺ュ彛澶勭悊杩斿洖鍙傛暟(鐙珛绫诲瀷锛�")
-public class QywxBaseSingleResponse {
- @ApiModelProperty(value = "鍑洪敊杩斿洖鐮侊紝涓�0琛ㄧず鎴愬姛锛岄潪0琛ㄧず璋冪敤澶辫触")
- private Integer errcode;
-
- @ApiModelProperty(value = "杩斿洖鐮佹彁绀鸿")
- private String errmsg;
-
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxDepartInfoResponse.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxDepartInfoResponse.java
deleted file mode 100644
index 345c235..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxDepartInfoResponse.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.response;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊閮ㄩ棬鍒楄〃杩斿洖鍙傛暟")
-public class QywxDepartInfoResponse {
- @ApiModelProperty(value = "鍒涘缓鐨勯儴闂╥d")
- private String id;
- @ApiModelProperty(value = "閮ㄩ棬鍚嶇О锛屼唬寮�鍙戣嚜寤哄簲鐢ㄩ渶瑕佺鐞嗗憳鎺堟潈鎵嶈繑鍥烇紱姝ゅ瓧娈典粠2019骞�12鏈�30鏃ヨ捣锛屽鏂板垱寤虹涓夋柟搴旂敤涓嶅啀杩斿洖锛�2020骞�6鏈�30鏃ヨ捣锛屽鎵�鏈夊巻鍙茬涓夋柟搴旂敤涓嶅啀杩斿洖name锛岃繑鍥炵殑name瀛楁浣跨敤id浠f浛锛屽悗缁涓夋柟浠呴�氳褰曞簲鐢ㄥ彲鑾峰彇锛屾湭杩斿洖鍚嶇О鐨勬儏鍐甸渶瑕侀�氳繃閫氳褰曞睍绀虹粍浠舵潵灞曠ず閮ㄩ棬鍚嶇О")
- private String name;
- @ApiModelProperty(value = "鑻辨枃鍚嶇О锛屾瀛楁浠�2019骞�12鏈�30鏃ヨ捣锛屽鏂板垱寤虹涓夋柟搴旂敤涓嶅啀杩斿洖锛�2020骞�6鏈�30鏃ヨ捣锛屽鎵�鏈夊巻鍙茬涓夋柟搴旂敤涓嶅啀杩斿洖璇ュ瓧娈�")
- private String name_en;
- @ApiModelProperty(value = "閮ㄩ棬璐熻矗浜虹殑UserID锛涚涓夋柟浠呴�氳褰曞簲鐢ㄥ彲鑾峰彇")
- private List<String> department_leader;
- @ApiModelProperty(value = "鐖堕儴闂╥d銆傛牴閮ㄩ棬涓�1")
- private String parentid;
- @ApiModelProperty(value = "鍦ㄧ埗閮ㄩ棬涓殑娆″簭鍊笺�俹rder鍊煎ぇ鐨勬帓搴忛潬鍓嶃�傚�艰寖鍥存槸[0, 2^32)")
- private String order;
-
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxSendMsgResponse.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxSendMsgResponse.java
deleted file mode 100644
index ac450fe..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxSendMsgResponse.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.response;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊鐢ㄦ埛璇︽儏杩斿洖鍙傛暟")
-public class QywxSendMsgResponse extends QywxBaseSingleResponse {
- @ApiModelProperty(value = "涓嶅悎娉曠殑userid锛屼笉鍖哄垎澶у皬鍐欙紝缁熶竴杞负灏忓啓")
- private String invaliduser;
- @ApiModelProperty(value = "涓嶅悎娉曠殑partyid")
- private String invalidparty;
- @ApiModelProperty(value = "涓嶅悎娉曠殑鏍囩id")
- private String invalidtag;
- @ApiModelProperty(value = "娌℃湁鍩虹鎺ュ彛璁稿彲")
- private String unlicenseduser;
- @ApiModelProperty(value = "娑堟伅id锛岀敤浜庢挙鍥炲簲鐢ㄦ秷鎭�")
- private String msgid;
- @ApiModelProperty(value = "浠呮秷鎭被鍨嬩负鈥滄寜閽氦浜掑瀷鈥濓紝鈥滄姇绁ㄩ�夋嫨鍨嬧�濆拰鈥滃椤归�夋嫨鍨嬧�濈殑妯℃澘鍗$墖娑堟伅杩斿洖锛屽簲鐢ㄥ彲浣跨敤response_code璋冪敤鏇存柊妯$増鍗$墖娑堟伅鎺ュ彛锛�72灏忔椂鍐呮湁鏁堬紝涓斿彧鑳戒娇鐢ㄤ竴娆�")
- private String response_code;
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUploadMediaResponse.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUploadMediaResponse.java
deleted file mode 100644
index 42d01fb..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUploadMediaResponse.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.response;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊涓婁紶绱犳潗杩斿洖鍙傛暟")
-public class QywxUploadMediaResponse extends QywxBaseSingleResponse {
- @ApiModelProperty(value = "濯掍綋鏂囦欢绫诲瀷锛屽垎鍒湁鍥剧墖锛坕mage锛夈�佽闊筹紙voice锛夈�佽棰戯紙video锛夛紝鏅�氭枃浠�(file)")
- private String type;//
- @ApiModelProperty(value = "濯掍綋鏂囦欢涓婁紶鍚庤幏鍙栫殑鍞竴鏍囪瘑锛�3澶╁唴鏈夋晥")
- private String media_id ;//
- @ApiModelProperty(value = "濯掍綋鏂囦欢涓婁紶鏃堕棿鎴�")
- private String created_at;//
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserAttrInfoResponse.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserAttrInfoResponse.java
deleted file mode 100644
index eb88955..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserAttrInfoResponse.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.response;
-
-import com.alibaba.fastjson.JSONObject;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊鐢ㄦ埛鎵╁睍瀛楁杩斿洖鍙傛暟")
-public class QywxUserAttrInfoResponse {
- @ApiModelProperty(value = "鎴愬憳UserID銆傚搴旂鐞嗙鐨勮处鍙�")
- private String type;//: 0,
- @ApiModelProperty(value = "鏂囨湰鍚嶇О")
- private String name;//: 0,
- @ApiModelProperty(value = "鏂囨湰鍊�")
- private String value;//: 0,
- @ApiModelProperty(value = "鏂囨湰")
- private QywxUserAttrValResponse text;
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserAttrValResponse.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserAttrValResponse.java
deleted file mode 100644
index 666465d..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserAttrValResponse.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.response;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊鐢ㄦ埛鎵╁睍瀛楁value杩斿洖鍙傛暟")
-public class QywxUserAttrValResponse {
- @ApiModelProperty(value = "value")
- private String value;//: 0,
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserExtAttrResponse.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserExtAttrResponse.java
deleted file mode 100644
index b232926..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserExtAttrResponse.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.response;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊鐢ㄦ埛鎵╁睍瀛楁杩斿洖鍙傛暟")
-public class QywxUserExtAttrResponse {
- @ApiModelProperty(value = "鎵╁睍瀛楁闆嗗悎")
- private List<QywxUserAttrInfoResponse> attrs;
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserInfoResponse.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserInfoResponse.java
deleted file mode 100644
index 45fe549..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserInfoResponse.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.response;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊鐢ㄦ埛璇︽儏杩斿洖鍙傛暟")
-public class QywxUserInfoResponse extends QywxBaseSingleResponse {
- @ApiModelProperty(value = "鎴愬憳UserID銆傚搴旂鐞嗙鐨勮处鍙�")
- private String userid;
- @ApiModelProperty(value = "鎴愬憳鍚嶇О锛屼唬寮�鍙戣嚜寤哄簲鐢ㄩ渶瑕佺鐞嗗憳鎺堟潈鎵嶈繑鍥烇紱姝ゅ瓧娈典粠2019骞�12鏈�30鏃ヨ捣锛屽鏂板垱寤虹涓夋柟搴旂敤涓嶅啀杩斿洖鐪熷疄name锛屼娇鐢╱serid浠f浛name锛�2020骞�6鏈�30鏃ヨ捣锛屽鎵�鏈夊巻鍙茬涓夋柟搴旂敤涓嶅啀杩斿洖鐪熷疄name锛屼娇鐢╱serid浠f浛name锛屽悗缁涓夋柟浠呴�氳褰曞簲鐢ㄥ彲鑾峰彇锛屾湭杩斿洖鍚嶇О鐨勬儏鍐甸渶瑕侀�氳繃閫氳褰曞睍绀虹粍浠舵潵灞曠ず鍚嶅瓧")
- private String name;
- @ApiModelProperty(value = "鎴愬憳鎵�灞為儴闂ㄥ垪琛ㄣ�傚垪琛ㄩ」涓洪儴闂↖D锛�32浣嶆暣鍨�")
- private List<String> department;
- @ApiModelProperty(value = "閮ㄩ棬鍐呯殑鎺掑簭鍊硷紝榛樿涓�0")
- private List<String> order;
- @ApiModelProperty(value = "鍏ㄥ眬鍞竴銆傚浜庡悓涓�涓湇鍔″晢锛屼笉鍚屽簲鐢ㄨ幏鍙栧埌浼佷笟鍐呭悓涓�涓垚鍛樼殑open_userid鏄浉鍚岀殑锛屾渶澶�64涓瓧鑺傘�備粎绗笁鏂瑰簲鐢ㄥ彲鑾峰彇")
- private String open_userid;
- @ApiModelProperty(value = "鎵嬫満鍙风爜")
- private String mobile;
- @ApiModelProperty(value = "鑱屽姟淇℃伅")
- private String position;
- @ApiModelProperty(value = "鎬у埆銆�0琛ㄧず鏈畾涔夛紝1琛ㄧず鐢锋�э紝2琛ㄧず濂虫�с��")
- private Integer gender;
- @ApiModelProperty(value = "婵�娲荤姸鎬�: 1=宸叉縺娲伙紝2=宸茬鐢紝4=鏈縺娲伙紝5=閫�鍑轰紒涓氥��")
- private Integer status;
- @ApiModelProperty(value = "閭")
- private String email;
- @ApiModelProperty(value = "鍛樺伐涓汉浜岀淮鐮侊紝鎵弿鍙坊鍔犱负澶栭儴鑱旂郴浜�(娉ㄦ剰杩斿洖鐨勬槸涓�涓猽rl锛屽彲鍦ㄦ祻瑙堝櫒涓婃墦寮�璇rl浠ュ睍绀轰簩缁寸爜)")
- private String qr_code;
- @ApiModelProperty(value = "浼佷笟閭")
- private String biz_mail;
- @ApiModelProperty(value = "琛ㄧず鍦ㄦ墍鍦ㄧ殑閮ㄩ棬鍐呮槸鍚︿负閮ㄩ棬璐熻矗浜恒��0-鍚︼紱1-鏄�傛槸涓�涓垪琛紝鏁伴噺蹇呴』涓巇epartment涓�鑷淬��")
- private List<String> is_leader_in_dept;
- @ApiModelProperty(value = "鐩村睘涓婄骇UserID")
- private List<String> direct_leader;
- @ApiModelProperty(value = "鍍弖rl")
- private String avatar;
- @ApiModelProperty(value = "澶村儚缂╃暐鍥緐rl")
- private String thumb_avatar;
- @ApiModelProperty(value = "搴ф満")
- private String telephone;
- @ApiModelProperty(value = "鍒悕")
- private String alias;
- @ApiModelProperty(value = "鎵╁睍灞炴��")
- private QywxUserExtAttrResponse extattr;
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserListResponse.java b/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserListResponse.java
deleted file mode 100644
index 34ed301..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/qiyeweixin/model/response/QywxUserListResponse.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.doumee.core.utils.qiyeweixin.model.response;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/11/23 14:03
- */
-@Data
-@ApiModel("浼佷笟寰俊鐢ㄦ埛鍒楄〃杩斿洖鍙傛暟")
-public class QywxUserListResponse {
- @ApiModelProperty(value = "鎴愬憳UserID銆傚搴旂鐞嗙鐨勮处鍙�")
- private String userid;
- @ApiModelProperty(value = "鎴愬憳鍚嶇О锛屼唬寮�鍙戣嚜寤哄簲鐢ㄩ渶瑕佺鐞嗗憳鎺堟潈鎵嶈繑鍥烇紱姝ゅ瓧娈典粠2019骞�12鏈�30鏃ヨ捣锛屽鏂板垱寤虹涓夋柟搴旂敤涓嶅啀杩斿洖鐪熷疄name锛屼娇鐢╱serid浠f浛name锛�2020骞�6鏈�30鏃ヨ捣锛屽鎵�鏈夊巻鍙茬涓夋柟搴旂敤涓嶅啀杩斿洖鐪熷疄name锛屼娇鐢╱serid浠f浛name锛屽悗缁涓夋柟浠呴�氳褰曞簲鐢ㄥ彲鑾峰彇锛屾湭杩斿洖鍚嶇О鐨勬儏鍐甸渶瑕侀�氳繃閫氳褰曞睍绀虹粍浠舵潵灞曠ず鍚嶅瓧")
- private String name;
- @ApiModelProperty(value = "鎴愬憳鎵�灞為儴闂ㄥ垪琛ㄣ�傚垪琛ㄩ」涓洪儴闂↖D锛�32浣嶆暣鍨�")
- private List<String> department;
- @ApiModelProperty(value = "閮ㄩ棬鍐呯殑鎺掑簭鍊硷紝榛樿涓�0")
- private List<String> order;
- @ApiModelProperty(value = "鍏ㄥ眬鍞竴銆傚浜庡悓涓�涓湇鍔″晢锛屼笉鍚屽簲鐢ㄨ幏鍙栧埌浼佷笟鍐呭悓涓�涓垚鍛樼殑open_userid鏄浉鍚岀殑锛屾渶澶�64涓瓧鑺傘�備粎绗笁鏂瑰簲鐢ㄥ彲鑾峰彇")
- private String open_userid;
- @ApiModelProperty(value = "鎵嬫満鍙风爜")
- private String mobile;
- @ApiModelProperty(value = "鑱屽姟淇℃伅")
- private String position;
- @ApiModelProperty(value = "鎬у埆銆�0琛ㄧず鏈畾涔夛紝1琛ㄧず鐢锋�э紝2琛ㄧず濂虫�с��")
- private Integer gender;
- @ApiModelProperty(value = "婵�娲荤姸鎬�: 1=宸叉縺娲伙紝2=宸茬鐢紝4=鏈縺娲伙紝5=閫�鍑轰紒涓氥��")
- private Integer status;
- @ApiModelProperty(value = "閭")
- private String email;
- @ApiModelProperty(value = "鍛樺伐涓汉浜岀淮鐮侊紝鎵弿鍙坊鍔犱负澶栭儴鑱旂郴浜�(娉ㄦ剰杩斿洖鐨勬槸涓�涓猽rl锛屽彲鍦ㄦ祻瑙堝櫒涓婃墦寮�璇rl浠ュ睍绀轰簩缁寸爜)")
- private String qr_code;
- @ApiModelProperty(value = "浼佷笟閭")
- private String biz_mail;
- @ApiModelProperty(value = "琛ㄧず鍦ㄦ墍鍦ㄧ殑閮ㄩ棬鍐呮槸鍚︿负閮ㄩ棬璐熻矗浜恒��0-鍚︼紱1-鏄�傛槸涓�涓垪琛紝鏁伴噺蹇呴』涓巇epartment涓�鑷淬��")
- private List<Integer> is_leader_in_dept;
- @ApiModelProperty(value = "鐩村睘涓婄骇UserID")
- private List<String> direct_leader;
- @ApiModelProperty(value = "鍍弖rl")
- private String avatar;
- @ApiModelProperty(value = "澶村儚缂╃暐鍥緐rl")
- private String thumb_avatar;
- @ApiModelProperty(value = "搴ф満")
- private String telephone;
- @ApiModelProperty(value = "鍒悕")
- private String alias;
- @ApiModelProperty(value = "鎵╁睍灞炴��")
- private QywxUserExtAttrResponse extattr;
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/tyyun/TyyZosUtil.java b/server/services/src/main/java/com/doumee/core/utils/tyyun/TyyZosUtil.java
new file mode 100644
index 0000000..81bff86
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/utils/tyyun/TyyZosUtil.java
@@ -0,0 +1,185 @@
+package com.doumee.core.utils.tyyun;
+
+import com.amazonaws.ClientConfiguration;
+import com.amazonaws.Protocol;
+import com.amazonaws.auth.AWSCredentials;
+import com.amazonaws.auth.AWSStaticCredentialsProvider;
+import com.amazonaws.auth.BasicAWSCredentials;
+import com.amazonaws.client.builder.AwsClientBuilder;
+import com.amazonaws.services.s3.AmazonS3;
+import com.amazonaws.services.s3.AmazonS3ClientBuilder;
+import com.amazonaws.services.s3.model.*;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.*;
+import java.net.URL;
+
+@Slf4j
+public class TyyZosUtil {
+
+ private AmazonS3 client;
+
+ // public static final String ENDPOINT = "oss-cn-shanghai.aliyuncs.com";
+
+ public TyyZosUtil(String END_POINT, String ACCESS_KEY, String SECRET_KEY) {
+ try {
+ AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY,SECRET_KEY);
+ ClientConfiguration awsClientConfig = new ClientConfiguration();
+ awsClientConfig.setSignerOverride("AWSS3V4SignerType");
+ awsClientConfig.setProtocol(Protocol.HTTP);
+
+ client = AmazonS3ClientBuilder.standard()
+ .withCredentials(new
+ AWSStaticCredentialsProvider(credentials))
+ .withClientConfiguration(awsClientConfig)
+ .withEndpointConfiguration(new
+ AwsClientBuilder.EndpointConfiguration(END_POINT, ""))
+ .disableChunkedEncoding()
+ .enablePathStyleAccess()
+ .build();
+ }catch (Exception e){
+ log.error("瀵硅薄瀛樺偍====================杩炴帴澶╃考浜慫OS澶辫触"+e.getMessage());
+ }
+ }
+
+ /**
+ * 涓婁紶鏂囦欢
+ *
+ * @param bucketName 浜戠瀛樻斁bucket鍚嶇О
+ * @param key 閲嶆柊鍛藉悕鐨勬枃浠跺悕
+ * @param filepath 灏嗚涓婁紶鐨勬枃浠跺悕绉�
+ * @throws FileNotFoundException
+ */
+
+ public void uploadObject(String bucketName, String key, String filepath,
+ String mime){
+ try {
+ File file= new File(filepath);
+ PutObjectRequest request = new PutObjectRequest(bucketName, key, file);
+ PutObjectResult result = client.putObject(request);
+ }catch (Exception e){
+ log.error("瀵硅薄瀛樺偍===================="+filepath+"鏂囦欢涓婁紶澶辫触"+e.getMessage());
+ }finally {
+ shutDown();
+ }
+ }
+
+ /**
+ * 璁瞜ey鏂囦欢瀛樺偍鍦ㄦ湰鍦癴ilename鐩爣鏂囦欢涓�
+ * @param bucketName
+ * @param key
+ * @param filename
+ */
+ public void getObject(String bucketName, String key, String filename ){
+ try {
+ GetObjectRequest request = new GetObjectRequest(bucketName, key);
+ S3Object result = client.getObject(request);
+ System.out.print("=====request success=====\n");
+ try {
+ InputStream in = result.getObjectContent();
+ File outputFile = new File(filename);
+ FileOutputStream outputStream = new
+ FileOutputStream(outputFile);
+ byte[] read_buf = new byte[1024 * 1024];
+ int read_len = 0;
+ while ((read_len = in.read(read_buf)) > 0) {
+ outputStream.write(read_buf, 0, read_len);
+ }
+ in.close();
+ outputStream.close();
+ } catch (IOException e){
+ e.printStackTrace();
+ }
+ }catch (Exception e){
+ log.error("瀵硅薄瀛樺偍===================="+filename+"鏂囦欢璇诲彇澶辫触"+e.getMessage());
+ }finally {
+ shutDown();
+ }
+ }
+ public void deleteObject(String bucketName, String key ){
+ try {
+ DeleteObjectRequest request = new DeleteObjectRequest(bucketName, key);
+ client.deleteObject(request);
+ System.out.print("=====request deleteObject success=====");
+ }catch (Exception e){
+ log.error("瀵硅薄瀛樺偍===================="+key+"鏂囦欢鍒犻櫎澶辫触"+e.getMessage());
+ }finally {
+ shutDown();
+ }
+ }
+
+
+ /**
+ * 鍏抽棴
+ *
+ * @throws FileNotFoundException
+ */
+
+ public void shutDown() {
+ if (client != null) {
+ // 鍏抽棴client
+ client.shutdown();
+ }
+ }
+
+ public static void main(String[] args) {
+ TyyZosUtil aLiYunUtil = new TyyZosUtil("", "uc4nnpsqep1i9fijqr37nokh",
+ "/rp41xCx/XdGEVCptdH6v7xpc9w=");
+ // aLiYunUtil.uploadObject("pongto", "work/li2.txt", "D://鍝�.txt",
+ // ".html,.html text/html");D://瑁呮満杞欢/鍔炲叕瀛︿範
+ // aLiYunUtil.partUploadObject("pongto", "work/ps.exe",
+ // "D://瑁呮満杞欢/鍔炲叕瀛︿範/Adobe_Illustrator_CS6_XiaZaiBa.exe",
+ // ".html,.html text/html");
+ // aLiYunUtil.deleteBucket("pongto");
+ }
+
+ /**
+ * 涓婁紶缃戠粶鏂囦欢
+ *
+ * @param bucketName 浜戠瀛樻斁bucket鍚嶇О
+ * @param key 閲嶆柊鍛藉悕鐨勬枃浠跺悕
+ * 灏嗚涓婁紶鐨勬枃浠跺悕绉�
+ * @throws IOException
+ */
+
+ public boolean uploadOnlineObject(String url, String bucketName, String key ) {
+ try {
+
+ InputStream inputStream = new URL(url).openStream();
+ if (inputStream != null) {
+ ObjectMetadata metadata = new ObjectMetadata();
+ PutObjectRequest request = new PutObjectRequest(bucketName, key, inputStream,metadata);
+ PutObjectResult result = client.putObject(request);
+ }else {
+ log.error("瀵硅薄瀛樺偍===================="+url+"缃戠粶鏂囦欢涓婁紶澶辫触锛岀綉缁滄枃浠惰鍙栧け璐�");
+ }
+ }catch (Exception e){
+ log.error("瀵硅薄瀛樺偍===================="+url+"缃戠粶鏂囦欢涓婁紶澶辫触"+e.getMessage());
+ }finally {
+ shutDown();
+ }
+ return false;
+
+ }
+ public boolean uploadInputstreamObject(InputStream inputStream, String bucketName, String key ) {
+ try {
+
+ if (inputStream != null) {
+ ObjectMetadata metadata = new ObjectMetadata();
+ metadata.setContentLength(inputStream.available());
+
+ PutObjectRequest request = new PutObjectRequest(bucketName, key, inputStream,metadata);
+ request.setCannedAcl(CannedAccessControlList.PublicRead);
+ PutObjectResult result = client.putObject(request);
+ return true;
+ }
+ }catch (Exception e){
+ log.error("瀵硅薄瀛樺偍==================== 鏂囦欢涓婁紶澶辫触"+e.getMessage());
+ }finally {
+ shutDown();
+ }
+ return false;
+
+ }
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/InterfaceLogMapper.java b/server/services/src/main/java/com/doumee/dao/business/InterfaceLogMapper.java
new file mode 100644
index 0000000..5626f4b
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/InterfaceLogMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.InterfaceLog;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+public interface InterfaceLogMapper extends BaseMapper<InterfaceLog> {
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/dto/CasesImport.java b/server/services/src/main/java/com/doumee/dao/business/dto/CasesImport.java
new file mode 100644
index 0000000..9589699
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/dto/CasesImport.java
@@ -0,0 +1,36 @@
+package com.doumee.dao.business.dto;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 鍛樺伐淇℃伅瀵煎叆琛�
+ * @author 姹熻箘韫�
+ * @date 2024/01/16 10:03
+ */
+@Data
+@ApiModel("鍛樺伐淇℃伅瀵煎叆")
+public class CasesImport {
+
+// @ExcelColumn(name="搴忓彿",value = "sn")
+ private Integer sn;
+
+ @ExcelColumn(name="濮撳悕",value = "name",index = 1)
+ private String name;
+ @ExcelColumn(name="鎵嬫満鍙�",value = "phone",index = 2)
+ private String phone;
+
+ @ExcelColumn(name="韬唤璇佸彿",value = "idcardNo",index = 3)
+ private String idcardNo;
+
+ @ExcelColumn(name="缁勭粐鍚嶇О" , value = "companyName" ,index = 4)
+ private String companyName;
+
+ @ExcelColumn(name="宸ュ彿" , value = "code")
+ private String code;
+
+ @ExcelColumn(name="宀椾綅" , value = "code")
+ private String positionName;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/dto/LoginRequestNewParam.java b/server/services/src/main/java/com/doumee/dao/business/dto/LoginRequestNewParam.java
new file mode 100644
index 0000000..e2c5e1a
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/dto/LoginRequestNewParam.java
@@ -0,0 +1,17 @@
+package com.doumee.dao.business.dto;
+
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LoginRequestNewParam {
+ private String appid;// 1 O 鎵嬫満鍙风爜
+ private String user_name;// 1 M 鐢ㄦ埛鍚岻d
+ private String rediUrl;// 1 M 鐧诲綍璐︽埛锛�
+ private String account_no ;//String 璐﹀彿
+ private String scode;//String 鐢ㄦ埛瀵瑰簲鍔犵洘鍟哠code
+ private List<RoleRequestParam> roles;// 1 M 鐧诲綍瀵嗙爜
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/dto/MemberImport.java b/server/services/src/main/java/com/doumee/dao/business/dto/MemberImport.java
new file mode 100644
index 0000000..6b1e4e2
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/dto/MemberImport.java
@@ -0,0 +1,42 @@
+package com.doumee.dao.business.dto;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 鍛樺伐淇℃伅瀵煎叆琛�
+ * @author 姹熻箘韫�
+ * @date 2024/01/16 10:03
+ */
+@Data
+@ApiModel("鍛樺伐淇℃伅瀵煎叆")
+public class MemberImport {
+ @ExcelColumn(name="宸ュ彿",value = "code",index = 1)
+ private String code;
+ @ExcelColumn(name="濮撳悕",value = "name",index = 2)
+ private String name;
+ @ExcelColumn(name="鑱屼笟鐓�",value = "imgurl",index = 3)
+ private String imgurl;
+ @ExcelColumn(name="绛夌骇",value = "levelName",index = 4)
+ private String levelName;
+ @ExcelColumn(name="鎬у埆" , value = "sex" ,index = 5)
+ private String sex;
+ @ExcelColumn(name="宀椾綅" , value = "position",index = 6)
+ private String position;
+ @ExcelColumn(name="浠庝笟骞翠唤(骞�)" , value = "jobYear",index = 7)
+ private String jobYear;
+ @ExcelColumn(name="鏈嶅姟鎴樺尯", value = "zqNames",index = 8)
+ private String zqNames;
+ @ExcelColumn(name="鍟嗕笟鍖栫被鍨�", value = "typeNames",index = 9)
+ private String typeNames;
+ @ExcelColumn(name="鎿呴暱棰嗗煙", value = "fieldNames",index = 10)
+ private String fieldNames;
+ @ExcelColumn(name="鏈嶅姟鍟嗗満鏁�(涓�)", value = "serveNum",index = 11)
+ private String serveNum;
+ @ExcelColumn(name="璐圭敤鏍囧噯(鍏�/鍛�)", value = "fee",index = 12)
+ private String fee;
+ @ExcelColumn(name="鑰佸笀绠�浠�", value = "fee",index = 13)
+ private String info;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/dto/RoleRequestParam.java b/server/services/src/main/java/com/doumee/dao/business/dto/RoleRequestParam.java
new file mode 100644
index 0000000..cbd021e
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/dto/RoleRequestParam.java
@@ -0,0 +1,11 @@
+package com.doumee.dao.business.dto;
+
+import lombok.Data;
+
+@Data
+public class RoleRequestParam {
+ private String code;//瑙掕壊缂栫爜
+ private String name;// 瑙掕壊鍚嶇О
+ private String id;//缂栫爜锛�
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Category.java b/server/services/src/main/java/com/doumee/dao/business/model/Category.java
index 06048b0..9868a8d 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Category.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Category.java
@@ -1,16 +1,15 @@
package com.doumee.dao.business.model;
-import com.alibaba.fastjson.JSONArray;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.doumee.core.annotation.excel.ExcelColumn;
-import com.doumee.core.model.LoginUserInfo;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
+import com.doumee.core.annotation.excel.ExcelColumn;
import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
import java.util.Date;
import java.util.List;
@@ -63,8 +62,8 @@
@ExcelColumn(name="鍗曚綅鍚嶇О")
private String name;
- @ApiModelProperty(value = "绫诲瀷:0=鍝佺閰嶇疆锛�1=杞﹁締绫诲瀷閰嶇疆锛�2=椁愭爣閰嶇疆锛�3=鎵嬬画璐归厤缃紱", example = "1")
- @ExcelColumn(name="绫诲瀷:0=鍝佺閰嶇疆锛�1=杞﹁締绫诲瀷閰嶇疆锛�2=椁愭爣閰嶇疆锛�3=鎵嬬画璐归厤缃紱")
+ @ApiModelProperty(value = "绫诲瀷:0=鎴樺尯;1=鍟嗕笟鍖�;2=鎿呴暱棰嗗煙;3=璁插笀绛夌骇;", example = "1")
+ @ExcelColumn(name="绫诲瀷:0=鎴樺尯;1=鍟嗕笟鍖�;2=鎿呴暱棰嗗煙;3=璁插笀绛夌骇;")
private Integer type;
@ApiModelProperty(value = "鍐呭锛堣溅杈嗚鏍笺�侀鏍囥�佹墜缁垂姣斾緥锛�")
@@ -78,15 +77,15 @@
@ExcelColumn(name="鎺掑簭鐮侊紙鍗囧簭锛�")
private Integer sortnum;
- @ApiModelProperty(value = "鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱", example = "1")
- @ExcelColumn(name="鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱")
+ @ApiModelProperty(value = "鏄惁鍥哄畾锛�:0=鍚︼紱1=鏄紱", example = "1")
+ @ExcelColumn(name="鏄惁鍥哄畾 :0=鍚︼紱1=鏄紱")
private Integer isFixed;
- @ApiModelProperty(value = "鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱", example = "1")
+ @ApiModelProperty(value = "鏈�鍚庢搷浣滀汉鍛橈紱", example = "1")
@TableField(exist = false)
private String updateUserName;
- @ApiModelProperty(value = "椁愭爣绛夐厤缃」闆嗗悎", example = "1")
+ @ApiModelProperty(value = "鍟嗕笟鍖栧浘闆嗛檮浠堕泦鍚�", example = "1")
@TableField(exist = false)
- private JSONArray detailList;
+ private List<Multifile> fileList;
@ApiModelProperty(value = "鍥炬爣鍏ㄨ矾寰�")
@TableField(exist = false)
private String iconFull;
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java b/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java
index ec27b08..c301749 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.dao.business.dto.CasesImport;
+import com.doumee.dao.business.dto.MemberImport;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -9,8 +11,12 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.poi.ss.usermodel.PictureData;
+
import java.util.Date;
import java.math.BigDecimal;
+import java.util.List;
+
/**
* 鍒嗙被淇℃伅琛∕odel瀹氫箟
* @author doumee
@@ -76,4 +82,12 @@
@ApiModelProperty("瀵煎叆澶辫触璁板綍鏁�")
@ExcelColumn(name="瀵煎叆澶辫触璁板綍鏁�",index=18 ,width=10)
private Integer errorNum;
+ @TableField(exist = false)
+ private List<CasesImport> caseList;
+ @TableField(exist = false)
+ private List<MemberImport> memberList;
+ @TableField(exist = false)
+ private List<PictureData> pictureDataList;
+
+
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/InterfaceLog.java b/server/services/src/main/java/com/doumee/dao/business/model/InterfaceLog.java
new file mode 100644
index 0000000..e2914ac
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/model/InterfaceLog.java
@@ -0,0 +1,98 @@
+package com.doumee.dao.business.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 涓夋柟骞冲彴鎺ュ彛浜や簰璁板綍
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Data
+@ApiModel("涓夋柟骞冲彴鎺ュ彛浜や簰璁板綍")
+@TableName("`interface_log`")
+public class InterfaceLog{
+
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(value = "涓婚敭", example = "1")
+ @ExcelColumn(name="涓婚敭")
+ private Integer id;
+
+ @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+ @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+ private Integer creator;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @ExcelColumn(name="鍒涘缓鏃堕棿")
+ private Date createDate;
+
+ @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+ @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+ private Integer editor;
+
+ @ApiModelProperty(value = "鏇存柊鏃堕棿")
+ @ExcelColumn(name="鏇存柊鏃堕棿")
+ private Date editDate;
+
+ @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+ @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+ private Integer isdeleted;
+
+ @ApiModelProperty(value = "澶囨敞")
+ @ExcelColumn(name="澶囨敞")
+ private String remark;
+
+ @ApiModelProperty(value = "绫诲瀷 0璋冪敤 1鎺ㄩ�佹帴鍙�", example = "1")
+ @ExcelColumn(name="绫诲瀷 0璋冪敤 1鎺ㄩ�佹帴鍙�")
+ private Integer type;
+
+ @ApiModelProperty(value = "鎺ュ彛鍚嶇О")
+ @ExcelColumn(name="鎺ュ彛鍚嶇О")
+ private String name;
+
+ @ApiModelProperty(value = "鍦板潃淇℃伅")
+ @ExcelColumn(name="鍦板潃淇℃伅")
+ private String url;
+
+ @ApiModelProperty(value = "璇锋眰鍙傛暟")
+ @ExcelColumn(name="璇锋眰鍙傛暟")
+ private String request;
+
+ @ApiModelProperty(value = "鍝嶅簲鍙傛暟")
+ @ExcelColumn(name="鍝嶅簲鍙傛暟")
+ private String repose;
+
+ @ApiModelProperty(value = "璋冪敤缁撴灉 0鎴愬姛 1澶辫触", example = "1")
+ @ExcelColumn(name="璋冪敤缁撴灉 0鎴愬姛 1澶辫触")
+ private Integer success;
+
+ @ApiModelProperty(value = "骞冲彴 0娴峰悍瀹夐槻骞冲彴 1ERP绯荤粺", example = "1")
+ @ExcelColumn(name="骞冲彴 0娴峰悍瀹夐槻骞冲彴 1ERP绯荤粺")
+ private Integer plat;
+
+ @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0缁勭粐 1浜哄憳 2闂ㄧ浜嬩欢 3璁惧", example = "1")
+ @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷 0缁勭粐 1浜哄憳 2闂ㄧ浜嬩欢 3璁惧")
+ private Integer objType;
+
+ @ApiModelProperty(value = "鍏宠仈瀵硅薄缂栫爜锛堝涓敤鑻辨枃閫楀彿闅斿紑锛�")
+ @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜锛堝涓敤鑻辨枃閫楀彿闅斿紑锛�")
+ private String objId;
+
+
+ @ApiModelProperty(value = "寮�濮嬫椂闂�")
+ @TableField(exist = false)
+ private Date startDate;
+
+ @ApiModelProperty(value = "缁撴潫鏃堕棿")
+ @TableField(exist = false)
+ private Date endDate;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Member.java b/server/services/src/main/java/com/doumee/dao/business/model/Member.java
index cdc5bed..405d4ab 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Member.java
@@ -11,6 +11,8 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.math.BigDecimal;
+import java.util.List;
+
/**
* 浼氬憳淇℃伅琛∕odel瀹氫箟
* @author doumee
@@ -70,6 +72,10 @@
@ApiModelProperty("鍟嗕笟鍖栫被鍨嬬紪鐮侀泦鍚堬紙[1],[2],...]锛�")
@ExcelColumn(name="鍟嗕笟鍖栫被鍨嬬紪鐮侀泦鍚堬紙[1],[2],...]锛�",index=16 ,width=10)
private String bustypeIds;
+ @ApiModelProperty("鎿呴暱棰嗗煙闆嗗悎锛圼1],[2],...]锛�")
+ private String fieldIds;
+ @ApiModelProperty("宸ュ彿")
+ private String code;
@ApiModelProperty("璁插笀绛夌骇缂栫爜锛堝叧鑱攃ategory锛�")
@ExcelColumn(name="璁插笀绛夌骇缂栫爜锛堝叧鑱攃ategory锛�",index=17 ,width=10)
private Integer levelId;
@@ -106,4 +112,46 @@
@ApiModelProperty("瀵煎叆璁板綍缂栫爜锛堝叧鑱攊mport_record)")
@ExcelColumn(name="瀵煎叆璁板綍缂栫爜锛堝叧鑱攊mport_record)",index=28 ,width=10)
private Integer importId;
+
+ @ApiModelProperty("宸ヤ綔骞存暟")
+ @TableField(exist = false)
+ private Integer workYears;
+
+ @ApiModelProperty("鎿呴暱棰嗗煙鍚嶇О")
+ @TableField(exist = false)
+ private String fieldNames;
+
+ @ApiModelProperty("宸ヤ綔宀椾綅鍚嶇О")
+ @TableField(exist = false)
+ private String promotionName;
+
+ @ApiModelProperty("绾у埆鍚嶇О")
+ @TableField(exist = false)
+ private String levelName;
+
+ @ApiModelProperty("鎴樺尯缂栫爜 - 鏌ヨ")
+ @TableField(exist = false)
+ private String queryZQCode;
+
+ @ApiModelProperty("鎺掑簭淇℃伅锛�0=鏀惰垂浠庨珮鍒颁綆锛�1=鏀惰垂浠庝綆鍒伴珮锛�2=绛夌骇浠庨珮鍒颁綆锛�3=绛夌骇浠庝綆鍒伴珮锛�4=鏈嶅姟鏁颁粠楂樺埌浣�")
+ @TableField(exist = false)
+ private Integer orderByType;
+
+ @ApiModelProperty("璇佷欢鐓у叏璺緞")
+ @TableField(exist = false)
+ private String fullImgurl;
+
+ @ApiModelProperty("鏌ヨ鐢ㄦ埛绫诲瀷")
+ @TableField(exist = false)
+ private String queryUserRole;
+
+ @ApiModelProperty("鎿呴暱棰嗗煙")
+ @TableField(exist = false)
+ private List<Category> fieldList;
+
+ @ApiModelProperty("妗堜緥淇℃伅")
+ @TableField(exist = false)
+ private List<Cases> casesList;
+
+
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Multifile.java b/server/services/src/main/java/com/doumee/dao/business/model/Multifile.java
index cb1df32..6985a4c 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Multifile.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Multifile.java
@@ -53,9 +53,7 @@
@ApiModelProperty(value = "绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬", example = "1")
private Integer type;
-// @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0SHE涓婃姤 1璺岀粖婊戜笂鎶� 2璺岀粖婊戝鐞� 3璺岀粖婊戝垎閰嶇墿涓氫富绠� 4璺岀粖婊戝垎閰嶅鐞嗕汉 5DCA椋庨櫓涓婃姤 6DCA椋庨櫓澶勭悊 7DCA宸ュ崟鍥剧墖", example = "1")
-// @ExcelExportColumn(name="鍏宠仈瀵硅薄绫诲瀷 0SHE涓婃姤 1璺岀粖婊戜笂鎶� 2璺岀粖婊戝鐞� 3璺岀粖婊戝垎閰嶇墿涓氫富绠� 4璺岀粖婊戝垎閰嶅鐞嗕汉 5DCA椋庨櫓涓婃姤 6DCA椋庨櫓澶勭悊 7DCA宸ュ崟鍥剧墖")
- @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0韬唤鐢宠璧勬枡 1璁㈠崟闄勪欢", example = "1")
+ @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0鍟嗕笟鍖栫被鍨嬪鍥� 1妗堜緥", example = "1")
private Integer objType;
@ApiModelProperty(value = "鏂囦欢鍦板潃")
@@ -66,7 +64,7 @@
@ApiModelProperty(value = "鏂囦欢鍦板潃")
@TableField(exist = false)
- private String fileurlFull;
+ private String url;
@ApiModelProperty(value = "鍐呯綉鏂囦欢鍦板潃")
diff --git a/server/services/src/main/java/com/doumee/dao/vo/WebLoginUserVO.java b/server/services/src/main/java/com/doumee/dao/vo/WebLoginUserVO.java
new file mode 100644
index 0000000..e9cd3f1
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/vo/WebLoginUserVO.java
@@ -0,0 +1,28 @@
+package com.doumee.dao.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2026/1/28 10:43
+ */
+@Data
+@ApiModel("H5鐢ㄦ埛璇锋眰杩斿洖瀵硅薄绫�")
+public class WebLoginUserVO {
+
+ @ApiModelProperty(value = "鐢ㄦ埛涓婚敭")
+ private String id;
+
+ @ApiModelProperty(value = "鐢ㄦ埛瑙掕壊锛�")
+ private String roleType;
+
+ @ApiModelProperty(value = "鎴樺尯缂栫爜")
+ private String zhanqu;
+
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java b/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java
index 813b65d..cadb3da 100644
--- a/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java
+++ b/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java
@@ -3,6 +3,8 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.ImportRecord;
+import org.springframework.web.multipart.MultipartFile;
+
import java.util.List;
/**
@@ -94,4 +96,7 @@
* @return long
*/
long count(ImportRecord model);
+ ImportRecord importBatch(MultipartFile file, int type );
+
+ void dealImporTask(ImportRecord importRecord);
}
diff --git a/server/services/src/main/java/com/doumee/service/business/InterfaceLogService.java b/server/services/src/main/java/com/doumee/service/business/InterfaceLogService.java
new file mode 100644
index 0000000..8063537
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/service/business/InterfaceLogService.java
@@ -0,0 +1,100 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.InterfaceLog;
+
+import java.util.List;
+
+/**
+ * 涓夋柟骞冲彴鎺ュ彛浜や簰璁板綍Service瀹氫箟
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+public interface InterfaceLogService {
+
+ /**
+ * 鍒涘缓
+ *
+ * @param interfaceLog 瀹炰綋瀵硅薄
+ * @return Integer
+ */
+ Integer create(InterfaceLog interfaceLog);
+
+ /**
+ * 涓婚敭鍒犻櫎
+ *
+ * @param id 涓婚敭
+ */
+ void deleteById(Integer id);
+
+ /**
+ * 鍒犻櫎
+ *
+ * @param interfaceLog 瀹炰綋瀵硅薄
+ */
+ void delete(InterfaceLog interfaceLog);
+
+ /**
+ * 鎵归噺涓婚敭鍒犻櫎
+ *
+ * @param ids 涓婚敭闆�
+ */
+ void deleteByIdInBatch(List<Integer> ids);
+
+ /**
+ * 涓婚敭鏇存柊
+ *
+ * @param interfaceLog 瀹炰綋瀵硅薄
+ */
+ void updateById(InterfaceLog interfaceLog);
+
+ /**
+ * 鎵归噺涓婚敭鏇存柊
+ *
+ * @param interfaceLogs 瀹炰綋闆�
+ */
+ void updateByIdInBatch(List<InterfaceLog> interfaceLogs);
+
+ /**
+ * 涓婚敭鏌ヨ
+ *
+ * @param id 涓婚敭
+ * @return InterfaceLog
+ */
+ InterfaceLog findById(Integer id);
+
+ /**
+ * 鏉′欢鏌ヨ鍗曟潯璁板綍
+ *
+ * @param interfaceLog 瀹炰綋瀵硅薄
+ * @return InterfaceLog
+ */
+ InterfaceLog findOne(InterfaceLog interfaceLog);
+ void saveInterfaceLog(String url,String name,String param,Integer success,String respone,int type);
+ /**
+ * 鏉′欢鏌ヨ
+ *
+ * @param interfaceLog 瀹炰綋瀵硅薄
+ * @return List<InterfaceLog>
+ */
+ List<InterfaceLog> findList(InterfaceLog interfaceLog);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param pageWrap 鍒嗛〉瀵硅薄
+ * @return PageData<InterfaceLog>
+ */
+ PageData<InterfaceLog> findPage(PageWrap<InterfaceLog> pageWrap);
+
+ /**
+ * 鏉′欢缁熻
+ *
+ * @param interfaceLog 瀹炰綋瀵硅薄
+ * @return long
+ */
+ long count(InterfaceLog interfaceLog);
+
+ void clearThreeMonthLog();
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/MemberService.java b/server/services/src/main/java/com/doumee/service/business/MemberService.java
index f955039..bc604e3 100644
--- a/server/services/src/main/java/com/doumee/service/business/MemberService.java
+++ b/server/services/src/main/java/com/doumee/service/business/MemberService.java
@@ -3,6 +3,8 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Member;
+import org.springframework.web.multipart.MultipartFile;
+
import java.util.List;
/**
@@ -94,4 +96,7 @@
* @return long
*/
long count(Member model);
+
+ Member findDetailById(Integer id,String queryUserRole);
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
index 56d9001..0ce16ed 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -11,7 +11,9 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.CategoryMapper;
+import com.doumee.dao.business.MultifileMapper;
import com.doumee.dao.business.model.Category;
+import com.doumee.dao.business.model.Multifile;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.CategoryService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -28,6 +30,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -42,6 +45,8 @@
@Autowired
private CategoryMapper categoryMapper;
+ @Autowired
+ private MultifileMapper multifileMapper;
@Autowired
private SystemDictDataBiz systemDictDataBiz;
@@ -49,12 +54,11 @@
@Override
@Transactional(rollbackFor = {Exception.class,BusinessException.class})
public Integer create(Category category) {
+// 绫诲瀷:0=鎴樺尯;1=鍟嗕笟鍖�;2=鎿呴暱棰嗗煙;3=璁插笀绛夌骇;
if(Objects.isNull(category)
|| Objects.isNull(category.getType())
|| Objects.isNull(category.getName())
- || (!Constants.equalsInteger(category.getType(),Constants.ZERO)&& CollectionUtils.isEmpty(category.getDetailList()))
- || (Constants.equalsInteger(category.getType(),Constants.ONE) && (Objects.isNull(category.getIcon())||Objects.isNull(category.getIsFixed())) )
- ){
+ || (Constants.equalsInteger(category.getType(),Constants.ZERO)&& StringUtils.isBlank(category.getDetail())) ){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
@@ -63,22 +67,40 @@
category.setCreateUser(loginUserInfo.getId());
category.setUpdateTime(new Date());
category.setUpdateUser(loginUserInfo.getId());
- if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(category.getDetailList())
- && !Constants.equalsInteger(category.getType(),Constants.THREE)){
- category.setDetail(category.getDetailList().toJSONString());
- }
- if(!Constants.equalsInteger(category.getType(),Constants.ONE)){
- category.setIsFixed(Constants.ZERO);
- }
categoryMapper.insert(category);
+ dealBatchMultiFiles(category, category.getFileList(), loginUserInfo,false);
return category.getId();
}
-
+ public void dealBatchMultiFiles(Category category, List<Multifile> fileList, LoginUserInfo user,boolean update) {
+ Date today = new Date();
+ //娓呯┖鍘熸湁鐨�
+ if(update){
+ multifileMapper.delete(new UpdateWrapper<Multifile>().lambda()
+ .eq(Multifile::getIsdeleted,Constants.ZERO)
+ .eq(Multifile::getObjType,Constants.ZERO)
+ .eq(Multifile::getObjId,category.getId()));
+ }
+ if(fileList!=null && fileList.size()>0){
+ List<Multifile> multifileList = new ArrayList<>();
+ fileList.stream().forEach(s -> {
+ if(StringUtils.isNotBlank(s.getFileurl())){
+ s.setIsdeleted(Constants.ZERO);
+ s.setCreator(user.getId());
+ s.setCreateDate(today);
+ s.setObjId(category.getId());
+ s.setType(Constants.ZERO);
+ s.setObjType(Constants.ZERO);
+ multifileList.add(s);
+ }
+ });
+ if(multifileList.size()>0){
+ multifileMapper.insert(multifileList);
+ }
+ }
+ }
@Override
public void deleteById(Integer id) {
categoryMapper.update(new UpdateWrapper<Category>().lambda().set(Category::getDeleted,Constants.ONE).eq(Category::getId,id));
-
-// categoryMapper.deleteById(id);
}
@Override
@@ -102,8 +124,6 @@
|| Objects.isNull(category.getId())
|| Objects.isNull(category.getType())
|| Objects.isNull(category.getName())
- || (!Constants.equalsInteger(category.getType(),Constants.ZERO)&& CollectionUtils.isEmpty(category.getDetailList()))
- || (Constants.equalsInteger(category.getType(),Constants.ONE) && (Objects.isNull(category.getIcon())||Objects.isNull(category.getIsFixed())) )
){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
@@ -111,25 +131,18 @@
category.setUpdateTime(new Date());
category.setIsFixed(null);
category.setUpdateUser(loginUserInfo.getId());
- if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(category.getDetailList())
- && !Constants.equalsInteger(category.getType(),Constants.THREE)){
- category.setDetail(category.getDetailList().toJSONString());
- }
categoryMapper.updateById(category);
+ dealBatchMultiFiles(category, category.getFileList(), loginUserInfo,true);
}
@Override
public void updateStatus(Category category) {
- if(Objects.isNull(category)
- || Objects.isNull(category.getId())){
+ if(Objects.isNull(category) || Objects.isNull(category.getId())){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
category.setUpdateTime(new Date());
category.setIsFixed(null);
category.setUpdateUser(loginUserInfo.getId());
- if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(category.getDetailList())){
- category.setDetail(category.getDetailList().toJSONString());
- }
categoryMapper.updateById(category);
}
@@ -149,12 +162,9 @@
if(Objects.isNull(category)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
- if(StringUtils.isNotBlank(category.getDetail())){
- category.setDetailList(JSONArray.parseArray(category.getDetail()));
- }
if(StringUtils.isNotBlank(category.getIcon())){
- String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
- +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CATEGORY_FILES).getCode();
+ String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.CATEGORY_FILES).getCode();
category.setIconFull(path + category.getIcon());
}
return category;
@@ -168,6 +178,7 @@
@Override
public List<Category> findList(Category category) {
+ category.setDeleted(Constants.ZERO);
QueryWrapper<Category> wrapper = new QueryWrapper<>(category);
return categoryMapper.selectList(wrapper);
}
@@ -225,22 +236,38 @@
queryWrapper.orderByAsc(Category::getSortnum);
PageData<Category> result =PageData.from(categoryMapper.selectJoinPage(page, Category.class,queryWrapper));
if(result!=null && result.getRecords()!=null){
- String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
- +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CATEGORY_FILES).getCode();
+ String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.CATEGORY_FILES).getCode();
for(Category cate : result.getRecords()){
- try {
- if(StringUtils.isNotBlank(cate.getDetail())){
- cate.setDetailList(JSONArray.parseArray(cate.getDetail()));
- }
- if(StringUtils.isNotBlank(cate.getIcon())){
- cate.setIconFull(path + cate.getIcon());
- }
- }catch (Exception e){
-
+ if(Constants.equalsInteger(cate.getType(),Constants.ONE) ){
+ initMultifileList(cate);
+ }
+ if(StringUtils.isNotBlank(cate.getIcon())){
+ cate.setIconFull(path + cate.getIcon());
}
}
}
return result;
+ }
+
+ private void initMultifileList(Category cate) {
+ String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode()
+ + systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode();
+
+ Multifile find = new Multifile();
+ find.setObjId(cate.getId());
+ find.setObjType(Constants.ZERO);
+ find.setIsdeleted(Constants.ZERO);
+ List<Multifile> fileList= multifileMapper.selectList(new QueryWrapper<>(find));
+ if(fileList!=null){
+ for(Multifile f : fileList){
+ if(StringUtils.isNotBlank(f.getFileurl())){
+ f.setUrl(path+f.getFileurl());
+ }
+
+ }
+ }
+ cate.setFileList(fileList);
}
@Override
@@ -259,12 +286,12 @@
String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
+systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CATEGORY_FILES).getCode();
for (Category category:categoryList) {
- if(StringUtils.isNotBlank(category.getDetail())){
- category.setDetailList(JSONArray.parseArray(category.getDetail()));
- }
if(StringUtils.isNotBlank(category.getIcon())){
category.setIconFull(path + category.getIcon());
}
+ if(Constants.equalsInteger(category.getType(),Constants.ONE) ){
+ initMultifileList(category);
+ }
}
}
return categoryList;
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
index d3ca1de..074a1db 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
@@ -1,20 +1,41 @@
package com.doumee.service.business.impl;
+import com.doumee.core.annotation.excel.ExcelImporter;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.dto.CasesImport;
+import com.doumee.dao.business.dto.MemberImport;
import com.doumee.dao.business.model.ImportRecord;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.ImportRecordMapper;
+import com.doumee.dao.business.model.Member;
import com.doumee.service.business.ImportRecordService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
+import java.util.concurrent.TimeUnit;
/**
* 鍒嗙被淇℃伅琛⊿ervice瀹炵幇
@@ -26,9 +47,21 @@
@Autowired
private ImportRecordMapper importRecordMapper;
+ @Resource
+ private RedisTemplate<String, Object> redisTemplate;
@Override
public Integer create(ImportRecord importRecord) {
+ if(StringUtils.isBlank(importRecord.getImgurl())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ importRecord.setDeleted(Constants.ZERO);
+ importRecord.setStatus(Constants.ZERO);
+ importRecord.setCreateTime(new Date());
+ importRecord.setCreateUser(loginUserInfo.getId());
+ importRecord.setUpdateTime(new Date());
+ importRecord.setUpdateUser(loginUserInfo.getId());
importRecordMapper.insert(importRecord);
return importRecord.getId();
}
@@ -134,4 +167,106 @@
QueryWrapper<ImportRecord> wrapper = new QueryWrapper<>(importRecord);
return importRecordMapper.selectCount(wrapper);
}
+ @Override
+ public ImportRecord importBatch(MultipartFile file,int type ){
+ Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_RECORD);
+ if(importing!=null && importing){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄥ鍏ヤ换鍔℃鍦ㄦ墽琛屼腑锛岃绋嶅悗鍐嶈瘯锛�");
+ }
+ redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_RECORD,true,30, TimeUnit.MINUTES);
+ try {
+ ImportRecord model = new ImportRecord();
+ LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ model.setDeleted(Constants.ZERO);
+ model.setStatus(Constants.ONE);//寮傛澶勭悊涓�
+ model.setCreateTime(new Date());
+ model.setCreateUser(loginUserInfo.getId());
+ model.setUpdateTime(model.getCreateTime());
+ model.setUpdateUser(loginUserInfo.getId());
+ model.setType(type);
+ model.setTitle((type==1?"妗堜緥淇℃伅鎵归噺瀵煎叆":"鑰佸笀淇℃伅鎵归噺瀵煎叆")+ DateUtil.getPlusTime2(model.getCreateTime()));
+ model.setTotalNum(0);
+ ExcelImporter ie= new ExcelImporter(file,0,0, CellType.STRING); // 纭繚鍗曞厓鏍肩被鍨嬩负瀛楃涓�);
+ if(type == 1) {
+ model.setCaseList(ie.getDataList(CasesImport.class,null));
+ if(model.getCaseList() ==null || model.getCaseList().size()==0){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵煎叆鏂囦欢妗堜緥淇℃伅鍐呭涓虹┖锛�");
+ }
+ model.setTotalNum(model.getCaseList().size());
+ }else{
+ model.setMemberList(ie.getDataList(MemberImport.class,null));
+ if(model.getMemberList() ==null || model.getMemberList().size()==0){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵煎叆鏂囦欢鑰佸笀淇℃伅鍐呭涓虹┖锛�");
+ }
+ model.setTotalNum(model.getMemberList().size());
+ }
+// model.setPictureDataList(ie);
+ importRecordMapper.insert(model);
+ return model;
+ }catch (Exception e){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏂囦欢淇℃伅璇诲彇澶辫触锛岃妫�鏌ユ枃浠跺唴瀹瑰悗閲嶈瘯锛�");
+ }finally {
+ redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD);
+ }
+ }
+
+ /**
+ * 寮傛鎵ц鏂囦欢浠诲姟
+ * @param importRecord
+ */
+ @Override
+ @Async
+ public void dealImporTask(ImportRecord importRecord){
+ int success = 0;
+ if(Constants.equalsInteger(importRecord.getType(),0)){
+ dealUserImportBiz(importRecord);
+ }else{
+ dealCaseImportBiz(importRecord);
+ }
+ importRecord.setStatus(Constants.TWO);
+ importRecord.setUpdateTime(new Date());
+ importRecordMapper.updateById(importRecord);
+
+ }
+
+ /**
+ * 澶勭悊妗堜緥瀵煎叆浠诲姟
+ * @param importRecord
+ */
+
+ private int dealCaseImportBiz(ImportRecord importRecord) {
+ int success=0;
+ String msg ="";
+ try {
+ for(CasesImport param:importRecord.getCaseList()){
+
+ }
+ }catch (Exception e){
+
+ }
+ importRecord.setDoneNum(success);
+ importRecord.setErrorNum(importRecord.getTotalNum() - success);
+ return success;
+ }
+
+ /**
+ * 澶勭悊浜哄憳瀵煎叆璁板綍
+ * @param importRecord
+ */
+ private int dealUserImportBiz(ImportRecord importRecord) {
+ int success=0;
+ String msg = "";
+ try {
+ for(MemberImport param:importRecord.getMemberList()){
+
+ }
+ }catch (Exception e){
+
+ }
+ importRecord.setDoneNum(success);
+ importRecord.setErrorNum(importRecord.getTotalNum() - success);
+ importRecord.setDetail(msg);
+
+ return success;
+ }
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/InterfaceLogServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/InterfaceLogServiceImpl.java
new file mode 100644
index 0000000..215d0b2
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/service/business/impl/InterfaceLogServiceImpl.java
@@ -0,0 +1,191 @@
+package com.doumee.service.business.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.InterfaceLogMapper;
+import com.doumee.dao.business.model.InterfaceLog;
+import com.doumee.service.business.InterfaceLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 涓夋柟骞冲彴鎺ュ彛浜や簰璁板綍Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Service
+public class InterfaceLogServiceImpl implements InterfaceLogService {
+
+ @Autowired
+ private InterfaceLogMapper interfaceLogMapper;
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+
+ @Override
+ public Integer create(InterfaceLog interfaceLog) {
+ interfaceLogMapper.insert(interfaceLog);
+ return interfaceLog.getId();
+ }
+
+ @Override
+ public void deleteById(Integer id) {
+ interfaceLogMapper.deleteById(id);
+ }
+
+ @Override
+ public void delete(InterfaceLog interfaceLog) {
+ UpdateWrapper<InterfaceLog> deleteWrapper = new UpdateWrapper<>(interfaceLog);
+ interfaceLogMapper.delete(deleteWrapper);
+ }
+
+ @Override
+ public void deleteByIdInBatch(List<Integer> ids) {
+ if (CollectionUtils.isEmpty(ids)) {
+ return;
+ }
+ interfaceLogMapper.deleteBatchIds(ids);
+ }
+
+ @Override
+ public void updateById(InterfaceLog interfaceLog) {
+ interfaceLogMapper.updateById(interfaceLog);
+ }
+
+ @Override
+ public void updateByIdInBatch(List<InterfaceLog> interfaceLogs) {
+ if (CollectionUtils.isEmpty(interfaceLogs)) {
+ return;
+ }
+ for (InterfaceLog interfaceLog: interfaceLogs) {
+ this.updateById(interfaceLog);
+ }
+ }
+
+ @Override
+ public InterfaceLog findById(Integer id) {
+ return interfaceLogMapper.selectById(id);
+ }
+
+ @Override
+ public InterfaceLog findOne(InterfaceLog interfaceLog) {
+ QueryWrapper<InterfaceLog> wrapper = new QueryWrapper<>(interfaceLog);
+ return interfaceLogMapper.selectOne(wrapper);
+ }
+ @Override
+ public void saveInterfaceLog(String url,String name,String param,Integer success,String respone,int type){
+ if(interfaceLogMapper ==null){
+ return;
+ }
+ InterfaceLog log = new InterfaceLog();
+ log.setCreateDate(new Date());
+ log.setUrl(url);
+ log.setEditDate(log.getCreateDate());
+ log.setPlat(Constants.ZERO);
+ log.setName(name);
+ log.setIsdeleted(Constants.ZERO);
+ log.setRequest(param);
+ log.setType(type);
+ log.setSuccess(success);
+ log.setRepose(respone);
+ interfaceLogMapper.insert(log);
+ }
+
+ @Override
+ public List<InterfaceLog> findList(InterfaceLog interfaceLog) {
+ QueryWrapper<InterfaceLog> wrapper = new QueryWrapper<>(interfaceLog);
+ return interfaceLogMapper.selectList(wrapper);
+ }
+
+ @Override
+ public PageData<InterfaceLog> findPage(PageWrap<InterfaceLog> pageWrap) {
+ IPage<InterfaceLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ QueryWrapper<InterfaceLog> queryWrapper = new QueryWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+ if (pageWrap.getModel().getId() != null) {
+ queryWrapper.lambda().eq(InterfaceLog::getId, pageWrap.getModel().getId());
+ }
+ if (pageWrap.getModel().getCreator() != null) {
+ queryWrapper.lambda().eq(InterfaceLog::getCreator, pageWrap.getModel().getCreator());
+ }
+ if (pageWrap.getModel().getCreateDate() != null) {
+ queryWrapper.lambda().ge(InterfaceLog::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+ queryWrapper.lambda().le(InterfaceLog::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+ }
+ if (pageWrap.getModel().getEditor() != null) {
+ queryWrapper.lambda().eq(InterfaceLog::getEditor, pageWrap.getModel().getEditor());
+ }
+ if (pageWrap.getModel().getEditDate() != null) {
+ queryWrapper.lambda().ge(InterfaceLog::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+ queryWrapper.lambda().le(InterfaceLog::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+ }
+
+ if (pageWrap.getModel().getStartDate() != null) {
+ queryWrapper.lambda().ge(InterfaceLog::getCreateDate, pageWrap.getModel().getStartDate());
+ }
+ if (pageWrap.getModel().getEndDate() != null) {
+ queryWrapper.lambda().le(InterfaceLog::getCreateDate, pageWrap.getModel().getEndDate());
+ }
+ if (pageWrap.getModel().getIsdeleted() != null) {
+ queryWrapper.lambda().eq(InterfaceLog::getIsdeleted, pageWrap.getModel().getIsdeleted());
+ }
+ if (pageWrap.getModel().getRemark() != null) {
+ queryWrapper.lambda().eq(InterfaceLog::getRemark, pageWrap.getModel().getRemark());
+ }
+ if (pageWrap.getModel().getType() != null) {
+ queryWrapper.lambda().eq(InterfaceLog::getType, pageWrap.getModel().getType());
+ }
+ if (pageWrap.getModel().getName() != null) {
+ queryWrapper.lambda().like(InterfaceLog::getName, pageWrap.getModel().getName());
+ }
+ if (pageWrap.getModel().getUrl() != null) {
+ queryWrapper.lambda().like(InterfaceLog::getUrl, pageWrap.getModel().getUrl());
+ }
+ if (pageWrap.getModel().getRequest() != null) {
+ queryWrapper.lambda().like(InterfaceLog::getRequest, pageWrap.getModel().getRequest());
+ }
+ if (pageWrap.getModel().getRepose() != null) {
+ queryWrapper.lambda().like(InterfaceLog::getRepose, pageWrap.getModel().getRepose());
+ }
+ if (pageWrap.getModel().getSuccess() != null) {
+ queryWrapper.lambda().eq(InterfaceLog::getSuccess, pageWrap.getModel().getSuccess());
+ }
+ if (pageWrap.getModel().getPlat() != null) {
+ queryWrapper.lambda().eq(InterfaceLog::getPlat, pageWrap.getModel().getPlat());
+ }
+ if (pageWrap.getModel().getObjType() != null) {
+ queryWrapper.lambda().eq(InterfaceLog::getObjType, pageWrap.getModel().getObjType());
+ }
+ if (pageWrap.getModel().getObjId() != null) {
+ queryWrapper.lambda().eq(InterfaceLog::getObjId, pageWrap.getModel().getObjId());
+ }
+ queryWrapper.lambda().orderByDesc(InterfaceLog::getCreateDate);
+ return PageData.from(interfaceLogMapper.selectPage(page, queryWrapper));
+ }
+
+ @Override
+ public long count(InterfaceLog interfaceLog) {
+ QueryWrapper<InterfaceLog> wrapper = new QueryWrapper<>(interfaceLog);
+ return interfaceLogMapper.selectCount(wrapper);
+ }
+
+ @Override
+ public void clearThreeMonthLog() {
+ int days =15;
+ try {
+// days = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.HK_LOG_DEL_DAYS_LIMIT).getCode());
+ }catch (Exception e){}
+ interfaceLogMapper.delete(new UpdateWrapper<InterfaceLog>().lambda()
+ .apply("to_days(create_date)+"+days+" < to_days(now())") );
+ }
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 1a1f3c0..1733407 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1,20 +1,35 @@
package com.doumee.service.business.impl;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.dao.business.model.Member;
-import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.MemberMapper;
-import com.doumee.service.business.MemberService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CasesMapper;
+import com.doumee.dao.business.CategoryMapper;
+import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.MultifileMapper;
+import com.doumee.dao.business.model.Cases;
+import com.doumee.dao.business.model.Category;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Multifile;
+import com.doumee.service.business.MemberService;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
+import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* 浼氬憳淇℃伅琛⊿ervice瀹炵幇
@@ -26,6 +41,18 @@
@Autowired
private MemberMapper memberMapper;
+
+ @Autowired
+ private CategoryMapper categoryMapper;
+
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+
+ @Autowired
+ private CasesMapper casesMapper;
+
+ @Autowired
+ private MultifileMapper multifileMapper;
@Override
public Integer create(Member member) {
@@ -87,58 +114,147 @@
@Override
public PageData<Member> findPage(PageWrap<Member> pageWrap) {
IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
- QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
+ MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
- queryWrapper.lambda().eq(pageWrap.getModel().getId() != null,Member::getId, pageWrap.getModel().getId());
- queryWrapper.lambda().eq(pageWrap.getModel().getDeleted() != null,Member::getDeleted, pageWrap.getModel().getDeleted());
- queryWrapper.lambda().eq(pageWrap.getModel().getCreateUser() != null,Member::getCreateUser, pageWrap.getModel().getCreateUser());
- if (pageWrap.getModel().getId() != null) {
- queryWrapper.lambda().ge(Member::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime()));
- queryWrapper.lambda().le(Member::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime()));
- }
- queryWrapper.lambda().eq(pageWrap.getModel().getUpdateUser() != null,Member::getUpdateUser, pageWrap.getModel().getUpdateUser());
- if (pageWrap.getModel().getId() != null) {
- queryWrapper.lambda().ge(Member::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime()));
- queryWrapper.lambda().le(Member::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime()));
- }
- queryWrapper.lambda().eq(pageWrap.getModel().getRemark() != null,Member::getRemark, pageWrap.getModel().getRemark());
- queryWrapper.lambda().eq(pageWrap.getModel().getImgurl() != null,Member::getImgurl, pageWrap.getModel().getImgurl());
- queryWrapper.lambda().eq(pageWrap.getModel().getDingdingId() != null,Member::getDingdingId, pageWrap.getModel().getDingdingId());
- queryWrapper.lambda().eq(pageWrap.getModel().getPhone() != null,Member::getPhone, pageWrap.getModel().getPhone());
- queryWrapper.lambda().eq(pageWrap.getModel().getName() != null,Member::getName, pageWrap.getModel().getName());
- queryWrapper.lambda().eq(pageWrap.getModel().getSex() != null,Member::getSex, pageWrap.getModel().getSex());
- queryWrapper.lambda().eq(pageWrap.getModel().getJobYear() != null,Member::getJobYear, pageWrap.getModel().getJobYear());
- queryWrapper.lambda().eq(pageWrap.getModel().getPositon() != null,Member::getPositon, pageWrap.getModel().getPositon());
- queryWrapper.lambda().eq(pageWrap.getModel().getZhanquIds() != null,Member::getZhanquIds, pageWrap.getModel().getZhanquIds());
- queryWrapper.lambda().eq(pageWrap.getModel().getBustypeIds() != null,Member::getBustypeIds, pageWrap.getModel().getBustypeIds());
- queryWrapper.lambda().eq(pageWrap.getModel().getLevelId() != null,Member::getLevelId, pageWrap.getModel().getLevelId());
- queryWrapper.lambda().eq(pageWrap.getModel().getStatus() != null,Member::getStatus, pageWrap.getModel().getStatus());
- queryWrapper.lambda().eq(pageWrap.getModel().getFee() != null,Member::getFee, pageWrap.getModel().getFee());
- queryWrapper.lambda().eq(pageWrap.getModel().getServeNum() != null,Member::getServeNum, pageWrap.getModel().getServeNum());
- queryWrapper.lambda().eq(pageWrap.getModel().getType() != null,Member::getType, pageWrap.getModel().getType());
- queryWrapper.lambda().eq(pageWrap.getModel().getContent() != null,Member::getContent, pageWrap.getModel().getContent());
- if (pageWrap.getModel().getId() != null) {
- queryWrapper.lambda().ge(Member::getLoginDate, Utils.Date.getStart(pageWrap.getModel().getLoginDate()));
- queryWrapper.lambda().le(Member::getLoginDate, Utils.Date.getEnd(pageWrap.getModel().getLoginDate()));
- }
- queryWrapper.lambda().eq(pageWrap.getModel().getLoginCount() != null,Member::getLoginCount, pageWrap.getModel().getLoginCount());
- queryWrapper.lambda().eq(pageWrap.getModel().getSortnum() != null,Member::getSortnum, pageWrap.getModel().getSortnum());
- queryWrapper.lambda().eq(pageWrap.getModel().getUsername() != null,Member::getUsername, pageWrap.getModel().getUsername());
- queryWrapper.lambda().eq(pageWrap.getModel().getAddType() != null,Member::getAddType, pageWrap.getModel().getAddType());
- queryWrapper.lambda().eq(pageWrap.getModel().getImportId() != null,Member::getImportId, pageWrap.getModel().getImportId());
- for(PageWrap.SortData sortData: pageWrap.getSorts()) {
- if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
- queryWrapper.orderByDesc(sortData.getProperty());
- } else {
- queryWrapper.orderByAsc(sortData.getProperty());
+ Member model = pageWrap.getModel();
+ queryWrapper.selectAll(Member.class)
+ .select(" c1.NAME ", Member::getPromotionName)
+ .select(" c2.NAME ", Member::getLevelName)
+ .leftJoin(" category c1 on t.POSITON = c1.id ")
+ .leftJoin(" category c2 on t.LEVEL_ID = c2.id ")
+ .apply(Objects.nonNull(model.getBustypeIds())," find_in_set( '["+model.getBustypeIds()+"]', t.BUSTYPE_IDS ) ")
+ .like(StringUtils.isNotBlank(model.getName()),Member::getName, model.getName())
+ .eq(Objects.nonNull(model.getStatus()),Member::getStatus, model.getStatus())
+ .orderByAsc(Objects.isNull(model.getOrderByType()),"c2.DETAIL")
+ .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ZERO),Member::getFee)
+ .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ONE),Member::getFee)
+ .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.TWO),"c2.DETAIL")
+ .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.THREE),"c2.DETAIL")
+ .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.FOUR),Member::getServeNum)
+ ;
+ if(StringUtils.isNotBlank(model.getFieldIds())){
+ String [] fieldIds = model.getFieldIds().split(",");
+ for (String s:fieldIds) {
+ queryWrapper.apply("find_in_set( '["+s+"]' , t.FIELD_IDS )");
}
}
- return PageData.from(memberMapper.selectPage(page, queryWrapper));
+ if (StringUtils.isNotBlank(model.getQueryZQCode())) {
+ Category zhanqu = categoryMapper.selectOne(new QueryWrapper<Category>().lambda()
+ .eq(Category::getDeleted,Constants.ZERO)
+ .eq(Category::getStatus,Constants.ZERO)
+ .eq(Category::getDetail,model.getQueryZQCode())
+ .last(" limit 1")
+ );
+ if(Objects.nonNull(zhanqu)){
+ queryWrapper.apply(" find_in_set( '["+zhanqu.getId()+"]', t.ZHANQU_IDS ) ");
+ }
+ }
+ IPage<Member> memberIPage = memberMapper.selectJoinPage(page, Member.class, new MPJLambdaWrapper<>());
+ if(CollectionUtils.isNotEmpty(memberIPage.getRecords())){
+ List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
+ .eq(Category::getDeleted, Constants.ZERO)
+ .eq(Category::getType,Constants.TWO)
+ .orderByAsc(Category::getSortnum)
+ );
+ String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() +
+ systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode();
+ String roleConfig = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ROLE_CONFIG).getCode();
+ for (Member member:memberIPage.getRecords()) {
+ if(CollectionUtils.isNotEmpty(categoryList)){
+ dealMemberField(member,categoryList);
+ }
+ member.setFullImgurl(StringUtils.isNotBlank(member.getImgurl())?(path + member.getImgurl()):"");
+ if(StringUtils.isBlank(roleConfig)||StringUtils.isBlank(model.getQueryUserRole())
+ || !roleConfig.contains(model.getQueryUserRole())){
+ member.setFee(null);
+ }
+ if(member.getJobYear()!=null){
+ member.setWorkYears(DateUtil.getCurrentYear( ) - member.getJobYear()+1);
+ }
+ }
+ }
+ return PageData.from(memberIPage);
}
+
+
+ @Override
+ public Member findDetailById(Integer id,String queryUserRole) {
+ Member member = memberMapper.selectJoinOne(Member.class, new MPJLambdaWrapper<Member>()
+ .selectAll(Member.class)
+ .select(" c1.NAME ", Member::getPromotionName)
+ .select(" c2.NAME ", Member::getLevelName)
+ .select(" TIMESTAMPDIFF(YEAR, CONCAT(t.JOB_YEAR , '-01-01'), now()) ",Member::getWorkYears)
+ .leftJoin(" category c1 on t.POSITON = c1.id ")
+ .leftJoin(" category c2 on t.LEVEL_ID = c2.id ")
+ .eq(Member::getId, id)
+ .last(" limit 1 "));
+ if(Objects.isNull(member)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(StringUtils.isNotBlank(member.getFieldIds())){
+ member.setFieldList(
+ categoryMapper.selectList(new QueryWrapper<Category>().lambda()
+ .eq(Category::getDeleted, Constants.ZERO)
+ .eq(Category::getType,Constants.TWO)
+ .apply(" find_in_set(CONCAT('[',id,']'),'"+member.getFieldIds()+"') ")
+ .orderByAsc(Category::getSortnum)
+ )
+ );
+ }
+
+ String resourcePath = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode();
+ String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode();
+ String roleConfig = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ROLE_CONFIG).getCode();
+ member.setFullImgurl(StringUtils.isNotBlank(member.getImgurl())?(resourcePath + path + member.getImgurl()):"");
+ List<Cases> casesList = casesMapper.selectList(new QueryWrapper<Cases>().lambda()
+ .eq(Cases::getMemberId,member.getId())
+ .eq(Cases::getDeleted,Constants.ZERO)
+ .orderByDesc(Cases::getId)
+ );
+ if(CollectionUtils.isNotEmpty(casesList)){
+ String casePath = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CASES_FILES).getCode();
+ for (Cases cases:casesList) {
+ List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
+ .eq(Multifile::getObjId,cases.getId())
+ .eq(Multifile::getObjType,Constants.ONE)
+ .eq(Multifile::getIsdeleted,Constants.ZERO)
+ .orderByDesc(Multifile::getId)
+ );
+ multifileList.forEach(multifile -> {
+ multifile.setUrl(StringUtils.isNotBlank(multifile.getFileurl())?(resourcePath + casePath + multifile.getFileurl()):"");
+ });
+ }
+ member.setCasesList(casesList);
+ }
+ if(StringUtils.isBlank(roleConfig)||StringUtils.isBlank(queryUserRole)
+ || !roleConfig.contains(queryUserRole)){
+ member.setFee(null);
+ }
+ return member;
+ }
+
+
+
+
+ public void dealMemberField(Member member,List<Category> categoryList){
+ if(CollectionUtils.isNotEmpty(categoryList)){
+ return;
+ }
+ String fieldNames = "";
+ for (Category category:categoryList) {
+ if(member.getFieldIds().contains("["+category.getId()+"]")){
+ fieldNames = fieldNames + (StringUtils.isNotBlank(fieldNames)?",":"") + category.getName();
+ }
+ }
+ member.setFieldNames(fieldNames);
+ }
+
@Override
public long count(Member member) {
QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
return memberMapper.selectCount(wrapper);
}
+
+
}
diff --git a/server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
index ba21070..8f1b81f 100644
--- a/server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -10,6 +10,7 @@
import com.doumee.service.system.SystemLoginLogService;
import com.doumee.service.system.SystemLoginService;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
@@ -27,6 +28,11 @@
@Value("${project.version}")
private String systemVersion;
+ /**
+ * # 鐜锛岀敓浜х幆澧僷roduction锛屽紑鍙戠幆澧僤evelopment
+ */
+ @Value("${project.env}")
+ private String projectEnv;
@Autowired
private CaptchaService captchaService;
@@ -46,15 +52,17 @@
loginLog.setClientInfo(Utils.User_Client.getBrowser(request));
loginLog.setOsInfo(Utils.User_Client.getOS(request));
loginLog.setServerIp(Utils.Server.getIP());
- // 鏍¢獙楠岃瘉鐮�
- try {
- captchaService.check(dto.getUuid(), dto.getCode());
- } catch (Exception e) {
- log.error(e.getMessage(), e);
- loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage());
- loginLog.setSuccess(Boolean.FALSE);
- systemLoginLogService.create(loginLog);
- throw e;
+ if(StringUtils.equals(projectEnv,"development")){
+ // 鏍¢獙楠岃瘉鐮�
+ try {
+ captchaService.check(dto.getUuid(), dto.getCode());
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage());
+ loginLog.setSuccess(Boolean.FALSE);
+ systemLoginLogService.create(loginLog);
+ throw e;
+ }
}
// 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜
Subject subject = SecurityUtils.getSubject();
diff --git a/server/services/src/main/resources/application-dev.yml b/server/services/src/main/resources/application-dev.yml
index a93f2ff..492ab94 100644
--- a/server/services/src/main/resources/application-dev.yml
+++ b/server/services/src/main/resources/application-dev.yml
@@ -69,9 +69,6 @@
username: admin
password: 111111
-qiwei:
- serviceurl: https://qyapi.weixin.qq.com
-
aes:
encrypt:
open: true # 鏄惁寮�鍚姞瀵� true or false
@@ -83,5 +80,10 @@
upload:
type: ftp
+project:
+ # 鐜锛岀敓浜х幆澧僷roduction锛屽紑鍙戠幆澧僤evelopment
+ env: development
+ # 妯″紡锛宼esting娴嬭瘯妯″紡
+ mode: testing
diff --git a/server/services/src/main/resources/application-pro.yml b/server/services/src/main/resources/application-pro.yml
index 1e4659f..a8a65fe 100644
--- a/server/services/src/main/resources/application-pro.yml
+++ b/server/services/src/main/resources/application-pro.yml
@@ -1,9 +1,9 @@
spring:
# 鏁版嵁婧愰厤缃�
datasource:
- url: jdbc:mysql://b66cc1a382964a6a9d46a522f2dfe672in01.internal.cn-south-1.mysql.rds.myhuaweicloud.com:3306/jinkuai?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
+ url: jdbc:mysql://192.168.0.211:3306/zbom_dianjiang?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
- password: Jinkuai!@#$%^
+ password: Doumee@168
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
redis:
@@ -49,46 +49,12 @@
enable: true
username: admin
password: doumee@168
-########################寰俊鏀粯鐩稿叧閰嶇疆########################
-wx:
- pay:
- #鏈嶅姟鍟�---------start------- 鍙傛暟璇﹁В鍦板潃 https://pay.weixin.qq.com/doc/v3/partner/4013080340
- mchId: 1700071922 #鏈嶅姟鍟嗗湪寰俊鏀粯渚х殑鍞竴韬唤鏍囪瘑
- appId: wx6cc1087ca79db7f6 #鏈嶅姟鍟嗗湪寰俊寮�鏀惧钩鍙帮紙绉诲姩搴旂敤锛夋垨鍏紬骞冲彴锛堝叕浼楀彿/灏忕▼搴忥級涓婄敵璇风殑涓�涓敮涓�鏍囪瘑
- apiV3Key: 0a056faa107c2b2944b9d6a9aa6d4142 #7tG4Vk9Zp2L8dXw5Jq0N3hR6yE1sF3cB
- serialNumer: 6696086F6EFB8D6A4F821BD47DDBAF75C3BC1209 #38495CE0137D90E4DC4F64F7ECDE035A35470BE3 #鏈嶅姟鍟嗚瘉涔﹀簭鍒楀彿
- payPublicKeyId: PUB_KEY_ID_0117000719222024112700219100000508 #鍟嗘埛/骞冲彴鏀粯鍏挜id
- #mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S
- notifyUrl: https://jinkuai.832smartfarm.com/jinkuai_admin/web/wxPayNotify
- refundNotifyUrl: https://jinkuai.832smartfarm.com/jinkuai_admin/web/wxRefundNotify
- keyPath: /usr/local/jars/payFile/apiclient_cert.p12
- privateCertPath: /usr/local/jars/payFile/apiclient_cert.pem
- privateKeyPath: /usr/local/jars/payFile/apiclient_key.pem
- pubKeyPath: /usr/local/jars/payFile/pub_key.pem #鍟嗘埛鏀粯鍏挜
-
- #鏈嶅姟鍟�-------------end---
-
- #鍟嗘埛淇℃伅
- wechatSerialNumer: 12C0F0DD0F3D2B565B45586D3FEA225EBF723BEC
- wechatPayPublicKeyId: PUB_KEY_ID_0117233260692025072500181939000603 #鍟嗘埛/骞冲彴鏀粯鍏挜id
- wechatPubKeyPath: /usr/local/jars/payFile/shanghu/pub_key.pem #鍟嗘埛鏀粯鍏挜
- wechatPrivateKeyPath: /usr/local/jars/payFile/shanghu/apiclient_key.pem #鍟嗘埛绉侀挜
- wechatNotifyUrl: https://jinkuai.832smartfarm.com/jinkuai_admin/web/wechat/transferNotify #鍟嗘埛杞处鍥炶皟鍦板潃
- wechatApiV3Key: 7tG4Vk9Zp2L8dXw5Jq0N3hR6yE1sF3cB
-
-
- existsSub: 1
- appSecret:
- #瀛愬晢鎴�------------start----
- subMchId: 1723326069 #瀛愬晢鎴峰彿
- subAppId: wx332441ae5b12be7d #灏忕▼搴廼d
- subAppSecret: add86d6406f5c14501ac5bbb1a60e004 #灏忕▼搴忕閽�
- #瀛愬晢鎴�------------end----
- # mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
- typeId: jinkuai
-
upload:
type: blob
-qiwei:
- serviceurl: https://wecom-qyapi.unilever-china.com/
\ No newline at end of file
+
+project:
+ # 鐜锛岀敓浜х幆澧僷roduction锛屽紑鍙戠幆澧僤evelopment
+ env: production
+ # 妯″紡锛宼esting娴嬭瘯妯″紡
+ mode: production
\ No newline at end of file
diff --git a/server/services/src/main/resources/application-test.yml b/server/services/src/main/resources/application-test.yml
index cbd34a7..d4f309f 100644
--- a/server/services/src/main/resources/application-test.yml
+++ b/server/services/src/main/resources/application-test.yml
@@ -69,48 +69,13 @@
username: admin
password: 111111
-########################寰俊鏀粯鐩稿叧閰嶇疆########################
-
-########################寰俊鏀粯鐩稿叧閰嶇疆########################
-wx:
- pay:
- #鏈嶅姟鍟�---------start------- 鍙傛暟璇﹁В鍦板潃 https://pay.weixin.qq.com/doc/v3/partner/4013080340
- mchId: 1700071922 #鏈嶅姟鍟嗗湪寰俊鏀粯渚х殑鍞竴韬唤鏍囪瘑
- appId: wx6cc1087ca79db7f6 #鏈嶅姟鍟嗗湪寰俊寮�鏀惧钩鍙帮紙绉诲姩搴旂敤锛夋垨鍏紬骞冲彴锛堝叕浼楀彿/灏忕▼搴忥級涓婄敵璇风殑涓�涓敮涓�鏍囪瘑
- apiV3Key: 0a056faa107c2b2944b9d6a9aa6d4142 #7tG4Vk9Zp2L8dXw5Jq0N3hR6yE1sF3cB
- serialNumer: 6696086F6EFB8D6A4F821BD47DDBAF75C3BC1209 #38495CE0137D90E4DC4F64F7ECDE035A35470BE3 #鏈嶅姟鍟嗚瘉涔﹀簭鍒楀彿
- payPublicKeyId: PUB_KEY_ID_0117000719222024112700219100000508 #鍟嗘埛/骞冲彴鏀粯鍏挜id
- #mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S
- notifyUrl: https://test.doumee.cn/zbom_dianjiang_admin/web/wxPayNotify
- refundNotifyUrl: https://test.doumee.cn/zbom_dianjiang_admin/web/wxRefundNotify
- keyPath: /usr/local/jars/payFile/apiclient_cert.p12
- privateCertPath: /usr/local/jars/payFile/apiclient_cert.pem
- privateKeyPath: /usr/local/jars/payFile/apiclient_key.pem
- pubKeyPath: /usr/local/jars/payFile/pub_key.pem #鍟嗘埛鏀粯鍏挜
-
- #鏈嶅姟鍟�-------------end---
-
- #鍟嗘埛淇℃伅
- wechatSerialNumer: 12C0F0DD0F3D2B565B45586D3FEA225EBF723BEC
- wechatPayPublicKeyId: PUB_KEY_ID_0117233260692025072500181939000603 #鍟嗘埛/骞冲彴鏀粯鍏挜id
- wechatPubKeyPath: /usr/local/jars/payFile/shanghu/pub_key.pem #鍟嗘埛鏀粯鍏挜
- wechatPrivateKeyPath: /usr/local/jars/payFile/shanghu/apiclient_key.pem #鍟嗘埛绉侀挜
- wechatNotifyUrl: https://test.doumee.cn/jinkuai_admin/web/wechat/transferNotify #鍟嗘埛杞处鍥炶皟鍦板潃
- wechatApiV3Key: 7tG4Vk9Zp2L8dXw5Jq0N3hR6yE1sF3cB
-
-
- existsSub: 1
- appSecret:
- #瀛愬晢鎴�------------start----
- subMchId: 1723326069 #瀛愬晢鎴峰彿
- subAppId: wx332441ae5b12be7d #灏忕▼搴廼d
- subAppSecret: add86d6406f5c14501ac5bbb1a60e004 #灏忕▼搴忕閽�
- #瀛愬晢鎴�------------end----
- # mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
- typeId: jinkuai
upload:
type: blob
-qiwei:
- serviceurl: https://qyapi.weixin.qq.com
\ No newline at end of file
+
+project:
+ # 鐜锛岀敓浜х幆澧僷roduction锛屽紑鍙戠幆澧僤evelopment
+ env: production
+ # 妯″紡锛宼esting娴嬭瘯妯″紡
+ mode: testing
\ No newline at end of file
diff --git a/server/web/src/main/java/com/doumee/DJWebApplication.java b/server/web/src/main/java/com/doumee/DJWebApplication.java
index 92fb2f4..59dae4c 100644
--- a/server/web/src/main/java/com/doumee/DJWebApplication.java
+++ b/server/web/src/main/java/com/doumee/DJWebApplication.java
@@ -22,9 +22,4 @@
ApplicationContext context = SpringApplication.run(DJWebApplication.class);
context.getEnvironment();
}
-
-// @Override
-// protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
-// return builder.sources(JKWebApplication.class) ;
-// }
}
diff --git a/server/web/src/main/java/com/doumee/api/web/ApiController.java b/server/web/src/main/java/com/doumee/api/web/ApiController.java
index c9eb82a..b6e10cb 100644
--- a/server/web/src/main/java/com/doumee/api/web/ApiController.java
+++ b/server/web/src/main/java/com/doumee/api/web/ApiController.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.doumee.config.jwt.JwtTokenUtil;
import com.doumee.dao.business.model.Member;
+import com.doumee.dao.vo.WebLoginUserVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
@@ -39,10 +40,10 @@
* 鑾峰彇鐧诲綍鐢ㄦ埛瀵硅薄淇℃伅
* @return
*/
- protected Member getMemberResponse(){
+ protected WebLoginUserVO getMemberResponse(){
Object obj = this.getRequest().getAttribute(JwtTokenUtil.MEMBER_INFO);
if(obj != null){
- return JSONObject.parseObject(obj.toString(),Member.class);
+ return JSONObject.parseObject(obj.toString(), WebLoginUserVO.class);
}
return null;
}
diff --git a/server/web/src/main/java/com/doumee/api/web/LoginController.java b/server/web/src/main/java/com/doumee/api/web/LoginController.java
new file mode 100644
index 0000000..e4a8040
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/web/LoginController.java
@@ -0,0 +1,161 @@
+package com.doumee.api.web;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.annotation.LoginRequired;
+import com.doumee.config.jwt.JwtTokenUtil;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.LoginUserInfo;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.HttpsUtil;
+import com.doumee.dao.business.dto.LoginRequestNewParam;
+import com.doumee.dao.business.model.Category;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.system.model.SystemJob;
+import com.doumee.dao.vo.WebLoginUserVO;
+import com.doumee.service.business.CategoryService;
+import com.doumee.service.business.MemberService;
+import com.sun.deploy.net.HttpUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2025/07/09 12:00
+ */
+@Api(tags = "web鐧诲綍鐩稿叧鎺ュ彛")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/web/login")
+@Slf4j
+public class LoginController extends ApiController {
+
+ @Autowired
+ private CategoryService categoryService;
+
+ @Autowired
+ private JwtTokenUtil jwtTokenUtil;
+
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+
+ @Autowired
+ private MemberService memberService;
+
+
+ @ApiOperation("UK鍗曠偣鐧诲綍")
+ @GetMapping("/ukLogin")
+ public void ukLogin(String tick, Object obj, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ LoginRequestNewParam requestParam = new LoginRequestNewParam();
+ /*// UK_ERROR_URL = "http://u.zhibang.com/sso/web/token/error";
+ String errorUrl =systemDictDataBiz.queryByCode(Constants.ZBOM_PARAM,Constants.ZBOM_UK_ERROR_URL).getCode();
+ try {
+ log.error("璇锋眰鍙傛暟TICK鏈�鍘熷===========锛�" + tick);
+ JSONObject urlParams = new JSONObject();
+ log.info("璇锋眰鍙傛暟锛�" + JSON.toJSONString(urlParams));
+ //TICKET_LOGIN_TEST = "http://testsso.zhibang.com:8080/esc-idm/api/v1/getUserInfo";
+ //TICKET_LOGIN = "https://sso.zbom.com/esc-idm/api/v1/getUserInfo";
+ String url = systemDictDataBiz.queryByCode(Constants.ZBOM_PARAM,Constants.ZBOM_TICKET_LOGIN_URL).getCode() + "?tick=" + URLEncoder.encode(tick,Constants.UTF);
+ String post = HttpsUtil.get(url,true);
+ log.info("杩斿洖鍙傛暟锛�" + post);
+ JSONObject json = JSONObject.parseObject(post);
+ if (StringUtils.equals(json.getString("code"), "0")) {
+ JSONObject userInfo = json.getJSONObject("data");
+ requestParam = JSONObject.toJavaObject(userInfo, LoginRequestNewParam.class);
+ } else {
+ log.error("妗堜緥搴撶郴缁熷崟鐐圭櫥褰曞け璐� 閿欒鍘熷洜鑾峰彇tick澶辫触" + json.getString("message"));
+ response.sendRedirect(errorUrl + "?title=" + enCode("鐧婚檰閿欒") + "&msg="+ enCode(json.getString("message")));
+ return;
+ }
+ } catch (Exception e) {
+ log.error("ticket鎺ュ彛璇锋眰閿欒锛�" + e.getMessage());
+ response.sendRedirect(errorUrl + "?title=" + enCode("鐧婚檰閿欒") + "&msg=" + enCode("绯荤粺绻佸繖锛岃绋嶅悗閲嶈瘯~"));
+ return;
+ }*/
+ requestParam.setRediUrl("http://localhost:10087/#/login");
+ WebLoginUserVO loginUserVO = new WebLoginUserVO();
+ loginUserVO.setId("123");
+ loginUserVO.setRoleType("admin");
+ loginUserVO.setZhanqu("1");
+ String token = jwtTokenUtil.generateToken(loginUserVO);
+ response.sendRedirect(requestParam.getRediUrl()+"?token="+token);
+ }
+
+
+ private String enCode(String string) {
+ // TODO Auto-generated method stub
+ String str = "";
+ try {
+ str = java.net.URLEncoder.encode(string, "utf-8");
+ } catch (UnsupportedEncodingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return str;
+ }
+
+ @LoginRequired
+ @ApiOperation("鑰佸笀鍒嗛〉鏌ヨ")
+ @PostMapping("/memberPage")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<PageData<Member>> memberPage(@RequestBody PageWrap<Member> pageWrap) {
+ WebLoginUserVO loginUserVO = this.getMemberResponse();
+ pageWrap.getModel().setQueryUserRole(loginUserVO.getRoleType());
+ pageWrap.getModel().setQueryZQCode(loginUserVO.getZhanqu());
+ return ApiResponse.success(memberService.findPage(pageWrap));
+ }
+
+
+
+ @LoginRequired
+ @ApiOperation("鑰佸笀璇︽儏")
+ @GetMapping("/memberDetail")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<Member> memberPage(@RequestParam Integer id) {
+ WebLoginUserVO loginUserVO = this.getMemberResponse();
+ return ApiResponse.success(memberService.findDetailById(id,loginUserVO.getRoleType()));
+ }
+
+
+ @LoginRequired
+ @ApiOperation("鍒嗙被淇℃伅鏌ヨ")
+ @GetMapping("/categoryList")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<List<Category>> categoryList(@RequestParam Integer type) {
+ return ApiResponse.success(categoryService.getCategoryList(type));
+ }
+
+
+
+}
diff --git a/server/web/src/main/resources/application.yml b/server/web/src/main/resources/application.yml
index 28dea6f..04b0236 100644
--- a/server/web/src/main/resources/application.yml
+++ b/server/web/src/main/resources/application.yml
@@ -3,16 +3,12 @@
port: 10011
# 椤圭洰淇℃伅閰嶇疆
project:
- name: 杩戝揩
+ name: 蹇楅偊鐐瑰皢
version: 1.0.0
- # 鐜锛岀敓浜х幆澧僷roduction锛屽紑鍙戠幆澧僤evelopment
- env: development
- # 妯″紡锛宼esting娴嬭瘯妯″紡
- mode: testing
spring:
profiles:
- active: pro
+ active: dev
# JSON杩斿洖閰嶇疆
jackson:
# 榛樿鏃跺尯
--
Gitblit v1.9.3