前端新增 业务员工作台 路由:/salesman 覆盖: 快速录单 个人订单列表 提醒待办处理 新客户识别提示 后端新增业务员工作台接口 新增 backend/app/api/salesman.py 新接口: GET /api/salesman/dashboard 返回: 业务员订单列表 业务员提醒列表 汇总统计 后端路由注册 已接入 API 路由 导航同步 增加 业务员工作台 清单同步更新 业务员端完整支持 完整业务员录单页面 完整查单页面 提醒处理页面 lint 检查通过,没有报错
100 lines
3.2 KiB
Python
100 lines
3.2 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.get("/dashboard")
|
|
def reminder_dashboard(
|
|
session: Session = Depends(get_db_session),
|
|
current_user: dict = Depends(require_roles("salesman", "manager", "admin")),
|
|
) -> dict:
|
|
reminders = reminder_service.list_reminders(
|
|
session,
|
|
{
|
|
"page_no": 1,
|
|
"page_size": 200,
|
|
},
|
|
)
|
|
return success_payload(
|
|
{
|
|
"summary": {
|
|
"total": reminders["total"],
|
|
"pending": len([item for item in reminders["list"] if item["status"] == "pending"]),
|
|
"read": len([item for item in reminders["list"] if item["status"] == "read"]),
|
|
},
|
|
"list": reminders["list"],
|
|
"checked_at": "",
|
|
}
|
|
)
|
|
|
|
|
|
@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))
|