64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| }
 |