"""用户所属俱乐部解析。""" from jituan.constants import CLUB_ID_DEFAULT from jituan.models import UserWxOpenid def get_user_club_id(user): """ 解析用户归属 club(注册/邀请链隔离用)。 优先级:User.ClubID → user_wx_openid → 默认 xq。 """ if not user: return CLUB_ID_DEFAULT club_id = getattr(user, 'ClubID', None) or getattr(user, 'club_id', None) if club_id: return club_id uid = getattr(user, 'UserUID', None) or getattr(user, 'yonghuid', None) if uid: binding = UserWxOpenid.query.filter(yonghuid=uid).order_by('id').first() if binding: return binding.club_id return CLUB_ID_DEFAULT def ensure_user_club_id(user, club_id): """登录/注册后确保 User.ClubID 与绑定 club 一致。""" if not user or not club_id: return current = getattr(user, 'ClubID', None) if current != club_id and hasattr(user, 'ClubID'): user.ClubID = club_id user.save(update_fields=['ClubID'])