diff --git a/internal/database/migrate.go b/internal/database/migrate.go index be5144f..a03a02e 100644 --- a/internal/database/migrate.go +++ b/internal/database/migrate.go @@ -33,7 +33,7 @@ func Migrate() error { sig := getModelSignature(allModels) if DB.Migrator().HasTable(&models.Setting{}) { var sigSetting models.Setting - res := DB.Where("section = ? AND `key` = ?", "system", "schema_signature").Limit(1).Find(&sigSetting) + res := DB.Where(&models.Setting{Section: "system", Key: "schema_signature"}).Limit(1).Find(&sigSetting) if res.RowsAffected > 0 && string(sigSetting.Value) == sig { logger.Info("[Database] 模型指纹一致,跳过自动表结构同步") return nil @@ -54,7 +54,7 @@ func Migrate() error { // 3. 更新指纹记录 if DB.Migrator().HasTable(&models.Setting{}) { var sigSetting models.Setting - res := DB.Where("section = ? AND `key` = ?", "system", "schema_signature").Limit(1).Find(&sigSetting) + res := DB.Where(&models.Setting{Section: "system", Key: "schema_signature"}).Limit(1).Find(&sigSetting) if res.RowsAffected > 0 { DB.Model(&sigSetting).Update("value", models.BigText(sig)) } else { diff --git a/internal/services/backup_service.go b/internal/services/backup_service.go index aef7f7a..0443991 100644 --- a/internal/services/backup_service.go +++ b/internal/services/backup_service.go @@ -417,7 +417,7 @@ func (s *BackupService) addDirToZip(zipWriter *zip.Writer, srcDir, prefix string func (s *BackupService) GetBackupFile() string { var setting models.Setting - res := database.DB.Where("section = ? AND `key` = ?", BackupSection, BackupFileKey).Limit(1).Find(&setting) + res := database.DB.Where(&models.Setting{Section: BackupSection, Key: BackupFileKey}).Limit(1).Find(&setting) if res.Error != nil || res.RowsAffected == 0 { return "" } @@ -428,7 +428,7 @@ func (s *BackupService) ClearBackup() error { filePath := s.GetBackupFile() if filePath != "" { os.Remove(filePath) - database.DB.Where("section = ? AND `key` = ?", BackupSection, BackupFileKey).Delete(&models.Setting{}) + database.DB.Where(&models.Setting{Section: BackupSection, Key: BackupFileKey}).Delete(&models.Setting{}) } return nil } diff --git a/internal/services/migration_v3.go b/internal/services/migration_v3.go index e2a38ec..0a7911b 100644 --- a/internal/services/migration_v3.go +++ b/internal/services/migration_v3.go @@ -81,7 +81,7 @@ func RunMigrationV3() error { // 0. 检查迁移标记,防止重复迁移逻辑被误判触发 if db.Migrator().HasTable(&models.Setting{}) { var migrationFlag models.Setting - res := db.Where("section = ? AND `key` = ?", "system", "migration_v3_success").Limit(1).Find(&migrationFlag) + res := db.Where(&models.Setting{Section: "system", Key: "migration_v3_success"}).Limit(1).Find(&migrationFlag) if res.Error == nil && res.RowsAffected > 0 && migrationFlag.Value == "true" { // 如果已经是字符串 ID 模式,双重确认 logger.Info("[MigrationV3] 系统已处于 V3 模式,跳过检查") @@ -151,7 +151,7 @@ func markMigrationSuccess(db *gorm.DB) error { return nil } var flag models.Setting - res := db.Where("section = ? AND `key` = ?", "system", "migration_v3_success").Limit(1).Find(&flag) + res := db.Where(&models.Setting{Section: "system", Key: "migration_v3_success"}).Limit(1).Find(&flag) if res.Error != nil || res.RowsAffected == 0 { // 创建或更新 flag = models.Setting{ diff --git a/internal/services/settings_service.go b/internal/services/settings_service.go index f2045d2..5b540bf 100644 --- a/internal/services/settings_service.go +++ b/internal/services/settings_service.go @@ -22,7 +22,7 @@ func (s *SettingsService) InitSettings() error { for section, keys := range constant.DefaultSettings { for key, value := range keys { var count int64 - database.DB.Model(&models.Setting{}).Where("section = ? AND `key` = ?", section, key).Count(&count) + database.DB.Model(&models.Setting{}).Where(&models.Setting{Section: section, Key: key}).Count(&count) if count == 0 { if err := database.DB.Create(&models.Setting{ ID: utils.GenerateID(), @@ -81,7 +81,7 @@ func (s *SettingsService) InitSettings() error { for k, v := range defaultRetention { var count int64 - database.DB.Model(&models.Setting{}).Where("section = ? AND `key` = ?", constant.SectionSystem, k).Count(&count) + database.DB.Model(&models.Setting{}).Where(&models.Setting{Section: constant.SectionSystem, Key: k}).Count(&count) if count == 0 { s.Set(constant.SectionSystem, k, v) } @@ -89,7 +89,7 @@ func (s *SettingsService) InitSettings() error { // 初始化或获取 JWT Secret 密码 var secCount int64 - database.DB.Model(&models.Setting{}).Where("section = ? AND `key` = ?", constant.SectionSecurity, constant.KeySecret).Count(&secCount) + database.DB.Model(&models.Setting{}).Where(&models.Setting{Section: constant.SectionSecurity, Key: constant.KeySecret}).Count(&secCount) var secretValue string if secCount == 0 { // 先尝试从配置文件读取遗留下来的旧设 @@ -121,7 +121,7 @@ func (s *SettingsService) Get(section, key string) string { return cache.GetSiteCache(key) } var setting models.Setting - res := database.DB.Where("section = ? AND `key` = ?", section, key).Limit(1).Find(&setting) + res := database.DB.Where(&models.Setting{Section: section, Key: key}).Limit(1).Find(&setting) if res.Error != nil || res.RowsAffected == 0 { if def, ok := constant.DefaultSettings[section][key]; ok { return def @@ -134,7 +134,7 @@ func (s *SettingsService) Get(section, key string) string { // Set 设置单个值 func (s *SettingsService) Set(section, key, value string) error { var setting models.Setting - res := database.DB.Where("section = ? AND `key` = ?", section, key).Limit(1).Find(&setting) + res := database.DB.Where(&models.Setting{Section: section, Key: key}).Limit(1).Find(&setting) if res.Error != nil || res.RowsAffected == 0 { return database.DB.Create(&models.Setting{ ID: utils.GenerateID(), @@ -148,7 +148,7 @@ func (s *SettingsService) Set(section, key, value string) error { // Delete 删除单个设置 func (s *SettingsService) Delete(section, key string) error { - return database.DB.Where("section = ? AND `key` = ?", section, key).Delete(&models.Setting{}).Error + return database.DB.Where(&models.Setting{Section: section, Key: key}).Delete(&models.Setting{}).Error } // GetSection 获取整个 section 的设置