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
   });
 }
 

Reply via email to