diff --git a/orders/services/team_recruit.py b/orders/services/team_recruit.py index b53ccf9..d034b39 100644 --- a/orders/services/team_recruit.py +++ b/orders/services/team_recruit.py @@ -623,7 +623,6 @@ def serialize_recruit_public(rec, order=None, *, include_game_ids=False) -> dict from orders.models import Order, MerchantOrderExt from jituan.services.order_deal import order_auto_settle_payload from jituan.models import DashouDealStat - from jituan.services.deal_stats import serialize_dashou_stat from users.business_models import User from backend.utils import fmt_datetime @@ -698,15 +697,24 @@ def serialize_recruit_public(rec, order=None, *, include_game_ids=False) -> dict except Exception: pass - row = DashouDealStat.query.filter(club_id=rec.club_id, dashou_uid=rec.leader_uid).first() - if row and int(row.order_count or 0) > 0: - s = serialize_dashou_stat(row) - data['leader_deal_stat'] = { - 'deal_rate': s['deal_rate'], - 'fined_rate': s['fined_rate'], - 'deal_rate_text': f"{round(s['deal_rate'] * 100, 1)}%", - 'fined_rate_text': f"{round(s['fined_rate'] * 100, 1)}%", - } + # 队长打手结算率/被罚款率(有样本才返回,与订单列表口径一致) + from jituan.services.deal_stats import miniapp_dashou_deal_payload + leader_uid = (rec.leader_uid or '').strip() + club_ids = [] + for cid in ( + (rec.club_id or '').strip(), + (getattr(order, 'ClubID', None) or '').strip() if order else '', + ): + if cid and cid not in club_ids: + club_ids.append(cid) + dashou_row = None + if leader_uid and club_ids: + for cid in club_ids: + dashou_row = DashouDealStat.query.filter(club_id=cid, dashou_uid=leader_uid).first() + if dashou_row and int(dashou_row.order_count or 0) > 0: + break + dashou_row = None + data['leader_deal_stat'] = miniapp_dashou_deal_payload(dashou_row) if include_game_ids: from orders.models import TeamMember