| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- """小程序端消息(与运营端共用 biz_message 表,仅查当前用户)"""
- from fastapi import APIRouter, Depends, Query
- from sqlalchemy.orm import Session
- from app.core.database import get_db
- from app.core.auth import get_current_user
- from app.core.response import success_response, error_response
- from app.api.message import message_crud, BizMessage
- router = APIRouter(prefix="/api/mini/message", tags=["小程序端-消息"])
- def _to_response(message: BizMessage) -> dict:
- return {
- "id": message.id,
- "receiverId": message.receiver_id,
- "receiverName": message.receiver_name,
- "messageType": message.message_type,
- "title": message.title,
- "content": message.content,
- "isRead": message.is_read,
- "readTime": str(message.read_time) if message.read_time else None,
- "createAt": str(message.create_at) if message.create_at else None,
- }
- @router.get("/list", response_model=dict)
- def mini_message_list(
- page: int = Query(1, ge=1),
- pageSize: int = Query(20, ge=1, le=100),
- messageType: str = None,
- isRead: int = None,
- db: Session = Depends(get_db),
- current_user: dict = Depends(get_current_user),
- ):
- role = current_user.get("role")
- if role not in ("client", "supplier", "deliver"):
- return error_response(403, "无权限")
- receiver_id = current_user.get("user_id")
- items, total = message_crud.get_list(
- db=db,
- receiver_id=receiver_id,
- message_type=messageType,
- is_read=isRead,
- page=page,
- page_size=pageSize,
- )
- return success_response({
- "list": [_to_response(item) for item in items],
- "total": total,
- "page": page,
- "pageSize": pageSize,
- "totalPages": (total + pageSize - 1) // pageSize if total else 0,
- })
- @router.get("/unread-count", response_model=dict)
- def mini_unread_count(
- db: Session = Depends(get_db),
- current_user: dict = Depends(get_current_user),
- ):
- role = current_user.get("role")
- if role not in ("client", "supplier", "deliver"):
- return error_response(403, "无权限")
- count = message_crud.get_unread_count(db, current_user.get("user_id"))
- return success_response({"count": count})
|