fix: 体验/总会员抢单池显示与接单权限
统一 clumber 返回 huiyuanid 并展开总会员子类型;抢单池接口对已具备会员权限的用户将 yaoqiuleixing 置 0,使小程序无需发版即可正常显示分佣并抢单。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -63,8 +63,10 @@ def enrich_clumber_item(record):
|
||||
"""为 clumber 条目附加总会员覆盖的子会员 ID 列表(旧端忽略该字段)。"""
|
||||
item = {
|
||||
'huiyuanid': record.huiyuan_id,
|
||||
'huiyuan_id': record.huiyuan_id,
|
||||
'huiyuanming': record.jieshao or f'会员{record.huiyuan_id}',
|
||||
'daoqi': record.daoqi_time,
|
||||
'is_trial': bool(getattr(record, 'is_trial', False)),
|
||||
}
|
||||
if is_bundle_huiyuan(record.huiyuan_id):
|
||||
item['is_bundle'] = True
|
||||
@@ -74,6 +76,71 @@ def enrich_clumber_item(record):
|
||||
return item
|
||||
|
||||
|
||||
def _append_bundle_sub_clumber(items, seen, record, base_item):
|
||||
"""总会员有效时,为抢单页展开子会员虚拟条目。"""
|
||||
if not base_item.get('is_bundle'):
|
||||
return
|
||||
bundle_hid = str(record.huiyuan_id)
|
||||
for sub_id in base_item.get('included_huiyuan_ids') or []:
|
||||
sid = str(sub_id).strip()
|
||||
if not sid or sid in seen:
|
||||
continue
|
||||
seen.add(sid)
|
||||
items.append({
|
||||
'huiyuanid': sid,
|
||||
'huiyuan_id': sid,
|
||||
'huiyuanming': base_item.get('huiyuanming', ''),
|
||||
'daoqi': base_item.get('daoqi'),
|
||||
'from_bundle': bundle_hid,
|
||||
'is_trial': bool(getattr(record, 'is_trial', False)),
|
||||
})
|
||||
|
||||
|
||||
def build_user_clumber(yonghu_id):
|
||||
"""
|
||||
构建抢单页可用的 clumber 列表。
|
||||
- 仅包含未过期且状态有效的会员(含体验会员)
|
||||
- 总会员自动展开所覆盖的子会员 ID
|
||||
- 同时返回 huiyuanid / huiyuan_id,兼容小程序各页面字段名
|
||||
"""
|
||||
items = []
|
||||
seen = set()
|
||||
for record in Huiyuangoumai.query.filter(yonghu_id=yonghu_id):
|
||||
if record.jiance_shifou_daoqi():
|
||||
continue
|
||||
if record.huiyuan_zhuangtai != 1:
|
||||
continue
|
||||
base = enrich_clumber_item(record)
|
||||
hid = str(record.huiyuan_id)
|
||||
if hid not in seen:
|
||||
seen.add(hid)
|
||||
items.append(base)
|
||||
_append_bundle_sub_clumber(items, seen, record, base)
|
||||
return items
|
||||
|
||||
|
||||
def build_auth_clumber(yonghu_id):
|
||||
"""登录/注册返回的 clumber:保留状态字段,并补齐抢单页所需的 huiyuanid。"""
|
||||
items = []
|
||||
seen = set()
|
||||
for record in Huiyuangoumai.query.filter(yonghu_id=yonghu_id):
|
||||
shifou_daoqi = record.jiance_shifou_daoqi()
|
||||
base = enrich_clumber_item(record)
|
||||
base.update({
|
||||
'huiyuan_zhuangtai': record.huiyuan_zhuangtai,
|
||||
'daoqi_time': record.daoqi_time.isoformat() if record.daoqi_time else None,
|
||||
'shifou_daoqi': shifou_daoqi,
|
||||
'jieshao': record.jieshao,
|
||||
})
|
||||
hid = str(record.huiyuan_id)
|
||||
if hid not in seen:
|
||||
seen.add(hid)
|
||||
items.append(base)
|
||||
if not shifou_daoqi and record.huiyuan_zhuangtai == 1:
|
||||
_append_bundle_sub_clumber(items, seen, record, base)
|
||||
return items
|
||||
|
||||
|
||||
def save_bundle_includes(club_id, bundle_huiyuan_id, included_ids):
|
||||
"""保存俱乐部总会员包含的子会员(须为本俱乐部已上架的普通会员)。"""
|
||||
from jituan.models import ClubHuiyuanBundleInclude, ClubHuiyuanPrice
|
||||
|
||||
Reference in New Issue
Block a user