feat: 组队大厅支持全部类型与队长统计/备注字段

This commit is contained in:
XingQue committed 2026-08-08 05:54:06 +08:00
1 parent c9b9776bf3
commit fbfceedb9a
3 files changed
+26 -2

No files matched your search

+2
View File
@@ -409,6 +409,8 @@ def miniapp_dashou_deal_payload(row) -> dict | None:
return {
'role': 'dashou',
'order_count': full['order_count'],
# 组队卡片「完成单」:已结算单量
'completed_count': full.get('completed_count', 0),
'deal_rate': full['deal_rate'],
'fined_rate': full['fined_rate'],
'deal_rate_text': f"{round(full['deal_rate'] * 100, 1)}%",
+17
View File
@@ -889,7 +889,12 @@ def serialize_recruit_public(rec, order=None, *, include_game_ids=False) -> dict
'share_mode': rec.share_mode,
'display_share_amount': float(_d(rec.display_share_amount)),
'per_person_amount': float(_d(rec.per_person_amount)),
# remark / team_remark:队长开启组队时填的打手备注(组队说明)
'remark': rec.remark or '',
'team_remark': rec.remark or '',
# beizhu / order_remark:订单备注(老板说明)
'beizhu': '',
'order_remark': '',
'leader_uid': rec.leader_uid,
'leader_nicheng': '',
'min_deal_rate': float(rec.min_deal_rate) if rec.min_deal_rate is not None else None,
@@ -908,8 +913,15 @@ def serialize_recruit_public(rec, order=None, *, include_game_ids=False) -> dict
'leader_avatar': '',
'leader_deal_stat': None,
'shangjia_deal_stat': None,
# 组队卡片队长三项(前端可直接用)
'leader_finish_num': 0,
'leader_finish_rate': '0%',
'leader_fine_rate': '0%',
}
if order:
order_beizhu = (getattr(order, 'Remark', None) or '').strip()
data['beizhu'] = order_beizhu
data['order_remark'] = order_beizhu
data['fadanpingtai_text'] = '平台单' if order.Platform == 1 else ('商家单' if order.Platform == 2 else '')
if order.Platform == 2:
try:
@@ -965,6 +977,11 @@ def serialize_recruit_public(rec, order=None, *, include_game_ids=False) -> dict
break
dashou_row = None
data['leader_deal_stat'] = miniapp_dashou_deal_payload(dashou_row)
st = data['leader_deal_stat'] or {}
if st:
data['leader_finish_num'] = int(st.get('completed_count') or 0)
data['leader_finish_rate'] = st.get('deal_rate_text') or '0%'
data['leader_fine_rate'] = st.get('fined_rate_text') or '0%'
# 商家单:附带商家成交率/罚款率/均时(有样本才有;前端有哪个展示哪个)
try:
+7 -2
View File
@@ -183,14 +183,19 @@ class ZuduiDatingView(APIView):
page_size = min(50, max(1, int(request.data.get('page_size') or 10)))
leixing = request.data.get('leixing_id')
pingtai = request.data.get('fadanpingtai')
all_types = request.data.get('all_types')
# 全部类型:all_types=1,或 leixing_id 为空/0/all(不按商品类型过滤)
is_all_types = (
str(all_types).lower() in ('1', 'true', 'yes')
or leixing in (None, '', 0, '0', 'all', 'ALL')
)
qs = TeamRecruit.query.filter(
club_id=club,
status=TeamRecruit.STATUS_RECRUITING,
).order_by('-opened_at')
# 商品类型必选过滤(与前端大厅一致)
if leixing not in (None, ''):
if not is_all_types:
try:
lid = int(leixing)
except (TypeError, ValueError):