From fad78641d6a5912f6b132520dd333622a00e9097 Mon Sep 17 00:00:00 2001 From: RockYang Date: Mon, 31 Jul 2023 06:56:28 +0800 Subject: [PATCH] add system config cache for AppServer object --- api/core/app_server.go | 16 +++++++++++++--- api/core/types/config.go | 19 +++++++++---------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/api/core/app_server.go b/api/core/app_server.go index d8f59dcd..3b4a7b3e 100644 --- a/api/core/app_server.go +++ b/api/core/app_server.go @@ -24,7 +24,9 @@ type AppServer struct { Config *types.AppConfig Engine *gin.Engine ChatContexts *types.LMap[string, []interface{}] // 聊天上下文 Map [chatId] => []Message - ChatConfig *types.ChatConfig // 聊天配置 + + ChatConfig *types.ChatConfig // chat config cache + SysConfig *types.SystemConfig // system config cache // 保存 Websocket 会话 UserId, 每个 UserId 只能连接一次 // 防止第三方直接连接 socket 调用 OpenAI API @@ -61,9 +63,8 @@ func (s *AppServer) Init(debug bool) { if debug { // 调试模式允许跨域请求 API s.Debug = debug logger.Info("Enabled debug mode") - s.Engine.Use(corsMiddleware()) } - + s.Engine.Use(corsMiddleware()) s.Engine.Use(sessionMiddleware(s.Config)) s.Engine.Use(authorizeMiddleware(s)) s.Engine.Use(errorHandler) @@ -82,6 +83,15 @@ func (s *AppServer) Run(db *gorm.DB) error { if err != nil { return err } + // load system configs + res = db.Where("marker", "system").First(&config) + if res.Error != nil { + return res.Error + } + err = utils.JsonDecode(config.Config, &s.SysConfig) + if err != nil { + return err + } logger.Infof("http://%s", s.Config.Listen) return s.Engine.Run(s.Config.Listen) } diff --git a/api/core/types/config.go b/api/core/types/config.go index 045ea758..b7393c0f 100644 --- a/api/core/types/config.go +++ b/api/core/types/config.go @@ -15,13 +15,19 @@ type AppConfig struct { StaticDir string // 静态资源目录 StaticUrl string // 静态资源 URL Redis RedisConfig // redis 连接信息 - ApiConfig ChatPlusApiConfig // chatplus api configs + ApiConfig ChatPlusApiConfig // ChatPlus API authorization configs AesEncryptKey string - SmsConfig AliYunSmsConfig // 短信发送配置 + SmsConfig AliYunSmsConfig // AliYun send message service config StartWechatBot bool // 是否启动微信机器人 EnabledMsgService bool // 是否启用短信服务 } +type ChatPlusApiConfig struct { + ApiURL string + AppId string + Token string +} + type AliYunSmsConfig struct { AccessKey string AccessSecret string @@ -76,7 +82,6 @@ type ChatConfig struct { EnableHistory bool `json:"enable_history"` // 是否允许保存聊天记录 ApiKey string `json:"api_key"` ContextDeep int `json:"context_deep"` // 上下文深度 - } type SystemConfig struct { @@ -86,10 +91,4 @@ type SystemConfig struct { UserInitCalls int `json:"user_init_calls"` // 新用户注册默认总送多少次调用 } -type ChatPlusApiConfig struct { - ApiURL string - AppId string - Token string -} - -const UserInitCalls = 1000 +const UserInitCalls = 20