feat():learning后台管理项目初始化
This commit is contained in:
145
internal/services/user_level_config_service.go
Normal file
145
internal/services/user_level_config_service.go
Normal file
@@ -0,0 +1,145 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"go.uber.org/zap"
|
||||
"goalfymax-admin/internal/models"
|
||||
"goalfymax-admin/internal/storage"
|
||||
"goalfymax-admin/pkg/utils"
|
||||
)
|
||||
|
||||
// UserLevelConfigService 用户等级配置服务接口
|
||||
type UserLevelConfigService interface {
|
||||
Create(req *models.UserLevelConfigCreateRequest) (*models.UserLevelConfig, error)
|
||||
GetByID(id uint) (*models.UserLevelConfig, error)
|
||||
Update(id uint, req *models.UserLevelConfigUpdateRequest) (*models.UserLevelConfig, error)
|
||||
Delete(id uint) error
|
||||
List(req *models.UserLevelConfigListRequest) ([]models.UserLevelConfig, int64, error)
|
||||
UpdateStatus(id uint, status int) error
|
||||
GetAll() ([]models.UserLevelConfig, error)
|
||||
}
|
||||
|
||||
type userLevelConfigService struct {
|
||||
storage storage.UserLevelConfigStorage
|
||||
logger *utils.Logger
|
||||
}
|
||||
|
||||
// NewUserLevelConfigService 创建用户等级配置服务实例
|
||||
func NewUserLevelConfigService(storage storage.UserLevelConfigStorage, logger *utils.Logger) UserLevelConfigService {
|
||||
return &userLevelConfigService{
|
||||
storage: storage,
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
// Create 创建用户等级配置
|
||||
func (s *userLevelConfigService) Create(req *models.UserLevelConfigCreateRequest) (*models.UserLevelConfig, error) {
|
||||
// 检查等级代码是否已存在
|
||||
_, err := s.storage.GetByLevelCode(req.LevelCode)
|
||||
if err == nil {
|
||||
return nil, errors.New("等级代码已存在")
|
||||
}
|
||||
|
||||
// 创建配置
|
||||
config := &models.UserLevelConfig{
|
||||
LevelName: req.LevelName,
|
||||
LevelCode: req.LevelCode,
|
||||
ProjectLimit: req.ProjectLimit,
|
||||
CoderVMLimit: req.CoderVMLimit,
|
||||
BrowserVMLimit: req.BrowserVMLimit,
|
||||
ProcessLimit: req.ProcessLimit,
|
||||
Description: req.Description,
|
||||
SortOrder: req.SortOrder,
|
||||
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("level_name", config.LevelName))
|
||||
return config, nil
|
||||
}
|
||||
|
||||
// GetByID 根据ID获取用户等级配置
|
||||
func (s *userLevelConfigService) GetByID(id uint) (*models.UserLevelConfig, error) {
|
||||
return s.storage.GetByID(id)
|
||||
}
|
||||
|
||||
// Update 更新用户等级配置
|
||||
func (s *userLevelConfigService) Update(id uint, req *models.UserLevelConfigUpdateRequest) (*models.UserLevelConfig, error) {
|
||||
// 获取配置信息
|
||||
config, err := s.storage.GetByID(id)
|
||||
if err != nil {
|
||||
return nil, errors.New("配置不存在")
|
||||
}
|
||||
|
||||
// 更新字段
|
||||
config.LevelName = req.LevelName
|
||||
config.ProjectLimit = req.ProjectLimit
|
||||
config.CoderVMLimit = req.CoderVMLimit
|
||||
config.BrowserVMLimit = req.BrowserVMLimit
|
||||
config.ProcessLimit = req.ProcessLimit
|
||||
config.Description = req.Description
|
||||
config.SortOrder = req.SortOrder
|
||||
|
||||
// 保存更新
|
||||
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 *userLevelConfigService) 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 *userLevelConfigService) List(req *models.UserLevelConfigListRequest) ([]models.UserLevelConfig, int64, error) {
|
||||
return s.storage.List(req)
|
||||
}
|
||||
|
||||
// UpdateStatus 更新状态
|
||||
func (s *userLevelConfigService) 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 *userLevelConfigService) GetAll() ([]models.UserLevelConfig, error) {
|
||||
return s.storage.GetAll()
|
||||
}
|
||||
Reference in New Issue
Block a user