Files
2026-05-25 09:50:01 +08:00

49 lines
2.2 KiB
Python

"""首页入口控制器。"""
from typing import Any
from fastapi import Depends, Query
from fastapi_common.fastapi_common_security.security import verify_access_token
from fastapi_common.fastapi_common_web.controller import BaseController
from fastapi_common.fastapi_common_web.domain.responses import Result
from fastapi_modules.fastapi_leaudit.domian.vo.homeVo import HomeDashboardStatisticsVO, HomeEntryModuleVO
from fastapi_modules.fastapi_leaudit.services import IHomeService
from fastapi_modules.fastapi_leaudit.services.impl.homeServiceImpl import HomeServiceImpl
class HomeController(BaseController):
"""首页入口控制器。"""
def __init__(self):
super().__init__(prefix="/home", tags=["首页"])
self.HomeService: IHomeService = HomeServiceImpl()
@self.router.get("/entry-modules", response_model=Result[list[HomeEntryModuleVO]])
async def GetEntryModules(payload: dict[str, Any] = Depends(verify_access_token)):
"""获取当前用户可见的首页入口模块。"""
Data = await self.HomeService.GetEntryModules(UserId=int(payload["user_id"]))
return Result.success(data=Data)
@self.router.get("/statistics/dashboard", response_model=Result[HomeDashboardStatisticsVO])
async def GetDashboardStatistics(
today: str | None = Query(None, description="统计基准日期,格式 YYYY-MM-DD"),
type_ids: str | None = Query(None, description="文档类型ID,逗号分隔"),
entry_module_id: int | None = Query(None, description="入口模块ID"),
payload: dict[str, Any] = Depends(verify_access_token),
):
"""获取首页统计卡片数据。"""
typeIds = [
int(item)
for item in str(type_ids or "").split(",")
if item.strip().isdigit() and int(item.strip()) > 0
]
Data = await self.HomeService.GetDashboardStatistics(
UserId=int(payload["user_id"]),
Today=today,
TypeIds=typeIds,
EntryModuleId=entry_module_id,
)
return Result.success(data=Data)