getRow(); $ursUserId = $row->urs_user_id; // 获取推荐上级链数据 $chainData = $this->getReferralChainData($ursUserId); // 构建链路HTML $chainHtml = $this->buildChainHtml($chainData); return Modal::make() ->xl() ->title("URS用户 {$ursUserId} 的推荐上级链") ->body($chainHtml) ->button(" {$this->title}"); } /** * 获取推荐上级链数据 * * @param int $ursUserId * @return array */ private function getReferralChainData(int $ursUserId): array { $chain = []; $currentUserId = $ursUserId; $level = 0; $maxLevels = 30; // 防止无限循环,最多查询10级 // 从当前用户开始,向上查找推荐人 while ($currentUserId && $level < $maxLevels) { // 查找当前用户的推荐关系 $referral = UrsUserReferral::where('urs_user_id', $currentUserId) ->where('status', UrsUserReferral::STATUS_VALID) ->first(); // 获取用户的农场信息 $userMapping = UrsUserMapping::where('urs_user_id', $currentUserId) ->where('status', UrsUserMapping::STATUS_VALID) ->with(['user.info']) ->first(); $userInfo = [ 'urs_user_id' => $currentUserId, 'farm_user_id' => $userMapping->user_id ?? null, 'username' => $userMapping->user->username ?? '未进入农场', 'nickname' => $userMapping->user->info->nickname ?? '无昵称', 'level' => $level, 'is_root' => false, ]; if ($referral) { $userInfo['referrer_id'] = $referral->urs_referrer_id; $userInfo['referral_time'] = $referral->referral_time; $currentUserId = $referral->urs_referrer_id; } else { // 没有推荐人,说明是根用户 $userInfo['is_root'] = true; $currentUserId = null; } $chain[] = $userInfo; $level++; } return array_reverse($chain); // 反转数组,从根用户开始显示 } /** * 构建上级链HTML * * @param array $chainData * @return string */ private function buildChainHtml(array $chainData): string { $html = '
无法获取推荐链信息
'; } else { $totalLevels = count($chainData); $targetUserId = $chainData[count($chainData) - 1]['urs_user_id']; $html .= "