fix: 组队复用抢单配对群,不再另建 group_订单

This commit is contained in:
XingQue
2026-07-27 09:21:15 +08:00
parent 8e71cd4243
commit 9b9203587c
2 changed files with 23 additions and 44 deletions

View File

@@ -106,18 +106,10 @@ def resolve_pair_group_id(order):
def resolve_order_chat_group_id(order):
"""
进订单聊天用的群 ID
- 存在进行中组队 → 统一 group_{订单ID}(组队成员 + 商家/老板同群)
- 否则 → 配对群
进订单聊天用的群 ID始终优先配对群 group_Ds…_Sj/Boss…抢单时已建
组队只往该群加人/发公告,不再切到 group_{订单ID} 另起会话。
"""
oid = (getattr(order, 'OrderID', None) or '').strip()
if oid:
try:
from orders.services.team_recruit import get_active_recruit
if get_active_recruit(oid):
return f'group_{oid}'
except Exception as e:
logger.warning('resolve_order_chat_group_id 查组队失败 order=%s: %s', oid, e)
return resolve_pair_group_id(order) or (f'group_{oid}' if oid else None)
@@ -219,7 +211,7 @@ def _get_dashou_profile(order):
def build_order_group_chat_payload(order, viewer_backend_identity, viewer_uid):
"""构建前端 ltdhzb 所需群聊元数据(有组队时用 group_{订单ID}"""
"""构建前端 ltdhzb 所需群聊元数据(统一配对群,组队不另建群"""
group_id = resolve_order_chat_group_id(order) or f'group_{order.OrderID}'
order_desc = order.Description or ''
group_name = (
@@ -289,17 +281,20 @@ def prepare_order_group_chat(order, viewer_backend_identity, viewer_uid, subscri
if payload.get('partnerGoEasyId'):
user_ids.add(payload['partnerGoEasyId'])
# 组队订单群:把在队打手一并订阅,保证历史/实时都能到
# 组队:把在队打手一并订阅进同一配对群
oid = (getattr(order, 'OrderID', None) or '').strip()
if oid and group_id == f'group_{oid}':
if oid:
try:
from orders.models import TeamMember
for m in TeamMember.query.filter(
order_id=oid, join_status=TeamMember.JOIN_ACTIVE,
).only('user_uid')[:20]:
uid = (m.user_uid or '').strip()
if uid:
user_ids.add(f'Ds{uid}')
from orders.services.team_recruit import get_active_recruit
rec = get_active_recruit(oid)
if rec:
for m in TeamMember.query.filter(
recruit_id=rec.id, join_status=TeamMember.JOIN_ACTIVE,
).only('user_uid')[:20]:
uid = (m.user_uid or '').strip()
if uid:
user_ids.add(f'Ds{uid}')
except Exception as e:
logger.warning('prepare 订阅组队成员失败 order=%s: %s', oid, e)
@@ -413,7 +408,7 @@ def establish_order_chat(dingdan_id):
# ========== 普通订单 / 我方派单 ==========
def _handle_local_order(order, dashou_goeasy_id, dashou_name, dashou_avatar, appkey, secret):
# 与详情「联系」一致:有组队用 group_订单否则配对群
# 与详情「联系」一致:统一配对群(组队不另建)
group_id = resolve_order_chat_group_id(order) or f"group_{order.OrderID}"
group_name = (order.Description[:20] + '') if order.Description and len(order.Description) > 20 else (order.Description or f"订单{order.OrderID}")
group_avatar = _full_local_avatar(order.ImageURL) if order.ImageURL else _full_local_avatar('')