SysHelpsAppServiceBase.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using Abp.Application.Services.Dto;
  2. using Abp.Auditing;
  3. using Abp.Authorization;
  4. using Abp.Domain.Repositories;
  5. using Abp.Linq.Extensions;
  6. using Abp.Runtime.Caching;
  7. using Microsoft.EntityFrameworkCore;
  8. using VberZero.AppService.Base;
  9. using VberZero.AppService.Base.Dto;
  10. using VberZero.AppService.Helps.Dto;
  11. using VberZero.Auditing;
  12. using VberZero.BaseSystem;
  13. using VberZero.Session;
  14. using VberZero.Tools.StringModel;
  15. namespace VberZero.AppService.Helps;
  16. [AbpAuthorize, AuditLog("帮助管理", "帮助")]
  17. public class SysHelpAppServiceBase : VzCrudAppServiceBase<SysHelp, SysHelpDto, int, VzPagedRequestDto, SysHelpCreateDto, SysHelpUpdateDto>, ISysHelpsAppServiceBase
  18. {
  19. public SysHelpAppServiceBase(IRepository<SysHelp, int> repository, IRepository<SysFunction, int?> funRepository, ICacheManager cacheManager) : base(repository, "")
  20. {
  21. CacheManager = cacheManager;
  22. FunRepository = funRepository;
  23. }
  24. protected IRepository<SysFunction, int?> FunRepository { get; }
  25. [DisableAuditing]
  26. public override async Task<PagedResultDto<SysHelpDto>> GetAll(VzPagedRequestDto input)
  27. {
  28. CheckGetAllPermission();
  29. var userType = (VzDefinition.HelpType)(int)AbpSession.GetUserType();
  30. var query = CreateFilteredQuery(input, a => a.Function);
  31. query = ApplyFilter(query, input, a => a.HelpType >= userType);
  32. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  33. query = ApplySorting(query, input);
  34. query = ApplyPaging(query, input);
  35. var entities = await query.Select(a => new SysHelpDto()
  36. {
  37. Id = a.Id,
  38. HelpType = a.HelpType,
  39. Title = a.Title,
  40. KeyWords = a.KeyWords,
  41. FunctionNo = (int)a.FunctionNo,
  42. FunctionDisplayName = a.Function != null ? a.Function.DisplayName : "",
  43. PermissionName = a.PermissionName,
  44. Sequence = a.Sequence
  45. }).ToListAsync();
  46. var dtos = new PagedResultDto<SysHelpDto>(
  47. totalCount,
  48. entities
  49. );
  50. return dtos;
  51. }
  52. public override async Task Create(SysHelpCreateDto input)
  53. {
  54. //input.PermissionName = input.PermissionName.Replace("_", ".");
  55. //input.FunctionNo = await GetFunctionId(input.PermissionName);
  56. await CreateEntity(input);
  57. }
  58. public override async Task Update(SysHelpUpdateDto input)
  59. {
  60. var dto = await UpdateEntity(input);
  61. await CacheManager.GetCache<int, SysHelpDto>(VzConsts.CacheSysHelp).SetAsync(dto.Id, dto);
  62. }
  63. public override async Task Delete(VzEntityDto<int> input)
  64. {
  65. await base.Delete(input);
  66. await CacheManager.GetCache<int, SysHelpDto>(VzConsts.CacheSysHelp).RemoveAsync(input.Id);
  67. }
  68. private async Task<int> GetFunctionId(string permName)
  69. {
  70. return await CacheManager.GetCache<string, int>(VzConsts.CachePermissionFunction).GetAsync(permName, async () =>
  71. {
  72. var fun = await FunRepository.FirstOrDefaultAsync(a => a.PermissionName == permName);
  73. if (fun == null)
  74. {
  75. CheckErrors("未查询到功能菜单!");
  76. return 0;
  77. }
  78. if (fun.Id != null) return (int)fun.Id;
  79. return 0;
  80. });
  81. }
  82. protected override SysHelpDto MapToEntityDto(SysHelp entity)
  83. {
  84. var dto = base.MapToEntityDto(entity);
  85. dto.FunctionDisplayName = entity.Function?.DisplayName ?? "";
  86. return dto;
  87. }
  88. protected override IQueryable<T> SelfSorting<T>(IQueryable<T> query, VzPagedRequestDto input)
  89. {
  90. if (query is IQueryable<SysHelp> queryable)
  91. return (IQueryable<T>)queryable.OrderBy(r => r.Sequence);
  92. return query;
  93. }
  94. protected override IQueryable<T> KeyWordFilter<T>(IQueryable<T> query, string keyword)
  95. {
  96. if (query is IQueryable<SysHelp> queryable)
  97. return (IQueryable<T>)queryable.WhereIf(keyword.NotEmpty(), a =>
  98. a.Title.Contains(keyword) || a.KeyWords.Contains(keyword));
  99. return query;
  100. }
  101. }