任务时间: 2025年07月03日 22:15
任务类型: Bug修复
模块: UrsPromotion
用户发现 validateAndCreateReferrals 方法的注释说是补全20代关系,但实际代码只创建了一条直接推荐关系记录,与注释不符。
经过分析,发现:
{'1': 直接上级, '2': 二级上级, ...}urs_promotion_user_referrals 只存储直接推荐关系urs_promotion_user_relation_cache 表实现generateRelationCache 方法中生成经过分析数据库表结构发现:
urs_promotion_user_referrals 表有唯一约束 uk_urs_user_id// 为当前用户创建推荐关系:用户 -> 直接推荐人
UrsUserReferral::create([
'urs_user_id' => $ursUserId,
'urs_referrer_id' => $directReferrerId,
// ...
]);
// 为链条中的每个推荐人补全其推荐关系
for ($level = 1; $level <= $maxLevel; $level++) {
$referrerId = $teamRelations[$level];
$upperReferrerId = $teamRelations[$level + 1] ?? null;
if ($upperReferrerId && !existsReferral($referrerId)) {
// 创建:推荐人 -> 上级推荐人
UrsUserReferral::create([
'urs_user_id' => $referrerId,
'urs_referrer_id' => $upperReferrerId,
// ...
]);
}
}
app/Module/UrsPromotion/Logics/UrsReferralSyncLogic.php用户 -> 直接推荐人 的关系记录推荐人 -> 上级推荐人 的关系记录{
"team": {
"1": 10001, // 直接推荐人
"2": 10002, // 二级推荐人
"3": 10003, // 三级推荐人
...
"20": 10020 // 20级推荐人
}
}
urs_promotion_user_referrals 存储直接推荐关系urs_promotion_user_relation_cache 存储20代关系缓存通过 tinker 测试验证了团队数据解析逻辑:
这次修复实现了真正的20代推荐关系补全功能:
修复后的方法真正实现了注释中描述的"补充缺失的推荐关系记录(20代关系)"功能。