using Entities.Contracts; using Entities.DTO; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using TechHelper.Services; namespace TechHelper.Server.Controllers { /// /// 学校管理控制器 /// 处理学校相关的操作,如创建、更新、删除学校等 /// [Route("api/school")] [ApiController] public class SchoolController : ControllerBase { private TechHelper.Services.Beta.ISchoolService _schoolService; private UserManager _userManager; /// /// 初始化学校控制器 /// /// 学校服务 /// 用户管理服务 public SchoolController(TechHelper.Services.Beta.ISchoolService schoolService, UserManager userManager) { _schoolService = schoolService; _userManager = userManager; } #region 学校基本信息CRUD操作 /// /// 获取学校列表(支持搜索) /// /// 查询参数 /// 学校列表 /// 成功获取学校列表 /// 获取失败 [HttpGet] [Authorize(Roles = "Teacher,Admin")] public async Task GetAll([FromQuery] QueryParameter query) { var result = await _schoolService.GetAllAsync(query); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } /// /// 根据ID获取学校详细信息 /// /// 学校ID /// 学校详细信息 /// 成功获取学校信息 /// 学校未找到或获取失败 [HttpGet("{id}")] [Authorize(Roles = "Teacher,Admin")] public async Task GetById(Guid id) { var result = await _schoolService.GetAsync(id); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } /// /// 创建新学校 /// /// 学校数据传输对象 /// 创建结果 /// 创建成功 /// 创建失败 [HttpPost] public async Task Create([FromBody] SchoolDto model) { var result = await _schoolService.AddAsync(model); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } /// /// 更新学校信息 /// /// 学校数据传输对象 /// 更新结果 /// 更新成功 /// 更新失败 [HttpPut] [Authorize(Roles = "Admin")] public async Task Update([FromBody] SchoolDto model) { var result = await _schoolService.UpdateAsync(model); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } /// /// 删除学校 /// /// 学校ID /// 删除结果 /// 删除成功 /// 删除失败 [HttpDelete("{id}")] [Authorize(Roles = "Admin")] public async Task Delete(Guid id) { var result = await _schoolService.DeleteAsync(id); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Message); } /// /// 根据学校名称获取学校信息 /// /// 学校名称 /// 学校信息 /// 成功获取学校信息 /// 学校未找到或获取失败 [HttpGet("byname/{schoolName}")] [Authorize(Roles = "Student,Teacher,Admin")] public async Task GetByName(string schoolName) { var result = await _schoolService.GetSchoolByNameAsync(schoolName); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } #endregion } }