新增 SportsHall/BatchDeleteClasses 接口:校验批量数量、本校运动馆班级归属及空班条件,在可串行化事务中清理班级和教练关联,并发送物联网删除同步。 学生批量删除增加 BatchDelete 动作权限校验;按实际页面菜单匹配权限,兼容生产库中重复的学生管理菜单。运动馆班级删除由已授权角色使用,不硬编码学校角色。 新增幂等菜单权限脚本,仅向学生管理和运动馆班级管理的有效页面菜单登记批量删除动作,不自动给角色授权。QA 与生产库已核验菜单动作;代码上线仍需独立部署。 验证:Debug/Release 构建通过,SQL 在 QA 重跑无重复写入。
142 lines
4.8 KiB
C#
142 lines
4.8 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using VOL.Business.IServices.School;
|
|
using VOL.Business.IServices.SportsHall;
|
|
using VOL.Business.Services.School;
|
|
using VOL.Core.Filters;
|
|
using VOL.Model;
|
|
using VOL.Model.School.Request;
|
|
using VOL.Model.School.Response;
|
|
using VOL.Model.SportsHall;
|
|
|
|
namespace VOL.WebApi.Controllers.SportsHall
|
|
{
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
[ApiExplorerSettings(GroupName = "v3")]
|
|
[TypeFilter(typeof(CustomApiResponseFilter))]
|
|
public class SportsHallController : ControllerBase
|
|
{
|
|
#region 初始化
|
|
|
|
private readonly ISportsHallService _sportsHallService;
|
|
public SportsHallController(
|
|
ISportsHallService sportsHallService)
|
|
{
|
|
_sportsHallService = sportsHallService;
|
|
}
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 新增
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost(nameof(AddClass))]
|
|
public async Task<ActionResult> AddClass([FromBody] AddSportsHallClassParam paramDto)
|
|
{
|
|
await _sportsHallService.AddClass(paramDto);
|
|
return Ok("新增成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 更新
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost(nameof(ModifyClass))]
|
|
public async Task<ActionResult> ModifyClass([FromBody] ModifySportsHallClassParam paramDto)
|
|
{
|
|
await _sportsHallService.ModifyClass(paramDto);
|
|
return Ok("更新成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量删除当前学校的运动馆空班级
|
|
/// </summary>
|
|
[HttpPost(nameof(BatchDeleteClasses))]
|
|
public async Task<ActionResult> BatchDeleteClasses([FromBody] List<int> ids)
|
|
{
|
|
var deletedCount = await _sportsHallService.BatchDeleteClasses(ids);
|
|
return Ok($"成功删除{deletedCount}个班级");
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 导入运动馆学生体测数据
|
|
/// </summary>
|
|
/// <param name="file"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
[HttpPost(nameof(SportsHallImportStudentsTestData))]
|
|
public async Task<ActionResult> SportsHallImportStudentsTestData(IFormFile file)
|
|
{
|
|
await _sportsHallService.SportsHallImportStudentsTestData(file);
|
|
return Ok("导入成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导入体测成绩管理学生体测数据
|
|
/// </summary>
|
|
/// <param name="file"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
[HttpPost(nameof(SummaryOfGradesImportStudentsTestData))]
|
|
public async Task<ActionResult> SummaryOfGradesImportStudentsTestData(IFormFile file)
|
|
{
|
|
await _sportsHallService.SummaryOfGradesImportStudentsTestData(file);
|
|
return Ok("导入成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 运动馆体测成绩分页列表
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetSportsHallStudentsTestPageList))]
|
|
public async Task<PageDataDto<SportsHallStudentsTestModel>> GetSportsHallStudentsTestPageList(SportsHallStudentsTestParam paramDto)
|
|
{
|
|
return await _sportsHallService.GetSportsHallStudentsTestPageList(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 体测成绩管理分页列表(全部体测项目)
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpGet(nameof(GetSummaryOfGradesStudentsTestPageList))]
|
|
public async Task<PageDataDto<SummaryOfGradesStudentsTestModel>> GetSummaryOfGradesStudentsTestPageList(SportsHallStudentsTestParam paramDto)
|
|
{
|
|
return await _sportsHallService.GetSummaryOfGradesStudentsTestPageList(paramDto);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 成绩推送
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost(nameof(ScorePush))]
|
|
public async Task<ActionResult> ScorePush([FromBody] SportsHallStudentsTestParam paramDto)
|
|
{
|
|
await _sportsHallService.ScorePush(paramDto);
|
|
return Ok("推送成功");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 成绩修正
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost(nameof(ScoreUpdate))]
|
|
public async Task<ActionResult> ScoreUpdate([FromBody] SportsHallStudentsTestDataUpdateParam paramDto)
|
|
{
|
|
await _sportsHallService.ScoreUpdate(paramDto);
|
|
return Ok("更新成功");
|
|
}
|
|
}
|
|
}
|