feat: 打手订单列表组队标记,队友也可看单;详情返回队友昵称

列表附 has_team/角色/人数;组队在队成员纳入订单列表查询。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-27 03:33:35 +08:00
parent 454f5abe90
commit f59ae2416f
2 changed files with 87 additions and 4 deletions

View File

@@ -663,8 +663,29 @@ class DashouDingdanHuoquView1(APIView):
# 4. 构建查询条件
try:
# 基础条件:当前打手接单
query = Q(PlayerID=yonghuid)
# 基础条件:本人接单 或 本俱乐部组队在队成员(队友也能在订单列表看到)
from orders.models import TeamMember, TeamRecruit
team_oids = list(
TeamMember.query.filter(
user_uid=yonghuid,
join_status=TeamMember.JOIN_ACTIVE,
).values_list('order_id', flat=True)[:500]
)
if team_oids:
# 仅有效组队帖(招募中/锁定/已分账结束)
valid_oids = list(
TeamRecruit.query.filter(
order_id__in=team_oids,
status__in=[
TeamRecruit.STATUS_RECRUITING,
TeamRecruit.STATUS_LOCKED,
TeamRecruit.STATUS_FINISHED,
],
).values_list('order_id', flat=True)
)
query = Q(PlayerID=yonghuid) | Q(OrderID__in=valid_oids or ['__none__'])
else:
query = Q(PlayerID=yonghuid)
# 状态筛选:如果 zhuangtai_list 不为空列表,则加入筛选;否则查询全部状态
if zhuangtai_list:
@@ -708,8 +729,11 @@ class DashouDingdanHuoquView1(APIView):
current_page_orders = dingdan_query[start_index:end_index]
current_page_count = len(current_page_orders)
# 7. 构建返回数据列表
# 7. 构建返回数据列表附组队标记无游戏ID
from jituan.services.order_deal import order_auto_settle_payload
from orders.services.team_recruit import batch_team_list_flags
page_oids = [o.OrderID for o in current_page_orders]
team_flags = batch_team_list_flags(page_oids, viewer_uid=yonghuid)
order_list = []
for order in current_page_orders:
order_data = {
@@ -722,6 +746,8 @@ class DashouDingdanHuoquView1(APIView):
**datetime_aliases(order.CreateTime),
}
order_data.update(order_auto_settle_payload(order))
tf = team_flags.get(order.OrderID) or {'has_team': False}
order_data.update(tf)
order_list.append(order_data)
# 8. 判断是否还有更多数据