using Application;
using Application.Dto.Category;
namespace WebApi.Controllers;
[ApiController]
[Route("api/[controller]/[action]")]
public class TransactionCategoryController(
ITransactionCategoryApplication categoryApplication
) : ControllerBase
{
///
/// 获取分类列表(支持按类型筛选)
///
[HttpGet]
public async Task>> GetListAsync([FromQuery] TransactionType? type = null)
{
var categories = await categoryApplication.GetListAsync(type);
return categories.Ok();
}
///
/// 根据ID获取分类详情
///
[HttpGet("{id}")]
public async Task> GetByIdAsync(long id)
{
var category = await categoryApplication.GetByIdAsync(id);
return category.Ok();
}
///
/// 创建分类
///
[HttpPost]
public async Task> CreateAsync([FromBody] CreateCategoryRequest request)
{
var categoryId = await categoryApplication.CreateAsync(request);
return categoryId.Ok();
}
///
/// 更新分类
///
[HttpPost]
public async Task UpdateAsync([FromBody] UpdateCategoryRequest request)
{
await categoryApplication.UpdateAsync(request);
return "更新分类成功".Ok();
}
///
/// 删除分类
///
[HttpPost]
public async Task DeleteAsync([FromQuery] long id)
{
await categoryApplication.DeleteAsync(id);
return BaseResponse.Done();
}
///
/// 批量创建分类(用于初始化)
///
[HttpPost]
public async Task> BatchCreateAsync([FromBody] List requests)
{
var count = await categoryApplication.BatchCreateAsync(requests);
return count.Ok();
}
///
/// 为指定分类生成新的SVG图标
///
[HttpPost]
public async Task> GenerateIconAsync([FromBody] GenerateIconRequest request)
{
var svg = await categoryApplication.GenerateIconAsync(request);
return svg.Ok();
}
///
/// 更新分类的选中图标索引
///
[HttpPost]
public async Task UpdateSelectedIconAsync([FromBody] UpdateSelectedIconRequest request)
{
await categoryApplication.UpdateSelectedIconAsync(request);
return "更新图标成功".Ok();
}
///
/// 删除分类图标
///
[HttpDelete("{id}")]
public async Task DeleteIconAsync(long id)
{
await categoryApplication.DeleteIconAsync(id);
return "删除图标成功".Ok();
}
}