52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
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()
|