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() }