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(); } }