using HoneyBox.Admin.Filters; using HoneyBox.Admin.Models.AdminUser; using HoneyBox.Admin.Models.Common; using HoneyBox.Admin.Models.Department; using HoneyBox.Admin.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace HoneyBox.Admin.Controllers; /// /// 部门管理控制器 /// [ApiController] [Route("api/admin/departments")] [Authorize] public class DepartmentController : ControllerBase { private readonly IDepartmentService _departmentService; private readonly ILogger _logger; public DepartmentController(IDepartmentService departmentService, ILogger logger) { _departmentService = departmentService; _logger = logger; } /// /// 获取部门树 /// /// 部门树列表 [HttpGet] public async Task>> GetDepartmentTree() { var result = await _departmentService.GetDepartmentTreeAsync(); return ApiResponse>.Success(result); } /// /// 获取部门详情 /// /// 部门ID /// 部门详情 [HttpGet("{id:long}")] public async Task> GetById(long id) { var result = await _departmentService.GetByIdAsync(id); return ApiResponse.Success(result); } /// /// 创建部门 /// /// 创建请求 /// 新部门ID [HttpPost] [OperationLog("部门管理", "创建部门")] public async Task> Create([FromBody] CreateDepartmentRequest request) { var id = await _departmentService.CreateAsync(request); return ApiResponse.Success(id, "创建成功"); } /// /// 更新部门 /// /// 部门ID /// 更新请求 [HttpPut("{id:long}")] [OperationLog("部门管理", "更新部门")] public async Task Update(long id, [FromBody] UpdateDepartmentRequest request) { await _departmentService.UpdateAsync(id, request); return ApiResponse.Success("更新成功"); } /// /// 删除部门 /// /// 部门ID [HttpDelete("{id:long}")] [OperationLog("部门管理", "删除部门")] public async Task Delete(long id) { await _departmentService.DeleteAsync(id); return ApiResponse.Success("删除成功"); } /// /// 获取部门已分配的菜单ID列表 /// /// 部门ID /// 菜单ID列表 [HttpGet("{id:long}/menus")] public async Task>> GetMenus(long id) { var result = await _departmentService.GetMenuIdsAsync(id); return ApiResponse>.Success(result); } /// /// 分配菜单给部门 /// /// 部门ID /// 分配请求 [HttpPut("{id:long}/menus")] [OperationLog("部门管理", "分配菜单")] public async Task AssignMenus(long id, [FromBody] AssignDepartmentMenusRequest request) { await _departmentService.AssignMenusAsync(id, request.MenuIds); return ApiResponse.Success("分配成功"); } /// /// 获取部门下的用户列表 /// /// 部门ID /// 用户列表 [HttpGet("{id:long}/users")] public async Task>> GetDepartmentUsers(long id) { var result = await _departmentService.GetDepartmentUsersAsync(id); return ApiResponse>.Success(result); } }