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