v1.0.0
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
package systemSetting
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"sun-panel/lib/cache"
|
||||
"sun-panel/models"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
const (
|
||||
SYSTEM_APPLICATION = "system_application"
|
||||
SYSTEM_EMAIL = "system_email"
|
||||
DISCLAIMER = "disclaimer" // 免责声明 储存类型:字符串
|
||||
WEB_ABOUT_DESCRIPTION = "web_about_description" // 关于的描述信息
|
||||
)
|
||||
|
||||
type SystemSettingCache struct {
|
||||
Cache cache.Cacher[interface{}]
|
||||
}
|
||||
|
||||
type Email struct {
|
||||
Host string `json:"host" binding:"required"`
|
||||
Port int `json:"port" binding:"required"`
|
||||
Mail string `json:"mail" binding:"required,email"`
|
||||
Password string `json:"password" binding:"required"`
|
||||
}
|
||||
|
||||
type Register struct {
|
||||
EmailSuffix string `json:"emailSuffix"` // 注册邮箱后缀
|
||||
OpenRegister bool `json:"openRegister"` // 开放注册
|
||||
}
|
||||
|
||||
type Login struct {
|
||||
LoginCaptcha bool `json:"loginCaptcha"` // 登录验证码
|
||||
}
|
||||
|
||||
type ApplicationSetting struct {
|
||||
Register
|
||||
Login
|
||||
WebSiteUrl string `json:"webSiteUrl"` // 站点地址
|
||||
}
|
||||
|
||||
var (
|
||||
ErrorNoExists = errors.New("no exists")
|
||||
)
|
||||
|
||||
// 系统配置启用缓存功能
|
||||
func (s *SystemSettingCache) GetValueString(configName string) (result string, err error) {
|
||||
if v, ok := s.Cache.Get(configName); ok {
|
||||
if v1, ok1 := v.(string); ok1 {
|
||||
// fmt.Println("读取缓存")
|
||||
return v1, nil
|
||||
}
|
||||
}
|
||||
|
||||
mSetting := models.SystemSetting{}
|
||||
result, err = mSetting.Get(configName)
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
err = ErrorNoExists
|
||||
}
|
||||
// 查询出来,缓存起来
|
||||
s.Cache.SetDefault(configName, result)
|
||||
return
|
||||
}
|
||||
|
||||
// value 需为指针
|
||||
func (s *SystemSettingCache) GetValueByInterface(configName string, value interface{}) error {
|
||||
if v, ok := s.Cache.Get(configName); ok {
|
||||
// fmt.Println("缓存")
|
||||
if s, sok := v.(string); sok {
|
||||
if err := json.Unmarshal([]byte(s), value); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
mSetting := models.SystemSetting{}
|
||||
result, err := mSetting.Get(configName)
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
err = ErrorNoExists
|
||||
return err
|
||||
}
|
||||
err = json.Unmarshal([]byte(result), value)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
s.Cache.SetDefault(configName, result)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SystemSettingCache) Set(configName string, configValue interface{}) error {
|
||||
s.Cache.Delete(configName)
|
||||
mSetting := models.SystemSetting{}
|
||||
err := mSetting.Set(configName, configValue)
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user