"""首页入口控制器。""" 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)