v1.0.0
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// 系统设置
|
||||
type SystemSetting struct {
|
||||
ID uint `gorm:"primaryKey"`
|
||||
ConfigName string `gorm:"type:varchar(50)"`
|
||||
ConfigValue string `gorm:"type:text"`
|
||||
}
|
||||
|
||||
func (m *SystemSetting) Get(configName string) (result string, err error) {
|
||||
var res SystemSetting
|
||||
if err := Db.Model(m).Select("ConfigValue").First(&res, "config_name=?", configName).Error; err != nil {
|
||||
return result, err
|
||||
}
|
||||
result = res.ConfigValue
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (m *SystemSetting) GetValueByInterface(configName string, structValue interface{}) error {
|
||||
result, err := m.Get(configName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = json.Unmarshal([]byte(result), structValue)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 暂时仅支持结构体和字符串
|
||||
func (m *SystemSetting) Set(configName string, configValue interface{}) error {
|
||||
findRes := SystemSetting{}
|
||||
db := Db.Model(m).First(&findRes, "config_name=?", configName)
|
||||
if err := db.Error; err != nil && err != gorm.ErrRecordNotFound {
|
||||
return err
|
||||
}
|
||||
value := ""
|
||||
if s, ok := configValue.(string); !ok {
|
||||
if jsonStr, err := json.Marshal(configValue); err != nil {
|
||||
value = ""
|
||||
} else {
|
||||
value = string(jsonStr)
|
||||
}
|
||||
} else {
|
||||
value = s
|
||||
}
|
||||
|
||||
if db.RowsAffected == 0 {
|
||||
// 添加
|
||||
if err := Db.Model(m).Create(&SystemSetting{ConfigName: configName, ConfigValue: value}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
} else {
|
||||
// 修改
|
||||
if err := Db.Model(m).Where("id=?", findRes.ID).Update("config_value", value).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user