Files
EmailBill/WebApi/Controllers/BudgetController.cs
SunCheng d052ae5197 fix
2026-02-10 17:49:19 +08:00

92 lines
2.7 KiB
C#

using Application;
using Application.Dto;
namespace WebApi.Controllers;
[ApiController]
[Route("api/[controller]/[action]")]
public class BudgetController(
IBudgetApplication budgetApplication
) : ControllerBase
{
/// <summary>
/// 获取预算列表
/// </summary>
[HttpGet]
public async Task<BaseResponse<List<BudgetResponse>>> GetListAsync([FromQuery] DateTime referenceDate)
{
var result = await budgetApplication.GetListAsync(referenceDate);
return result.Ok();
}
/// <summary>
/// 获取分类统计信息(月度和年度)
/// </summary>
[HttpGet]
public async Task<BaseResponse<BudgetCategoryStatsResponse>> GetCategoryStatsAsync([FromQuery] BudgetCategory category, [FromQuery] DateTime referenceDate)
{
var result = await budgetApplication.GetCategoryStatsAsync(category, referenceDate);
return result.Ok();
}
/// <summary>
/// 获取未被预算覆盖的分类统计信息
/// </summary>
[HttpGet]
public async Task<BaseResponse<List<UncoveredCategoryResponse>>> GetUncoveredCategoriesAsync([FromQuery] BudgetCategory category, [FromQuery] DateTime? referenceDate = null)
{
var result = await budgetApplication.GetUncoveredCategoriesAsync(category, referenceDate);
return result.Ok();
}
/// <summary>
/// 获取归档总结
/// </summary>
[HttpGet]
public async Task<BaseResponse<string?>> GetArchiveSummaryAsync([FromQuery] DateTime referenceDate)
{
var result = await budgetApplication.GetArchiveSummaryAsync(referenceDate);
return result.Ok<string?>();
}
/// <summary>
/// 获取指定周期的存款预算信息
/// </summary>
[HttpGet]
public async Task<BaseResponse<BudgetResponse?>> GetSavingsBudgetAsync(int year, int month, BudgetPeriodType type)
{
var result = await budgetApplication.GetSavingsBudgetAsync(year, month, type);
return result.Ok();
}
/// <summary>
/// 删除预算
/// </summary>
[HttpDelete("{id}")]
public async Task<BaseResponse> DeleteByIdAsync(long id)
{
await budgetApplication.DeleteByIdAsync(id);
return BaseResponse.Done();
}
/// <summary>
/// 创建预算
/// </summary>
[HttpPost]
public async Task<BaseResponse<long>> CreateAsync([FromBody] CreateBudgetRequest request)
{
var budgetId = await budgetApplication.CreateAsync(request);
return budgetId.Ok();
}
/// <summary>
/// 更新预算
/// </summary>
[HttpPost]
public async Task<BaseResponse> UpdateAsync([FromBody] UpdateBudgetRequest request)
{
await budgetApplication.UpdateAsync(request);
return BaseResponse.Done();
}
}