|
|
@@ -5,9 +5,7 @@ namespace App\Module\AppGame\Handler\Promotion;
|
|
|
use App\Module\AppGame\Handler\BaseHandler;
|
|
|
use App\Module\Fund\Services\FundService;
|
|
|
use App\Module\UrsPromotion\Services\UrsUserMappingService;
|
|
|
-use App\Module\UrsPromotion\Services\UrsReferralService;
|
|
|
use App\Module\User\Services\UserService;
|
|
|
-use App\Module\Fund\Services\AccountService;
|
|
|
use App\Module\Fund\Enums\FUND_TYPE;
|
|
|
use App\Module\Farm\Models\FarmUser;
|
|
|
use Google\Protobuf\Internal\Message;
|
|
|
@@ -131,10 +129,10 @@ class ListHandler extends BaseHandler
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取团队成员数据
|
|
|
+ * 获取团队成员数据(优化版本,使用缓存表查询)
|
|
|
*
|
|
|
* @param int $ursUserId URS用户ID
|
|
|
- * @param int $level 等级筛选
|
|
|
+ * @param int $level 等级筛选:0=全部,1=直推,2=间推,3=三推
|
|
|
* @param int $pageNum 页码
|
|
|
* @param int $pageSize 每页大小
|
|
|
* @return array
|
|
|
@@ -142,57 +140,60 @@ class ListHandler extends BaseHandler
|
|
|
private function getTeamMemberData(int $ursUserId, int $level, int $pageNum, int $pageSize): array
|
|
|
{
|
|
|
try {
|
|
|
- // 获取团队成员
|
|
|
- $teamMembers = UrsReferralService::getTeamMembers($ursUserId);
|
|
|
+ // 获取当前用户对应的农场用户ID
|
|
|
+ $farmUserId = UrsUserMappingService::getFarmUserId($ursUserId);
|
|
|
+ if (!$farmUserId) {
|
|
|
+ Log::warning('URS用户未映射到农场用户', [
|
|
|
+ 'urs_user_id' => $ursUserId
|
|
|
+ ]);
|
|
|
+ return [
|
|
|
+ 'total' => 0,
|
|
|
+ 'list' => []
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用缓存表查询团队成员,避免递归查询性能问题
|
|
|
+ $query = \App\Module\UrsPromotion\Models\UrsUserRelationCache::where('related_user_id', $farmUserId);
|
|
|
|
|
|
// 根据等级筛选
|
|
|
- $filteredMembers = [];
|
|
|
if ($level == 0) {
|
|
|
- // 全部等级
|
|
|
- foreach ([ 1, 2, 3 ] as $lvl) {
|
|
|
- if (!empty($teamMembers[$lvl])) {
|
|
|
- foreach ($teamMembers[$lvl] as $member) {
|
|
|
- $filteredMembers[] = [ 'urs_user_id' => $member, 'level' => $lvl ];
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ // 全部等级:1-3代
|
|
|
+ $query->whereIn('depth', [1, 2, 3]);
|
|
|
} else {
|
|
|
// 指定等级
|
|
|
- if (!empty($teamMembers[$level])) {
|
|
|
- foreach ($teamMembers[$level] as $member) {
|
|
|
- $filteredMembers[] = [ 'urs_user_id' => $member, 'level' => $level ];
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 过滤出已进入农场的用户
|
|
|
- $validMembers = [];
|
|
|
- foreach ($filteredMembers as $member) {
|
|
|
- $farmUserId = UrsUserMappingService::getFarmUserId($member['urs_user_id']);
|
|
|
- if ($farmUserId) {
|
|
|
- $validMembers[] = [
|
|
|
- 'urs_user_id' => $member['urs_user_id'],
|
|
|
- 'farm_user_id' => $farmUserId,
|
|
|
- 'level' => $member['level']
|
|
|
- ];
|
|
|
- }
|
|
|
+ $query->where('depth', $level);
|
|
|
}
|
|
|
|
|
|
- $total = count($validMembers);
|
|
|
+ // 获取总数
|
|
|
+ $total = $query->count();
|
|
|
|
|
|
- // 分页处理
|
|
|
- $offset = ($pageNum - 1) * $pageSize;
|
|
|
- $pagedMembers = array_slice($validMembers, $offset, $pageSize);
|
|
|
+ // 分页查询
|
|
|
+ $relations = $query->orderBy('depth')
|
|
|
+ ->orderBy('user_id')
|
|
|
+ ->offset(($pageNum - 1) * $pageSize)
|
|
|
+ ->limit($pageSize)
|
|
|
+ ->get();
|
|
|
|
|
|
// 构建列表项
|
|
|
$listItems = [];
|
|
|
- foreach ($pagedMembers as $member) {
|
|
|
- $listItem = $this->buildListItem($member['farm_user_id']);
|
|
|
+ foreach ($relations as $relation) {
|
|
|
+ $listItem = $this->buildListItem($relation->user_id);
|
|
|
if ($listItem) {
|
|
|
$listItems[] = $listItem;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ Log::info('团队成员数据查询成功', [
|
|
|
+ 'user_id' => $this->user_id,
|
|
|
+ 'urs_user_id' => $ursUserId,
|
|
|
+ 'farm_user_id' => $farmUserId,
|
|
|
+ 'level' => $level,
|
|
|
+ 'total' => $total,
|
|
|
+ 'page' => $pageNum,
|
|
|
+ 'size' => $pageSize,
|
|
|
+ 'returned' => count($listItems)
|
|
|
+ ]);
|
|
|
+
|
|
|
return [
|
|
|
'total' => $total,
|
|
|
'list' => $listItems
|
|
|
@@ -200,9 +201,11 @@ class ListHandler extends BaseHandler
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
Log::error('获取团队成员数据失败', [
|
|
|
+ 'user_id' => $this->user_id,
|
|
|
'urs_user_id' => $ursUserId,
|
|
|
- 'level' => $level,
|
|
|
- 'error' => $e->getMessage()
|
|
|
+ 'level' => $level,
|
|
|
+ 'error' => $e->getMessage(),
|
|
|
+ 'trace' => $e->getTraceAsString()
|
|
|
]);
|
|
|
|
|
|
return [
|