QuestionController.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. using Exam.Infrastructure.Data.Entity;
  2. using Exam.Share.ViewResponses.Question;
  3. using Hotline.Application.Exam.Constants.ApiRoutes;
  4. using Hotline.Application.Exam.Interface.Questions;
  5. using Hotline.Repository.SqlSugar.Interface;
  6. using Hotline.Share.Dtos.Questions;
  7. using Hotline.Share.Requests.Question;
  8. using MapsterMapper;
  9. using Microsoft.AspNetCore.Authorization;
  10. using Microsoft.AspNetCore.Mvc;
  11. namespace Hotline.Api.Controllers.Exam
  12. {
  13. public class QuestionController : BaseController
  14. {
  15. private readonly IQuestionService _questionService;
  16. private readonly IMapper _mapper;
  17. public QuestionController(IQuestionService questionService,IMapper mapper)
  18. {
  19. _questionService = questionService;
  20. this._mapper = mapper;
  21. }
  22. /// <summary>
  23. /// 新增题库
  24. /// </summary>
  25. /// <param name="questionDto"></param>
  26. /// <returns></returns>
  27. [HttpPost(QuestionApiRoute.Add)]
  28. public async Task Add([FromBody] AddQuestionDto questionDto)
  29. {
  30. await _questionService.AddAsync(questionDto, HttpContext.RequestAborted);
  31. }
  32. /// <summary>
  33. /// 修改题库
  34. /// </summary>
  35. /// <param name="questionDto"></param>
  36. /// <returns></returns>
  37. [HttpPut(QuestionApiRoute.Update)]
  38. public async Task Update([FromBody] UpdateQuestionDto questionDto)
  39. {
  40. await _questionService.UpdateAsync(questionDto, HttpContext.RequestAborted);
  41. }
  42. /// <summary>
  43. /// 删除题库
  44. /// </summary>
  45. /// <param name="entityQueryRequest"></param>
  46. /// <returns></returns>
  47. [HttpDelete(QuestionApiRoute.Delete)]
  48. public async Task Delete([FromBody] EntityQueryRequest entityQueryRequest)
  49. {
  50. await _questionService.DeleteAsync(entityQueryRequest, HttpContext.RequestAborted);
  51. }
  52. /// <summary>
  53. /// 获取题库分页列表
  54. /// </summary>
  55. /// <param name="questionPagedRequest"></param>
  56. /// <returns></returns>
  57. [HttpPost(QuestionApiRoute.GetPagedList)]
  58. public async Task<QuestionPageViewResponse> GetPagedList([FromBody] QuestionPagedRequest questionPagedRequest)
  59. {
  60. var questionPageViewResponse = await _questionService.GetPagedListAsync(questionPagedRequest);
  61. return questionPageViewResponse as QuestionPageViewResponse;
  62. }
  63. /// <summary>
  64. /// 获取题库
  65. /// </summary>
  66. /// <param name="id"></param>
  67. /// <returns></returns>
  68. [HttpGet(QuestionApiRoute.Get)]
  69. public async Task<QuestionDto> Get(string id)
  70. {
  71. var questionDto = await _questionService.GetAsync(new EntityQueryRequest
  72. {
  73. Id = id
  74. });
  75. return questionDto;
  76. }
  77. /// <summary>
  78. /// 获取题库
  79. /// </summary>
  80. /// <param name="questionRequest"></param>
  81. /// <returns></returns>
  82. [HttpPost(QuestionApiRoute.GetList)]
  83. public async Task<(int,List<QuestionViewResponse>)> GetList([FromBody]QuestionRequest questionRequest)
  84. {
  85. var questionPagedRequest = _mapper.Map<QuestionRequest, QuestionPagedRequest>(questionRequest);
  86. return await _questionService.GetListAsync(questionPagedRequest);
  87. }
  88. /// <summary>
  89. /// 更新开启状态
  90. /// </summary>
  91. /// <param name="statusActionRequests"></param>
  92. /// <returns></returns>
  93. [HttpPost(QuestionApiRoute.UpdateStatus)]
  94. public async Task UpdateStatus([FromBody] List<StatusActionRequest> statusActionRequests)
  95. {
  96. await _questionService.UpdateStatus(statusActionRequests, HttpContext.RequestAborted);
  97. }
  98. /// <summary>
  99. /// 导入Excel
  100. /// </summary>
  101. /// <returns></returns>
  102. [HttpPost(ExamManageApiRoute.ImportExcel)]
  103. public async Task ImportExcel(IFormFile files)
  104. {
  105. await _questionService.ImportExcel(files, HttpContext.RequestAborted);
  106. }
  107. }
  108. }