From 7819f1a89732bfa67e4d068496605f9497788e79 Mon Sep 17 00:00:00 2001 From: XingQue Date: Wed, 8 Jul 2026 15:05:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BD=93=E9=AA=8C=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E6=9C=AC=E5=8D=95=E6=9C=89=E6=9D=83=E9=99=90=E6=97=B6=20yaoqiu?= =?UTF-8?q?leixing=20=E8=BF=94=E5=9B=9E=200=20=E4=BB=85=E9=80=82=E9=85=8D?= =?UTF-8?q?=E8=80=81=E7=AB=AF=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 逐单判断会员类型:有权限的单显示可抢,无权限/过期仍显示未开通;抢单与提现后端校验不变。 Co-authored-by: Cursor --- jituan/services/huiyuan_bundle.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/jituan/services/huiyuan_bundle.py b/jituan/services/huiyuan_bundle.py index bcbf3db..a5cd049 100644 --- a/jituan/services/huiyuan_bundle.py +++ b/jituan/services/huiyuan_bundle.py @@ -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_id;has_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