瀏覽代碼

增加课件接口

guqiang 1 月之前
父節點
當前提交
ec9a6b343f
共有 34 個文件被更改,包括 324 次插入99 次删除
  1. 19 0
      Hotline.Repository.Sqlsugar/Interfaces/IExamTagRepository.cs
  2. 1 1
      src/Hotline.Api/Controllers/Exam/SourcewareCategoryController.cs
  3. 25 3
      src/Hotline.Api/Controllers/Exam/SourcewaresController.cs
  4. 2 3
      src/Hotline.Application/Exam/Interface/ExamManages/IExamTagService.cs
  5. 2 4
      src/Hotline.Application/Exam/Interface/Sourcewares/ISourcewareCategoryService.cs
  6. 3 3
      src/Hotline.Application/Exam/Interface/Sourcewares/ISourcewareService.cs
  7. 20 0
      src/Hotline.Application/Exam/QueryExtensions/ExamManages/ExamTagQueryExtensions.cs
  8. 1 1
      src/Hotline.Application/Exam/QueryExtensions/Sourcewares/SourcewareCategoryQueryExtensions.cs
  9. 11 2
      src/Hotline.Application/Exam/QueryExtensions/Sourcewares/SourcewareQueryExtensions.cs
  10. 85 0
      src/Hotline.Application/Exam/Service/ExamManages/ExamTagService.cs
  11. 2 2
      src/Hotline.Application/Exam/Service/Sourcewares/SourcewareCategoryService.cs
  12. 53 25
      src/Hotline.Application/Exam/Service/Sourcewares/SourcewareService.cs
  13. 2 7
      src/Hotline.Application/Hotline.Application.csproj
  14. 4 6
      src/Hotline.Repository.SqlSugar/Exam/Interfaces/ExamManages/IExamTagRepository.cs
  15. 1 1
      src/Hotline.Repository.SqlSugar/Exam/Interfaces/Sourcewares/ISourcewareCategoryRepository.cs
  16. 1 1
      src/Hotline.Repository.SqlSugar/Exam/Interfaces/Sourcewares/ISourcewareRepository.cs
  17. 8 0
      src/Hotline.Repository.SqlSugar/Exam/Repositories/ExamManages/ExamTagRepository.cs
  18. 1 1
      src/Hotline.Repository.SqlSugar/Exam/Repositories/Sourcewares/SourcewareCategoryRepository.cs
  19. 1 1
      src/Hotline.Repository.SqlSugar/Exam/Repositories/Sourcewares/SourcewareRepository.cs
  20. 1 1
      src/Hotline.Repository.SqlSugar/Exam/Validators/Sourcewares/SourcewareCategoryValidator.cs
  21. 1 1
      src/Hotline.Repository.SqlSugar/Exam/Validators/Sourcewares/SourcewareValidator.cs
  22. 1 1
      src/Hotline.Share/Dtos/ExamManages/ExamTagDto.cs
  23. 1 1
      src/Hotline.Share/Dtos/Sourcewares/SourcewareCategoryDto.cs
  24. 7 1
      src/Hotline.Share/Dtos/Sourcewares/SourcewareDto.cs
  25. 1 1
      src/Hotline.Share/Enums/Exams/EPublicStatus.cs
  26. 1 1
      src/Hotline.Share/Requests/Sourceware/SourcewarePagedRequest.cs
  27. 1 0
      src/Hotline.Share/ViewResponses/Exam/ExamTagPageViewResponse.cs
  28. 14 1
      src/Hotline.Share/ViewResponses/Exam/ExamTagViewResponse.cs
  29. 1 1
      src/Hotline.Share/ViewResponses/Questions/QuestionViewResponse.cs
  30. 1 2
      src/Hotline.Share/ViewResponses/Sourcewares/SourcewarePageViewResponse.cs
  31. 42 24
      src/Hotline.Share/ViewResponses/Sourcewares/SourcewareViewResponse.cs
  32. 1 1
      src/Hotline/Exams/Base/BusinessEntity.cs
  33. 8 1
      src/Hotline/Exams/Sourcewares/Sourceware.cs
  34. 1 1
      src/Hotline/Exams/Sourcewares/SourcewareCategory.cs

+ 19 - 0
Hotline.Repository.Sqlsugar/Interfaces/IExamTagRepository.cs

@@ -0,0 +1,19 @@
+
+using SqlSugar;
+using XF.Domain.Repository;
+using Hotline.Insfrastructure.Service.Interface;
+using System.ComponentModel;
+
+namespace Hotline.Repository.Sqlsugar
+{
+    /// <summary>
+    /// 考试标签仓储接口
+    /// </summary>
+    [Description("考试标签仓储接口")]
+    public interface IExamTagRepository:IRepository<ExamTag>,IExamRepository<ExamTag,ExamDbContext>
+    {
+       
+    }
+}
+
+

