fix: dddhq与dashouxinxi每次请求同步刷新会员clumber

抢单池拉单前先 sync 权益;老端依赖 yaoqiuleixing=0 与 clumber 即时更新。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-08 15:34:10 +08:00
parent 12f9100b17
commit aaa745baf4
3 changed files with 29 additions and 16 deletions

View File

@@ -186,6 +186,9 @@ def resolve_order_membership_ids(order_dict):
)
if 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')
if leixing_id:
try:
@@ -357,12 +360,12 @@ def _build_clumber_from_paid_czjilu(yonghu_id):
def ensure_grab_pool_clumber(yonghu_id, club_id=None):
"""
仅抢单池 dddhq 展示】体验会员与正式会员同格式写入 clumber。
不得用于提现;提现须 check_dashou_has_formal_huiyuan_for_withdraw
ddhq / dashouxinxi 展示专用】每次请求:先同步已付会员权益,再生成 clumber(体验=正式)
提现校验不得使用此函数
"""
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)
extra = _build_clumber_from_paid_czjilu(yonghu_id)
if extra:
@@ -382,6 +385,14 @@ def ensure_grab_pool_clumber(yonghu_id, club_id=None):
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):
"""
老小程序抢单页 clumber体验=正式格式)。
@@ -392,9 +403,8 @@ def build_user_clumber(yonghu_id, club_id=None):
def build_auth_clumber(yonghu_id, club_id=None):
"""登录/刷新 clumber与 dddhq 同源(含体验会员 czjilu 兜底),老端只认 huiyuanid"""
_, items = ensure_grab_pool_clumber(yonghu_id, club_id=club_id)
return items
"""登录 clumber与 dddhq / dashouxinxi 同源,每次刷新会员状态"""
return refresh_grab_pool_membership_state(yonghu_id, club_id=club_id)[1]
def save_bundle_includes(club_id, bundle_huiyuan_id, included_ids):

View File

@@ -111,6 +111,16 @@ class DashouDingdanHuoquView(APIView):
page_size = int(data.get('page_size', 10))
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. 构建基础查询条件
base_query = Q(Status__in=[1, 7])
if leixing_id is not None:
@@ -296,13 +306,6 @@ class DashouDingdanHuoquView(APIView):
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 {}
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. 格式化返回数据
formatted_list = []
for order in dingdan_list:

View File

@@ -337,12 +337,12 @@ class DashouXinxiAPIView(APIView):
'chenghao': dashou_profile.chenghao or '',
}
# 4. 查询会员信息(老端 clumberhuiyuanid + daoqi,体验=正式)
# 4. 查询会员信息(每次请求同步权益 + clumber,体验=正式)
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
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:
huiyuan_list = []