feat():learning后台管理项目初始化
This commit is contained in:
106
internal/storage/system_config_storage.go
Normal file
106
internal/storage/system_config_storage.go
Normal file
@@ -0,0 +1,106 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"goalfymax-admin/internal/models"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// SystemConfigStorage 系统配置存储接口
|
||||
type SystemConfigStorage interface {
|
||||
Create(config *models.SystemConfig) error
|
||||
GetByID(id uint) (*models.SystemConfig, error)
|
||||
GetByKey(key string) (*models.SystemConfig, error)
|
||||
Update(config *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)
|
||||
}
|
||||
|
||||
type systemConfigStorage struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
// NewSystemConfigStorage 创建系统配置存储实例
|
||||
func NewSystemConfigStorage() SystemConfigStorage {
|
||||
return &systemConfigStorage{db: DB}
|
||||
}
|
||||
|
||||
// Create 创建系统配置
|
||||
func (s *systemConfigStorage) Create(config *models.SystemConfig) error {
|
||||
return s.db.Create(config).Error
|
||||
}
|
||||
|
||||
// GetByID 根据ID获取系统配置
|
||||
func (s *systemConfigStorage) GetByID(id uint) (*models.SystemConfig, error) {
|
||||
var config models.SystemConfig
|
||||
err := s.db.First(&config, id).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &config, nil
|
||||
}
|
||||
|
||||
// GetByKey 根据配置标识获取配置
|
||||
func (s *systemConfigStorage) GetByKey(key string) (*models.SystemConfig, error) {
|
||||
var config models.SystemConfig
|
||||
err := s.db.Where("`key` = ?", key).First(&config).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &config, nil
|
||||
}
|
||||
|
||||
// Update 更新系统配置
|
||||
func (s *systemConfigStorage) Update(config *models.SystemConfig) error {
|
||||
return s.db.Save(config).Error
|
||||
}
|
||||
|
||||
// Delete 删除系统配置
|
||||
func (s *systemConfigStorage) Delete(id uint) error {
|
||||
return s.db.Delete(&models.SystemConfig{}, id).Error
|
||||
}
|
||||
|
||||
// List 获取系统配置列表
|
||||
func (s *systemConfigStorage) List(req *models.SystemConfigListRequest) ([]models.SystemConfig, int64, error) {
|
||||
var configs []models.SystemConfig
|
||||
var total int64
|
||||
|
||||
query := s.db.Model(&models.SystemConfig{})
|
||||
|
||||
// 构建查询条件
|
||||
if req.Key != "" {
|
||||
query = query.Where("`key` LIKE ?", "%"+req.Key+"%")
|
||||
}
|
||||
if req.Name != "" {
|
||||
query = query.Where("name LIKE ?", "%"+req.Name+"%")
|
||||
}
|
||||
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("id DESC").Offset(offset).Limit(req.Size).Find(&configs).Error; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
return configs, total, nil
|
||||
}
|
||||
|
||||
// UpdateStatus 更新状态
|
||||
func (s *systemConfigStorage) UpdateStatus(id uint, status int) error {
|
||||
return s.db.Model(&models.SystemConfig{}).Where("id = ?", id).Update("status", status).Error
|
||||
}
|
||||
|
||||
// GetAll 获取所有系统配置(不分页)
|
||||
func (s *systemConfigStorage) GetAll() ([]models.SystemConfig, error) {
|
||||
var configs []models.SystemConfig
|
||||
err := s.db.Where("status = ?", 1).Order("id DESC").Find(&configs).Error
|
||||
return configs, err
|
||||
}
|
||||
Reference in New Issue
Block a user