73 lines
1.8 KiB
Go
73 lines
1.8 KiB
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"time"
|
|
|
|
"management/internal/db/model/dto"
|
|
db "management/internal/db/sqlc"
|
|
"management/internal/global/keys"
|
|
"management/internal/global/pearadmin"
|
|
"management/internal/pkg/redis"
|
|
)
|
|
|
|
func CreateSysConfig(ctx context.Context, arg *db.CreateSysConfigParams) error {
|
|
return db.Engine.CreateSysConfig(ctx, arg)
|
|
}
|
|
|
|
func UpdateSysConfigByKey(ctx context.Context, arg *db.UpdateSysConfigByKeyParams) error {
|
|
return db.Engine.UpdateSysConfigByKey(ctx, arg)
|
|
}
|
|
|
|
func GetSysConfig(ctx context.Context, id int32) (*db.SysConfig, error) {
|
|
return db.Engine.GetSysConfig(ctx, id)
|
|
}
|
|
|
|
func GetSysConfigByKey(ctx context.Context, key string) (*db.SysConfig, error) {
|
|
return db.Engine.GetSysConfigByKey(ctx, key)
|
|
}
|
|
|
|
func PearConfig(ctx context.Context) (*dto.PearConfig, error) {
|
|
// 判断redis是否存储
|
|
key := keys.GetManageKey(ctx, keys.PearAdmin)
|
|
b, err := redis.GetBytes(ctx, key)
|
|
if err == nil {
|
|
var res *dto.PearConfig
|
|
if err := json.Unmarshal(b, &res); err == nil {
|
|
return res, nil
|
|
}
|
|
}
|
|
|
|
conf, err := db.Engine.GetSysConfigByKey(ctx, pearadmin.PearKey)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var pear dto.PearConfig
|
|
if err := json.Unmarshal(conf.Value, &pear); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
_ = redis.Set(ctx, key, conf.Value, time.Hour*6)
|
|
return &pear, nil
|
|
}
|
|
|
|
func ListSysConfigCondition(ctx context.Context, q dto.SearchDto) ([]*db.SysConfig, int64, error) {
|
|
count, err := db.Engine.CountSysConfigCondition(ctx, q.SearchKey)
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
configs, err := db.Engine.ListSysConfigCondition(ctx, &db.ListSysConfigConditionParams{
|
|
Key: q.SearchKey,
|
|
Skip: (int32(q.Page) - 1) * int32(q.Rows),
|
|
Size: int32(q.Rows),
|
|
})
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
return configs, count, nil
|
|
}
|