This is an automated email from the ASF dual-hosted git repository.
hefengen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu-dashboard.git
The following commit(s) were added to refs/heads/master by this push:
new 062e43ec save plugin jar to db (#271)
062e43ec is described below
commit 062e43eca428d0104ffd4cdce320cb5fa4263731
Author: Misaya295 <[email protected]>
AuthorDate: Mon Mar 6 22:39:14 2023 +0800
save plugin jar to db (#271)
---
src/locales/en-US.json | 1 +
src/locales/zh-CN.json | 1 +
src/routes/System/Plugin/AddModal.js | 42 ++++++++++++++++++++++++++++++++----
src/routes/System/Plugin/index.js | 10 +++++----
src/services/api.js | 29 +++++++++++++++----------
5 files changed, 64 insertions(+), 19 deletions(-)
diff --git a/src/locales/en-US.json b/src/locales/en-US.json
index a18b6eb1..6e54075c 100644
--- a/src/locales/en-US.json
+++ b/src/locales/en-US.json
@@ -64,6 +64,7 @@
"SHENYU.MENU.PLUGIN.SPRINGCLOUD": "springCloud",
"SHENYU.MENU.PLUGIN.SENTINEL": "sentinel",
"SHENYU.MENU.PLUGIN.RESILIENCE4J": "resilience4j",
+ "SHENYU.MENU.PLUGIN.JAR": "pluginJar",
"SHENYU.MENU.SYSTEM.MANAGMENT": "System Manage",
"SHENYU.MENU.SYSTEM.MANAGMENT.ROLE": "Role",
"SHENYU.MENU.SYSTEM.MANAGMENT.USER": "User",
diff --git a/src/locales/zh-CN.json b/src/locales/zh-CN.json
index 84c2da21..caff4038 100644
--- a/src/locales/zh-CN.json
+++ b/src/locales/zh-CN.json
@@ -252,6 +252,7 @@
"SHENYU.BUTTON.PLUGIN.SELECTOR.EDIT": "编辑选择器",
"SHENYU.BUTTON.PLUGIN.SELECTOR.QUERY": "查询选择器",
"SHENYU.BUTTON.PLUGIN.SYNCHRONIZE": "同步数据",
+ "SHENYU.MENU.PLUGIN.JAR": "插件jar包",
"SHENYU.BUTTON.SYSTEM.ADD": "添加",
"SHENYU.BUTTON.SYSTEM.LIST": "查询",
"SHENYU.BUTTON.SYSTEM.DELETE": "删除",
diff --git a/src/routes/System/Plugin/AddModal.js
b/src/routes/System/Plugin/AddModal.js
index af3bc3dd..aa3ec98f 100644
--- a/src/routes/System/Plugin/AddModal.js
+++ b/src/routes/System/Plugin/AddModal.js
@@ -16,13 +16,27 @@
*/
import React, { Component, Fragment } from "react";
-import { Modal, Form, Switch, Input, Select, Divider, InputNumber } from
"antd";
+import { Modal, Form, Switch, Input, Select, Divider, InputNumber, Button}
from "antd";
import { connect } from "dva";
import { getIntlContent } from "../../../utils/IntlUtils";
const { Option } = Select;
const FormItem = Form.Item;
+const ChooseFile = ({onChange, file})=>{
+ const handleFileInput = (e) => {
+ onChange(e.target.files[0]);
+ };
+ return (
+ <>
+ <Button onClick={()=>{document.getElementById("file").click()}
+ }
+ >Upload
+ </Button> {file?.name}
+ <input type="file" onChange={handleFileInput} style={{display:'none'}}
id="file" />
+ </>
+)
+}
@connect(({ global }) => ({
platform: global.platform
}))
@@ -32,7 +46,7 @@ class AddModal extends Component {
e.preventDefault();
form.validateFieldsAndScroll((err, values) => {
if (!err) {
- let { name, role, enabled, config, sort } = values;
+ let { name, role, enabled, config, sort, file } = values;
if (data && data.length > 0) {
config = {};
data.forEach(item => {
@@ -46,7 +60,7 @@ class AddModal extends Component {
config = "";
}
}
- handleOk({ name, role, enabled, config, id, sort });
+ handleOk({ name, role, enabled, config, id, sort, file });
}
});
};
@@ -61,7 +75,8 @@ class AddModal extends Component {
role,
id,
data,
- sort
+ sort,
+ file
} = this.props;
let disable = id !== undefined;
const { getFieldDecorator } = form;
@@ -240,6 +255,25 @@ class AddModal extends Component {
/>
)}
</FormItem>
+
+ <FormItem
+ {...formItemLayout}
+ label={getIntlContent("SHENYU.MENU.PLUGIN.JAR")}
+ >
+ {getFieldDecorator("file", {
+ rules: [
+ {
+ required: false,
+ }
+ ],
+ initialValue: file,
+ valuePropName: "file"
+ })( <ChooseFile />)
+
+ }
+ </FormItem>
+
+
<FormItem
{...formItemLayout}
label={getIntlContent("SHENYU.SYSTEM.STATUS")}
diff --git a/src/routes/System/Plugin/index.js
b/src/routes/System/Plugin/index.js
index da2b68cf..95918c95 100644
--- a/src/routes/System/Plugin/index.js
+++ b/src/routes/System/Plugin/index.js
@@ -149,7 +149,7 @@ export default class Plugin extends Component {
{...plugin}
{...pluginConfigList}
handleOk={values => {
- const { name, enabled, id, role, config, sort } = values;
+ const { name, enabled, id, role, config, sort, file } =
values;
const enabledStr = enabled?'1':'0';
dispatch({
type: "plugin/update",
@@ -159,7 +159,8 @@ export default class Plugin extends Component {
name,
enabled,
id,
- sort
+ sort,
+ file
},
fetchValue: {
name: pluginName,
@@ -254,7 +255,7 @@ export default class Plugin extends Component {
disabled={false}
handleOk={values => {
const { dispatch } = this.props;
- const { name, enabled, role, config, sort } = values;
+ const { name, enabled, role, config, sort, file } = values;
dispatch({
type: "plugin/add",
payload: {
@@ -262,7 +263,8 @@ export default class Plugin extends Component {
config,
role,
enabled,
- sort
+ sort,
+ file
},
fetchValue: {
name: pluginName,
diff --git a/src/services/api.js b/src/services/api.js
index 726a4148..d823fa55 100644
--- a/src/services/api.js
+++ b/src/services/api.js
@@ -164,11 +164,16 @@ export async function findUser(params) {
/* addPlugin */
export async function addPlugin(params) {
+ const formData = new FormData;
+ formData.append("name",params.name);
+ if(params.config) formData.append("config",params.config);
+ formData.append("sort",params.sort);
+ formData.append("role",params.role);
+ formData.append("enabled",params.enabled);
+ if(params.file) formData.append("file",params.file);
return request(`${baseUrl}/plugin`, {
method: `POST`,
- body: {
- ...params
- }
+ body: formData,
});
}
@@ -182,16 +187,18 @@ export async function deletePlugin(params) {
/* updatePlugin */
export async function updatePlugin(params) {
+ const formData = new FormData;
+ formData.append("ids",params.id);
+ formData.append("name",params.name);
+ if(params.config) formData.append("config",params.config);
+ formData.append("sort",params.sort);
+ formData.append("role",params.role);
+ formData.append("enabled",params.enabled);
+ if(params.file) formData.append("file",params.file);
return request(`${baseUrl}/plugin/${params.id}`, {
+
method: `PUT`,
- body: {
- ids: [params.id],
- name: params.name,
- role: params.role,
- config: params.config,
- enabled: params.enabled,
- sort: params.sort
- }
+ body: formData
});
}