dingdanquanliucheng/backend/app/api/reminders.py

75 lines
2.4 KiB
Python

from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session
from backend.app.api.deps import require_roles
from backend.app.db import get_db_session
from backend.app.schemas.common import success_payload
from backend.app.services.reminder_service import reminder_service
router = APIRouter(prefix="/api/reminders", tags=["reminders"])
@router.get("")
def list_reminders(
reminder_type: str | None = Query(default=None),
status: str | None = Query(default=None),
receiver_user_id: int | None = Query(default=None),
page_no: int = Query(default=1),
page_size: int = Query(default=20),
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("salesman", "manager", "admin")),
) -> dict:
return success_payload(
reminder_service.list_reminders(
session,
{
"reminder_type": reminder_type,
"status": status,
"receiver_user_id": receiver_user_id,
"page_no": page_no,
"page_size": page_size,
},
)
)
@router.post("/{reminder_id}/read")
def read_reminder(
reminder_id: int,
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("salesman", "manager", "admin")),
) -> dict:
return success_payload(reminder_service.read_reminder(reminder_id, session))
@router.post("/arrears/check")
def check_arrears_reminders(
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("manager", "admin")),
) -> dict:
return success_payload(reminder_service.check_arrears(session))
@router.post("/inactive-customers/check")
def check_inactive_customer_reminders(
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("manager", "admin")),
) -> dict:
return success_payload(reminder_service.check_inactive_customers(session))
@router.post("/logistics-timeout/check")
def check_logistics_timeout_reminders(
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("manager", "admin")),
) -> dict:
return success_payload(reminder_service.check_logistics_timeout(session))
@router.post("/check-all")
def check_all_reminders(
session: Session = Depends(get_db_session),
current_user: dict = Depends(require_roles("manager", "admin")),
) -> dict:
return success_payload(reminder_service.check_all(session))