This commit is contained in:
Your Name
2026-07-15 09:07:05 +08:00
parent f6688a740d
commit 796441b407
4 changed files with 398 additions and 161 deletions
@@ -133,12 +133,6 @@ class QywxExternalContactCallbackController extends BaseApiController
$failReason !== '' ? $failReason : '-'
));
if ($changeType === 'del_external_contact') {
CustomerLogic::softDeleteExternalContactRow($extId);
return;
}
if ($changeType === 'add_half_external_contact') {
// 半客户:客户尚未通过验证,/externalcontact/get 通常返回 84061「客户尚未通过」之类,
// 这里只 log 不写库,避免产生 noise;客户通过后会再触发 add_external_contact 事件再走 UPSERT。
@@ -153,17 +147,17 @@ class QywxExternalContactCallbackController extends BaseApiController
return;
}
if ($changeType === 'del_follow_user') {
// 某员工不再跟进该客户:只需把本地 follow_users 里对应 userid 移除
// 若已无跟进人则软删;不再回调 /externalcontact/get(最后一个跟进人被删时会稳定返回 84061)
if ($userId !== '') {
CustomerLogic::removeFollowUserFromLocal($extId, $userId);
}
return;
}
// 其余变更(添加/编辑/转接成功/标签变化等):以 get 详情为准 UPSERT,避免遗漏未枚举的 ChangeType
CustomerLogic::upsertSingleExternalContactFromApi($extId);
// 其余全部变更(添加/编辑/删除/被删/转接/标签变化等):一律以 /externalcontact/get 的真实状态为准。
// - 仍是企业客户(含"客户单方删除员工",企微会保留客户与跟进关系)→ UPSERT 最新数据
// - 已彻底不是企业客户(84061)→ 本地软删
// 实测验证:del_follow_user(客户删员工)后 get 依然成功返回且 follow_user 保留,
// 本地自行推断移除跟进人/软删会导致客户数持续少于企微,故删除类事件不再走本地推断。
// 添加事件若命中已有客户(含软删行):不动原有行,新增一行 readd_flag=1(以前加过)的记录。
CustomerLogic::upsertSingleExternalContactFromApi(
$extId,
$changeType === 'add_external_contact',
$userId,
$eventTime
);
}
}