49 lines
2.2 KiB
Python
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)
|