64 lines
2.6 KiB
Python
64 lines
2.6 KiB
Python
|
from flask import jsonify, request
|
|||
|
from services.conversation.service import get_conversations_by_user_id, get_messages_by_conversation_id, get_conversation_detail
|
|||
|
from .. import conversation_bp
|
|||
|
|
|||
|
|
|||
|
@conversation_bp.route("", methods=["GET"])
|
|||
|
def get_conversations():
|
|||
|
"""获取对话列表的API端点,支持分页和条件查询"""
|
|||
|
try:
|
|||
|
# 获取查询参数
|
|||
|
user_id = request.args.get("user_id")
|
|||
|
page = int(request.args.get("page", 1))
|
|||
|
size = int(request.args.get("size", 20))
|
|||
|
sort_by = request.args.get("sort_by", "update_time")
|
|||
|
sort_order = request.args.get("sort_order", "desc")
|
|||
|
|
|||
|
# 参数验证
|
|||
|
if not user_id:
|
|||
|
return jsonify({"code": 400, "message": "用户ID不能为空"}), 400
|
|||
|
|
|||
|
# 调用服务函数获取分页和筛选后的对话数据
|
|||
|
conversations, total = get_conversations_by_user_id(user_id, page, size, sort_by, sort_order)
|
|||
|
|
|||
|
# 返回符合前端期望格式的数据
|
|||
|
return jsonify({"code": 0, "data": {"list": conversations, "total": total}, "message": "获取对话列表成功"})
|
|||
|
except Exception as e:
|
|||
|
# 错误处理
|
|||
|
return jsonify({"code": 500, "message": f"获取对话列表失败: {str(e)}"}), 500
|
|||
|
|
|||
|
|
|||
|
@conversation_bp.route("/<conversation_id>/messages", methods=["GET"])
|
|||
|
def get_messages(conversation_id):
|
|||
|
"""获取特定对话的消息列表"""
|
|||
|
try:
|
|||
|
# 获取查询参数
|
|||
|
page = int(request.args.get("page", 1))
|
|||
|
size = int(request.args.get("size", 30))
|
|||
|
|
|||
|
# 调用服务函数获取消息数据
|
|||
|
messages, total = get_messages_by_conversation_id(conversation_id, page, size)
|
|||
|
|
|||
|
# 返回符合前端期望格式的数据
|
|||
|
return jsonify({"code": 0, "data": {"list": messages, "total": total}, "message": "获取消息列表成功"})
|
|||
|
except Exception as e:
|
|||
|
# 错误处理
|
|||
|
return jsonify({"code": 500, "message": f"获取消息列表失败: {str(e)}"}), 500
|
|||
|
|
|||
|
|
|||
|
@conversation_bp.route("/<conversation_id>", methods=["GET"])
|
|||
|
def get_conversation(conversation_id):
|
|||
|
"""获取特定对话的详细信息"""
|
|||
|
try:
|
|||
|
# 调用服务函数获取对话详情
|
|||
|
conversation = get_conversation_detail(conversation_id)
|
|||
|
|
|||
|
if not conversation:
|
|||
|
return jsonify({"code": 404, "message": "对话不存在"}), 404
|
|||
|
|
|||
|
# 返回符合前端期望格式的数据
|
|||
|
return jsonify({"code": 0, "data": conversation, "message": "获取对话详情成功"})
|
|||
|
except Exception as e:
|
|||
|
# 错误处理
|
|||
|
return jsonify({"code": 500, "message": f"获取对话详情失败: {str(e)}"}), 500
|