diff --git a/jituan/services/invite_guard.py b/jituan/services/invite_guard.py index a1f6b2f..8e53b11 100644 --- a/jituan/services/invite_guard.py +++ b/jituan/services/invite_guard.py @@ -36,14 +36,17 @@ def assert_invite_same_club(request, inviter_user, invitee_user=None): if invitee_user is not None: invitee_club = resolve_invite_party_club(invitee_user, club_id) if invitee_club is not None and invitee_club != club_id: - # 老用户 ClubID 可能是 xq,但扫的是本俱乐部管事码:允许注册并回写 ClubID - if not _invitee_has_club_binding(invitee_user, club_id) and inviter_club != club_id: + # 仅在「管事码也不属于当前小程序」且「用户已绑定别俱乐部 wx」时拒绝 + if ( + inviter_club != club_id + and _invitee_has_club_binding(invitee_user, invitee_club) + and not _invitee_has_club_binding(invitee_user, club_id) + ): logger.warning( 'invite_guard 被邀请人俱乐部不符 invitee=%s invitee_club=%s req_club=%s', getattr(invitee_user, 'UserUID', '?'), invitee_club, club_id, ) return False, '您的账号归属与当前小程序不一致,请使用对应俱乐部小程序' - if invitee_club is not None and invitee_club != inviter_club: - return False, '邀请码与您的俱乐部不匹配' + # 管事码已证明属于当前小程序时,允许老 xq 账号在 xzj 完成注册(注册后写 ClubID) return True, ''