聊天配对群组ID与准备接口:打手商家同群、订单卡片推送
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4421,7 +4421,10 @@ from rest_framework import status, permissions
|
||||
from .models import Dingdan, DingdanPingtai, DingdanShangjia
|
||||
from yonghu.models import UserMain, UserDashou, UserBoss, UserShangjia
|
||||
from peizhi.models import ClubConfig
|
||||
from utils.chat_utils import _send_group_message, _subscribe_users_to_group
|
||||
from utils.chat_utils import (
|
||||
_send_group_message, _subscribe_users_to_group,
|
||||
resolve_group_id_for_order, prepare_order_group_chat,
|
||||
)
|
||||
|
||||
logger = logging.getLogger('dingdan')
|
||||
|
||||
@@ -4593,6 +4596,44 @@ def get_partner_club_config(partner_club_id):
|
||||
|
||||
# ----------------- 主视图 -----------------
|
||||
|
||||
class DingdanLiaotianZhunbeiView(APIView):
|
||||
"""订单详情进入聊天前:确保配对群订阅并返回 groupId"""
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def post(self, request):
|
||||
dingdan_id = request.data.get('dingdan_id') or request.data.get('orderId')
|
||||
identity_type = request.data.get('identityType')
|
||||
push_order_card = request.data.get('push_order_card', True)
|
||||
if isinstance(push_order_card, str):
|
||||
push_order_card = push_order_card.lower() in ('1', 'true', 'yes')
|
||||
|
||||
if not dingdan_id:
|
||||
return Response({'code': 400, 'msg': '缺少 dingdan_id'})
|
||||
if not identity_type:
|
||||
return Response({'code': 400, 'msg': '缺少 identityType'})
|
||||
if identity_type not in ('dashou', 'shangjia', 'boss'):
|
||||
return Response({'code': 400, 'msg': 'identityType 无效'})
|
||||
|
||||
uid = request.user.yonghuid
|
||||
try:
|
||||
order = Dingdan.objects.select_related('pingtai_kuozhan', 'shangjia_kuozhan').get(dingdan_id=dingdan_id)
|
||||
except Dingdan.DoesNotExist:
|
||||
return Response({'code': 404, 'msg': '订单不存在'})
|
||||
|
||||
valid, err_msg = check_user_permission(identity_type, uid, order)
|
||||
if not valid:
|
||||
return Response({'code': 403, 'msg': err_msg})
|
||||
|
||||
prefix_map = {'dashou': 'Ds', 'shangjia': 'Sj', 'boss': 'Boss'}
|
||||
caller_goeasy_id = prefix_map[identity_type] + uid
|
||||
|
||||
result = prepare_order_group_chat(dingdan_id, caller_goeasy_id, push_order_card=push_order_card)
|
||||
if not result:
|
||||
return Response({'code': 500, 'msg': '准备群聊失败,请稍后重试'})
|
||||
|
||||
return Response({'code': 0, 'msg': 'ok', 'data': result})
|
||||
|
||||
|
||||
class DaiLiQunLiaoXiaoXiView(APIView):
|
||||
"""
|
||||
代理发送群聊消息
|
||||
@@ -4648,7 +4689,7 @@ class DaiLiQunLiaoXiaoXiView(APIView):
|
||||
return Response({'code': 500, 'msg': '系统配置错误(APPKEY)'})
|
||||
|
||||
# ===== 6. 公共群信息 =====
|
||||
real_group_id = f"group_{order.dingdan_id}"
|
||||
real_group_id = resolve_group_id_for_order(order)
|
||||
group_name = (order.jieshao[:20] + '…') if order.jieshao and len(order.jieshao) > 20 else f"订单{order.dingdan_id}"
|
||||
sender_avatar = full_avatar(sender_avatar_raw) if sender_avatar_raw else full_avatar('')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user