node($buyerId); if ($self) { $nodes[] = $self; $visited[$buyerId] = true; } } $currentId = $buyerId; for ($i = 0; $i < $max; $i++) { $agent = new AgentService($currentId); $parentId = $agent->getParentUserId(); if (!$parentId || isset($visited[$parentId])) { break; } $node = $this->node($parentId); if (!$node) { break; } $nodes[] = $node; $visited[$parentId] = true; $currentId = $parentId; } return $nodes; } public function node($userId) { if (!$userId) { return null; } $agent = AgentModel::where('user_id', $userId) ->where('status', 'in', ['normal', 'freeze']) ->find(); if (!$agent) { return null; } return [ 'user_id' => intval($agent->user_id), 'level' => intval($agent->level), 'is_venue' => intval($agent->is_venue), 'is_county' => intval($agent->is_county), 'county_code' => (string) $agent->county_code, 'last_self_order_time' => $agent->last_self_order_time ? intval($agent->last_self_order_time) : 0, 'direct_order_seq' => intval($agent->direct_order_seq), 'status' => $agent->status, 'agent' => $agent, ]; } }