Skip to content

Commit 163a7a9

Browse files
committed
[type:feat] Add dynamically scale admin module
1 parent 223c188 commit 163a7a9

File tree

10 files changed

+1335
-0
lines changed

10 files changed

+1335
-0
lines changed

src/common/menu.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ export const menuData = [
5252
path: "alert",
5353
locale: "SHENYU.MENU.SYSTEM.MANAGMENT.ALERT",
5454
},
55+
{
56+
name: getIntlContent("SHENYU.MENU.SYSTEM.MANAGMENT.SCALE"),
57+
path: "scale",
58+
locale: "SHENYU.MENU.SYSTEM.MANAGMENT.SCALE",
59+
},
5560
],
5661
},
5762
{

src/common/router.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,13 @@ export const getRouterData = (app) => {
140140
() => import("../routes/System/Alert"),
141141
),
142142
},
143+
"/system/scale": {
144+
component: dynamicWrapper(
145+
app,
146+
["scale"],
147+
() => import("../routes/System/Scale"),
148+
),
149+
},
143150
"/config/namespace": {
144151
component: dynamicWrapper(
145152
app,

src/locales/en-US.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
"SHENYU.MENU.SYSTEM.MANAGMENT.USER": "User",
7070
"SHENYU.MENU.SYSTEM.MANAGMENT.RESOURCE": "Resource",
7171
"SHENYU.MENU.SYSTEM.MANAGMENT.ALERT": "Alert",
72+
"SHENYU.MENU.SYSTEM.MANAGMENT.SCALE": "Scale",
7273
"SHENYU.MENU.SYSTEM.MANAGMENT.PLUGIN": "PluginTemplate",
7374
"SHENYU.MENU.SYSTEM.MANAGMENT.PLUGINHANDLE": "PluginHandle",
7475
"SHENYU.MENU.SYSTEM.MANAGMENT.AUTHEN": "Authentication",
@@ -197,6 +198,37 @@
197198
"SHENYU.SYSTEM.ALERT.LEVELS.SELECT": "Please select the match levels",
198199
"SHENYU.SYSTEM.ALERT.BUTTON.SEND_TEST": "Send alert test",
199200
"SHENYU.SYSTEM.ALERT.SEND_SUCCESS": "Send success",
201+
"SHENYU.SYSTEM.SCALE.TITLE": "Expansion & Contraction",
202+
"SHENYU.SYSTEM.SCALE.POLICY_TYPE": "Type",
203+
"SHENYU.SYSTEM.SCALE.POLICY_NUMBER": "Number",
204+
"SHENYU.SYSTEM.SCALE.BEGIN_TIME": "BeginTime",
205+
"SHENYU.SYSTEM.SCALE.END_TIME": "EndTime",
206+
"SHENYU.SYSTEM.SCALE.CONFIG_NAME": "ConfigName",
207+
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE": "ConfigType",
208+
"SHENYU.SYSTEM.SCALE.SORT": "Sort",
209+
"SHENYU.SYSTEM.SCALE.STATUS": "Status",
210+
"SHENYU.SYSTEM.SCALE.MINIMUM": "Minimum",
211+
"SHENYU.SYSTEM.SCALE.MAXIMUM": "Maximum",
212+
"SHENYU.SYSTEM.SCALE.NONE": "None",
213+
"SHENYU.SYSTEM.SCALE.SEARCH.CONFIG_NAME": "Configuration Name",
214+
"SHENYU.SYSTEM.SCALE.SEARCH.CONFIG_TYPE": "Configuration Type",
215+
"SHENYU.SYSTEM.SCALE.SEARCH.STATUS": "Status",
216+
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.SHENYU": "ShenYu",
217+
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.K8S": "k8s",
218+
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.OTHERS": "Others",
219+
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.MANUAL": "Manual",
220+
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.PERIOD": "Period",
221+
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.DYNAMIC": "Dynamic",
222+
"SHENYU.SYSTEM.SCALE.POLICY": "Scale Policy",
223+
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.INPUT": "Please input the scale policy",
224+
"SHENYU.SYSTEM.SCALE.SORT.INPUT": "Please input the sort",
225+
"SHENYU.SYSTEM.SCALE.POLICY_NUMBER.INPUT": "Please input the number",
226+
"SHENYU.SYSTEM.SCALE.BEGIN_TIME.INPUT": "Please select the begin time",
227+
"SHENYU.SYSTEM.SCALE.END_TIME.INPUT": "Please select the end time",
228+
"SHENYU.SYSTEM.SCALE.CONFIG_NAME.INPUT": "Please input the configuration name",
229+
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.INPUT": "Please select the configuration Type",
230+
"SHENYU.SYSTEM.SCALE.MINIMUM.INPUT": "Please input the minimum",
231+
"SHENYU.SYSTEM.SCALE.MAXIMUM.INPUT": "Please input the maximum",
200232
"SHENYU.BUTTON.RESOURCE.MENU.ADD": "AddMenu",
201233
"SHENYU.BUTTON.RESOURCE.MENU.DELETE": "DeleteMenu",
202234
"SHENYU.BUTTON.RESOURCE.MENU.EDIT": "EditMenu",

src/locales/zh-CN.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
"SHENYU.MENU.SYSTEM.MANAGMENT.USER": "用户管理",
7171
"SHENYU.MENU.SYSTEM.MANAGMENT.RESOURCE": "资源管理",
7272
"SHENYU.MENU.SYSTEM.MANAGMENT.ALERT": "告警管理",
73+
"SHENYU.MENU.SYSTEM.MANAGMENT.SCALE": "扩缩容管理",
7374
"SHENYU.MENU.SYSTEM.MANAGMENT.PLUGIN": "插件元数据管理",
7475
"SHENYU.MENU.SYSTEM.MANAGMENT.PLUGINHANDLE": "插件处理管理",
7576
"SHENYU.MENU.SYSTEM.MANAGMENT.AUTHEN": "认证管理",
@@ -198,6 +199,37 @@
198199
"SHENYU.SYSTEM.ALERT.LEVELS.SELECT": "请选择级别匹配",
199200
"SHENYU.SYSTEM.ALERT.BUTTON.SEND_TEST": "发送告警测试",
200201
"SHENYU.SYSTEM.ALERT.SEND_SUCCESS": "发送成功",
202+
"SHENYU.SYSTEM.SCALE.TITLE": "扩缩容",
203+
"SHENYU.SYSTEM.SCALE.POLICY_TYPE": "类型",
204+
"SHENYU.SYSTEM.SCALE.POLICY_NUMBER": "数字",
205+
"SHENYU.SYSTEM.SCALE.BEGIN_TIME": "起始时间",
206+
"SHENYU.SYSTEM.SCALE.END_TIME": "结束时间",
207+
"SHENYU.SYSTEM.SCALE.CONFIG_NAME": "配置名称",
208+
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE": "配置类型",
209+
"SHENYU.SYSTEM.SCALE.SORT": "排序",
210+
"SHENYU.SYSTEM.SCALE.STATUS": "状态",
211+
"SHENYU.SYSTEM.SCALE.MINIMUM": "最小值",
212+
"SHENYU.SYSTEM.SCALE.MAXIMUM": "最大值",
213+
"SHENYU.SYSTEM.SCALE.NONE": "",
214+
"SHENYU.SYSTEM.SCALE.SEARCH.CONFIG_NAME": "配置名称",
215+
"SHENYU.SYSTEM.SCALE.SEARCH.CONFIG_TYPE": "配置类型",
216+
"SHENYU.SYSTEM.SCALE.SEARCH.STATUS": "状态",
217+
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.SHENYU": "ShenYu",
218+
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.K8S": "k8s",
219+
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.OTHERS": "其他",
220+
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.MANUAL": "手动",
221+
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.PERIOD": "时间段",
222+
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.DYNAMIC": "动态",
223+
"SHENYU.SYSTEM.SCALE.POLICY": "扩缩容策略",
224+
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.INPUT": "请输入扩缩容策略",
225+
"SHENYU.SYSTEM.SCALE.SORT.INPUT": "请输入序号",
226+
"SHENYU.SYSTEM.SCALE.POLICY_NUMBER.INPUT": "请输入数字",
227+
"SHENYU.SYSTEM.SCALE.BEGIN_TIME.INPUT": "请选择起始时间",
228+
"SHENYU.SYSTEM.SCALE.END_TIME.INPUT": "请选择结束时间",
229+
"SHENYU.SYSTEM.SCALE.CONFIG_NAME.INPUT": "请输入配置名称",
230+
"SHENYU.SYSTEM.SCALE.CONFIG_TYPE.INPUT": "请选择配置类型",
231+
"SHENYU.SYSTEM.SCALE.MINIMUM.INPUT": "请输入最小值",
232+
"SHENYU.SYSTEM.SCALE.MAXIMUM.INPUT": "请输入最大值",
201233
"SHENYU.BUTTON.RESOURCE.MENU.ADD": "添加菜单",
202234
"SHENYU.BUTTON.RESOURCE.MENU.DELETE": "删除菜单",
203235
"SHENYU.BUTTON.RESOURCE.MENU.EDIT": "编辑菜单",

src/models/scale.js

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
import { message } from "antd";
19+
import { getIntlContent } from "../utils/IntlUtils";
20+
import {
21+
getAllScalePolicies,
22+
getScaleRules,
23+
getScalePolicy,
24+
updateScalePolicy,
25+
getScaleRule,
26+
addScaleRule,
27+
updateScaleRule,
28+
deleteScaleRules,
29+
} from "../services/api";
30+
31+
export default {
32+
namespace: "scale",
33+
34+
state: {
35+
ruleList: [],
36+
policyList: [],
37+
total: 0,
38+
},
39+
40+
effects: {
41+
*fetchPolicy(_, { call, put }) {
42+
const response = yield call(getAllScalePolicies);
43+
yield put({
44+
type: "savePolicy",
45+
payload: response.data.sort((a, b) => a.sort - b.sort),
46+
});
47+
},
48+
*fetchPolicyItem({ payload, callback }, { call }) {
49+
const json = yield call(getScalePolicy, payload);
50+
if (json.code === 200) {
51+
const scale = json.data;
52+
callback(scale);
53+
}
54+
},
55+
*updatePolicy(params, { call }) {
56+
const { payload, callback } = params;
57+
const json = yield call(updateScalePolicy, payload);
58+
if (json.code === 200) {
59+
message.success(
60+
getIntlContent("SHENYU.COMMON.RESPONSE.UPDATE.SUCCESS"),
61+
);
62+
callback();
63+
} else {
64+
message.warn(json.message);
65+
}
66+
},
67+
*fetchRule({ payload }, { call, put }) {
68+
const response = yield call(getScaleRules, payload);
69+
yield put({
70+
type: "saveRule",
71+
payload: response.data,
72+
});
73+
},
74+
*fetchRuleItem({ payload, callback }, { call }) {
75+
const json = yield call(getScaleRule, payload);
76+
if (json.code === 200) {
77+
const scale = json.data;
78+
callback(scale);
79+
}
80+
},
81+
*addRule(params, { call }) {
82+
const { payload, callback } = params;
83+
const json = yield call(addScaleRule, payload);
84+
if (json.code === 200) {
85+
message.success(getIntlContent("SHENYU.COMMON.RESPONSE.ADD.SUCCESS"));
86+
callback();
87+
} else {
88+
message.warn(json.message);
89+
}
90+
},
91+
*updateRule(params, { call }) {
92+
const { payload, callback } = params;
93+
const json = yield call(updateScaleRule, payload);
94+
if (json.code === 200) {
95+
message.success(
96+
getIntlContent("SHENYU.COMMON.RESPONSE.UPDATE.SUCCESS"),
97+
);
98+
callback();
99+
} else {
100+
message.warn(json.message);
101+
}
102+
},
103+
*deleteRules(params, { call, put }) {
104+
const { payload, fetchValue, callback } = params;
105+
const { list } = payload;
106+
const json = yield call(deleteScaleRules, { list });
107+
if (json.code === 200) {
108+
message.success(
109+
getIntlContent("SHENYU.COMMON.RESPONSE.DELETE.SUCCESS"),
110+
);
111+
callback();
112+
yield put({ type: "reload", fetchValue });
113+
} else {
114+
message.warn(json.message);
115+
}
116+
},
117+
*reload(params, { put }) {
118+
const { fetchValue } = params;
119+
const payload = fetchValue || {};
120+
yield put({ type: "fetchRule", payload });
121+
},
122+
},
123+
124+
reducers: {
125+
saveRule(state, { payload }) {
126+
return {
127+
...state,
128+
ruleList: payload.dataList,
129+
total: payload.page.totalCount,
130+
};
131+
},
132+
savePolicy(state, { payload }) {
133+
return {
134+
...state,
135+
policyList: payload,
136+
};
137+
},
138+
},
139+
};

0 commit comments

Comments
 (0)