2025-03-28 17:51:34 +08:00

64 lines
1.3 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"
"management/internal/pkg/session"
)
type ConfigBiz interface {
ConfigExpansion
}
type ConfigExpansion interface {
Pear(ctx context.Context) (*dto.PearConfig, error)
}
type configBiz struct {
store db.Store
redis redis.IRedis
session session.ISession
}
var _ ConfigBiz = (*configBiz)(nil)
func NewConfig(store db.Store, redis redis.IRedis, session session.ISession) *configBiz {
return &configBiz{
store: store,
redis: redis,
session: session,
}
}
func (b *configBiz) Pear(ctx context.Context) (*dto.PearConfig, error) {
// 判断redis是否存储
key := keys.GetManageKey(ctx, keys.PearAdmin)
bs, err := b.redis.GetBytes(ctx, key)
if err == nil {
var res *dto.PearConfig
if err := json.Unmarshal(bs, &res); err == nil {
return res, nil
}
}
conf, err := b.store.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
}
_ = b.redis.Set(ctx, key, conf.Value, time.Hour*6)
return &pear, nil
}