fix: 总会员按子会员迁出;我的会员去掉展开重复展示

EOF

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-29 04:37:08 +08:00
parent 2f684a0203
commit 07ae350d55
2 changed files with 139 additions and 44 deletions

View File

@@ -365,6 +365,7 @@ def enrich_clumber_item(record, club_id=None):
'daoqi': daoqi_str,
'huiyuan_zhuangtai': 1,
'shifou_daoqi': False,
'display_owned': True,
}
if is_bundle_huiyuan(record.huiyuan_id):
item['is_bundle'] = True
@@ -379,16 +380,30 @@ def enrich_clumber_item(record, club_id=None):
def _append_clumber_id_variants(items, seen, base_item, huiyuan_id):
"""为老端 == 比较补齐多种会员 ID 写法。"""
"""为老端 == 比较补齐多种会员 ID 写法。仅首条供「我的会员」展示。"""
hide_owned = (
base_item.get('display_owned') is False
or bool(base_item.get('from_bundle'))
or bool(base_item.get('id_variant'))
)
first = True
for vid in expand_huiyuan_id_variants(huiyuan_id):
if vid in seen:
continue
seen.add(vid)
items.append({
row = {
**base_item,
'huiyuanid': vid,
'huiyuan_id': vid,
})
}
if hide_owned or not first:
row['display_owned'] = False
if not first:
row['id_variant'] = True
else:
row['display_owned'] = True
first = False
items.append(row)
def _append_bundle_sub_clumber(items, seen, base_item):
@@ -405,10 +420,23 @@ def _append_bundle_sub_clumber(items, seen, base_item):
sid = str(sub_id).strip()
if not sid:
continue
# 子项用子会员自己的名称;不进「我的会员」主列表(仅抢单匹配)
child_name = ''
try:
hy = Huiyuan.query.filter(huiyuan_id=sid).first()
if not hy:
for vid in expand_huiyuan_id_variants(sid):
hy = Huiyuan.query.filter(huiyuan_id=vid).first()
if hy:
break
child_name = ((hy.jieshao if hy else '') or '').strip()
except Exception:
child_name = ''
sub_base = {
'huiyuanming': base_item.get('huiyuanming', ''),
'huiyuanming': child_name or sid,
'daoqi': base_item.get('daoqi', ''),
'from_bundle': bundle_hid,
'display_owned': False,
'huiyuan_zhuangtai': 1,
'shifou_daoqi': False,
}
@@ -486,6 +514,7 @@ def _build_clumber_from_paid_czjilu(yonghu_id, club_id=None):
'daoqi': format_legacy_daoqi(daoqi),
'huiyuan_zhuangtai': 1,
'shifou_daoqi': False,
'display_owned': True,
}
if is_bundle_huiyuan(hid):
base['is_bundle'] = True