mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 13:10:26 +08:00 
			
		
		
		
	在网站设置中显示流量相关限制状态
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
				
			|||||||
package settings
 | 
					package settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
						"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
 | 
				
			||||||
@@ -32,7 +33,7 @@ func (this *IndexAction) RunGet(params struct {
 | 
				
			|||||||
		this.ErrorPage(err)
 | 
							this.ErrorPage(err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	clusterMaps := []maps.Map{}
 | 
						var clusterMaps = []maps.Map{}
 | 
				
			||||||
	for _, cluster := range resp.NodeClusters {
 | 
						for _, cluster := range resp.NodeClusters {
 | 
				
			||||||
		clusterMaps = append(clusterMaps, maps.Map{
 | 
							clusterMaps = append(clusterMaps, maps.Map{
 | 
				
			||||||
			"id":   cluster.Id,
 | 
								"id":   cluster.Id,
 | 
				
			||||||
@@ -50,7 +51,7 @@ func (this *IndexAction) RunGet(params struct {
 | 
				
			|||||||
		this.ErrorPage(err)
 | 
							this.ErrorPage(err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	server := serverResp.Server
 | 
						var server = serverResp.Server
 | 
				
			||||||
	if server == nil {
 | 
						if server == nil {
 | 
				
			||||||
		this.NotFound("server", params.ServerId)
 | 
							this.NotFound("server", params.ServerId)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
@@ -71,7 +72,7 @@ func (this *IndexAction) RunGet(params struct {
 | 
				
			|||||||
	this.initUserPlan(server)
 | 
						this.initUserPlan(server)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 集群
 | 
						// 集群
 | 
				
			||||||
	clusterId := int64(0)
 | 
						var clusterId = int64(0)
 | 
				
			||||||
	this.Data["clusterName"] = ""
 | 
						this.Data["clusterName"] = ""
 | 
				
			||||||
	if server.NodeCluster != nil {
 | 
						if server.NodeCluster != nil {
 | 
				
			||||||
		clusterId = server.NodeCluster.Id
 | 
							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 {
 | 
						if len(server.ServerGroups) > 0 {
 | 
				
			||||||
		for _, group := range server.ServerGroups {
 | 
							for _, group := range server.ServerGroups {
 | 
				
			||||||
			groupMaps = append(groupMaps, maps.Map{
 | 
								groupMaps = append(groupMaps, maps.Map{
 | 
				
			||||||
@@ -89,6 +90,18 @@ func (this *IndexAction) RunGet(params struct {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 域名和限流状态
 | 
				
			||||||
 | 
						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
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	this.Data["server"] = maps.Map{
 | 
						this.Data["server"] = maps.Map{
 | 
				
			||||||
		"id":                 server.Id,
 | 
							"id":                 server.Id,
 | 
				
			||||||
		"clusterId":          clusterId,
 | 
							"clusterId":          clusterId,
 | 
				
			||||||
@@ -97,15 +110,16 @@ func (this *IndexAction) RunGet(params struct {
 | 
				
			|||||||
		"description":        server.Description,
 | 
							"description":        server.Description,
 | 
				
			||||||
		"isOn":               server.IsOn,
 | 
							"isOn":               server.IsOn,
 | 
				
			||||||
		"groups":             groupMaps,
 | 
							"groups":             groupMaps,
 | 
				
			||||||
 | 
							"trafficLimitStatus": trafficLimitStatus,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	serverType := serverconfigs.FindServerType(server.Type)
 | 
						var serverType = serverconfigs.FindServerType(server.Type)
 | 
				
			||||||
	if serverType == nil {
 | 
						if serverType == nil {
 | 
				
			||||||
		this.ErrorPage(errors.New("invalid server type '" + server.Type + "'"))
 | 
							this.ErrorPage(errors.New("invalid server type '" + server.Type + "'"))
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	typeName := serverType.GetString("name")
 | 
						var typeName = serverType.GetString("name")
 | 
				
			||||||
	this.Data["typeName"] = typeName
 | 
						this.Data["typeName"] = typeName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 记录最近使用
 | 
						// 记录最近使用
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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: `<span v-if="status != null">
 | 
				
			||||||
 | 
						<span v-if="status.dateType == 'day'" class="small red">已达到<span v-if="status.planId > 0">套餐</span>当日{{targetTypeName}}限制</span>
 | 
				
			||||||
 | 
						<span v-if="status.dateType == 'month'" class="small red">已达到<span v-if="status.planId > 0">套餐</span>当月{{targetTypeName}}限制</span>
 | 
				
			||||||
 | 
						<span v-if="status.dateType == 'total'" class="small red">已达到<span v-if="status.planId > 0">套餐</span>总体{{targetTypeName}}限制</span>
 | 
				
			||||||
 | 
					</span>`
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
@@ -3,6 +3,13 @@
 | 
				
			|||||||
{$template "/left_menu_with_menu"}
 | 
					{$template "/left_menu_with_menu"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<div class="right-box with-menu">
 | 
					<div class="right-box with-menu">
 | 
				
			||||||
 | 
					    <div v-if="server.trafficLimitStatus != null">
 | 
				
			||||||
 | 
					        <div class="ui margin"></div>
 | 
				
			||||||
 | 
					        <warning-message>
 | 
				
			||||||
 | 
					            <server-traffic-limit-status-viewer v-model="server.trafficLimitStatus"></server-traffic-limit-status-viewer>
 | 
				
			||||||
 | 
					        </warning-message>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<form method="post" class="ui form" data-tea-action="$" data-tea-success="success">
 | 
						<form method="post" class="ui form" data-tea-action="$" data-tea-success="success">
 | 
				
			||||||
		<input type="hidden" name="serverId" :value="server.id"/>
 | 
							<input type="hidden" name="serverId" :value="server.id"/>
 | 
				
			||||||
		<table class="ui table selectable definition">
 | 
							<table class="ui table selectable definition">
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user