package controller import ( "SciencesServer/app/api/admin/model" config2 "SciencesServer/app/basic/config" "SciencesServer/app/basic/controller" model2 "SciencesServer/app/common/model" "SciencesServer/config" "SciencesServer/serve/orm" "errors" "fmt" "time" "gorm.io/gorm" ) type Config struct{} type ConfigHandle func() *Config type ConfigInfo struct { ID string `json:"id"` *model2.SysConfig } func (c *Config) Config(kind, page, pageSize int) (*controller.ReturnPages, error) { mSysConfig := model.NewSysConfig() where := []*model2.ModelWhereOrder{ &model2.ModelWhereOrder{Order: model2.NewOrder("sort", model2.OrderModeToAsc)}, &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 } list := make([]*ConfigInfo, 0) for _, v := range out { list = append(list, &ConfigInfo{ ID: v.GetEncodeID(), SysConfig: v, }) } return &controller.ReturnPages{Data: list, Count: count}, nil } func (c *Config) Add(kind int, name, key, value string) 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 } func (c *Config) Form(id uint64, name, value string) error { mSysConfig := model.NewSysConfig() mSysConfig.ID = id isExist, err := model2.FirstField(mSysConfig.SysConfig, []string{"id", "`key`"}) if err != nil { return nil } else if !isExist { return errors.New("操作错误,数据不存在") } return orm.GetDB().Transaction(func(tx *gorm.DB) error { now := time.Now() if err := model2.Updates(mSysConfig.SysConfig, map[string]interface{}{ "`name`": name, "`value`": value, "updated_at": now, }, tx); err != nil { return err } config.SystemConfig[mSysConfig.Key] = value return nil }) } // Area 区域信息 func (c *Config) Area(key string) map[string]string { if key == "" { key = config.DefaultChinaAreaCode } return config2.MemoryForAreaInfo[key] } func NewConfig() ConfigHandle { return func() *Config { return &Config{} } }