feat(fsgx): 更新用户列表直推/伞下统计并同步测试文档
补充用户列表中的直推人数与伞下订单数统计逻辑,便于验证分销链路数据;同时更新验收与问题文档,记录当前手测结论和检查项。 Made-with: Cursor
This commit is contained in:
@@ -819,6 +819,38 @@ class UserServices extends BaseServices
|
||||
$agentLevelServices = app()->make(AgentLevelServices::class);
|
||||
$hjfLevelMaps = $agentLevelServices->loadHjfUserListLevelMaps();
|
||||
|
||||
// 直推人数:统计 spread_uid 在 $uids 中的用户数
|
||||
$directCountRaw = $this->dao->search(['spread_uid' => $uids])
|
||||
->group('spread_uid')
|
||||
->field('spread_uid, count(*) as cnt')
|
||||
->select()->toArray();
|
||||
$directCountMap = array_column($directCountRaw, 'cnt', 'spread_uid');
|
||||
|
||||
// 伞下订单数:先取 spread_uid 在 $uids 中的下级用户 uid → spread_uid 映射,再统计订单
|
||||
$subUsersRaw = $this->dao->search(['spread_uid' => $uids])
|
||||
->field('uid, spread_uid')
|
||||
->select()->toArray();
|
||||
// subUidToSpread: [sub_uid => spread_uid]
|
||||
$subUidToSpread = array_column($subUsersRaw, 'spread_uid', 'uid');
|
||||
$subUids = array_keys($subUidToSpread);
|
||||
$umbrellaMap = [];
|
||||
if ($subUids) {
|
||||
$umbrellaOrdersRaw = \think\facade\Db::name('store_order')
|
||||
->whereIn('uid', $subUids)
|
||||
->where('paid', 1)
|
||||
->where('pid', 0)
|
||||
->whereIn('refund_status', [0, 3])
|
||||
->field('uid, count(*) as cnt')
|
||||
->group('uid')
|
||||
->select()->toArray();
|
||||
foreach ($umbrellaOrdersRaw as $row) {
|
||||
$spreadUid = $subUidToSpread[$row['uid']] ?? null;
|
||||
if ($spreadUid !== null) {
|
||||
$umbrellaMap[$spreadUid] = ($umbrellaMap[$spreadUid] ?? 0) + (int)$row['cnt'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 补充信息
|
||||
$extendInfo = SystemConfigService::get('user_extend_info', []);
|
||||
$is_extend_info = false;
|
||||
@@ -906,6 +938,10 @@ class UserServices extends BaseServices
|
||||
$item['available_points'] = (int)($item['available_points'] ?? 0);
|
||||
$item['frozen_points'] = (int)($item['frozen_points'] ?? 0);
|
||||
|
||||
// 直推人数 & 伞下订单数
|
||||
$item['direct_count'] = (int)($directCountMap[$item['uid']] ?? 0);
|
||||
$item['umbrella_orders'] = (int)($umbrellaMap[$item['uid']] ?? 0);
|
||||
|
||||
// 标签
|
||||
$item['labels'] = $userlabel[$item['uid']] ?? '';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user