51 lines
1.9 KiB
Go
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
|
|
}
|