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 }