using Application.Dto.Statistics;
using Application;
namespace WebApi.Controllers;
///
/// 交易统计控制器
///
[ApiController]
[Route("api/[controller]/[action]")]
public class TransactionStatisticsController(
ITransactionStatisticsApplication statisticsApplication
) : ControllerBase
{
// ===== 新统一接口(推荐使用) =====
///
/// 按日期范围获取每日统计(新统一接口)
///
/// 开始日期(包含)
/// 结束日期(不包含)
/// 储蓄分类(可选,不传则使用系统配置)
[HttpGet]
public async Task>> GetDailyStatisticsByRangeAsync(
[FromQuery] DateTime startDate,
[FromQuery] DateTime endDate,
[FromQuery] string? savingClassify = null
)
{
var result = await statisticsApplication.GetDailyStatisticsByRangeAsync(startDate, endDate, savingClassify);
return result.Ok();
}
///
/// 按日期范围获取汇总统计(新统一接口)
///
/// 开始日期(包含)
/// 结束日期(不包含)
[HttpGet]
public async Task> GetSummaryByRangeAsync(
[FromQuery] DateTime startDate,
[FromQuery] DateTime endDate
)
{
var result = await statisticsApplication.GetSummaryByRangeAsync(startDate, endDate);
return result.Ok();
}
///
/// 按日期范围获取分类统计(新统一接口)
///
/// 开始日期(包含)
/// 结束日期(不包含)
/// 交易类型
[HttpGet]
public async Task>> GetCategoryStatisticsByRangeAsync(
[FromQuery] DateTime startDate,
[FromQuery] DateTime endDate,
[FromQuery] TransactionType type
)
{
var result = await statisticsApplication.GetCategoryStatisticsByRangeAsync(startDate, endDate, type);
return result.Ok();
}
///
/// 获取趋势统计数据
///
[HttpGet]
public async Task>> GetTrendStatisticsAsync(
[FromQuery] int startYear,
[FromQuery] int startMonth,
[FromQuery] int monthCount = 6
)
{
var result = await statisticsApplication.GetTrendStatisticsAsync(startYear, startMonth, monthCount);
return result.Ok();
}
// ===== 旧接口(保留用于向后兼容,已标记为过时) =====
///
/// 获取累积余额统计数据(用于余额卡片图表)
///
[Obsolete("请使用 GetDailyStatisticsByRangeAsync 并在前端计算累积余额")]
[HttpGet]
public async Task>> GetBalanceStatisticsAsync(
[FromQuery] int year,
[FromQuery] int month
)
{
var result = await statisticsApplication.GetBalanceStatisticsAsync(year, month);
return result.Ok();
}
///
/// 获取指定月份每天的消费统计
///
[Obsolete("请使用 GetDailyStatisticsByRangeAsync")]
[HttpGet]
public async Task>> GetDailyStatisticsAsync(
[FromQuery] int year,
[FromQuery] int month
)
{
var result = await statisticsApplication.GetDailyStatisticsAsync(year, month);
return result.Ok();
}
///
/// 获取周统计数据
///
[Obsolete("请使用 GetDailyStatisticsByRangeAsync")]
[HttpGet]
public async Task>> GetWeeklyStatisticsAsync(
[FromQuery] DateTime startDate,
[FromQuery] DateTime endDate
)
{
var result = await statisticsApplication.GetWeeklyStatisticsAsync(startDate, endDate);
return result.Ok();
}
///
/// 获取指定日期范围的统计汇总数据
///
[Obsolete("请使用 GetSummaryByRangeAsync")]
[HttpGet]
public async Task> GetRangeStatisticsAsync(
[FromQuery] DateTime startDate,
[FromQuery] DateTime endDate
)
{
var result = await statisticsApplication.GetRangeStatisticsAsync(startDate, endDate);
return result.Ok();
}
///
/// 获取月度统计数据
///
[Obsolete("请使用 GetSummaryByRangeAsync")]
[HttpGet]
public async Task> GetMonthlyStatisticsAsync(
[FromQuery] int year,
[FromQuery] int month
)
{
var result = await statisticsApplication.GetMonthlyStatisticsAsync(year, month);
return result.Ok();
}
///
/// 获取分类统计数据
///
[Obsolete("请使用 GetCategoryStatisticsByRangeAsync")]
[HttpGet]
public async Task>> GetCategoryStatisticsAsync(
[FromQuery] int year,
[FromQuery] int month,
[FromQuery] TransactionType type
)
{
var result = await statisticsApplication.GetCategoryStatisticsAsync(year, month, type);
return result.Ok();
}
///
/// 按日期范围获取分类统计数据
///
[Obsolete("请使用 GetCategoryStatisticsByRangeAsync(DateTime 参数版本)")]
[HttpGet]
public async Task>> GetCategoryStatisticsByDateRangeAsync(
[FromQuery] string startDate,
[FromQuery] string endDate,
[FromQuery] TransactionType type
)
{
var result = await statisticsApplication.GetCategoryStatisticsByDateRangeAsync(startDate, endDate, type);
return result.Ok();
}
}