Initial commit: 网络验证平台

This commit is contained in:
Admin
2026-04-27 17:22:56 +08:00
commit afe67d704e
780 changed files with 88960 additions and 0 deletions
+127
View File
@@ -0,0 +1,127 @@
package service
import (
"fmt"
"verification-platform-backend/internal/database"
"verification-platform-backend/internal/model"
"gorm.io/gorm/clause"
)
type SettingService struct{}
func NewSettingService() *SettingService {
return &SettingService{}
}
func (s *SettingService) GetSettings() (map[string]interface{}, error) {
var settings []model.Setting
if err := database.DB.Find(&settings).Error; err != nil {
return nil, err
}
result := make(map[string]interface{})
for _, setting := range settings {
if _, ok := result[setting.Category]; !ok {
result[setting.Category] = make(map[string]interface{})
}
result[setting.Category].(map[string]interface{})[setting.Key] = setting.Value
}
fmt.Println("========================================")
fmt.Println("GetSettings 返回的数据:")
for cat, data := range result {
fmt.Printf(" 分类: %s\n", cat)
if dataMap, ok := data.(map[string]interface{}); ok {
for k, v := range dataMap {
fmt.Printf(" %s: %v\n", k, v)
}
}
}
fmt.Println("========================================")
return result, nil
}
func (s *SettingService) GetSettingsByCategory(category string) (map[string]interface{}, error) {
var settings []model.Setting
if err := database.DB.Where("category = ?", category).Find(&settings).Error; err != nil {
return nil, err
}
result := make(map[string]interface{})
for _, setting := range settings {
result[setting.Key] = setting.Value
}
return result, nil
}
func (s *SettingService) UpdateSettings(category string, data map[string]interface{}) error {
fmt.Println("========================================")
fmt.Printf("UpdateSettings 被调用: category=%s\n", category)
for key, value := range data {
var strValue string
switch v := value.(type) {
case string:
strValue = v
case bool:
if v {
strValue = "true"
} else {
strValue = "false"
}
case int:
strValue = fmt.Sprintf("%d", v)
case int64:
strValue = fmt.Sprintf("%d", v)
case float64:
strValue = fmt.Sprintf("%.0f", v)
case float32:
strValue = fmt.Sprintf("%.0f", v)
default:
fmt.Printf(" 跳过: %s (类型: %T, 值: %v)\n", key, value, value)
continue
}
fmt.Printf(" 保存: %s = %s\n", key, strValue)
setting := model.Setting{
Category: category,
Key: key,
Value: strValue,
}
if err := database.DB.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "key"}},
DoUpdates: clause.AssignmentColumns([]string{"value", "category", "updated_at"}),
}).Create(&setting).Error; err != nil {
fmt.Printf(" 保存失败: %v\n", err)
return err
}
}
fmt.Println("========================================")
return nil
}
func (s *SettingService) GetSetting(category, key string) (string, error) {
var setting model.Setting
if err := database.DB.Where("category = ? AND key = ?", category, key).First(&setting).Error; err != nil {
return "", err
}
return setting.Value, nil
}
func (s *SettingService) SetSetting(category, key, value string) error {
setting := model.Setting{
Category: category,
Key: key,
Value: value,
}
return database.DB.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "key"}},
DoUpdates: clause.AssignmentColumns([]string{"value", "category", "updated_at"}),
}).Create(&setting).Error
}