Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ops
/
monitor-ui
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
bblu
8 years ago
Commit
4c58294ad90bfc36bf76f6032288b72c8eafa4e8
1 parent
b29404fb
限流调整前台开发
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
401 additions
and
70 deletions
monitor-ui-common/src/main/java/com/ui/contants/HttpUriContants.java
monitor-ui-ctrl/src/main/java/com/ui/ctrl/LimitSwitchCtrl.java
monitor-ui-web/src/main/webapp/jsp/switch/lbSwitch.jsp
monitor-ui-web/src/main/webapp/jsp/switch/limitSwitch.jsp
monitor-ui-web/src/main/webapp/jsp/switch/luaSwitch.jsp
monitor-ui-web/src/main/webapp/script/nginx_switch.js
monitor-ui-common/src/main/java/com/ui/contants/HttpUriContants.java
View file @
4c58294
...
...
@@ -114,6 +114,13 @@ public class HttpUriContants {
public
static
final
String
SWITCH_LB
=
"/lbswitch/switchConf"
;
/**
* lbswitch
*/
public
static
final
String
VIEW_LIMIT_CONF
=
"/limitswitch/viewConf"
;
public
static
final
String
VIEW_TOCHANGE_LIMIT_CONF
=
"/limitswitch/viewToChangeLimitConf"
;
public
static
final
String
SWITCH_LIMIT
=
"/limitswitch/switchConf"
;
/**
* dnspod
*/
public
static
final
String
VIEW_DNSPOD
=
"/dnspod/getDnsList"
;
...
...
monitor-ui-ctrl/src/main/java/com/ui/ctrl/LimitSwitchCtrl.java
View file @
4c58294
//package com.ui.ctrl;
//
//import com.ui.contants.HttpUriContants;
//import com.ui.http.HttpRestClient;
//import com.ui.model.BaseResponse;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.servlet.ModelAndView;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * @author zhengyouwei 2016年5月12日 下午1:49:55
// */
//@Controller
//@RequestMapping("luaswitch")
//public class LimitSwitchCtrl {
//
// private Logger logger = LoggerFactory.getLogger(getClass());
//
// @Autowired
// HttpRestClient httpRestClient;
//
// /**
// * 查看nginx配置
// *
// * @return 2016年5月12日下午1:49:48
// */
// @RequestMapping(value = "toLuaSwitch")
// public ModelAndView viewNginxConf() {
// String response = httpRestClient.defaultGet(HttpUriContants.VIEW_LUA_CONF, String.class,null );
// ModelAndView mdv = new ModelAndView("switch/luaSwitch");
// mdv.addObject("conf", response);
// return mdv;
// }
//
// /**
// * 修改配置
// *
// * @return 2016年5月12日下午1:49:48
// */
// @RequestMapping(value = "viewToChangeLuaConf")
// @ResponseBody
// public BaseResponse viewToChangeLuaConf(String cloudName) {
// Map map = new HashMap<>();
// map.put("cloudName",cloudName);
// return httpRestClient.defaultGet(HttpUriContants.VIEW_TOCHANGE_LUA_CONF, BaseResponse.class, map);
// }
//
// /**
// * 修改配置
// *
// * @return 2016年5月12日下午1:49:48
// */
// @RequestMapping(value = "switchConf")
// @ResponseBody
// public BaseResponse switchConf() {
// Map map = new HashMap<>();
// return httpRestClient.defaultGet(HttpUriContants.SWITCH_LUA, BaseResponse.class, map);
// }
//
//}
package
com
.
ui
.
ctrl
;
import
com.ui.contants.HttpUriContants
;
import
com.ui.http.HttpRestClient
;
import
com.ui.model.BaseResponse
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.ParameterizedTypeReference
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.servlet.ModelAndView
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 限流调整
*
* @author bblu 2016-10-26
*/
@Controller
@RequestMapping
(
"limitSwitch"
)
public
class
LimitSwitchCtrl
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
getClass
());
@Autowired
HttpRestClient
httpRestClient
;
/**
* 查看nginx配置
*
* @return 2016年5月12日下午1:49:48
*/
@RequestMapping
(
value
=
"toLimitSwitch"
)
public
ModelAndView
viewNginxConf
()
{
// BaseResponse<Map<String, Object>> response = httpRestClient.exchangeForget(HttpUriContants.VIEW_LIMIT_CONF, new ParameterizedTypeReference<BaseResponse<Map<String, Object>>>() {
// }, null);
// Map<String, Object> data = response.getData();
List
<
String
>
limitConfigList
=
new
ArrayList
<>();
limitConfigList
.
add
(
"[\"app.promotion.getCoupon\"]={2000,9999992}"
);
limitConfigList
.
add
(
"[\"h5.product.data\"]={2000,9999992}"
);
limitConfigList
.
add
(
"[\"app.product.data\"]={2000,9999992}"
);
List
<
String
>
limitServiceConfigList
=
new
ArrayList
<>();
limitServiceConfigList
.
add
(
"[\"/operations/api/v5/resource/get\"]={2000,9999992}"
);
Map
<
String
,
Object
>
data
=
new
HashMap
<>();
data
.
put
(
"open_limit_flow"
,
true
);
data
.
put
(
"limit_config"
,
limitConfigList
);
data
.
put
(
"limit_service_config"
,
limitServiceConfigList
);
ModelAndView
mdv
=
new
ModelAndView
(
"switch/limitSwitch"
);
mdv
.
addObject
(
"open_limit_flow"
,
data
.
get
(
"open_limit_flow"
));
mdv
.
addObject
(
"limit_config"
,
data
.
get
(
"limit_config"
));
mdv
.
addObject
(
"limit_service_config"
,
data
.
get
(
"limit_service_config"
));
return
mdv
;
}
/**
* 修改配置
*
* @return 2016年5月12日下午1:49:48
*/
@RequestMapping
(
value
=
"viewToChangeLimitConf"
)
@ResponseBody
public
BaseResponse
viewToChangeLimitConf
(
String
openLimitFlow
,
String
limitConfig
,
String
limitServiceConfig
)
{
Map
map
=
new
HashMap
<>();
map
.
put
(
"openLimitFlow"
,
openLimitFlow
);
map
.
put
(
"limitConfig"
,
limitConfig
);
map
.
put
(
"limitServiceConfig"
,
limitServiceConfig
);
return
httpRestClient
.
defaultGet
(
HttpUriContants
.
VIEW_TOCHANGE_LIMIT_CONF
,
BaseResponse
.
class
,
map
);
}
/**
* 修改配置
*
* @return 2016年5月12日下午1:49:48
*/
@RequestMapping
(
value
=
"switchConf"
)
@ResponseBody
public
BaseResponse
switchConf
()
{
Map
map
=
new
HashMap
<>();
return
httpRestClient
.
defaultGet
(
HttpUriContants
.
SWITCH_LIMIT
,
BaseResponse
.
class
,
map
);
}
}
...
...
monitor-ui-web/src/main/webapp/jsp/switch/lbSwitch.jsp
View file @
4c58294
...
...
@@ -168,7 +168,7 @@
}
}]
}).
find
(
".modal-body"
).
css
({
height
:
"
5
50px"
height
:
"
6
50px"
});
}
...
...
monitor-ui-web/src/main/webapp/jsp/switch/limitSwitch.jsp
0 → 100644
View file @
4c58294
<
%@page language="java" contentType="text/html;charset=utf-8" %>
<
%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<
%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.main.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/unicorn.grey.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/jquery-ui.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/bootstrap-responsive.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/uniform.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/select2.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/font-awesome.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/dnspod_switch.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace-rtl.min.css"
/>
<link
rel=
"stylesheet"
href=
"<%=basePath %>css/ace-skins.min.css"
/>
<script
src=
"<%=basePath %>js/jquery-2.1.4.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/typeahead-bs2.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/ace-elements.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/ace.min.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/layer/layer.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>/js/unicorn.js"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/moment-with-locales.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/datetimepicker/bootstrap-datetimepicker.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/global.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.pagination.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.table.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.dialog.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.panel.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.alerts.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.accordion.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.breadcrumb.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.validate.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.form.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/bootstrap-plugin/bootstrap.select.js"
charset=
"UTF-8"
type=
"text/javascript"
></script>
<script
src=
"<%=basePath %>js/jquery.toaster.js"
type=
"text/javascript"
></script>
<script
type=
"text/javascript"
>
var
contextPath
=
'<%=basePath %>'
;
</script>
<title>
YOHO!运维
</title>
</head>
<body
style=
"background-color: #444444;font-size: 14px"
>
<!-- 头部 -->
<div
id=
"head"
>
</div>
<!-- 右侧具体内容 -->
<div
id=
"content"
>
<div
id=
"breadcrumb"
>
<a
href=
"#"
title=
"Go to Home"
class=
"tip-bottom"
><em
class=
"icon-home"
></em>
Home
</a>
<a
href=
"#"
class=
"current"
>
限流调整
</a>
</div>
<div
class=
"row"
>
<div
class=
"col-xs-12"
>
<!-- PAGE CONTENT BEGINS -->
<div
class=
"row"
>
<div
class=
"col-xs-12 col-sm-12 widget-container-span"
>
<div
class=
"tabbable"
>
<div
class=
"tab-content"
>
<div
id=
"home"
>
<dl
id=
"dt-list-1"
class=
"dl-horizontal"
>
<dt>
open_limit_flow
</dt>
<dd
id=
"open_limit_flow"
>
${open_limit_flow}
</dd>
<br/>
<dt>
limit_config
</dt>
<dd
id=
"limit_config"
>
<c:forEach
items=
"${limit_config}"
var=
"map"
>
<ul>
<li>
${map}
</li>
</ul>
</c:forEach>
</dd>
<br/>
<dt>
limit_service_config
</dt>
<dd
id=
"limit_service_config"
>
<c:forEach
items=
"${limit_service_config}"
var=
"map"
>
<ul>
<li>
${map}
</li>
</ul>
</c:forEach>
</dd>
</dl>
<h3
class=
"header smaller red"
></h3>
<div
class=
"btn-group"
>
<button
class=
"btn btn-sm btn-success"
onclick=
"initSwitch()"
>
<em
class=
"icon-cogs bigger-110"
></em>
调整
</button>
</div>
</div>
</div>
</div>
</div>
<!-- /span -->
<div
class=
"vspace-xs-6"
></div>
</div>
<!-- /row -->
<script
type=
"text/javascript"
>
var
$path_assets
=
"assets"
;
//this will be used in gritter alerts containing images
</script>
<!-- PAGE CONTENT ENDS -->
</div>
<!-- /.col -->
</div>
<!-- /.row -->
</div>
<script
src=
"<%=basePath %>script/common/genarate_left_panel.js"
type=
"text/javascript"
></script>
<script
type=
"text/javascript"
>
var
dialog1
,
dialog2
,
dialog3
,
dialog4
;
function
initSwitch
()
{
var
html
=
"<div><dl class='dl-horizontal'>"
;
html
+=
"<dt>open_limit_flow</dt>"
;
html
+=
"<dd id='open_limit_flow_a'><input type='text' class='form-control' value='"
+
$
(
"#open_limit_flow"
).
text
()
+
"'></dd>"
;
html
+=
"<br />"
;
html
+=
"<dt>limit_config</dt>"
;
html
+=
"<dd id='limit_config_a'><ul>"
;
html
+=
"<li style='padding: 5px;'><button class='btn btn-sm btn-success' onclick='addLi(this)'><em class='icon-cogs bigger-110'></em>新增</button></li>"
$
(
"#limit_config"
).
find
(
"li"
).
each
(
function
()
{
html
+=
"<li style='padding: 5px;'><input type='text' class='form-control' style='width: 80%;' value='"
+
$
(
this
).
text
()
+
"'> "
;
html
+=
"<button class='btn btn-sm btn-success' onclick='delLi(this)'><em class='icon-cogs bigger-110'></em>删除</button>"
;
html
+=
"</li>"
;
});
html
+=
"</ul></dd>"
;
html
+=
"<br />"
;
html
+=
"<dt>limit_service_config</dt>"
;
html
+=
"<dd id='limit_service_config_a'><ul>"
;
html
+=
"<li style='padding: 5px;'><button class='btn btn-sm btn-success' onclick='addLi(this)'><em class='icon-cogs bigger-110'></em>新增</button></li>"
$
(
"#limit_service_config"
).
find
(
"li"
).
each
(
function
()
{
html
+=
"<li style='padding: 5px;'><input type='text' class='form-control' style='width: 80%;' value='"
+
$
(
this
).
text
()
+
"'> "
;
html
+=
"<button class='btn btn-sm btn-success' onclick='delLi(this)'><em class='icon-cogs bigger-110'></em>删除</button>"
;
html
+=
"</li>"
;
});
html
+=
"</ul></dd>"
;
html
+=
"</dl></div>"
;
dialog1
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog1
.
dialog
({
title
:
"限流调整"
,
backdrop
:
"static"
,
content
:
html
,
buttons
:
[{
text
:
"取消"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
$
(
dialog1
).
dialog
(
"hide"
);
}
},
{
text
:
"提交"
,
className
:
"btn-success"
,
onclick
:
function
()
{
var
toSendAjaxFlag
=
false
;
var
openLimitFlow
=
$
(
"#open_limit_flow_a"
).
find
(
"input"
).
val
();
var
limitConfig
=
[];
$
(
"#limit_config_a"
).
find
(
"input"
).
each
(
function
()
{
var
config
=
$
(
this
).
val
();
if
(
undefined
!==
config
&&
null
!==
config
&&
""
!==
config
)
{
limitConfig
.
push
(
config
);
}
});
var
limitServiceConfig
=
[];
$
(
"#limit_service_config_a"
).
find
(
"input"
).
each
(
function
()
{
var
config
=
$
(
this
).
val
();
if
(
undefined
!==
config
&&
null
!==
config
&&
""
!==
config
)
{
limitServiceConfig
.
push
(
config
);
}
});
if
(
undefined
===
openLimitFlow
||
null
===
openLimitFlow
||
""
===
openLimitFlow
)
{
prompt
(
"提示"
,
"限流开关不能为空!"
)
}
else
{
toSendAjaxFlag
=
true
;
}
if
(
toSendAjaxFlag
)
{
var
param
=
{
openLimitFlow
:
openLimitFlow
,
limitConfig
:
JSON
.
stringify
(
limitConfig
),
limitServiceConfig
:
JSON
.
stringify
(
limitServiceConfig
)
};
sendAjax
(
"post"
,
"viewToChangeLimitConf"
,
param
,
"text"
,
viewToChangeSuccess
,
errorFunc
);
}
}
}]
}).
find
(
".modal-body"
).
css
({
height
:
"650px"
});
}
function
viewToChangeSuccess
(
resp
)
{
$
(
dialog1
).
dialog
(
"hide"
);
var
data
=
JSON
.
parse
(
resp
);
dialog2
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog2
.
dialog
({
title
:
"切换结果"
,
backdrop
:
"static"
,
content
:
"<pre>"
+
data
.
data
+
"</pre>"
,
buttons
:
[{
text
:
"否"
,
className
:
"btn-danger"
,
onclick
:
function
()
{
$
(
dialog2
).
dialog
(
"hide"
);
}
},
{
text
:
"确定"
,
className
:
"btn-success"
,
onclick
:
function
()
{
sendAjax
(
"post"
,
"switchConf"
,
{},
"text"
,
switchSuccess
,
errorFunc
);
$
(
dialog2
).
dialog
(
"hide"
);
toWait
();
}
}]
}).
find
(
".modal-body"
).
css
({
height
:
"650px"
});
}
function
switchSuccess
()
{
window
.
location
.
href
=
getUrlBasePath
()
+
"/limitSwitch/toLimitSwitch"
;
}
function
addLi
(
btn
)
{
var
html
=
"<li style='padding: 5px;'><input type='text' class='form-control' style='width: 80%;'> "
;
html
+=
"<button class='btn btn-sm btn-success' onclick='delLi(this)'><em class='icon-cogs bigger-110'></em>删除</button>"
;
html
+=
"</li>"
;
$
(
btn
).
parent
().
parent
().
append
(
html
);
}
function
delLi
(
btn
)
{
$
(
btn
).
parent
().
remove
();
}
function
sendAjax
(
type
,
url
,
data
,
dataType
,
success
,
error
)
{
$
.
ajax
({
type
:
type
,
url
:
url
,
data
:
data
,
dataType
:
dataType
,
success
:
success
,
error
:
error
});
}
function
errorFunc
()
{
layer
.
msg
(
"Token异常"
,
{
icon
:
2
});
}
function
toWait
()
{
dialog4
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog4
.
dialog
({
title
:
"提示"
,
backdrop
:
"static"
,
content
:
"正在切换,请稍后..."
});
}
/**
* 提示函数
* @param title
* @param content
*/
function
prompt
(
title
,
content
)
{
dialog3
=
$
(
"<div>"
).
appendTo
(
$
(
"body"
));
dialog3
.
dialog
({
title
:
title
,
backdrop
:
"static"
,
content
:
content
,
buttons
:
[{
text
:
"确定"
,
className
:
"btn-success"
,
onclick
:
function
()
{
$
(
dialog3
).
dialog
(
"hide"
);
}
}]
});
}
</script>
</body>
</html>
...
...
monitor-ui-web/src/main/webapp/jsp/switch/luaSwitch.jsp
View file @
4c58294
...
...
@@ -168,7 +168,7 @@
}
}]
}).
find
(
".modal-body"
).
css
({
height
:
"
5
50px"
height
:
"
6
50px"
});
}
...
...
monitor-ui-web/src/main/webapp/script/nginx_switch.js
View file @
4c58294
...
...
@@ -64,7 +64,7 @@ function viewToChangeSuccess(resp) {
}
}]
}).
find
(
".modal-body"
).
css
({
height
:
"
5
50px"
height
:
"
6
50px"
});
}
...
...
Please
register
or
login
to post a comment