70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package repository
|
||
|
||
import (
|
||
"gotest/internal/model"
|
||
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
// EnterpriseRepository 企业数据访问层
|
||
type EnterpriseRepository struct {
|
||
db *gorm.DB
|
||
}
|
||
|
||
// NewEnterpriseRepository 创建企业仓库实例
|
||
func NewEnterpriseRepository(db *gorm.DB) *EnterpriseRepository {
|
||
return &EnterpriseRepository{db: db}
|
||
}
|
||
|
||
// GetCompany 获取企业信息(单条)
|
||
func (r *EnterpriseRepository) GetCompany() (*model.Company, error) {
|
||
var company model.Company
|
||
if err := r.db.First(&company).Error; err != nil {
|
||
return nil, err
|
||
}
|
||
return &company, nil
|
||
}
|
||
|
||
// ListServices 获取服务列表
|
||
func (r *EnterpriseRepository) ListServices() ([]model.EnterpriseService, error) {
|
||
var services []model.EnterpriseService
|
||
if err := r.db.Order("sort ASC, id ASC").Find(&services).Error; err != nil {
|
||
return nil, err
|
||
}
|
||
return services, nil
|
||
}
|
||
|
||
// ListNews 获取新闻列表,category 为空时查询全部
|
||
func (r *EnterpriseRepository) ListNews(category string, limit int) ([]model.EnterpriseNews, error) {
|
||
var news []model.EnterpriseNews
|
||
query := r.db.Where("status = 1")
|
||
if category != "" {
|
||
query = query.Where("category = ?", category)
|
||
}
|
||
if limit > 0 {
|
||
query = query.Limit(limit)
|
||
}
|
||
if err := query.Order("created_at DESC").Find(&news).Error; err != nil {
|
||
return nil, err
|
||
}
|
||
return news, nil
|
||
}
|
||
|
||
// GetNews 根据 ID 获取新闻详情
|
||
func (r *EnterpriseRepository) GetNews(id uint) (*model.EnterpriseNews, error) {
|
||
var news model.EnterpriseNews
|
||
if err := r.db.First(&news, id).Error; err != nil {
|
||
return nil, err
|
||
}
|
||
return &news, nil
|
||
}
|
||
|
||
// ListTeam 获取团队成员列表
|
||
func (r *EnterpriseRepository) ListTeam() ([]model.TeamMember, error) {
|
||
var team []model.TeamMember
|
||
if err := r.db.Order("sort ASC, id ASC").Find(&team).Error; err != nil {
|
||
return nil, err
|
||
}
|
||
return team, nil
|
||
}
|