feat(user): group by user info in timeline

This commit is contained in:
LinkinStars 2023-09-14 15:21:12 +08:00
parent 99a61fcf7c
commit 6fa3bf0be0
4 changed files with 21 additions and 23 deletions

View File

@ -29,18 +29,16 @@ type GetObjectTimelineResp struct {
// ActObjectTimeline act object timeline
type ActObjectTimeline struct {
ActivityID string `json:"activity_id"`
RevisionID string `json:"revision_id"`
CreatedAt int64 `json:"created_at"`
ActivityType string `json:"activity_type"`
Username string `json:"username"`
UserDisplayName string `json:"user_display_name"`
Comment string `json:"comment"`
ObjectID string `json:"object_id"`
ObjectType string `json:"object_type"`
Cancelled bool `json:"cancelled"`
CancelledAt int64 `json:"cancelled_at"`
UserID string `json:"id"`
ActivityID string `json:"activity_id"`
RevisionID string `json:"revision_id"`
CreatedAt int64 `json:"created_at"`
ActivityType string `json:"activity_type"`
Comment string `json:"comment"`
ObjectID string `json:"object_id"`
ObjectType string `json:"object_type"`
Cancelled bool `json:"cancelled"`
CancelledAt int64 `json:"cancelled_at"`
UserInfo *UserBasicInfo `json:"user_info,omitempty"`
}
// ActObjectInfo act object info

View File

@ -369,6 +369,7 @@ type QuestionPageRespOperator struct {
Username string `json:"username"`
Rank int `json:"rank"`
DisplayName string `json:"display_name"`
Status string `json:"status"`
}
type AdminQuestionPageReq struct {

View File

@ -91,6 +91,7 @@ func (as *ActivityService) GetObjectTimeline(ctx context.Context, req *schema.Ge
CreatedAt: act.CreatedAt.Unix(),
Cancelled: act.Cancelled == entity.ActivityCancelled,
ObjectID: act.ObjectID,
UserInfo: &schema.UserBasicInfo{},
}
item.ObjectType, _ = obj.GetObjectTypeStrByObjectID(act.ObjectID)
if item.Cancelled {
@ -120,13 +121,13 @@ func (as *ActivityService) GetObjectTimeline(ctx context.Context, req *schema.Ge
// if activity is down vote, only admin can see who does it.
if item.ActivityType == constant.ActDownVote && !req.IsAdmin {
item.Username = "N/A"
item.UserDisplayName = "N/A"
item.UserInfo.Username = "N/A"
item.UserInfo.DisplayName = "N/A"
} else {
if act.TriggerUserID > 0 {
item.UserID = fmt.Sprintf("%d", act.TriggerUserID)
item.UserInfo.ID = fmt.Sprintf("%d", act.TriggerUserID)
} else {
item.UserID = act.UserID
item.UserInfo.ID = act.UserID
}
}
@ -209,10 +210,10 @@ func (as *ActivityService) formatTimelineUserInfo(ctx context.Context, timeline
userExist := make(map[string]bool)
userIDs := make([]string, 0)
for _, info := range timeline {
if len(info.UserID) == 0 || userExist[info.UserID] {
if len(info.UserInfo.ID) == 0 || userExist[info.UserInfo.ID] {
continue
}
userIDs = append(userIDs, info.UserID)
userIDs = append(userIDs, info.UserInfo.ID)
}
if len(userIDs) == 0 {
return
@ -223,13 +224,10 @@ func (as *ActivityService) formatTimelineUserInfo(ctx context.Context, timeline
return
}
for _, info := range timeline {
if len(info.UserID) == 0 {
if len(info.UserInfo.ID) == 0 {
continue
}
if userInfo, ok := userInfoMapping[info.UserID]; ok {
info.Username = userInfo.Username
info.UserDisplayName = userInfo.DisplayName
}
info.UserInfo = userInfoMapping[info.UserInfo.ID]
}
}

View File

@ -387,6 +387,7 @@ func (qs *QuestionCommon) FormatQuestionsPage(
item.Operator.DisplayName = userInfo.DisplayName
item.Operator.Username = userInfo.Username
item.Operator.Rank = userInfo.Rank
item.Operator.Status = userInfo.Status
}
}