spark-server/internal/module/group/logic/get.go
zhr ae9a71034d feat: implement Spark IM V3 modular monolith
Add HTTP /v1 MVC, TCP send path, groups with server-side member-avatar collage, object-storage upload, and friends/favorites around the architecture-v3 layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 19:52:11 +08:00

42 lines
924 B
Go

package logic
import (
"context"
"spark-server/internal/pkg/errs"
)
func (s *Service) Get(ctx context.Context, userID, groupID int64) (*View, error) {
if !s.ready() || userID <= 0 {
return nil, errs.ErrUnauthorized
}
g, err := s.loadActive(ctx, groupID)
if err != nil {
return nil, err
}
mem, err := s.requireMember(ctx, groupID, userID)
if err != nil {
return nil, err
}
return viewOf(g, mem.Role), nil
}
func (s *Service) List(ctx context.Context, userID int64, limit int) (*List, error) {
if !s.ready() || userID <= 0 {
return nil, errs.ErrUnauthorized
}
groups, err := s.repo.ListByUser(ctx, userID, limit)
if err != nil {
return nil, err
}
items := make([]*View, 0, len(groups))
for _, g := range groups {
role := 0
if mem, err := s.repo.GetMember(ctx, g.ID, userID); err == nil {
role = mem.Role
}
items = append(items, viewOf(g, role))
}
return &List{Items: items}, nil
}