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)