|
|
@@ -46,38 +46,37 @@ class UrsTeamRankingCard extends Ranking
|
|
|
protected function getTeamRankingData(): array
|
|
|
{
|
|
|
// 使用子查询统计团队总数
|
|
|
- $rankings = DB::table('urs_promotion_user_referrals as r1')
|
|
|
- ->select([
|
|
|
- 'r1.urs_referrer_id',
|
|
|
- 'r1.referrer_id',
|
|
|
- 'u.username',
|
|
|
+ $fullTableName = DB::getTablePrefix() . (new UrsUserReferral())->getTable();
|
|
|
+ $rankings = UrsUserReferral::select([
|
|
|
+ 'urs_referrer_id',
|
|
|
+ 'referrer_id',
|
|
|
+ 'users.username',
|
|
|
DB::raw('(
|
|
|
-- 直推数量
|
|
|
SELECT COUNT(DISTINCT r_direct.urs_user_id)
|
|
|
- FROM urs_promotion_user_referrals r_direct
|
|
|
- WHERE r_direct.urs_referrer_id = r1.urs_referrer_id
|
|
|
+ FROM ' . $fullTableName . ' r_direct
|
|
|
+ WHERE r_direct.urs_referrer_id = ' . $fullTableName . '.urs_referrer_id
|
|
|
AND r_direct.status = 1
|
|
|
) + (
|
|
|
-- 间推数量
|
|
|
SELECT COUNT(DISTINCT r_indirect.urs_user_id)
|
|
|
- FROM urs_promotion_user_referrals r_level1
|
|
|
- JOIN urs_promotion_user_referrals r_indirect ON r_level1.urs_user_id = r_indirect.urs_referrer_id
|
|
|
- WHERE r_level1.urs_referrer_id = r1.urs_referrer_id
|
|
|
+ FROM ' . $fullTableName . ' r_level1
|
|
|
+ JOIN ' . $fullTableName . ' r_indirect ON r_level1.urs_user_id = r_indirect.urs_referrer_id
|
|
|
+ WHERE r_level1.urs_referrer_id = ' . $fullTableName . '.urs_referrer_id
|
|
|
AND r_level1.status = 1 AND r_indirect.status = 1
|
|
|
) + (
|
|
|
-- 三推数量
|
|
|
SELECT COUNT(DISTINCT r_third.urs_user_id)
|
|
|
- FROM urs_promotion_user_referrals r_level1
|
|
|
- JOIN urs_promotion_user_referrals r_level2 ON r_level1.urs_user_id = r_level2.urs_referrer_id
|
|
|
- JOIN urs_promotion_user_referrals r_third ON r_level2.urs_user_id = r_third.urs_referrer_id
|
|
|
- WHERE r_level1.urs_referrer_id = r1.urs_referrer_id
|
|
|
+ FROM ' . $fullTableName . ' r_level1
|
|
|
+ JOIN ' . $fullTableName . ' r_level2 ON r_level1.urs_user_id = r_level2.urs_referrer_id
|
|
|
+ JOIN ' . $fullTableName . ' r_third ON r_level2.urs_user_id = r_third.urs_referrer_id
|
|
|
+ WHERE r_level1.urs_referrer_id = ' . $fullTableName . '.urs_referrer_id
|
|
|
AND r_level1.status = 1 AND r_level2.status = 1 AND r_third.status = 1
|
|
|
) as team_count')
|
|
|
])
|
|
|
- ->leftJoin('users as u', 'r1.referrer_id', '=', 'u.id')
|
|
|
- ->where('r1.status', UrsUserReferral::STATUS_VALID)
|
|
|
- ->groupBy('r1.urs_referrer_id', 'r1.referrer_id', 'u.username')
|
|
|
- ->havingRaw('team_count > 0')
|
|
|
+ ->leftJoin('users', 'urs_promotion_user_referrals.referrer_id', '=', 'users.id')
|
|
|
+ ->where('urs_promotion_user_referrals.status', UrsUserReferral::STATUS_VALID)
|
|
|
+ ->groupBy('urs_promotion_user_referrals.urs_referrer_id', 'urs_promotion_user_referrals.referrer_id', 'urs_promotion_user_referrals.urs_user_id', 'users.username')
|
|
|
->orderBy('team_count', 'desc')
|
|
|
->limit(10)
|
|
|
->get();
|