fix: 体验会员本单有权限时 yaoqiuleixing 返回 0 仅适配老端展示

逐单判断会员类型:有权限的单显示可抢,无权限/过期仍显示未开通;抢单与提现后端校验不变。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-08 15:05:48 +08:00
parent 3ec821ae6a
commit 7819f1a897

View File

@@ -210,8 +210,10 @@ def _prune_clumber_items(yonghu_id, items, club_id=None):
def resolve_grab_pool_member_display(order_dict, yonghu_id, club_id=None, user_clumber=None):
"""
老小程序抢单池:按「本单所需会员类型」逐单判断,禁止有任意会员就放开全部订单。
会员单固定返回 yaoqiuleixing=1 + 本单 huiyuan_idhas_access 供 hasRequiredMember。
抢单池展示(仅老端 UI不影响 /qiangdan 真实校验):
- 本单有对应会员(含体验)→ yaoqiuleixing=0老端显示分佣/可抢
- 本单无对应会员 → yaoqiuleixing=1 + huiyuan_id老端显示未开通
禁止「有任意会员就放开全部单」。
"""
grab_req = int(order_dict.get('GrabRequirement') or 0)
membership_id = resolve_order_membership_id(order_dict)
@@ -220,7 +222,9 @@ def resolve_grab_pool_member_display(order_dict, yonghu_id, club_id=None, user_c
required_ids = resolve_order_membership_ids(order_dict)
has_access = user_has_huiyuan_access_any(yonghu_id, required_ids, club_id=club_id)
return 1, membership_id or '', has_access
if has_access:
return 0, membership_id or '', True
return 1, membership_id or '', False
def enrich_clumber_item(record):
@@ -346,8 +350,21 @@ def ensure_grab_pool_clumber(yonghu_id, club_id=None):
sync_member_entitlements_for_user(yonghu_id)
items = _build_user_clumber_core(yonghu_id)
if not items:
items = _build_clumber_from_paid_czjilu(yonghu_id)
extra = _build_clumber_from_paid_czjilu(yonghu_id)
if extra:
seen_cores = set()
for it in items:
hid = normalize_huiyuan_id(it.get('huiyuanid') or it.get('huiyuan_id'))
if hid:
seen_cores.add(hid.lstrip('0') or '0')
for it in extra:
hid = normalize_huiyuan_id(it.get('huiyuanid') or it.get('huiyuan_id'))
if not hid:
continue
core = hid.lstrip('0') or '0'
if core not in seen_cores:
items.append(it)
seen_cores.add(core)
items = _prune_clumber_items(yonghu_id, items, club_id=club_id)
return bool(items), items