Files
EmailBill/WebApi/Controllers/TransactionCategoryController.cs

92 lines
2.6 KiB
C#
Raw Normal View History

2026-02-10 17:49:19 +08:00
using Application;
using Application.Dto.Category;
2026-02-02 16:59:24 +08:00
namespace WebApi.Controllers;
2025-12-25 11:20:56 +08:00
[ApiController]
[Route("api/[controller]/[action]")]
public class TransactionCategoryController(
2026-02-10 17:49:19 +08:00
ITransactionCategoryApplication categoryApplication
2025-12-25 11:20:56 +08:00
) : ControllerBase
{
/// <summary>
2025-12-26 15:21:31 +08:00
/// 获取分类列表(支持按类型筛选)
2025-12-25 11:20:56 +08:00
/// </summary>
[HttpGet]
2026-02-10 17:49:19 +08:00
public async Task<BaseResponse<List<CategoryResponse>>> GetListAsync([FromQuery] TransactionType? type = null)
2025-12-25 11:20:56 +08:00
{
2026-02-10 17:49:19 +08:00
var categories = await categoryApplication.GetListAsync(type);
return categories.Ok();
2025-12-25 11:20:56 +08:00
}
/// <summary>
/// 根据ID获取分类详情
/// </summary>
[HttpGet("{id}")]
2026-02-10 17:49:19 +08:00
public async Task<BaseResponse<CategoryResponse>> GetByIdAsync(long id)
2025-12-25 11:20:56 +08:00
{
2026-02-10 17:49:19 +08:00
var category = await categoryApplication.GetByIdAsync(id);
return category.Ok();
2025-12-25 11:20:56 +08:00
}
/// <summary>
/// 创建分类
/// </summary>
[HttpPost]
2026-02-10 17:49:19 +08:00
public async Task<BaseResponse<long>> CreateAsync([FromBody] CreateCategoryRequest request)
2025-12-25 11:20:56 +08:00
{
2026-02-10 17:49:19 +08:00
var categoryId = await categoryApplication.CreateAsync(request);
return categoryId.Ok();
2025-12-25 11:20:56 +08:00
}
/// <summary>
/// 更新分类
/// </summary>
[HttpPost]
2026-02-10 17:49:19 +08:00
public async Task<BaseResponse> UpdateAsync([FromBody] UpdateCategoryRequest request)
2025-12-25 11:20:56 +08:00
{
2026-02-10 17:49:19 +08:00
await categoryApplication.UpdateAsync(request);
return "更新分类成功".Ok();
2025-12-25 11:20:56 +08:00
}
/// <summary>
/// 删除分类
/// </summary>
[HttpPost]
public async Task<BaseResponse> DeleteAsync([FromQuery] long id)
{
2026-02-10 17:49:19 +08:00
await categoryApplication.DeleteAsync(id);
return BaseResponse.Done();
2025-12-25 11:20:56 +08:00
}
/// <summary>
/// 批量创建分类(用于初始化)
/// </summary>
[HttpPost]
2026-02-10 17:49:19 +08:00
public async Task<BaseResponse<int>> BatchCreateAsync([FromBody] List<CreateCategoryRequest> requests)
2025-12-25 11:20:56 +08:00
{
2026-02-10 17:49:19 +08:00
var count = await categoryApplication.BatchCreateAsync(requests);
return count.Ok();
2025-12-25 11:20:56 +08:00
}
2026-02-02 11:07:34 +08:00
/// <summary>
/// 为指定分类生成新的SVG图标
/// </summary>
[HttpPost]
2026-02-10 17:49:19 +08:00
public async Task<BaseResponse<string>> GenerateIconAsync([FromBody] GenerateIconRequest request)
2026-02-02 11:07:34 +08:00
{
2026-02-10 17:49:19 +08:00
var svg = await categoryApplication.GenerateIconAsync(request);
return svg.Ok<string>();
2026-02-02 11:07:34 +08:00
}
/// <summary>
/// 更新分类的选中图标索引
/// </summary>
[HttpPost]
2026-02-10 17:49:19 +08:00
public async Task<BaseResponse> UpdateSelectedIconAsync([FromBody] UpdateSelectedIconRequest request)
2026-02-02 11:07:34 +08:00
{
2026-02-10 17:49:19 +08:00
await categoryApplication.UpdateSelectedIconAsync(request);
return "更新图标成功".Ok();
2026-02-02 11:07:34 +08:00
}
2025-12-25 11:20:56 +08:00
}