package com.sinata.appointment.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import com.sinata.appointment.common.Result; import com.sinata.appointment.common.ResultUtil; import com.sinata.appointment.dto.DashboardAppointmentStatsVo; import com.sinata.appointment.dto.DashboardOverviewVo; import com.sinata.appointment.service.DashboardApplicationService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import java.time.LocalDate; import lombok.RequiredArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @Tag(name = "首页") @RestController @RequestMapping("/api/dashboard") @RequiredArgsConstructor public class DashboardController { private final DashboardApplicationService dashboardApplicationService; @Operation(summary = "数据总览") @GetMapping("/overview") @SaCheckPermission("dashboard:page") public Result overview() { return ResultUtil.data(dashboardApplicationService.getOverview()); } @Operation(summary = "预约统计") @GetMapping("/appointment-stats") @SaCheckPermission("dashboard:page") public Result appointmentStats( @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate, @RequestParam(required = false) Long visitedDeptId) { return ResultUtil.data( dashboardApplicationService.getAppointmentStats(startDate, endDate, visitedDeptId)); } }