From b6b8cd3ed293dada67f09a600b307f7ad9c2a975 Mon Sep 17 00:00:00 2001
From: naiba <hi@nai.ba>
Date: Wed, 21 Sep 2022 10:01:41 +0800
Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D=E6=9B=B4?=
 =?UTF-8?q?=E6=96=B0=20tag=20=E7=BB=91=E5=AE=9A=E5=85=B3=E7=B3=BB=E5=AF=BC?=
 =?UTF-8?q?=E8=87=B4=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 cmd/dashboard/controller/member_api.go | 38 ++++++++++++++------------
 1 file changed, 21 insertions(+), 17 deletions(-)

diff --git a/cmd/dashboard/controller/member_api.go b/cmd/dashboard/controller/member_api.go
index aa52b01..8881c38 100644
--- a/cmd/dashboard/controller/member_api.go
+++ b/cmd/dashboard/controller/member_api.go
@@ -348,23 +348,25 @@ func (ma *memberAPI) addOrEditServer(c *gin.Context) {
 			delete(singleton.SecretToID, singleton.ServerList[s.ID].Secret)
 		}
 		// 如果修改了Tag
-		if s.Tag != singleton.ServerList[s.ID].Tag {
+		oldTag := singleton.ServerList[s.ID].Tag
+		newTag := s.Tag
+		if newTag != oldTag {
 			index := -1
-			for i := 0; i < len(singleton.ServerTagToIDList[s.Tag]); i++ {
-				if singleton.ServerTagToIDList[s.Tag][i] == s.ID {
+			for i := 0; i < len(singleton.ServerTagToIDList[oldTag]); i++ {
+				if singleton.ServerTagToIDList[oldTag][i] == s.ID {
 					index = i
 					break
 				}
 			}
 			if index > -1 {
 				// 删除旧 Tag-ID 绑定关系
-				singleton.ServerTagToIDList[singleton.ServerList[s.ID].Tag] = append(singleton.ServerTagToIDList[singleton.ServerList[s.ID].Tag][:index], singleton.ServerTagToIDList[singleton.ServerList[s.ID].Tag][index+1:]...)
+				singleton.ServerTagToIDList[oldTag] = append(singleton.ServerTagToIDList[oldTag][:index], singleton.ServerTagToIDList[oldTag][index+1:]...)
+				if len(singleton.ServerTagToIDList[oldTag]) == 0 {
+					delete(singleton.ServerTagToIDList, oldTag)
+				}
 			}
 			// 设置新的 Tag-ID 绑定关系
-			singleton.ServerTagToIDList[s.Tag] = append(singleton.ServerTagToIDList[s.Tag], s.ID)
-			if len(singleton.ServerTagToIDList[s.Tag]) == 0 {
-				delete(singleton.ServerTagToIDList, s.Tag)
-			}
+			singleton.ServerTagToIDList[newTag] = append(singleton.ServerTagToIDList[newTag], s.ID)
 		}
 		singleton.ServerList[s.ID] = &s
 		singleton.ServerLock.Unlock()
@@ -575,24 +577,26 @@ func (ma *memberAPI) batchUpdateServerGroup(c *gin.Context) {
 		var s model.Server
 		copier.Copy(&s, singleton.ServerList[serverId])
 		s.Tag = req.Group
-		// 如果修改了Tag
-		if s.Tag != singleton.ServerList[s.ID].Tag {
+		// 如果修改了Ta
+		oldTag := singleton.ServerList[serverId].Tag
+		newTag := s.Tag
+		if newTag != oldTag {
 			index := -1
-			for i := 0; i < len(singleton.ServerTagToIDList[s.Tag]); i++ {
-				if singleton.ServerTagToIDList[s.Tag][i] == s.ID {
+			for i := 0; i < len(singleton.ServerTagToIDList[oldTag]); i++ {
+				if singleton.ServerTagToIDList[oldTag][i] == s.ID {
 					index = i
 					break
 				}
 			}
 			if index > -1 {
 				// 删除旧 Tag-ID 绑定关系
-				singleton.ServerTagToIDList[singleton.ServerList[s.ID].Tag] = append(singleton.ServerTagToIDList[singleton.ServerList[s.ID].Tag][:index], singleton.ServerTagToIDList[singleton.ServerList[s.ID].Tag][index+1:]...)
+				singleton.ServerTagToIDList[oldTag] = append(singleton.ServerTagToIDList[oldTag][:index], singleton.ServerTagToIDList[oldTag][index+1:]...)
+				if len(singleton.ServerTagToIDList[oldTag]) == 0 {
+					delete(singleton.ServerTagToIDList, oldTag)
+				}
 			}
 			// 设置新的 Tag-ID 绑定关系
-			singleton.ServerTagToIDList[s.Tag] = append(singleton.ServerTagToIDList[s.Tag], s.ID)
-			if len(singleton.ServerTagToIDList[s.Tag]) == 0 {
-				delete(singleton.ServerTagToIDList, s.Tag)
-			}
+			singleton.ServerTagToIDList[newTag] = append(singleton.ServerTagToIDList[newTag], s.ID)
 		}
 		singleton.ServerList[s.ID] = &s
 	}