feat: add object storage and points leaderboard
This commit is contained in:
@@ -110,11 +110,11 @@ type MemberLevel struct {
|
||||
}
|
||||
|
||||
type LeaderboardEntry struct {
|
||||
Rank int `json:"rank"`
|
||||
Username string `json:"username"`
|
||||
AvatarURL string `json:"avatar_url"`
|
||||
CompletedCount int64 `json:"completed_count"`
|
||||
Status string `json:"status"`
|
||||
Rank int `json:"rank"`
|
||||
Username string `json:"username"`
|
||||
AvatarURL string `json:"avatar_url"`
|
||||
ClaimedPoints int64 `json:"claimed_points"`
|
||||
Status string `json:"status"`
|
||||
}
|
||||
|
||||
type CustomerService struct {
|
||||
@@ -287,7 +287,7 @@ func (s *Service) Leaderboard(ctx context.Context, tenantID int64) ([]Leaderboar
|
||||
items := make([]LeaderboardEntry, 0, len(rows))
|
||||
for index, row := range rows {
|
||||
items = append(items, LeaderboardEntry{Rank: index + 1, Username: maskedUsername(row.Username),
|
||||
AvatarURL: row.AvatarURL, CompletedCount: row.CompletedCount, Status: "领取成功"})
|
||||
AvatarURL: row.AvatarURL, ClaimedPoints: row.ClaimedPoints, Status: "领取成功"})
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
@@ -153,15 +153,15 @@ func TestHomeUsesSettledSummaryAndSnakeCaseJSON(t *testing.T) {
|
||||
|
||||
func TestLeaderboardMasksUsernameAndAddsRank(t *testing.T) {
|
||||
service := New(fakeRepository{leaders: []store.LeaderboardMember{
|
||||
{MemberID: 7, Username: "风轻云淡", CompletedCount: 12},
|
||||
{MemberID: 8, Username: "李明", CompletedCount: 9},
|
||||
{MemberID: 7, Username: "风轻云淡", ClaimedPoints: 125800},
|
||||
{MemberID: 8, Username: "李明", ClaimedPoints: 96000},
|
||||
}})
|
||||
items, err := service.Leaderboard(context.Background(), 1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(items) != 2 || items[0].Rank != 1 || items[0].Username != "风***淡" ||
|
||||
items[1].Username != "李*" || items[1].Status != "领取成功" {
|
||||
items[0].ClaimedPoints != 125800 || items[1].Username != "李*" || items[1].Status != "领取成功" {
|
||||
t.Fatalf("unexpected leaderboard: %+v", items)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user