fix: 多俱乐部下单按 user_wx_openid 取 openid;集团超管始终可切俱乐部

This commit is contained in:
XingQue
2026-06-24 20:40:30 +08:00
parent 8e5662c56f
commit 08fc8f50f3

View File

@@ -32,3 +32,28 @@ def ensure_user_club_id(user, club_id):
if current != club_id and hasattr(user, 'ClubID'):
user.ClubID = club_id
user.save(update_fields=['ClubID'])
def get_wx_openid_for_user(user, club_id=None):
"""
按俱乐部取微信支付 JSAPI 用 openid。
多俱乐部用户 openid 在 user_wx_openidxq 老用户可回落 User.OpenID。
"""
if not user:
return ''
cid = (club_id or '').strip() or get_user_club_id(user)
uid = getattr(user, 'UserUID', None) or getattr(user, 'yonghuid', None)
if uid and cid:
binding = UserWxOpenid.query.filter(yonghuid=uid, club_id=cid).first()
if binding and binding.openid:
return binding.openid
legacy = getattr(user, 'OpenID', None) or getattr(user, 'openid', None)
return legacy or ''
def get_payment_openid(request, user=None, club_id=None):
"""下单/充值:按请求俱乐部解析 openid。"""
from jituan.services.club_write import resolve_club_id_for_write
user = user or getattr(request, 'user', None)
cid = club_id or resolve_club_id_for_write(request, user)
return get_wx_openid_for_user(user, cid), cid