diff --git a/jituan/services/invite_guard.py b/jituan/services/invite_guard.py index ffb2e8e..8d249b1 100644 --- a/jituan/services/invite_guard.py +++ b/jituan/services/invite_guard.py @@ -1,8 +1,11 @@ """邀请码 / 邀请链俱乐部隔离。""" -from jituan.constants import CLUB_ID_DEFAULT +import logging + from jituan.services.club_resolver import resolve_club_id_for_wechat_request from jituan.services.club_user import resolve_invite_party_club +logger = logging.getLogger(__name__) + def assert_invite_same_club(request, inviter_user, invitee_user=None): """ @@ -12,14 +15,23 @@ def assert_invite_same_club(request, inviter_user, invitee_user=None): """ club_id = resolve_club_id_for_wechat_request(request) inviter_club = resolve_invite_party_club(inviter_user, club_id) - if inviter_club is None and club_id == CLUB_ID_DEFAULT: - inviter_club = CLUB_ID_DEFAULT + if inviter_club is None: + # 管事未落库 ClubID/绑定时,以当前小程序为准(星之界扫码邀请常见) + inviter_club = club_id if inviter_club != club_id: + logger.warning( + 'invite_guard 管事俱乐部不符 inviter=%s inviter_club=%s req_club=%s', + getattr(inviter_user, 'UserUID', '?'), inviter_club, club_id, + ) return False, '邀请码不属于当前小程序俱乐部' 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: + 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, '邀请码与您的俱乐部不匹配' diff --git a/users/views/auth.py b/users/views/auth.py index 838d2b6..85e3b56 100644 --- a/users/views/auth.py +++ b/users/views/auth.py @@ -555,9 +555,14 @@ class DashouZhuceView(APIView): ok, msg = assert_invite_same_club(request, guanshi_profile.user, current_user) if not ok: + logger.warning( + 'dashouzhuce 俱乐部校验失败 uid=%s club=%s msg=%s', + current_user.UserUID, resolve_club_id_for_wechat_request(request), msg, + ) return Response({ 'code': 403, 'message': msg, + 'msg': msg, 'data': None }, status=status.HTTP_403_FORBIDDEN) @@ -919,9 +924,14 @@ class WechatLoginAndDashouRegisterView(APIView): request, guanshi_profile.user, user_main, ) if not ok: + logger.warning( + 'wdlyhdl 俱乐部校验失败 uid=%s club=%s msg=%s invite=%s', + user_main.UserUID, club_id, invite_msg, yaoqingma[:8], + ) return Response({ 'code': 403, 'msg': invite_msg, + 'message': invite_msg, 'data': None }, status=status.HTTP_403_FORBIDDEN)