104 lines
3.0 KiB
Go
104 lines
3.0 KiB
Go
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
|
|
}
|