|
@@ -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
|
|
|
}
|
|
|
}
|
|
|
|