topfans/backend/services/moderationService/service/category_service.go
2026-06-22 17:19:48 +08:00

73 lines
2.0 KiB
Go

package service
import (
"context"
"google.golang.org/protobuf/types/known/wrapperspb"
pb "github.com/topfans/backend/pkg/proto/moderation"
"github.com/topfans/backend/services/moderationService/repository"
)
type CategoryService struct {
repo *repository.ModerationRepository
}
func NewCategoryService(repo *repository.ModerationRepository) *CategoryService {
return &CategoryService{repo: repo}
}
func (s *CategoryService) GetReportCategories(ctx context.Context, req *pb.GetReportCategoriesRequest) (*pb.GetReportCategoriesResponse, error) {
cats, err := s.repo.ListReportCategories(ctx)
if err != nil {
return nil, err
}
resp := &pb.GetReportCategoriesResponse{}
for _, c := range cats {
item := &pb.CategoryItem{
Code: c.Code,
Name: c.Name,
Severity: int32(c.Severity),
SortOrder: c.SortOrder,
}
if c.Description != nil {
item.Description = *c.Description
}
resp.Categories = append(resp.Categories, item)
}
return resp, nil
}
func (s *CategoryService) GetFeedbackCategories(ctx context.Context, req *pb.GetFeedbackCategoriesRequest) (*pb.GetFeedbackCategoriesResponse, error) {
cats, err := s.repo.ListFeedbackCategories(ctx)
if err != nil {
return nil, err
}
resp := &pb.GetFeedbackCategoriesResponse{}
for _, c := range cats {
item := &pb.CategoryItem{
Code: c.Code,
Name: c.Name,
SortOrder: c.SortOrder,
}
if c.Description != nil {
item.Description = *c.Description
}
resp.Categories = append(resp.Categories, item)
}
return resp, nil
}
// IsReportCategoryEnabled 验证分类启用
func (s *CategoryService) IsReportCategoryEnabled(ctx context.Context, code string) (bool, error) {
return s.repo.IsReportCategoryEnabled(ctx, code)
}
// IsFeedbackCategoryEnabled 验证反馈分类启用
func (s *CategoryService) IsFeedbackCategoryEnabled(ctx context.Context, code string) (bool, error) {
return s.repo.IsFeedbackCategoryEnabled(ctx, code)
}
// avoid unused import warning
var _ = wrapperspb.Bool