BookAppService.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using Microsoft.EntityFrameworkCore;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Linq.Dynamic.Core;
  6. using System.Threading.Tasks;
  7. using Volo.Abp.Application.Dtos;
  8. using Volo.Abp.Domain.Repositories;
  9. using Business.BookManagement.Dto;
  10. using Business.Models;
  11. using Microsoft.AspNetCore.Authorization;
  12. using Business.Permissions;
  13. using XCZ;
  14. namespace Business.BookManagement
  15. {
  16. [Authorize(BusinessPermissions.Book.Default)]
  17. public class BookAppService : BusinessWorkFlowAppService, IBookAppService
  18. {
  19. private const string FormName = "Book";
  20. private IRepository<Book, Guid> _repository;
  21. public BookAppService(
  22. IRepository<Book, Guid> repository
  23. )
  24. {
  25. _repository = repository;
  26. }
  27. #region 增删改查基础方法
  28. public async Task<BookDto> Get(Guid id)
  29. {
  30. var data = await _repository.GetAsync(id);
  31. var dto = ObjectMapper.Map<Book, BookDto>(data);
  32. return dto;
  33. }
  34. public async Task<PagedResultDto<BookDto>> GetAll(GetBookInputDto input)
  35. {
  36. var query = (await _repository.GetQueryableAsync()).WhereIf(!string.IsNullOrWhiteSpace(input.Filter), a => a.Name.Contains(input.Filter));
  37. var totalCount = await query.CountAsync();
  38. var items = await query.OrderBy(input.Sorting ?? "Id")
  39. .ToListAsync();
  40. var dtos = ObjectMapper.Map<List<Book>, List<BookDto>>(items);
  41. return new PagedResultDto<BookDto>(totalCount, dtos);
  42. }
  43. public async Task<BookDto> CreateOrUpdate(CreateOrUpdateBookDto input)
  44. {
  45. Book result = null;
  46. if (!input.Id.HasValue)
  47. {
  48. input.Id = GuidGenerator.Create();
  49. result = await _repository.InsertAsync(ObjectMapper.Map<CreateOrUpdateBookDto, Book>(input));
  50. //创建工作流
  51. await WorkFlow.CreateWorkFlow(FormName, result);
  52. }
  53. else
  54. {
  55. var data = await _repository.GetAsync(input.Id.Value);
  56. result = await _repository.UpdateAsync(ObjectMapper.Map(input, data));
  57. //检查流程状态
  58. await WorkFlow.CheckFormStatus(input.Id.Value, result);
  59. }
  60. return ObjectMapper.Map<Book, BookDto>(result);
  61. }
  62. public async Task Delete(List<Guid> ids)
  63. {
  64. foreach (var item in ids)
  65. {
  66. await _repository.DeleteAsync(item);
  67. }
  68. }
  69. #endregion
  70. }
  71. }