getRow(); $ursUserId = $row->urs_user_id; // 获取推荐关系树数据 $treeData = $this->getReferralTreeData($ursUserId); // 构建树形结构HTML $treeHtml = $this->buildTreeHtml($treeData); return Modal::make() ->xl() ->title("URS用户 {$ursUserId} 的下级推荐树") ->body($treeHtml) ->button(" {$this->title}"); } /** * 获取推荐关系树数据 * * @param int $ursUserId * @return array */ private function getReferralTreeData(int $ursUserId): array { // 获取直推用户 $directReferrals = UrsUserReferral::where('urs_referrer_id', $ursUserId) ->where('status', UrsUserReferral::STATUS_VALID) ->with(['userMapping.user.info']) ->get(); $tree = [ 'user_id' => $ursUserId, 'direct' => [], 'indirect' => [], 'third' => [] ]; foreach ($directReferrals as $direct) { $directData = [ 'urs_user_id' => $direct->urs_user_id, 'farm_user_id' => $direct->userMapping->user_id ?? null, 'username' => $direct->userMapping->user->username ?? '未进入农场', 'nickname' => $direct->userMapping->user->info->nickname ?? '无昵称', 'referral_time' => $direct->referral_time, 'children' => [] ]; // 获取间推用户(直推用户的下级) $indirectReferrals = UrsUserReferral::where('urs_referrer_id', $direct->urs_user_id) ->where('status', UrsUserReferral::STATUS_VALID) ->with(['userMapping.user.info']) ->get(); foreach ($indirectReferrals as $indirect) { $indirectData = [ 'urs_user_id' => $indirect->urs_user_id, 'farm_user_id' => $indirect->userMapping->user_id ?? null, 'username' => $indirect->userMapping->user->username ?? '未进入农场', 'nickname' => $indirect->userMapping->user->info->nickname ?? '无昵称', 'referral_time' => $indirect->referral_time, 'children' => [] ]; // 获取三推用户(间推用户的下级) $thirdReferrals = UrsUserReferral::where('urs_referrer_id', $indirect->urs_user_id) ->where('status', UrsUserReferral::STATUS_VALID) ->with(['userMapping.user.info']) ->get(); foreach ($thirdReferrals as $third) { $indirectData['children'][] = [ 'urs_user_id' => $third->urs_user_id, 'farm_user_id' => $third->userMapping->user_id ?? null, 'username' => $third->userMapping->user->username ?? '未进入农场', 'nickname' => $third->userMapping->user->info->nickname ?? '无昵称', 'referral_time' => $third->referral_time, ]; } $directData['children'][] = $indirectData; } $tree['direct'][] = $directData; } return $tree; } /** * 构建树形结构HTML * * @param array $treeData * @return string */ private function buildTreeHtml(array $treeData): string { $html = '
暂无下级推荐用户
'; } else { $html .= '