Files

92 lines
2.1 KiB
Go
Raw Normal View History

2021-09-28 11:47:19 +08:00
package controller
import (
2022-01-05 11:29:27 +08:00
"SciencesServer/app/api/admin/model"
2022-01-06 22:02:09 +08:00
"SciencesServer/app/basic/controller"
2021-09-28 11:47:19 +08:00
model2 "SciencesServer/app/common/model"
"SciencesServer/config"
"SciencesServer/serve/orm"
"errors"
2022-01-06 17:11:57 +08:00
"fmt"
2021-09-28 11:47:19 +08:00
"time"
"gorm.io/gorm"
)
type Config struct{}
type ConfigHandle func() *Config
2022-01-06 22:02:09 +08:00
func (c *Config) Config(kind, page, pageSize int) (*controller.ReturnPages, error) {
2021-09-28 11:47:19 +08:00
mSysConfig := model.NewSysConfig()
where := []*model2.ModelWhereOrder{
&model2.ModelWhereOrder{Order: model2.NewOrder("kind", model2.OrderModeToAsc)},
}
if kind > 0 {
where = append(where, &model2.ModelWhereOrder{Where: model2.NewWhere("kind", kind)})
}
out := make([]*model2.SysConfig, 0)
var count int64
if err := model2.Pages(mSysConfig.SysConfig, &out, page, pageSize, &count, where...); err != nil {
return nil, err
}
2022-01-06 22:02:09 +08:00
return &controller.ReturnPages{Data: out, Count: count}, nil
2021-09-28 11:47:19 +08:00
}
2022-01-06 17:11:57 +08:00
func (c *Config) Add(kind int, name, key string, value interface{}) error {
mSysConfig := model.NewSysConfig()
var count int64
err := model2.Count(mSysConfig.SysConfig, &count, model2.NewWhere("key", key))
if err != nil {
return err
} else if count > 0 {
return errors.New("key已存在")
}
mSysConfig.Kind = model2.SysConfigKind(kind)
mSysConfig.Name = name
mSysConfig.Key = key
mSysConfig.Value = fmt.Sprintf("%v", value)
if err = model2.Create(mSysConfig.SysConfig); err != nil {
return err
}
config.SystemConfig[key] = value
return nil
}
2021-09-28 11:47:19 +08:00
func (c *Config) Form(params map[string]interface{}) error {
if len(params) <= 0 {
return nil
}
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
mSysConfig := model.NewSysConfig()
now := time.Now()
for k, v := range params {
if _, has := config.SystemConfig[k]; !has {
return errors.New("UnKnown Config Key " + k)
}
if err := model2.UpdatesWhere(mSysConfig.SysConfig, map[string]interface{}{
"value": v, "updated_at": now,
}, []*model2.ModelWhere{model2.NewWhere("key", k)}, tx); err != nil {
return err
}
config.SystemConfig[k] = v
}
return nil
})
}
func NewConfig() ConfigHandle {
return func() *Config {
return &Config{}
}
}