fix: 微信登录失败时返回明确错误,附属信息异常不阻断登录
避免 staff/订单统计异常导致整次 wechat-login 500;缺俱乐部配置时提示更清晰。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -39,10 +39,14 @@ def resolve_club_by_appid(app_id):
|
||||
def get_club_wx_credentials(club_id):
|
||||
"""优先读 club 表;xq 缺省时回退 settings 全局配置(兼容现网)。"""
|
||||
club_id = club_id or CLUB_ID_DEFAULT
|
||||
club = None
|
||||
try:
|
||||
club = Club.query.get(club_id=club_id)
|
||||
except Club.DoesNotExist:
|
||||
club = None
|
||||
except Exception:
|
||||
logger.exception('读取俱乐部失败 club_id=%s', club_id)
|
||||
club = None
|
||||
|
||||
appid = get_club_miniapp_appid(club)
|
||||
secret = (club.wx_secret or '').strip() if club else ''
|
||||
@@ -55,7 +59,10 @@ def get_club_wx_credentials(club_id):
|
||||
getattr(settings, 'WEIXIN_SECRET', ''),
|
||||
club,
|
||||
)
|
||||
return '', '', club
|
||||
# 非默认俱乐部未配置时给出明确原因,避免后续空指针 500
|
||||
if not club:
|
||||
return '', '', None
|
||||
return appid or '', secret or '', club
|
||||
|
||||
|
||||
def _invite_code_from_request(request):
|
||||
|
||||
@@ -161,13 +161,22 @@ def login_or_register_by_club(code, club_id=None, app_id=None, client_ip=''):
|
||||
refresh = RefreshToken.for_user(user)
|
||||
token = str(refresh.access_token)
|
||||
|
||||
from merchant_ops.services.authz import staff_fields_for_login
|
||||
from users.views import WechatMiniProgramLoginView
|
||||
staff_fields = staff_fields_for_login(user)
|
||||
staff_fields = {}
|
||||
order_counts = {}
|
||||
group_info = {}
|
||||
try:
|
||||
from merchant_ops.services.authz import staff_fields_for_login
|
||||
staff_fields = staff_fields_for_login(user) or {}
|
||||
except Exception:
|
||||
logger.exception('staff_fields_for_login 失败 uid=%s', getattr(user, 'UserUID', ''))
|
||||
|
||||
login_view = WechatMiniProgramLoginView()
|
||||
order_counts = login_view.jisuanOrderShuliang(user.UserUID)
|
||||
group_info = login_view.huoquQunPeizhi()
|
||||
try:
|
||||
from users.views import WechatMiniProgramLoginView
|
||||
login_view = WechatMiniProgramLoginView()
|
||||
order_counts = login_view.jisuanOrderShuliang(user.UserUID) or {}
|
||||
group_info = login_view.huoquQunPeizhi() or {}
|
||||
except Exception:
|
||||
logger.exception('登录附属信息失败 uid=%s', getattr(user, 'UserUID', ''))
|
||||
|
||||
data = {
|
||||
'token': token,
|
||||
|
||||
Reference in New Issue
Block a user