from fastapi import APIRouter, HTTPException from ..schemas.message_info import MessageCreate, MessageResponse from ..db import get_connection from ..utils.jwt_handler import verify_token router = APIRouter() @router.post("/messages") def create_message(request: MessageCreate): """创建用户留言""" connection = get_connection() cursor = connection.cursor(dictionary=True) try: payload = verify_token(request.token) cursor.execute("SELECT user_id, wx_openid, points FROM users WHERE phone_number = %s", (payload["sub"],)) user = cursor.fetchone() if not user: raise HTTPException(status_code=404, detail="用户不存在") user_id = user['user_id'] # 插入留言 cursor.execute( """INSERT INTO player_messages (user_id, message_content) VALUES (%s, %s)""", (user_id, request.message) ) connection.commit() return {"message": "留言提交成功"} finally: cursor.close() connection.close() @router.get("/messages", response_model=list[MessageResponse]) def get_messages(): """获取最新10条留言""" connection = get_connection() cursor = connection.cursor(dictionary=True) try: cursor.execute(""" SELECT m.message_id, u.username, m.message_content, m.created_at FROM player_messages m JOIN users u ON m.user_id = u.user_id ORDER BY m.created_at DESC LIMIT 10 """) return cursor.fetchall() finally: cursor.close() connection.close()