From c5ceacf3d3f7ce8cc164bbd0c4d979081da15bd9 Mon Sep 17 00:00:00 2001 From: XingQue Date: Mon, 27 Jul 2026 08:00:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BF=9B=E5=85=A5=E7=BB=84=E9=98=9F?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BE=A4=E6=97=B6=E4=B8=80=E5=B9=B6=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E5=9C=A8=E9=98=9F=E6=89=93=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- utils/chat_utils.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/utils/chat_utils.py b/utils/chat_utils.py index 23d8d1b..c9bf473 100644 --- a/utils/chat_utils.py +++ b/utils/chat_utils.py @@ -272,7 +272,7 @@ def build_order_group_chat_payload(order, viewer_backend_identity, viewer_uid): def prepare_order_group_chat(order, viewer_backend_identity, viewer_uid, subscribe=True): - """进入群聊前:订阅当前用户(及双方)到配对群,不重复发送抢单初始化消息""" + """进入群聊前:订阅当前用户(及双方/组队成员)到目标群,不重复发送抢单初始化消息""" payload = build_order_group_chat_payload(order, viewer_backend_identity, viewer_uid) group_id = payload['groupId'] appkey = _get_self_goeasy_appkey() @@ -289,6 +289,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}': + 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}') + except Exception as e: + logger.warning('prepare 订阅组队成员失败 order=%s: %s', oid, e) + subscribed = True if subscribe and user_ids: subscribed = _subscribe_users_to_group(list(user_ids), [group_id], appkey, secret)