fix: dddhq与dashouxinxi每次请求同步刷新会员clumber
抢单池拉单前先 sync 权益;老端依赖 yaoqiuleixing=0 与 clumber 即时更新。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -186,6 +186,9 @@ def resolve_order_membership_ids(order_dict):
|
|||||||
)
|
)
|
||||||
if mid:
|
if mid:
|
||||||
ids.append(mid)
|
ids.append(mid)
|
||||||
|
grab_req = int(order_dict.get('GrabRequirement') or order_dict.get('yaoqiuleixing') or 0)
|
||||||
|
if grab_req != 1:
|
||||||
|
return ids
|
||||||
leixing_id = order_dict.get('ProductTypeID') or order_dict.get('leixing_id')
|
leixing_id = order_dict.get('ProductTypeID') or order_dict.get('leixing_id')
|
||||||
if leixing_id:
|
if leixing_id:
|
||||||
try:
|
try:
|
||||||
@@ -357,12 +360,12 @@ def _build_clumber_from_paid_czjilu(yonghu_id):
|
|||||||
|
|
||||||
def ensure_grab_pool_clumber(yonghu_id, club_id=None):
|
def ensure_grab_pool_clumber(yonghu_id, club_id=None):
|
||||||
"""
|
"""
|
||||||
【仅抢单池 dddhq 展示】体验会员与正式会员同格式写入 clumber。
|
【ddhq / dashouxinxi 展示专用】每次请求:先同步已付会员权益,再生成 clumber(体验=正式)。
|
||||||
不得用于提现;提现须 check_dashou_has_formal_huiyuan_for_withdraw。
|
提现校验不得使用此函数。
|
||||||
"""
|
"""
|
||||||
from jituan.services.member_recharge import sync_member_entitlements_for_user
|
from jituan.services.member_recharge import sync_member_entitlements_for_user
|
||||||
|
|
||||||
sync_member_entitlements_for_user(yonghu_id)
|
sync_member_entitlements_for_user(yonghu_id, limit=30)
|
||||||
items = _build_user_clumber_core(yonghu_id)
|
items = _build_user_clumber_core(yonghu_id)
|
||||||
extra = _build_clumber_from_paid_czjilu(yonghu_id)
|
extra = _build_clumber_from_paid_czjilu(yonghu_id)
|
||||||
if extra:
|
if extra:
|
||||||
@@ -382,6 +385,14 @@ def ensure_grab_pool_clumber(yonghu_id, club_id=None):
|
|||||||
return bool(items), items
|
return bool(items), items
|
||||||
|
|
||||||
|
|
||||||
|
def refresh_grab_pool_membership_state(yonghu_id, club_id=None):
|
||||||
|
"""
|
||||||
|
抢单池/打手资料:请求入口统一刷新会员状态(同步权益 + clumber)。
|
||||||
|
供 /dingdan/ddhq、/yonghu/dashouxinxi、登录 clumber 调用。
|
||||||
|
"""
|
||||||
|
return ensure_grab_pool_clumber(yonghu_id, club_id=club_id)
|
||||||
|
|
||||||
|
|
||||||
def build_user_clumber(yonghu_id, club_id=None):
|
def build_user_clumber(yonghu_id, club_id=None):
|
||||||
"""
|
"""
|
||||||
老小程序抢单页 clumber(体验=正式格式)。
|
老小程序抢单页 clumber(体验=正式格式)。
|
||||||
@@ -392,9 +403,8 @@ def build_user_clumber(yonghu_id, club_id=None):
|
|||||||
|
|
||||||
|
|
||||||
def build_auth_clumber(yonghu_id, club_id=None):
|
def build_auth_clumber(yonghu_id, club_id=None):
|
||||||
"""登录/刷新 clumber:与 dddhq 同源(含体验会员 czjilu 兜底),老端只认 huiyuanid。"""
|
"""登录 clumber:与 dddhq / dashouxinxi 同源,每次刷新会员状态。"""
|
||||||
_, items = ensure_grab_pool_clumber(yonghu_id, club_id=club_id)
|
return refresh_grab_pool_membership_state(yonghu_id, club_id=club_id)[1]
|
||||||
return items
|
|
||||||
|
|
||||||
|
|
||||||
def save_bundle_includes(club_id, bundle_huiyuan_id, included_ids):
|
def save_bundle_includes(club_id, bundle_huiyuan_id, included_ids):
|
||||||
|
|||||||
@@ -111,6 +111,16 @@ class DashouDingdanHuoquView(APIView):
|
|||||||
page_size = int(data.get('page_size', 10))
|
page_size = int(data.get('page_size', 10))
|
||||||
biaoqian_id = data.get('biaoqian_id')
|
biaoqian_id = data.get('biaoqian_id')
|
||||||
|
|
||||||
|
club_id = resolve_effective_club_id(request, getattr(request, 'user', None))
|
||||||
|
yonghuid = request.user.UserUID
|
||||||
|
from jituan.services.huiyuan_bundle import (
|
||||||
|
refresh_grab_pool_membership_state,
|
||||||
|
resolve_grab_pool_member_display,
|
||||||
|
)
|
||||||
|
_has_member, user_clumber = refresh_grab_pool_membership_state(
|
||||||
|
yonghuid, club_id=club_id,
|
||||||
|
)
|
||||||
|
|
||||||
# 2. 构建基础查询条件
|
# 2. 构建基础查询条件
|
||||||
base_query = Q(Status__in=[1, 7])
|
base_query = Q(Status__in=[1, 7])
|
||||||
if leixing_id is not None:
|
if leixing_id is not None:
|
||||||
@@ -296,13 +306,6 @@ class DashouDingdanHuoquView(APIView):
|
|||||||
club_id = resolve_effective_club_id(request, getattr(request, 'user', None))
|
club_id = resolve_effective_club_id(request, getattr(request, 'user', None))
|
||||||
identity_tag_map = batch_identity_tags(club_id, identity_pairs) if identity_pairs else {}
|
identity_tag_map = batch_identity_tags(club_id, identity_pairs) if identity_pairs else {}
|
||||||
|
|
||||||
from jituan.services.huiyuan_bundle import (
|
|
||||||
ensure_grab_pool_clumber,
|
|
||||||
resolve_grab_pool_member_display,
|
|
||||||
)
|
|
||||||
yonghuid = request.user.UserUID
|
|
||||||
_has_member, user_clumber = ensure_grab_pool_clumber(yonghuid, club_id=club_id)
|
|
||||||
|
|
||||||
# 12. 格式化返回数据
|
# 12. 格式化返回数据
|
||||||
formatted_list = []
|
formatted_list = []
|
||||||
for order in dingdan_list:
|
for order in dingdan_list:
|
||||||
|
|||||||
@@ -337,12 +337,12 @@ class DashouXinxiAPIView(APIView):
|
|||||||
'chenghao': dashou_profile.chenghao or '',
|
'chenghao': dashou_profile.chenghao or '',
|
||||||
}
|
}
|
||||||
|
|
||||||
# 4. 查询会员信息(老端 clumber:huiyuanid + daoqi,体验=正式)
|
# 4. 查询会员信息(每次请求同步权益 + clumber,体验=正式)
|
||||||
try:
|
try:
|
||||||
from jituan.services.huiyuan_bundle import build_user_clumber
|
from jituan.services.huiyuan_bundle import refresh_grab_pool_membership_state
|
||||||
from jituan.services.club_context import resolve_effective_club_id
|
from jituan.services.club_context import resolve_effective_club_id
|
||||||
cid = resolve_effective_club_id(request, request.user)
|
cid = resolve_effective_club_id(request, request.user)
|
||||||
huiyuan_list = build_user_clumber(yonghuid, club_id=cid)
|
_, huiyuan_list = refresh_grab_pool_membership_state(yonghuid, club_id=cid)
|
||||||
except Exception:
|
except Exception:
|
||||||
huiyuan_list = []
|
huiyuan_list = []
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user