package storage import ( "goalfymax-admin/internal/models" "gorm.io/gorm" ) // UserLevelConfigStorage 用户等级配置存储接口 type UserLevelConfigStorage interface { Create(config *models.UserLevelConfig) error GetByID(id uint) (*models.UserLevelConfig, error) GetByLevelCode(levelCode string) (*models.UserLevelConfig, error) Update(config *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 userLevelConfigStorage struct { db *gorm.DB } // NewUserLevelConfigStorage 创建用户等级配置存储实例 func NewUserLevelConfigStorage() UserLevelConfigStorage { return &userLevelConfigStorage{db: DB} } // Create 创建用户等级配置 func (s *userLevelConfigStorage) Create(config *models.UserLevelConfig) error { return s.db.Create(config).Error } // GetByID 根据ID获取用户等级配置 func (s *userLevelConfigStorage) GetByID(id uint) (*models.UserLevelConfig, error) { var config models.UserLevelConfig err := s.db.First(&config, id).Error if err != nil { return nil, err } return &config, nil } // GetByLevelCode 根据等级代码获取配置 func (s *userLevelConfigStorage) GetByLevelCode(levelCode string) (*models.UserLevelConfig, error) { var config models.UserLevelConfig err := s.db.Where("level_code = ?", levelCode).First(&config).Error if err != nil { return nil, err } return &config, nil } // Update 更新用户等级配置 func (s *userLevelConfigStorage) Update(config *models.UserLevelConfig) error { return s.db.Save(config).Error } // Delete 删除用户等级配置 func (s *userLevelConfigStorage) Delete(id uint) error { return s.db.Delete(&models.UserLevelConfig{}, id).Error } // List 获取用户等级配置列表 func (s *userLevelConfigStorage) List(req *models.UserLevelConfigListRequest) ([]models.UserLevelConfig, int64, error) { var configs []models.UserLevelConfig var total int64 query := s.db.Model(&models.UserLevelConfig{}) // 构建查询条件 if req.LevelName != "" { query = query.Where("level_name LIKE ?", "%"+req.LevelName+"%") } if req.Status != nil { query = query.Where("status = ?", *req.Status) } // 获取总数 if err := query.Count(&total).Error; err != nil { return nil, 0, err } // 分页查询 offset := (req.Page - 1) * req.Size if err := query.Order("sort_order ASC, id DESC").Offset(offset).Limit(req.Size).Find(&configs).Error; err != nil { return nil, 0, err } return configs, total, nil } // UpdateStatus 更新状态 func (s *userLevelConfigStorage) UpdateStatus(id uint, status int) error { return s.db.Model(&models.UserLevelConfig{}).Where("id = ?", id).Update("status", status).Error } // GetAll 获取所有用户等级配置(不分页) func (s *userLevelConfigStorage) GetAll() ([]models.UserLevelConfig, error) { var configs []models.UserLevelConfig err := s.db.Where("status = ?", 1).Order("sort_order ASC").Find(&configs).Error return configs, err }