DictionaryAppService.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using BaseService.BaseData.DataDictionaryManagement.Dto;
  2. using BaseService.Permissions;
  3. using Microsoft.AspNetCore.Authorization;
  4. using Microsoft.EntityFrameworkCore;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Linq.Dynamic.Core;
  9. using System.Threading.Tasks;
  10. using Volo.Abp;
  11. using Volo.Abp.Application.Dtos;
  12. using Volo.Abp.Application.Services;
  13. using Volo.Abp.Domain.Repositories;
  14. namespace BaseService.BaseData.DataDictionaryManagement
  15. {
  16. [Authorize(BaseServicePermissions.DataDictionary.Default)]
  17. public class DictionaryAppService : ApplicationService, IDictionaryAppService
  18. {
  19. private readonly IRepository<DataDictionary, Guid> _repository;
  20. public DictionaryAppService(IRepository<DataDictionary, Guid> repository)
  21. {
  22. _repository = repository;
  23. }
  24. [Authorize(BaseServicePermissions.DataDictionary.Create)]
  25. public async Task<DictionaryDto> Create(CreateOrUpdateDictionaryDto input)
  26. {
  27. var exist = await _repository.FirstOrDefaultAsync(_ => _.Name == input.Name);
  28. if (exist != null)
  29. {
  30. throw new BusinessException("名称:" + input.Name + "字典已存在");
  31. }
  32. var dic = new DataDictionary(
  33. GuidGenerator.Create(),
  34. input.Name,
  35. input.Description);
  36. var result = await _repository.InsertAsync(dic);
  37. return ObjectMapper.Map<DataDictionary, DictionaryDto>(result);
  38. }
  39. [Authorize(BaseServicePermissions.DataDictionary.Delete)]
  40. public async Task Delete(List<Guid> ids)
  41. {
  42. foreach (var id in ids)
  43. {
  44. await _repository.DeleteAsync(id);
  45. }
  46. }
  47. public async Task<DictionaryDto> Get(Guid id)
  48. {
  49. var result = await _repository.GetAsync(id);
  50. return ObjectMapper.Map<DataDictionary, DictionaryDto>(result);
  51. }
  52. public async Task<PagedResultDto<DictionaryDto>> GetAll(GetDictionaryInputDto input)
  53. {
  54. var query = (await _repository.GetQueryableAsync())
  55. .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), _ => _.Name.Contains(input.Filter) ||
  56. _.Description.Contains(input.Filter));
  57. var items = await query.OrderBy(input.Sorting ?? "Name")
  58. .Skip(input.SkipCount)
  59. .Take(input.MaxResultCount)
  60. .ToListAsync();
  61. var totalCount = await query.CountAsync();
  62. var dots = ObjectMapper.Map<List<DataDictionary>, List<DictionaryDto>>(items);
  63. return new PagedResultDto<DictionaryDto>(totalCount, dots);
  64. }
  65. [Authorize(BaseServicePermissions.DataDictionary.Update)]
  66. public async Task<DictionaryDto> Update(Guid id, CreateOrUpdateDictionaryDto input)
  67. {
  68. var dic = await _repository.GetAsync(id);
  69. dic.Name = input.Name;
  70. dic.Description = input.Description;
  71. return ObjectMapper.Map<DataDictionary, DictionaryDto>(dic);
  72. }
  73. }
  74. }