From e7ac26ff5aa718900e7a4f14b69479c3983b9e52 Mon Sep 17 00:00:00 2001 From: RockYang Date: Mon, 31 Jul 2023 08:13:20 +0800 Subject: [PATCH] feat: update system config cache for AppServer when updating system config in admin console --- api/core/app_server.go | 11 ++++++----- api/handler/admin/config_handler.go | 10 ++++++++++ api/handler/user_handler.go | 11 +---------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/api/core/app_server.go b/api/core/app_server.go index 3b4a7b3e..15450b89 100644 --- a/api/core/app_server.go +++ b/api/core/app_server.go @@ -74,21 +74,22 @@ func (s *AppServer) Init(debug bool) { func (s *AppServer) Run(db *gorm.DB) error { // load chat config from database - var config model.Config - res := db.Where("marker", "chat").First(&config) + var chatConfig model.Config + res := db.Where("marker", "chat").First(&chatConfig) if res.Error != nil { return res.Error } - err := utils.JsonDecode(config.Config, &s.ChatConfig) + err := utils.JsonDecode(chatConfig.Config, &s.ChatConfig) if err != nil { return err } // load system configs - res = db.Where("marker", "system").First(&config) + var sysConfig model.Config + res = db.Where("marker", "system").First(&sysConfig) if res.Error != nil { return res.Error } - err = utils.JsonDecode(config.Config, &s.SysConfig) + err = utils.JsonDecode(sysConfig.Config, &s.SysConfig) if err != nil { return err } diff --git a/api/handler/admin/config_handler.go b/api/handler/admin/config_handler.go index 1ddf837c..3e36e56d 100644 --- a/api/handler/admin/config_handler.go +++ b/api/handler/admin/config_handler.go @@ -48,6 +48,16 @@ func (h *ConfigHandler) Update(c *gin.Context) { resp.ERROR(c, res.Error.Error()) return } + + // update config cache for AppServer + var cfg model.Config + h.db.Where("marker", data.Key).First(&cfg) + err := utils.JsonDecode(cfg.Config, &h.App.ChatConfig) + if err != nil { + resp.ERROR(c, "Failed to update config cache: "+err.Error()) + return + } + logger.Infof("Update AppServer's config successfully: %v", config.Config) } resp.SUCCESS(c, config) diff --git a/api/handler/user_handler.go b/api/handler/user_handler.go index 312ff270..215431cb 100644 --- a/api/handler/user_handler.go +++ b/api/handler/user_handler.go @@ -108,16 +108,7 @@ func (h *UserHandler) Register(c *gin.Context) { Model: h.App.ChatConfig.Model, ApiKey: "", }), - } - // 初始化调用次数 - var cfg model.Config - h.db.Where("marker = ?", "system").First(&cfg) - var config types.SystemConfig - err := utils.JsonDecode(cfg.Config, &config) - if err != nil || config.UserInitCalls <= 0 { - user.Calls = types.UserInitCalls - } else { - user.Calls = config.UserInitCalls + Calls: h.App.SysConfig.UserInitCalls, } res = h.db.Create(&user) if res.Error != nil {