xqx333 пре 1 година
родитељ
комит
173c9bc669
1 измењених фајлова са 13 додато и 0 уклоњено
  1. 13 0
      model/channel.go

+ 13 - 0
model/channel.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"one-api/common"
 	"strings"
+	"sync"
 
 	"gorm.io/gorm"
 )
@@ -290,7 +291,19 @@ func (channel *Channel) Delete() error {
 	return err
 }
 
+var channelStatusLock sync.Mutex
 func UpdateChannelStatusById(id int, status int, reason string) {
+	if (common.MemoryCacheEnabled) {
+		channelStatusLock.Lock()
+		channelCache, err := CacheGetChannel(id)
+		// 如果缓存渠道不存在或渠道已是目标状态,直接返回
+		if err != nil || channelCache.Status == status {
+			channelStatusLock.Unlock()
+			return
+		}
+		CacheUpdateChannelStatus(id, status)
+		channelStatusLock.Unlock()
+	}
 	err := UpdateAbilityStatus(id, status == common.ChannelStatusEnabled)
 	if err != nil {
 		common.SysError("failed to update ability status: " + err.Error())