+ 1 - 1
src/Hotline.Api/Controllers/Exam/SourcewareCategoryController.cs

@@ -1,10 +1,10 @@
 using Exam.Application;
 using Exam.Infrastructure.Data.Entity;
 using Exam.Infrastructure.Data.Extensions;
-using Exam.Share.Dtos.Sourcewares;
 using Exam.Share.ViewResponses.Sourceware;
 using Hotline.Application.Exam.Constants;
 using Hotline.Repository.SqlSugar.Exam.Interfaces.Sourcewares;
+using Hotline.Share.Dtos.Sourcewares;
 using Hotline.Share.Requests.Sourceware;
 using Microsoft.AspNetCore.Mvc;
 using XF.Domain.Authentications;

+ 25 - 3
src/Hotline.Api/Controllers/Exam/SourcewaresController.cs

@@ -1,20 +1,24 @@
 using Exam.Application.Interface.Sourcewares;
 using Exam.Infrastructure.Data.Entity;
-using Exam.Share;
-using Exam.Share.Dtos.Sourcewares;
+using Exam.Infrastructure.Data.Extensions;
 using Hotline.Application.Exam.Constants;
+using Hotline.Share.Dtos.Sourcewares;
 using Hotline.Share.Requests.Sourceware;
+using Hotline.Share.ViewResponses.Sourcewares;
 using Microsoft.AspNetCore.Mvc;
+using XF.Domain.Authentications;
 
 namespace Hotline.Api.Controllers.Exam
 {
     public class SourcewaresController : BaseController
     {
         private ISourcewareService _sourcewareService;
+        private ISessionContext _sessionContext;
 
-        public SourcewaresController(ISourcewareService sourcewareService)
+        public SourcewaresController(ISourcewareService sourcewareService,ISessionContext sessionContext)
         {
             _sourcewareService = sourcewareService;
+            _sessionContext = sessionContext;
         }
 
         /// <summary>
@@ -25,6 +29,7 @@ namespace Hotline.Api.Controllers.Exam
         [HttpPost(SourcewareRouteApi.Add)]
         public async Task Add([FromBody] SourcewareDto sourcewareDto)
         {
+            sourcewareDto.InitRequest(_sessionContext);
             await _sourcewareService.AddAsync(sourcewareDto, HttpContext.RequestAborted);
         }
 
@@ -36,6 +41,7 @@ namespace Hotline.Api.Controllers.Exam
         [HttpPut(SourcewareRouteApi.Update)]
         public async Task Update([FromBody] SourcewareDto sourcewareDto)
         {
+            sourcewareDto.InitRequest(_sessionContext);
             await _sourcewareService.UpdateAsync(sourcewareDto, HttpContext.RequestAborted);
         }
 
@@ -62,5 +68,21 @@ namespace Hotline.Api.Controllers.Exam
 
             return sourcewarePageViewResponse as SourcewarePageViewResponse; 
         }
+
+        /// <summary>
+        /// 获取课件
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet(SourcewareRouteApi.Get)]
+        public async Task<SourcewareDto> Get(string id)
+        {
+            var sourcewareDto = await _sourcewareService.GetAsync(new EntityQueryRequest
+            {
+                Id = id
+            });
+
+            return sourcewareDto;
+        }
     }
 }

+ 2 - 3
src/Hotline.Application/Exam/Interface/ExamManages/IExamTagService.cs

@@ -1,9 +1,8 @@
 using Exam.ExamManages;
-
-using Exam.Share.Dtos.TestPapers;
-using Exam.Share.ViewResponses.Exam;
 using Hotline.Repository.SqlSugar.Interface;
+using Hotline.Share.Dtos.ExamManages;
 using Hotline.Share.Requests.Exam;
