146 lines
3.9 KiB
Go
146 lines
3.9 KiB
Go
package services
|
|
|
|
import (
|
|
"errors"
|
|
"go.uber.org/zap"
|
|
"goalfymax-admin/internal/models"
|
|
"goalfymax-admin/internal/storage"
|
|
"goalfymax-admin/pkg/utils"
|
|
)
|
|
|
|
// SystemConfigService 系统配置服务接口
|
|
type SystemConfigService interface {
|
|
Create(req *models.SystemConfigRequest) (*models.SystemConfig, error)
|
|
GetByID(id uint) (*models.SystemConfig, error)
|
|
Update(id uint, req *models.SystemConfigUpdateRequest) (*models.SystemConfig, error)
|
|
Delete(id uint) error
|
|
List(req *models.SystemConfigListRequest) ([]models.SystemConfig, int64, error)
|
|
UpdateStatus(id uint, status int) error
|
|
GetAll() ([]models.SystemConfig, error)
|
|
GetByKey(key string) (*models.SystemConfig, error)
|
|
}
|
|
|
|
type systemConfigService struct {
|
|
storage storage.SystemConfigStorage
|
|
logger *utils.Logger
|
|
}
|
|
|
|
// NewSystemConfigService 创建系统配置服务实例
|
|
func NewSystemConfigService(storage storage.SystemConfigStorage, logger *utils.Logger) SystemConfigService {
|
|
return &systemConfigService{
|
|
storage: storage,
|
|
logger: logger,
|
|
}
|
|
}
|
|
|
|
// Create 创建系统配置
|
|
func (s *systemConfigService) Create(req *models.SystemConfigRequest) (*models.SystemConfig, error) {
|
|
// 检查配置标识是否已存在
|
|
_, err := s.storage.GetByKey(req.Key)
|
|
if err == nil {
|
|
return nil, errors.New("配置标识已存在")
|
|
}
|
|
|
|
// 创建配置
|
|
config := &models.SystemConfig{
|
|
Key: req.Key,
|
|
Name: req.Name,
|
|
Value: req.Value,
|
|
Type: req.Type,
|
|
Desc: req.Desc,
|
|
Status: 1, // 默认启用
|
|
}
|
|
|
|
err = s.storage.Create(config)
|
|
if err != nil {
|
|
s.logger.Error("创建系统配置失败", zap.Error(err))
|
|
return nil, errors.New("创建系统配置失败")
|
|
}
|
|
|
|
s.logger.Info("系统配置创建成功", zap.String("key", config.Key))
|
|
return config, nil
|
|
}
|
|
|
|
// GetByID 根据ID获取系统配置
|
|
func (s *systemConfigService) GetByID(id uint) (*models.SystemConfig, error) {
|
|
return s.storage.GetByID(id)
|
|
}
|
|
|
|
// GetByKey 根据配置标识获取系统配置
|
|
func (s *systemConfigService) GetByKey(key string) (*models.SystemConfig, error) {
|
|
return s.storage.GetByKey(key)
|
|
}
|
|
|
|
// Update 更新系统配置
|
|
func (s *systemConfigService) Update(id uint, req *models.SystemConfigUpdateRequest) (*models.SystemConfig, error) {
|
|
// 获取配置信息
|
|
config, err := s.storage.GetByID(id)
|
|
if err != nil {
|
|
return nil, errors.New("配置不存在")
|
|
}
|
|
|
|
// 更新字段
|
|
config.Name = req.Name
|
|
config.Value = req.Value
|
|
config.Type = req.Type
|
|
config.Desc = req.Desc
|
|
|
|
// 保存更新
|
|
err = s.storage.Update(config)
|
|
if err != nil {
|
|
s.logger.Error("更新系统配置失败", zap.Error(err))
|
|
return nil, errors.New("更新系统配置失败")
|
|
}
|
|
|
|
s.logger.Info("系统配置更新成功", zap.Uint("id", id))
|
|
return config, nil
|
|
}
|
|
|
|
// Delete 删除系统配置
|
|
func (s *systemConfigService) Delete(id uint) error {
|
|
// 检查配置是否存在
|
|
_, err := s.storage.GetByID(id)
|
|
if err != nil {
|
|
return errors.New("配置不存在")
|
|
}
|
|
|
|
// 删除配置
|
|
err = s.storage.Delete(id)
|
|
if err != nil {
|
|
s.logger.Error("删除系统配置失败", zap.Error(err))
|
|
return errors.New("删除系统配置失败")
|
|
}
|
|
|
|
s.logger.Info("系统配置删除成功", zap.Uint("id", id))
|
|
return nil
|
|
}
|
|
|
|
// List 获取系统配置列表
|
|
func (s *systemConfigService) List(req *models.SystemConfigListRequest) ([]models.SystemConfig, int64, error) {
|
|
return s.storage.List(req)
|
|
}
|
|
|
|
// UpdateStatus 更新状态
|
|
func (s *systemConfigService) UpdateStatus(id uint, status int) error {
|
|
// 检查配置是否存在
|
|
_, err := s.storage.GetByID(id)
|
|
if err != nil {
|
|
return errors.New("配置不存在")
|
|
}
|
|
|
|
// 更新状态
|
|
err = s.storage.UpdateStatus(id, status)
|
|
if err != nil {
|
|
s.logger.Error("更新系统配置状态失败", zap.Error(err))
|
|
return errors.New("更新系统配置状态失败")
|
|
}
|
|
|
|
s.logger.Info("系统配置状态更新成功", zap.Uint("id", id), zap.Int("status", status))
|
|
return nil
|
|
}
|
|
|
|
// GetAll 获取所有系统配置
|
|
func (s *systemConfigService) GetAll() ([]models.SystemConfig, error) {
|
|
return s.storage.GetAll()
|
|
}
|