修改排行榜
This commit is contained in:
parent
4fc2ddebf1
commit
24525bb4f8
@ -368,7 +368,7 @@ func TestBindCodeAcceptsSnakeInviteCodeAndIsIdempotent(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetRankUsesLifetimeValidUserAndRewardStats(t *testing.T) {
|
||||
func TestGetRankUsesLifetimeInviteAndRewardStats(t *testing.T) {
|
||||
service, db, cleanup := newTestInviteService(t, nil)
|
||||
defer cleanup()
|
||||
|
||||
@ -379,6 +379,8 @@ func TestGetRankUsesLifetimeValidUserAndRewardStats(t *testing.T) {
|
||||
&model.InviteCampaignRelation{ID: 3, SysOrigin: "LIKEI", InviterUserID: 20, InviteeUserID: 203, EligibleStatus: relationStatusEligible, BindTime: now, CreateTime: now, UpdateTime: now},
|
||||
&model.InviteCampaignRelation{ID: 4, SysOrigin: "LIKEI", InviterUserID: 10, InviteeUserID: 101, EligibleStatus: relationStatusEligible, BindTime: now, CreateTime: now, UpdateTime: now},
|
||||
&model.InviteCampaignRelation{ID: 5, SysOrigin: "LIKEI", InviterUserID: 10, InviteeUserID: 102, EligibleStatus: relationStatusBlocked, BindTime: now, CreateTime: now, UpdateTime: now},
|
||||
&model.InviteCampaignRelation{ID: 6, SysOrigin: "LIKEI", InviterUserID: 30, InviteeUserID: 301, EligibleStatus: relationStatusEligible, BindTime: now, CreateTime: now, UpdateTime: now},
|
||||
&model.InviteCampaignRelation{ID: 7, SysOrigin: "LIKEI", InviterUserID: 30, InviteeUserID: 302, EligibleStatus: relationStatusEligible, BindTime: now, CreateTime: now, UpdateTime: now},
|
||||
&model.InviteCampaignInviteeProgress{ID: 101, RelationID: 1, SysOrigin: "LIKEI", InviterUserID: 20, InviteeUserID: 201, TotalRecharge: 80000, ValidUser: true, ValidTime: refTime(now), CreateTime: now, UpdateTime: now},
|
||||
&model.InviteCampaignInviteeProgress{ID: 102, RelationID: 2, SysOrigin: "LIKEI", InviterUserID: 20, InviteeUserID: 202, TotalRecharge: 79999, ValidUser: false, CreateTime: now, UpdateTime: now},
|
||||
&model.InviteCampaignInviteeProgress{ID: 103, RelationID: 3, SysOrigin: "LIKEI", InviterUserID: 20, InviteeUserID: 203, TotalRecharge: 80000, ValidUser: true, ValidTime: refTime(now), CreateTime: now, UpdateTime: now},
|
||||
@ -386,6 +388,7 @@ func TestGetRankUsesLifetimeValidUserAndRewardStats(t *testing.T) {
|
||||
&model.InviteCampaignInviteeProgress{ID: 105, RelationID: 5, SysOrigin: "LIKEI", InviterUserID: 10, InviteeUserID: 102, TotalRecharge: 80000, ValidUser: true, ValidTime: refTime(now), CreateTime: now, UpdateTime: now},
|
||||
&model.UserBaseInfo{ID: 20, Account: "user20", UserNickname: "Mina", UserAvatar: "avatar-20", OriginSys: "LIKEI", CreateTime: now},
|
||||
&model.UserBaseInfo{ID: 10, Account: "user10", UserNickname: "Lina", UserAvatar: "avatar-10", OriginSys: "LIKEI", CreateTime: now},
|
||||
&model.UserBaseInfo{ID: 30, Account: "user30", UserNickname: "Nora", UserAvatar: "avatar-30", OriginSys: "LIKEI", CreateTime: now},
|
||||
&model.InviteCampaignRewardLog{ID: 11, SysOrigin: "LIKEI", InviterUserID: refInt64(20), TargetUserID: 20, BusinessKey: "r20-1", GoldAmount: 100, Status: rewardLogStatusSuccess, CreateTime: now, UpdateTime: now},
|
||||
&model.InviteCampaignRewardLog{ID: 12, SysOrigin: "LIKEI", InviterUserID: refInt64(20), TargetUserID: 20, BusinessKey: "r20-2", GoldAmount: 200, Status: rewardLogStatusSuccess, CreateTime: now, UpdateTime: now},
|
||||
&model.InviteCampaignRewardLog{ID: 13, SysOrigin: "LIKEI", InviterUserID: refInt64(10), TargetUserID: 10, BusinessKey: "r10-1", GoldAmount: 900, Status: rewardLogStatusSuccess, CreateTime: now, UpdateTime: now},
|
||||
@ -402,14 +405,17 @@ func TestGetRankUsesLifetimeValidUserAndRewardStats(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("GetRank() error = %v", err)
|
||||
}
|
||||
if len(resp.Items) != 2 {
|
||||
t.Fatalf("rank length = %d, want 2", len(resp.Items))
|
||||
if len(resp.Items) != 3 {
|
||||
t.Fatalf("rank length = %d, want 3", len(resp.Items))
|
||||
}
|
||||
if got := resp.Items[0]; got.Rank != 1 || got.UserID != 20 || got.Nickname != "Mina" || got.InviteCount != 2 || got.RewardGoldCoins != 300 {
|
||||
t.Fatalf("top rank = %+v, want user 20 count 2 reward 300", got)
|
||||
if got := resp.Items[0]; got.Rank != 1 || got.UserID != 10 || got.Nickname != "Lina" || got.InviteCount != 1 || got.RewardGoldCoins != 900 {
|
||||
t.Fatalf("top rank = %+v, want user 10 count 1 reward 900", got)
|
||||
}
|
||||
if got := resp.Items[1]; got.Rank != 2 || got.UserID != 10 || got.InviteCount != 1 || got.RewardGoldCoins != 900 {
|
||||
t.Fatalf("second rank = %+v, want user 10 count 1 reward 900", got)
|
||||
if got := resp.Items[1]; got.Rank != 2 || got.UserID != 20 || got.InviteCount != 3 || got.RewardGoldCoins != 300 {
|
||||
t.Fatalf("second rank = %+v, want user 20 count 3 reward 300", got)
|
||||
}
|
||||
if got := resp.Items[2]; got.Rank != 3 || got.UserID != 30 || got.Nickname != "Nora" || got.InviteCount != 2 || got.RewardGoldCoins != 0 {
|
||||
t.Fatalf("third rank = %+v, want user 30 count 2 reward 0", got)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -26,9 +26,8 @@ func (s *InviteService) GetRank(ctx context.Context, user AuthUser, limit int) (
|
||||
COALESCE(reward_rank.reward_gold_coins, 0) AS reward_gold_coins
|
||||
FROM (
|
||||
SELECT relation.inviter_user_id AS user_id, COUNT(1) AS invite_count
|
||||
FROM invite_campaign_invitee_progress AS progress
|
||||
INNER JOIN invite_campaign_relation AS relation ON relation.id = progress.relation_id
|
||||
WHERE relation.sys_origin = ? AND relation.eligible_status = ? AND progress.valid_user = 1
|
||||
FROM invite_campaign_relation AS relation
|
||||
WHERE relation.sys_origin = ? AND relation.eligible_status = ?
|
||||
GROUP BY relation.inviter_user_id
|
||||
) invite_rank
|
||||
LEFT JOIN (
|
||||
@ -39,7 +38,7 @@ func (s *InviteService) GetRank(ctx context.Context, user AuthUser, limit int) (
|
||||
) reward_rank ON reward_rank.user_id = invite_rank.user_id
|
||||
LEFT JOIN user_base_info user_info ON user_info.id = invite_rank.user_id
|
||||
LEFT JOIN invite_code_mapping invite_code ON invite_code.user_id = invite_rank.user_id
|
||||
ORDER BY invite_rank.invite_count DESC, reward_gold_coins DESC, invite_rank.user_id ASC
|
||||
ORDER BY reward_gold_coins DESC, invite_rank.invite_count DESC, invite_rank.user_id ASC
|
||||
LIMIT ?
|
||||
`, user.SysOrigin, relationStatusEligible, user.SysOrigin, rewardLogStatusSuccess, limit).Scan(&rows).Error; err != nil {
|
||||
return nil, err
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user