+using Hotline.Share.ViewResponses.Exam;
 
 namespace Exam.Application.Interface.Exam
 {

+ 2 - 4
src/Hotline.Application/Exam/Interface/Sourcewares/ISourcewareCategoryService.cs

@@ -1,9 +1,7 @@
-
-
-using Exam.Share.Dtos.Sourcewares;
 using Exam.Share.ViewResponses.Sourceware;
-using Exam.Sourcewares;
+using Hotline.Exams.Sourcewares;
 using Hotline.Repository.SqlSugar.Interface;
+using Hotline.Share.Dtos.Sourcewares;
 using Hotline.Share.Requests.Sourceware;
 using System.ComponentModel;
 

+ 3 - 3
src/Hotline.Application/Exam/Interface/Sourcewares/ISourcewareService.cs

@@ -1,8 +1,8 @@
-using Exam.Share;
-using Exam.Share.Dtos.Sourcewares;
-using Exam.Sourcewares;
+using Hotline.Exams.Sourcewares;
 using Hotline.Repository.SqlSugar.Interface;
+using Hotline.Share.Dtos.Sourcewares;
 using Hotline.Share.Requests.Sourceware;
+using Hotline.Share.ViewResponses.Sourcewares;
 using System.ComponentModel;
 
 namespace Exam.Application.Interface.Sourcewares

+ 20 - 0
src/Hotline.Application/Exam/QueryExtensions/ExamManages/ExamTagQueryExtensions.cs

@@ -0,0 +1,20 @@
+using Exam.ExamManages;
+using Hotline.Share.Requests.Exam;
+using System.Linq.Expressions;
+
+namespace Hotline.Application.Exam.QueryExtensions.ExamManages
+{
+    public static class ExamTagQueryExtesions
+    {
+        public static Expression<Func<ExamTag,bool>> GetExpression(this ExamTagRequest examTagRequest)
+        {
+            Expression<Func<ExamTag, bool>> expression = m => m.Id != null;
+
+            return expression;
+        }
+
+    }
+}
+
+
+

+ 1 - 1
src/Hotline.Application/Exam/QueryExtensions/Sourcewares/SourcewareCategoryQueryExtensions.cs

@@ -1,4 +1,4 @@
-using Exam.Sourcewares;
+using Hotline.Exams.Sourcewares;
 using Hotline.Share.Requests.Sourceware;
 using System.Linq.Expressions;
 

+ 11 - 2
src/Hotline.Application/Exam/QueryExtensions/Sourcewares/SourcewareQueryExtensions.cs

@@ -1,5 +1,7 @@
-using Exam.Sourcewares;
+using Exam.Infrastructure.Extensions;
+using Hotline.Exams.Sourcewares;
 using Hotline.Share.Requests.Sourceware;
+using SqlSugar;
 using System.Linq.Expressions;
 
 namespace Exam.Application.QueryExtensions.Sourcewares
@@ -8,7 +10,14 @@ namespace Exam.Application.QueryExtensions.Sourcewares
     {
         public static Expression<Func<Sourceware,bool>> GetExpression(this SourcewarePagedRequest sourcewarePagedRequest)
         {
-            Expression<Func<Sourceware, bool>> expression = m => m.Id != null;
+            Expression<Func<Sourceware, bool>> expression = m=>m.Id!=null;
+
+            Expressionable<Sourceware> expressionable = new Expressionable<Sourceware>();
+
+            expressionable = expressionable.AndIF(sourcewarePagedRequest.Name.IsNotNullOrEmpty(), m => m.Name.Contains(sourcewarePagedRequest.Name));
+            expressionable = expressionable.AndIF(sourcewarePagedRequest.SourcewareType.IsNotNullOrEmpty(),m=>m.SourcewareType == sourcewarePagedRequest.SourcewareType);
+
+            expression = expressionable.ToExpression();
 
             return expression;
         }

+ 85 - 0
src/Hotline.Application/Exam/Service/ExamManages/ExamTagService.cs

@@ -0,0 +1,85 @@
+using Exam.Application.Interface.Exam;
+using Exam.ExamManages;
+using Exam.Infrastructure.Data.Entity;
+using Exam.Insfrastructure.Service.Service;
+using Exam.Share.ViewResponses.Sourceware;
+using Hotline.Application.Exam.QueryExtensions.ExamManages;
+using Hotline.Repository.SqlSugar;
+using Hotline.Repository.SqlSugar.Exam.Interfaces.ExamManages;
+using Hotline.Share.Dtos.ExamManages;
+using Hotline.Share.Requests.Exam;
+using Hotline.Share.Requests.Sourceware;
+using Hotline.Share.ViewResponses.Exam;
+using Mapster;
+using System.ComponentModel;
+using XF.Domain.Dependency;
+
+namespace Hotline.Application.Exam.Service.ExamManages
+{
+    /// <summary>
+    /// 考试标签服务
+    /// </summary>
+    [Description("考试标签服务")]
+    public class ExamTagService : ApiService<ExamTag, ExamTagDto,HotlineDbContext>,IExamTagService, IScopeDependency
+    {
+        private readonly IExamTagRepository _repository;
+        public ExamTagService(IExamTagRepository repository) : base(repository)
+        {
+            _repository = repository;
+        }
+
+        public async Task<ExamTagDto> GetAsync(EntityQueryRequest entityQueryRequest)
+        {
+            var entity = await _repository.GetAsync(entityQueryRequest.Id);
+
+            return entity.Adapt<ExamTagDto>();
+        }
+
+        public async Task<(int, List<ExamTagViewResponse>)> GetListAsync(ExamTagRequest queryRequest)
+        {
+            var query = _repository.Queryable();
+
+            var result = await query.Select(m => new ExamTagViewResponse { 
+                				Name = m.Name,
+								ParentId = m.ParentId,
+								Id = m.Id,
+				            }).ToListAsync();
+
+            var total = await query.CountAsync();
+
+            return (total,result);
+        }
+
+        public async Task<PageViewResponse<ExamTagViewResponse>> GetPagedListAsync(ExamTagRequest queryRequest)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// 获取树状
+        /// </summary>
+        /// <param name="sourcewareCategoryDto"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public async Task<List<ExamTagViewResponse>> GetTreeAsync(ExamTagRequest examTagRequest)
+        {
+            var expression = examTagRequest.GetExpression();
+
+            var sourcewareCategorys = await _repository.GetTreeAsync(expression);
+
+            var sourcewareCategoryViewResponses = sourcewareCategorys.Select(m => new ExamTagViewResponse
+            {
+                Id = m.Id,
+                Name = m.Name,
+                ParentId = m.ParentId,
+                SortIndex = m.SortIndex,
+                Children = m.Children.Adapt<List<ExamTagViewResponse>>()
+            }).ToList();
+
+
+            return sourcewareCategoryViewResponses;
+        }
+    }
+}
+
+

+ 2 - 2
src/Hotline.Application/Exam/Service/Sourcewares/SourcewareCategoryService.cs

@@ -1,11 +1,11 @@
 using Exam.Application.QueryExtensions.Sourcewares;
 using Exam.Infrastructure.Data.Entity;
 using Exam.Insfrastructure.Service.Service;
-using Exam.Share.Dtos.Sourcewares;
 using Exam.Share.ViewResponses.Sourceware;
-using Exam.Sourcewares;
+using Hotline.Exams.Sourcewares;
 using Hotline.Repository.SqlSugar;
 using Hotline.Repository.SqlSugar.Exam.Interfaces.Sourcewares;
+using Hotline.Share.Dtos.Sourcewares;
 using Hotline.Share.Requests.Sourceware;
 using Mapster;
 using System.ComponentModel;

+ 53 - 25
src/Hotline.Application/Exam/Service/Sourcewares/SourcewareService.cs

@@ -3,17 +3,19 @@ using Exam.Application.Interface.Sourcewares;
 using Exam.Application.QueryExtensions.Sourcewares;
 using Exam.Infrastructure.Data.Entity;
 using Exam.Insfrastructure.Service.Service;
-using Exam.Share;
-using Exam.Share.Dtos.Sourcewares;
-using Exam.Sourcewares;
+using Hotline.Exams.Sourcewares;
 using Hotline.Repository.SqlSugar;
+using Hotline.Repository.SqlSugar.DataPermissions;
 using Hotline.Repository.SqlSugar.Exam.Interfaces.Sourcewares;
+using Hotline.Share.Dtos.Sourcewares;
 using Hotline.Share.Requests.Sourceware;
+using Hotline.Share.ViewResponses.Sourcewares;
 using Mapster;
+using SqlSugar;
 using System.ComponentModel;
 using XF.Domain.Dependency;
 
-namespace Exam.Application.Service.Sourcewares
+namespace Hotline.Application.Exam.Service.Sourcewares
 {
     /// <summary>
     /// 课件服务
@@ -22,11 +24,16 @@ namespace Exam.Application.Service.Sourcewares
     public class SourcewareService : ApiService<Sourceware, SourcewareDto,HotlineDbContext>,ISourcewareService, IScopeDependency
     {
         private readonly ISourcewareRepository _repository;
-        public SourcewareService(ISourcewareRepository repository) : base(repository)
+        private readonly IDataPermissionFilterBuilder _datePermissionFilterBuilder;
+        private readonly IServiceProvider _serviceProvider;
+        public SourcewareService(ISourcewareRepository repository, IDataPermissionFilterBuilder dataPermissionFilterBuilder, IServiceProvider serviceProvider) : base(repository)
         {
             _repository = repository;
+            _datePermissionFilterBuilder = dataPermissionFilterBuilder;
+            _serviceProvider = serviceProvider;
         }
 
+        #region public method
         public async Task<SourcewareDto> GetAsync(EntityQueryRequest entityQueryRequest)
         {
             var entity = await _repository.GetAsync(entityQueryRequest.Id);
@@ -36,37 +43,23 @@ namespace Exam.Application.Service.Sourcewares
 
         public async Task<(int, List<SourcewareViewResponse>)> GetListAsync(SourcewarePagedRequest queryRequest)
         {
-            var query = _repository.Queryable();
+            ISugarQueryable<SourcewareViewResponse> queryable = QueryResult(queryRequest);
 
-            var result = await query.Select(m => new SourcewareViewResponse { 
-                				Name = m.Name,
-								CategoryId = m.CategoryId,
-								AttachmentId = m.AttachmentId,
-								Id = m.Id,
-				            }).ToListAsync();
+            var result = await queryable.ToListAsync();
 
-            var total = await query.CountAsync();
+            var total = await queryable.CountAsync();
 
-            return (total,result);
+            return (total, result);
         }
 
         public async Task<PageViewResponse<SourcewareViewResponse>> GetPagedListAsync(SourcewarePagedRequest queryRequest)
         {
-            var expression = queryRequest.GetExpression();
-            var sourcewareTable = _repository.Queryable().Where(expression);
-
-            var queryable = sourcewareTable.Select((m) => new SourcewareViewResponse
-            {
-                				Name = m.Name,
-								CategoryId = m.CategoryId,
-								AttachmentId = m.AttachmentId,
-								Id = m.Id,
-				            });
+            ISugarQueryable<SourcewareViewResponse> queryable = QueryResult(queryRequest);
 
             var list = await queryable.ToPageListAsync(queryRequest.PageIndex, queryRequest.PageSize);
             var total = await queryable.CountAsync();
 
-            var result = new PageViewResponse<SourcewareViewResponse>
+            var result = new SourcewarePageViewResponse
             {
                 Items = list,
                 Pagination = new Pagination(queryRequest.PageIndex, queryRequest.PageSize, total)
@@ -74,6 +67,41 @@ namespace Exam.Application.Service.Sourcewares
 
             return result;
         }
+        #endregion
+
+        #region private method
+        /// <summary>
+        /// 获取查询结果
+        /// </summary>
+        /// <param name="queryRequest"></param>
+        /// <returns></returns>
+        private ISugarQueryable<SourcewareViewResponse> QueryResult(SourcewarePagedRequest queryRequest)
+        {
+            var expression = queryRequest.GetExpression();
+            var query = _repository.Queryable().Where(expression);
+            var sourcewareCategoryTable = new BaseRepository<SourcewareCategory>(_repository.UOW, _datePermissionFilterBuilder, _serviceProvider).Queryable();
+            var querable = query.OrderBy(o=>o.SortIndex).Select(m => new SourcewareViewResponse
+            {
+                Name = m.Name,
+                CategoryId = m.CategoryId,
+                AttachmentId = m.AttachmentId,
+                SourcewareType = m.SourcewareType,
+                Id = m.Id,
+                Status = m.Status,                
+            }).LeftJoin(sourcewareCategoryTable, (s, c) => s.CategoryId == c.Id).Select((s, c) =>
+            new SourcewareViewResponse
+            {
+                Name = s.Name,
+                CategoryId = s.CategoryId,
+                AttachmentId = s.AttachmentId,
+                SourcewareType = s.SourcewareType,
+                CategoryName = c.Name,
+                Id = s.Id,
+                Status = s.Status
+            });
+            return querable;
+        } 
+        #endregion
     }
 }
 

+ 2 - 7
src/Hotline.Application/Hotline.Application.csproj

@@ -1,11 +1,9 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
+<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
     <TargetFramework>net8.0</TargetFramework>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
   </PropertyGroup>
-
   <ItemGroup>
     <PackageReference Include="HtmlToOpenXml.dll" Version="3.2.2" />
     <PackageReference Include="JiebaAspNetCore.Segmenter" Version="1.0.1" />
@@ -14,7 +12,6 @@
     <PackageReference Include="XC.RSAUtil" Version="1.3.7" />
     <PackageReference Include="Quartz.Jobs" Version="3.13.1" />
   </ItemGroup>
-
   <ItemGroup>
     <ProjectReference Include="..\01.Infrastructure\Exam.Infrastructure.Web\Exam.Infrastructure.Web.csproj" />
     <ProjectReference Include="..\Hotline.Ai.Jths\Hotline.Ai.Jths.csproj" />
@@ -30,12 +27,10 @@
     <ProjectReference Include="..\XF.EasyCaching\XF.EasyCaching.csproj" />
     <ProjectReference Include="..\XingTang.Sdk\XingTang.Sdk.csproj" />
   </ItemGroup>
-
   <ItemGroup>
     <Folder Include="Exam\Service\ExamManages\" />
     <Folder Include="Exam\Service\Practices\" />
     <Folder Include="Exam\Service\TestPapers\" />
     <Folder Include="Exam\Service\Trains\" />
   </ItemGroup>
-
-</Project>
+</Project>

+ 4 - 6
src/Hotline.Repository.SqlSugar/Exam/Interfaces/ExamManages/IExamTagRepository.cs

@@ -1,10 +1,8 @@
-
-using SqlSugar;
-using XF.Domain.Repository;
-using System.ComponentModel;
 using Exam.ExamManages;
-using Hotline.Repository.SqlSugar;
 using Hotline.Repository.SqlSugar.Interface;
+using System.ComponentModel;
+using System.Linq.Expressions;
+using XF.Domain.Repository;
 
 namespace Hotline.Repository.SqlSugar.Exam.Interfaces.ExamManages
 {
@@ -14,7 +12,7 @@ namespace Hotline.Repository.SqlSugar.Exam.Interfaces.ExamManages
     [Description("考试标签仓储接口")]
     public interface IExamTagRepository:IRepository<ExamTag>,IExamRepository<ExamTag,HotlineDbContext>
     {
-       
+        public Task<List<ExamTag>> GetTreeAsync(Expression<Func<ExamTag, bool>> expression);
     }
 }
 

+ 1 - 1
src/Hotline.Repository.SqlSugar/Exam/Interfaces/Sourcewares/ISourcewareCategoryRepository.cs

@@ -2,10 +2,10 @@
 using SqlSugar;
 using XF.Domain.Repository;
 using System.ComponentModel;
-using Exam.Sourcewares;
 using Hotline.Repository.SqlSugar.Interface;
 using Hotline.Share.Requests.Sourceware;
 using System.Linq.Expressions;
+using Hotline.Exams.Sourcewares;
 
 namespace Hotline.Repository.SqlSugar.Exam.Interfaces.Sourcewares
 {

+ 1 - 1
src/Hotline.Repository.SqlSugar/Exam/Interfaces/Sourcewares/ISourcewareRepository.cs

@@ -2,8 +2,8 @@
 using SqlSugar;
 using XF.Domain.Repository;
 using System.ComponentModel;
-using Exam.Sourcewares;
 using Hotline.Repository.SqlSugar.Interface;
+using Hotline.Exams.Sourcewares;
 
 namespace Hotline.Repository.SqlSugar.Exam.Interfaces.Sourcewares
 {

+ 8 - 0
src/Hotline.Repository.SqlSugar/Exam/Repositories/ExamManages/ExamTagRepository.cs

@@ -6,6 +6,7 @@ using Hotline.Repository.SqlSugar.DataPermissions;
 using Hotline.Repository.SqlSugar.Exam.Interfaces.ExamManages;
 using SqlSugar;
 using System.ComponentModel;
+using System.Linq.Expressions;
 using XF.Domain.Dependency;
 
 namespace Exam.Repository.Sqlsugar
@@ -20,6 +21,13 @@ namespace Exam.Repository.Sqlsugar
         {
             Validator = new ExamTagValidator();
         }
+
+        public async Task<List<ExamTag>> GetTreeAsync(Expression<Func<ExamTag, bool>> expression)
+        {
+            var examTagList = await base.Queryable().Where(expression).OrderBy(o => o.SortIndex).ToTreeAsync(m => m.Children, p => p.ParentId, "");
+
+            return examTagList;
+        }
     }
 }
 

+ 1 - 1
src/Hotline.Repository.SqlSugar/Exam/Repositories/Sourcewares/SourcewareCategoryRepository.cs

@@ -1,5 +1,5 @@
 using Exam.Repository.Sqlsugar.Validators.Sourcewares;
-using Exam.Sourcewares;
+using Hotline.Exams.Sourcewares;
 using Hotline.Repository.SqlSugar;
 using Hotline.Repository.SqlSugar.DataPermissions;
 using Hotline.Repository.SqlSugar.Exam.Interfaces.Sourcewares;

+ 1 - 1
src/Hotline.Repository.SqlSugar/Exam/Repositories/Sourcewares/SourcewareRepository.cs

@@ -1,5 +1,5 @@
 using Exam.Repository.Sqlsugar.Validators.Sourcewares;
-using Exam.Sourcewares;
+using Hotline.Exams.Sourcewares;
 using Hotline.Repository.SqlSugar;
 using Hotline.Repository.SqlSugar.DataPermissions;
 using Hotline.Repository.SqlSugar.Exam.Interfaces.Sourcewares;

+ 1 - 1
src/Hotline.Repository.SqlSugar/Exam/Validators/Sourcewares/SourcewareCategoryValidator.cs

@@ -1,7 +1,7 @@
 using Exam.Infrastructure.Extensions;
 using Exam.Infrastructure.Validation.Validation;
-using Exam.Sourcewares;
 using FluentValidation;
+using Hotline.Exams.Sourcewares;
 using Hotline.Repository.SqlSugar.Validate;
 
 namespace Exam.Repository.Sqlsugar.Validators.Sourcewares

+ 1 - 1
src/Hotline.Repository.SqlSugar/Exam/Validators/Sourcewares/SourcewareValidator.cs

@@ -1,7 +1,7 @@
 using Exam.Infrastructure.Extensions;
 using Exam.Infrastructure.Validation.Validation;
-using Exam.Sourcewares;
 using FluentValidation;
+using Hotline.Exams.Sourcewares;
 using Hotline.Repository.SqlSugar.Validate;
 
 namespace Exam.Repository.Sqlsugar.Validators.Sourcewares

+ 1 - 1
src/Hotline.Share/Dtos/TestPapers/ExamTagDto.cs → src/Hotline.Share/Dtos/ExamManages/ExamTagDto.cs

@@ -1,7 +1,7 @@
 using Exam.Infrastructure.Data.Entity;
 using System.ComponentModel;
 
-namespace Exam.Share.Dtos.TestPapers
+namespace Hotline.Share.Dtos.ExamManages
 {
     /// <summary>
     /// 考试标签

+ 1 - 1
src/Hotline.Share/Dtos/Sourcewares/SourcewareCategoryDto.cs

@@ -1,7 +1,7 @@
 using Exam.Infrastructure.Data.Entity;
 using System.ComponentModel;
 
-namespace Exam.Share.Dtos.Sourcewares
+namespace Hotline.Share.Dtos.Sourcewares
 {
     /// <summary>
     /// 课件类型

+ 7 - 1
src/Hotline.Share/Dtos/Sourcewares/SourcewareDto.cs

@@ -1,7 +1,7 @@
 using Exam.Infrastructure.Data.Entity;
 using System.ComponentModel;
 
-namespace Exam.Share.Dtos.Sourcewares
+namespace Hotline.Share.Dtos.Sourcewares
 {
     /// <summary>
     /// 课件
@@ -32,5 +32,11 @@ namespace Exam.Share.Dtos.Sourcewares
         /// </summary>
         [Description("附件Id")]
         public string AttachmentId { get; set; }
+
+        /// <summary>
+        /// 课件类型
+        /// </summary>
+        [Description("课件类型")]
+        public string SourcewareType { get; set; }
     }
 }

+ 1 - 1
src/Hotline.Share/Enums/Exams/EPubicStatus.cs → src/Hotline.Share/Enums/Exams/EPublicStatus.cs

@@ -6,7 +6,7 @@ namespace Hotline.Share.Enums.Exams
     /// 通用状态枚举
     /// </summary>
     [Description("通用状态枚举")]
-    public enum EPubicStatus
+    public enum EPublicStatus
     {
         /// <summary>
         /// 默认

+ 1 - 1
src/Hotline.Share/Requests/Sourceware/SourcewarePagedRequest.cs

@@ -6,6 +6,6 @@ namespace Hotline.Share.Requests.Sourceware
     {
         public string Name { get; set; }
 
-        public int Type { get; set; }
+        public string SourcewareType { get; set; }
     }
 }

+ 1 - 0
src/Hotline.Share/ViewResponses/Exam/ExamTagPageViewResponse.cs

@@ -1,4 +1,5 @@
 using Exam.Infrastructure.Data.Entity;
+using Hotline.Share.ViewResponses.Exam;
 
 namespace Exam.Share.ViewResponses.Exam
 {

+ 14 - 1
src/Hotline.Share/ViewResponses/Exam/ExamTagViewResponse.cs

@@ -1,7 +1,7 @@
 using Exam.Infrastructure.Data.Interface;
 using System.ComponentModel;
 
-namespace Exam.Share.ViewResponses.Exam
+namespace Hotline.Share.ViewResponses.Exam
 {
     /// <summary>
     /// 标签
@@ -33,5 +33,18 @@ namespace Exam.Share.ViewResponses.Exam
         [Description("主键")]
 
         public string Id { get; set; }
+
+        /// <summary>
+        /// 父级ID
+        /// </summary>
+        [Description("父级ID")]
+        public string? ParentId { get; set; }
+
+        /// <summary>
+        /// 子标签
+        /// </summary>
+        [Description("子标签")]
+        public List<ExamTagViewResponse> Children { get; set; }
+
     }
 }

+ 1 - 1
src/Hotline.Share/ViewResponses/Questions/QuestionViewResponse.cs

@@ -97,7 +97,7 @@ namespace Exam.Share.ViewResponses.Question
         /// 状态
         /// </summary>
         [Description("状态")]
-        public EPubicStatus Status { get; set; }
+        public EPublicStatus Status { get; set; }
 
         /// <summary>
         /// 排序

+ 1 - 2
src/Hotline.Share/ViewResponses/Sourcewares/SourcewarePageViewResponse.cs

@@ -1,7 +1,6 @@
-
 using Exam.Infrastructure.Data.Entity;
 
-namespace Exam.Share
+namespace Hotline.Share.ViewResponses.Sourcewares
 {
     public class SourcewarePageViewResponse:PageViewResponse<SourcewareViewResponse>
     {

+ 42 - 24
src/Hotline.Share/ViewResponses/Sourcewares/SourcewareViewResponse.cs

@@ -1,31 +1,49 @@
-
 using Exam.Infrastructure.Data.Interface;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Exams;
 using System.ComponentModel;
 
-namespace Exam.Share
+namespace Hotline.Share.ViewResponses.Sourcewares
 {
-    public class SourcewareViewResponse:IViewResponse
+    public class SourcewareViewResponse : IViewResponse
     {
-        		/// <summary>
-	/// 名称
-	/// </summary>
-	[Description("名称")]
-	public string  Name {get;set;}
-				/// <summary>
-	/// 课件分类Id
-	/// </summary>
-	[Description("课件分类Id")]
-	public string  CategoryId {get;set;}
-				/// <summary>
-	/// 附件Id
-	/// </summary>
-	[Description("附件Id")]
-	public string  AttachmentId {get;set;}
-																/// <summary>
-	/// 主键
-	/// </summary>
-	[Description("主键")]
-	public string  Id {get;set;}
-														    }
+        /// <summary>
+        /// 名称
+        /// </summary>
+        [Description("名称")]
+        public string Name { get; set; }
+        /// <summary>
+        /// 课件分类Id
+        /// </summary>
+        [Description("课件分类Id")]
+        public string CategoryId { get; set; }
+
+        /// <summary>
+        /// 课件分类
+        /// </summary>
+        [Description("课件分类")]
+        public string CategoryName { get; set; }
+
+        /// <summary>
+        /// 附件Id
+        /// </summary>
+        [Description("附件Id")]
+        public string AttachmentId { get; set; }
+        /// <summary>
+        /// 主键
+        /// </summary>
+        [Description("主键")]
+        public string Id { get; set; }
+        /// <summary>
+        /// 课件类型
+        /// </summary>
+        [Description("课件类型")]
+        public string SourcewareType { get; set; }
+        /// <summary>
+        /// 状态
+        /// </summary>
+        [Description("状态")]
+        public EPublicStatus Status { get; set; }
+    }
 }
 

+ 1 - 1
src/Hotline/Exams/Base/BusinessEntity.cs

@@ -20,6 +20,6 @@ namespace Hotline.Exams.Base
         /// </summary>
         [Description("状态")]
         [SugarColumn(ColumnDescription = "状态")]
-        public EPubicStatus Status { get; set; }
+        public EPublicStatus Status { get; set; }
     }
 }

+ 8 - 1
src/Hotline/Exams/Sourcewares/Sourceware.cs

@@ -2,7 +2,7 @@
 using Hotline.Exams.Base;
 using SqlSugar;
 
-namespace Exam.Sourcewares
+namespace Hotline.Exams.Sourcewares
 {
     /// <summary>
     /// 课件
@@ -30,5 +30,12 @@ namespace Exam.Sourcewares
         [Description("附件Id")]
         [SugarColumn(ColumnDescription = "附件Id")]
         public string AttachmentId { get; set; }
+
+        /// <summary>
+        /// 课件类型
+        /// </summary>
+        [Description("课件类型")]
+        [SugarColumn(ColumnDescription = "课件类型")]
+        public string SourcewareType { get; set; }
     }
 }

+ 1 - 1
src/Hotline/Exams/Sourcewares/SourcewareCategory.cs

@@ -2,7 +2,7 @@
 using Hotline.Exams.Base;
 using SqlSugar;
 
-namespace Exam.Sourcewares
+namespace Hotline.Exams.Sourcewares
 {
     /// <summary>
     /// 课件类型