SourcewareCategoryService.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using System.ComponentModel;
  2. using Exam.Infrastructure.Data.Entity;
  3. using Exam.Infrastructure.Extensions;
  4. using Exam.Share.ViewResponses.Sourceware;
  5. using Hotline.Application.Exam.Constants.Messages;
  6. using Hotline.Application.Exam.Extensions;
  7. using Hotline.Application.Exam.Interface.Sourcewares;
  8. using Hotline.Application.Exam.QueryExtensions.Sourcewares;
  9. using Hotline.Exams.Sourcewares;
  10. using Hotline.Repository.SqlSugar;
  11. using Hotline.Repository.SqlSugar.Exam.Interfaces.Sourcewares;
  12. using Hotline.Repository.SqlSugar.Exam.Service;
  13. using Hotline.Share.Dtos.Sourcewares;
  14. using Hotline.Share.Requests.Sourceware;
  15. using MapsterMapper;
  16. using XF.Domain.Dependency;
  17. using XF.Domain.Exceptions;
  18. namespace Hotline.Application.Exam.Service.Sourcewares
  19. {
  20. /// <summary>
  21. /// 课件类型服务
  22. /// </summary>
  23. [Description("课件类型服务")]
  24. public class SourcewareCategoryService : ApiService<ExamSourcewareCategory, AddSourcewareCategoryDto,UpdateSourcewareCategoryDto,HotlineDbContext>,ISourcewareCategoryService, IScopeDependency
  25. {
  26. private readonly ISourcewareCategoryRepository _repository;
  27. private readonly IMapper _mapper;
  28. public SourcewareCategoryService(ISourcewareCategoryRepository repository,IMapper mapper) : base(repository,mapper)
  29. {
  30. _repository = repository;
  31. _mapper = mapper;
  32. }
  33. public async Task<SourcewareCategoryDto> GetAsync(EntityQueryRequest entityQueryRequest)
  34. {
  35. var entity = await _repository.GetAsync(entityQueryRequest.Id);
  36. return _mapper.Map<SourcewareCategoryDto>(entity);
  37. }
  38. public async Task<(int, List<SourcewareCategoryViewResponse>)> GetListAsync(SourcewareCategoryRequest queryRequest)
  39. {
  40. var expression = queryRequest.GetExpression();
  41. var query = _repository.Queryable().Where(expression);
  42. var result = await query.Select(m => new SourcewareCategoryViewResponse {
  43. Name = m.Name,
  44. ParentId = m.ParentId,
  45. Id = m.Id,
  46. }).ToListAsync();
  47. var total = await query.CountAsync();
  48. return (total,result);
  49. }
  50. public async Task<PageViewResponse<SourcewareCategoryViewResponse>> GetPagedListAsync(SourcewareCategoryRequest queryRequest)
  51. {
  52. throw new NotImplementedException();
  53. }
  54. /// <summary>
  55. /// 获取树状
  56. /// </summary>
  57. /// <param name="sourcewareCategoryDto"></param>
  58. /// <returns></returns>
  59. /// <exception cref="NotImplementedException"></exception>
  60. public async Task<List<SourcewareCategoryViewResponse>> GetTreeAsync(SourcewareCategoryRequest sourcewareCategoryRequest)
  61. {
  62. var expression = sourcewareCategoryRequest.GetExpression();
  63. var sourcewareCategorys = await _repository.GetTreeAsync(expression);
  64. var sourcewareCategoryViewResponses = sourcewareCategorys.Select(m => new SourcewareCategoryViewResponse
  65. {
  66. Id = m.Id,
  67. Name = m.Name,
  68. ParentId = m.ParentId,
  69. SortIndex = m.SortIndex,
  70. LastModificationTime = m.LastModificationTime,
  71. Children = _mapper.Map<List<SourcewareCategoryViewResponse>>(m.Children)
  72. }).ToList();
  73. return sourcewareCategoryViewResponses;
  74. }
  75. /// <summary>
  76. /// 删除课件分类
  77. /// </summary>
  78. /// <param name="entityQueryRequest"></param>
  79. /// <param name="cancellationToken"></param>
  80. /// <returns></returns>
  81. public override Task DeleteAsync(EntityQueryRequest entityQueryRequest, CancellationToken cancellationToken)
  82. {
  83. //TODO 如果分类拥有下级分类怎么不能删除
  84. if (_repository.CheckHasChild(entityQueryRequest))
  85. {
  86. throw new UserFriendlyException(BusinessExamErrorMessage.ServiceError, string.Format(BusinessExamErrorMessage.HasChild,typeof(ExamSourcewareCategory).GetDescription()));
  87. }
  88. return base.DeleteAsync(entityQueryRequest, cancellationToken);
  89. }
  90. }
  91. }