feat: 组队大厅支持全部类型与队长统计/备注字段
This commit is contained in:
1 parent
c9b9776bf3
commit
fbfceedb9a
3 files changed
+26
-2
No files matched your search
@@ -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)}%",
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in new issue
Block a user