gorm wire
This commit is contained in:
@@ -3,27 +3,28 @@ package system
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"management/internal/erpserver/model/dto"
|
||||
"management/internal/erpserver/model/system"
|
||||
"management/internal/erpserver/service"
|
||||
v1 "management/internal/erpserver/service/v1"
|
||||
"management/internal/pkg/know"
|
||||
"management/internal/pkg/know/pearadmin"
|
||||
"management/internal/pkg/redis"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type configService struct {
|
||||
repo system.ConfigRepository
|
||||
redis redis.RedisCache
|
||||
*service.Service
|
||||
repo system.ConfigRepository
|
||||
}
|
||||
|
||||
var _ v1.ConfigService = (*configService)(nil)
|
||||
|
||||
func NewConfigService(repo system.ConfigRepository, redis redis.RedisCache) *configService {
|
||||
func NewConfigService(service *service.Service, repo system.ConfigRepository) v1.ConfigService {
|
||||
return &configService{
|
||||
repo: repo,
|
||||
redis: redis,
|
||||
Service: service,
|
||||
repo: repo,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +47,7 @@ func (s *configService) List(ctx context.Context, q dto.SearchDto) ([]*system.Co
|
||||
func (s *configService) Pear(ctx context.Context) (*dto.PearConfig, error) {
|
||||
// 判断redis是否存储
|
||||
key := know.GetManageKey(ctx, know.PearAdmin)
|
||||
bs, err := s.redis.GetBytes(ctx, key)
|
||||
bs, err := s.Redis.GetBytes(ctx, key)
|
||||
if err == nil {
|
||||
var res *dto.PearConfig
|
||||
if err := json.Unmarshal(bs, &res); err == nil {
|
||||
@@ -60,10 +61,48 @@ func (s *configService) Pear(ctx context.Context) (*dto.PearConfig, error) {
|
||||
}
|
||||
|
||||
var pear dto.PearConfig
|
||||
if err := json.Unmarshal(conf.Value, &pear); err != nil {
|
||||
if err := json.Unmarshal([]byte(conf.Value), &pear); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_ = s.redis.Set(ctx, key, conf.Value, time.Hour*6)
|
||||
_ = s.Redis.Set(ctx, key, conf.Value, time.Hour*6)
|
||||
return &pear, nil
|
||||
}
|
||||
|
||||
func (s *configService) RefreshCache(ctx context.Context, key string) error {
|
||||
return s.Redis.Del(ctx, key)
|
||||
}
|
||||
|
||||
func (s *configService) ResetPear(ctx context.Context) error {
|
||||
b, err := json.Marshal(pearadmin.PearJson)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
conf, err := s.repo.GetByKey(ctx, pearadmin.PearKey)
|
||||
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return err
|
||||
}
|
||||
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
// create
|
||||
conf = &system.Config{
|
||||
Key: pearadmin.PearKey,
|
||||
Value: string(b),
|
||||
}
|
||||
err = s.Create(ctx, conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
// update
|
||||
conf.Value = string(b)
|
||||
conf.UpdatedAt = time.Now()
|
||||
err = s.Update(ctx, conf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user