From 0773dbaa28dc5a282f1bf82e2b6a1d10cc2816fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Tue, 19 Dec 2023 14:56:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BD=91=E7=AB=99=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=AD=E6=98=BE=E7=A4=BA=E6=B5=81=E9=87=8F=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=99=90=E5=88=B6=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../default/servers/server/settings/index.go | 42 ++++++++++++------- .../server-traffic-limit-status-viewer.js | 32 ++++++++++++++ .../servers/server/settings/index.html | 7 ++++ 3 files changed, 67 insertions(+), 14 deletions(-) create mode 100644 web/public/js/components/server/server-traffic-limit-status-viewer.js diff --git a/internal/web/actions/default/servers/server/settings/index.go b/internal/web/actions/default/servers/server/settings/index.go index d40a8a36..1a3b21e6 100644 --- a/internal/web/actions/default/servers/server/settings/index.go +++ b/internal/web/actions/default/servers/server/settings/index.go @@ -1,6 +1,7 @@ package settings import ( + "encoding/json" "errors" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" @@ -32,7 +33,7 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } - clusterMaps := []maps.Map{} + var clusterMaps = []maps.Map{} for _, cluster := range resp.NodeClusters { clusterMaps = append(clusterMaps, maps.Map{ "id": cluster.Id, @@ -50,7 +51,7 @@ func (this *IndexAction) RunGet(params struct { this.ErrorPage(err) return } - server := serverResp.Server + var server = serverResp.Server if server == nil { this.NotFound("server", params.ServerId) return @@ -71,7 +72,7 @@ func (this *IndexAction) RunGet(params struct { this.initUserPlan(server) // 集群 - clusterId := int64(0) + var clusterId = int64(0) this.Data["clusterName"] = "" if server.NodeCluster != nil { clusterId = server.NodeCluster.Id @@ -79,7 +80,7 @@ func (this *IndexAction) RunGet(params struct { } // 分组 - groupMaps := []maps.Map{} + var groupMaps = []maps.Map{} if len(server.ServerGroups) > 0 { for _, group := range server.ServerGroups { groupMaps = append(groupMaps, maps.Map{ @@ -89,23 +90,36 @@ func (this *IndexAction) RunGet(params struct { } } - this.Data["server"] = maps.Map{ - "id": server.Id, - "clusterId": clusterId, - "type": server.Type, - "name": server.Name, - "description": server.Description, - "isOn": server.IsOn, - "groups": groupMaps, + // 域名和限流状态 + var trafficLimitStatus *serverconfigs.TrafficLimitStatus + if len(server.Config) > 0 { + var serverConfig = &serverconfigs.ServerConfig{} + err = json.Unmarshal(server.Config, serverConfig) + if err == nil { + if serverConfig.TrafficLimitStatus != nil && serverConfig.TrafficLimitStatus.IsValid() { + trafficLimitStatus = serverConfig.TrafficLimitStatus + } + } } - serverType := serverconfigs.FindServerType(server.Type) + this.Data["server"] = maps.Map{ + "id": server.Id, + "clusterId": clusterId, + "type": server.Type, + "name": server.Name, + "description": server.Description, + "isOn": server.IsOn, + "groups": groupMaps, + "trafficLimitStatus": trafficLimitStatus, + } + + var serverType = serverconfigs.FindServerType(server.Type) if serverType == nil { this.ErrorPage(errors.New("invalid server type '" + server.Type + "'")) return } - typeName := serverType.GetString("name") + var typeName = serverType.GetString("name") this.Data["typeName"] = typeName // 记录最近使用 diff --git a/web/public/js/components/server/server-traffic-limit-status-viewer.js b/web/public/js/components/server/server-traffic-limit-status-viewer.js new file mode 100644 index 00000000..f491cbcc --- /dev/null +++ b/web/public/js/components/server/server-traffic-limit-status-viewer.js @@ -0,0 +1,32 @@ +Vue.component("server-traffic-limit-status-viewer", { + props: ["value"], + data: function () { + let targetTypeName = "流量" + if (this.value != null) { + targetTypeName = this.targetTypeToName(this.value.targetType) + } + + return { + status: this.value, + targetTypeName: targetTypeName + } + }, + methods: { + targetTypeToName: function (targetType) { + switch (targetType) { + case "traffic": + return "流量" + case "request": + return "请求数" + case "websocketConnections": + return "Websocket连接数" + } + return "流量" + } + }, + template: ` + 已达到套餐当日{{targetTypeName}}限制 + 已达到套餐当月{{targetTypeName}}限制 + 已达到套餐总体{{targetTypeName}}限制 +` +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/index.html b/web/views/@default/servers/server/settings/index.html index 1b85cf80..d98e38b9 100644 --- a/web/views/@default/servers/server/settings/index.html +++ b/web/views/@default/servers/server/settings/index.html @@ -3,6 +3,13 @@ {$template "/left_menu_with_menu"}
+
+
+ + + +
+