using Microsoft.AspNetCore.Mvc;
using MyHomePage.Api.Common;
using MyHomePage.Api.Models.Dtos;
using MyHomePage.Api.Services;
namespace MyHomePage.Api.Controllers;
/// 分类管理:支持二级树形结构。
[ApiController]
[Route("api/categories")]
public class CategoriesController : ControllerBase
{
private readonly ICategoryService _service;
public CategoriesController(ICategoryService service) => _service = service;
/// 获取全量分类(树形)
[HttpGet]
public async Task>> GetTree() =>
await ApiResponse>.OkListAsync(_service.GetTreeAsync());
/// 根据 ID 获取分类
[HttpGet("{id:int}")]
public async Task> GetById(int id)
{
var dto = await _service.GetByIdAsync(id)
?? throw new BusinessException("分类不存在", 404);
return ApiResponse.Ok(dto);
}
/// 创建分类
[HttpPost]
public async Task> Create([FromBody] CategoryUpsertRequest request) =>
ApiResponse.Ok(await _service.CreateAsync(request));
/// 更新分类
[HttpPut("{id:int}")]
public async Task> Update(int id, [FromBody] CategoryUpsertRequest request) =>
ApiResponse.Ok(await _service.UpdateAsync(id, request));
/// 删除分类
[HttpDelete("{id:int}")]
public async Task Delete(int id)
{
await _service.DeleteAsync(id);
return ApiResponse.Ok();
}
}