fix: 体验会员按正式会员返回抢单池数据 + 修复 MerchantStaffMember

clumber/dashouxinxi 有效期内体验会员与正式会员同格式返回;ddhq 保持原 yaoqiuleixing/huiyuan_id 供老端匹配;补 merchant-staff 缺 import。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-08 14:09:12 +08:00
parent 86e7a60642
commit eedd5fbd46
2 changed files with 11 additions and 21 deletions

View File

@@ -147,35 +147,24 @@ def resolve_order_membership_id(order_dict):
def resolve_grab_pool_member_display(order_dict, yonghu_id, club_id=None):
"""
老小程序抢单池适配(仅改接口返回,无需发版):
- 老端展示yaoqiuleixing==1 && huiyuan_id 时才判「未开通会员」
- 老端抢单yaoqiuleixing==1 时校验会员
已有权限时统一返回 yaoqiuleixing=0、huiyuan_id=''
抢单池订单字段:保持原 yaoqiuleixing / huiyuan_id供老端用 clumber 匹配。
体验会员已在 clumber 中按正式会员返回;抢单权限由 /dingdan/qiangdan 服务端校验。
"""
grab_req = int(order_dict.get('GrabRequirement') or 0)
if grab_req != 1:
return grab_req, '', True
required_ids = resolve_order_membership_ids(order_dict)
if not required_ids:
return 0, '', True
has_access = user_has_huiyuan_access_any(yonghu_id, required_ids, club_id=club_id)
if has_access:
return 0, '', True
return 1, required_ids[0], False
membership_id = resolve_order_membership_id(order_dict)
return grab_req, membership_id, True
def enrich_clumber_item(record):
"""老端 clumber 条目:必须有 huiyuanid + 字符串 daoqi"""
"""老端 clumber:有效期内体验会员与正式会员返回格式完全一致"""
daoqi_str = format_legacy_daoqi(record.daoqi_time)
item = {
'huiyuanid': record.huiyuan_id,
'huiyuan_id': record.huiyuan_id,
'huiyuanming': record.jieshao or f'会员{record.huiyuan_id}',
'daoqi': daoqi_str,
'is_trial': bool(getattr(record, 'is_trial', False)),
'huiyuan_zhuangtai': 1,
'shifou_daoqi': False,
}
if is_bundle_huiyuan(record.huiyuan_id):
item['is_bundle'] = True
@@ -211,7 +200,8 @@ def _append_bundle_sub_clumber(items, seen, record, base_item):
'huiyuanming': base_item.get('huiyuanming', ''),
'daoqi': base_item.get('daoqi', ''),
'from_bundle': bundle_hid,
'is_trial': bool(getattr(record, 'is_trial', False)),
'huiyuan_zhuangtai': 1,
'shifou_daoqi': False,
}
_append_clumber_id_variants(items, seen, sub_base, sid)
@@ -248,7 +238,7 @@ def build_auth_clumber(yonghu_id):
shifou_daoqi = record.jiance_shifou_daoqi()
base = enrich_clumber_item(record)
base.update({
'huiyuan_zhuangtai': record.huiyuan_zhuangtai,
'huiyuan_zhuangtai': 1 if (not shifou_daoqi and record.huiyuan_zhuangtai == 1) else record.huiyuan_zhuangtai,
'daoqi_time': record.daoqi_time.isoformat() if record.daoqi_time else None,
'shifou_daoqi': shifou_daoqi,
'jieshao': record.jieshao,

View File

@@ -15,7 +15,7 @@ from django.utils import timezone
from config.models import ShangjiaLianjie, ShangjiaMoban
from merchant_ops.constants import ACTOR_STAFF
from merchant_ops.models import MerchantOrderDispatch
from merchant_ops.models import MerchantOrderDispatch, MerchantStaffMember
from merchant_ops.services.wallet import check_wallet_available, confirm_dispatch_deduct
from orders.models import MerchantOrderExt, Order, CommissionRate
from products.models import ShangpinLeixing