fix: 体验会员按正式会员返回抢单池数据 + 修复 MerchantStaffMember
clumber/dashouxinxi 有效期内体验会员与正式会员同格式返回;ddhq 保持原 yaoqiuleixing/huiyuan_id 供老端匹配;补 merchant-staff 缺 import。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -147,35 +147,24 @@ def resolve_order_membership_id(order_dict):
|
|||||||
|
|
||||||
def resolve_grab_pool_member_display(order_dict, yonghu_id, club_id=None):
|
def resolve_grab_pool_member_display(order_dict, yonghu_id, club_id=None):
|
||||||
"""
|
"""
|
||||||
老小程序抢单池适配(仅改接口返回,无需发版):
|
抢单池订单字段:保持原 yaoqiuleixing / huiyuan_id,供老端用 clumber 匹配。
|
||||||
- 老端展示:yaoqiuleixing==1 && huiyuan_id 时才判「未开通会员」
|
体验会员已在 clumber 中按正式会员返回;抢单权限由 /dingdan/qiangdan 服务端校验。
|
||||||
- 老端抢单:yaoqiuleixing==1 时校验会员
|
|
||||||
已有权限时统一返回 yaoqiuleixing=0、huiyuan_id=''。
|
|
||||||
"""
|
"""
|
||||||
grab_req = int(order_dict.get('GrabRequirement') or 0)
|
grab_req = int(order_dict.get('GrabRequirement') or 0)
|
||||||
if grab_req != 1:
|
membership_id = resolve_order_membership_id(order_dict)
|
||||||
return grab_req, '', True
|
return grab_req, membership_id, 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
|
|
||||||
|
|
||||||
|
|
||||||
def enrich_clumber_item(record):
|
def enrich_clumber_item(record):
|
||||||
"""老端 clumber 条目:必须有 huiyuanid + 字符串 daoqi。"""
|
"""老端 clumber:有效期内体验会员与正式会员返回格式完全一致。"""
|
||||||
daoqi_str = format_legacy_daoqi(record.daoqi_time)
|
daoqi_str = format_legacy_daoqi(record.daoqi_time)
|
||||||
item = {
|
item = {
|
||||||
'huiyuanid': record.huiyuan_id,
|
'huiyuanid': record.huiyuan_id,
|
||||||
'huiyuan_id': record.huiyuan_id,
|
'huiyuan_id': record.huiyuan_id,
|
||||||
'huiyuanming': record.jieshao or f'会员{record.huiyuan_id}',
|
'huiyuanming': record.jieshao or f'会员{record.huiyuan_id}',
|
||||||
'daoqi': daoqi_str,
|
'daoqi': daoqi_str,
|
||||||
'is_trial': bool(getattr(record, 'is_trial', False)),
|
'huiyuan_zhuangtai': 1,
|
||||||
|
'shifou_daoqi': False,
|
||||||
}
|
}
|
||||||
if is_bundle_huiyuan(record.huiyuan_id):
|
if is_bundle_huiyuan(record.huiyuan_id):
|
||||||
item['is_bundle'] = True
|
item['is_bundle'] = True
|
||||||
@@ -211,7 +200,8 @@ def _append_bundle_sub_clumber(items, seen, record, base_item):
|
|||||||
'huiyuanming': base_item.get('huiyuanming', ''),
|
'huiyuanming': base_item.get('huiyuanming', ''),
|
||||||
'daoqi': base_item.get('daoqi', ''),
|
'daoqi': base_item.get('daoqi', ''),
|
||||||
'from_bundle': bundle_hid,
|
'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)
|
_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()
|
shifou_daoqi = record.jiance_shifou_daoqi()
|
||||||
base = enrich_clumber_item(record)
|
base = enrich_clumber_item(record)
|
||||||
base.update({
|
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,
|
'daoqi_time': record.daoqi_time.isoformat() if record.daoqi_time else None,
|
||||||
'shifou_daoqi': shifou_daoqi,
|
'shifou_daoqi': shifou_daoqi,
|
||||||
'jieshao': record.jieshao,
|
'jieshao': record.jieshao,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ from django.utils import timezone
|
|||||||
|
|
||||||
from config.models import ShangjiaLianjie, ShangjiaMoban
|
from config.models import ShangjiaLianjie, ShangjiaMoban
|
||||||
from merchant_ops.constants import ACTOR_STAFF
|
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 merchant_ops.services.wallet import check_wallet_available, confirm_dispatch_deduct
|
||||||
from orders.models import MerchantOrderExt, Order, CommissionRate
|
from orders.models import MerchantOrderExt, Order, CommissionRate
|
||||||
from products.models import ShangpinLeixing
|
from products.models import ShangpinLeixing
|
||||||
|
|||||||
Reference in New Issue
Block a user