2026-07-12 17:38:48 +08:00

51 lines
1.9 KiB
Go

package grpc
import (
"context"
userv1 "hyapp.local/api/proto/user/v1"
"hyapp/pkg/xerr"
hostdomain "hyapp/services/user-service/internal/domain/host"
)
// GetHostEngagementStats 返回 user-service 拥有的主播互动统计;调用方不能提交聚合值。
func (s *Server) GetHostEngagementStats(ctx context.Context, req *userv1.GetHostEngagementStatsRequest) (*userv1.GetHostEngagementStatsResponse, error) {
if s.hostSvc == nil {
return nil, xerr.ToGRPCError(xerr.New(xerr.Unavailable, "host service is not configured"))
}
ctx = contextWithApp(ctx, req.GetMeta())
stats, err := s.hostSvc.GetHostEngagementStats(ctx, hostdomain.EngagementStatsQuery{
HostUserID: req.GetHostUserId(),
StartAtMS: req.GetStartAtMs(),
EndAtMS: req.GetEndAtMs(),
})
if err != nil {
return nil, xerr.ToGRPCError(err)
}
return &userv1.GetHostEngagementStatsResponse{Stats: &userv1.HostEngagementStats{
OnlineDurationMs: stats.OnlineDurationMS,
ValidMicDurationMs: stats.ValidMicDurationMS,
ValidMicDays: stats.ValidMicDays,
PrivateMessageSenders: stats.PrivateMessageSenders,
NewFollowers: stats.NewFollowers,
}}, nil
}
// RecordPrivateMessageEvent 只接受 gateway 已鉴权回调产生的最小事件事实。
func (s *Server) RecordPrivateMessageEvent(ctx context.Context, req *userv1.RecordPrivateMessageEventRequest) (*userv1.RecordPrivateMessageEventResponse, error) {
if s.hostSvc == nil {
return nil, xerr.ToGRPCError(xerr.New(xerr.Unavailable, "host service is not configured"))
}
ctx = contextWithApp(ctx, req.GetMeta())
created, err := s.hostSvc.RecordPrivateMessageEvent(ctx, hostdomain.PrivateMessageEvent{
EventID: req.GetEventId(),
SenderUserID: req.GetSenderUserId(),
TargetUserID: req.GetTargetUserId(),
OccurredAtMS: req.GetOccurredAtMs(),
})
if err != nil {
return nil, xerr.ToGRPCError(err)
}
return &userv1.RecordPrivateMessageEventResponse{Created: created}, nil
}