SnapshotUserApplication.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using DocumentFormat.OpenXml.Vml.Office;
  2. using Hotline.Application.Snapshot.Contracts;
  3. using Hotline.Caching.Interfaces;
  4. using Hotline.Orders;
  5. using Hotline.Settings;
  6. using Hotline.Share.Dtos.Snapshot;
  7. using Hotline.Share.Tools;
  8. using Hotline.Snapshot;
  9. using Hotline.Snapshot.IRepository;
  10. using Hotline.ThirdAccountDomainServices;
  11. using Hotline.Tools;
  12. using Mapster;
  13. using SqlSugar;
  14. using System;
  15. using System.Collections.Generic;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. using XF.Domain.Dependency;
  20. using XF.Domain.Exceptions;
  21. using XF.Domain.Repository;
  22. namespace Hotline.Application.Snapshot;
  23. public class SnapshotUserApplication : ISnapshotUserApplication, IScopeDependency
  24. {
  25. private readonly ICitizenRepository _citizenRepository;
  26. private readonly ISystemDicDataCacheManager _dicData;
  27. private readonly IRepository<SafetyType> _safetyTypeRepository;
  28. public SnapshotUserApplication(ICitizenRepository citizenRepository, ISystemDicDataCacheManager dicData, IRepository<SafetyType> safetyTypeRepository)
  29. {
  30. _citizenRepository = citizenRepository;
  31. _dicData = dicData;
  32. _safetyTypeRepository = safetyTypeRepository;
  33. }
  34. public async Task AddCitizenRelationSafetyType(AddCitizenRelationSafetyTypeInDto dto, CancellationToken token)
  35. {
  36. dto.ValidateObject();
  37. var safeType = new SafetyType
  38. {
  39. Id = dto.SafetyTypeId
  40. };
  41. foreach (var item in dto.CitizenIds)
  42. {
  43. safeType.Citizens.Add(new Citizen { Id = item });
  44. }
  45. _safetyTypeRepository.AddNav(safeType);
  46. }
  47. public ISugarQueryable<CitizenRelationSafetyTypeOutDto> GetCitizenRelationSafetyType(CitizenRelationSafetyTypeInDto dto)
  48. {
  49. var query = _citizenRepository.Queryable()
  50. .LeftJoin<CitizenRelationSafetyType>((citizen, relation) => citizen.Id == relation.CitizenId)
  51. .LeftJoin<SafetyType>((citizen, relation, safety) => relation.SafetyTypeId == safety.Id)
  52. .WhereIF(dto.SafetyTypeId.NotNullOrEmpty(), (citizen, relation, safety) => safety.Id == dto.SafetyTypeId)
  53. .Select((citizen, relation, safety) => new CitizenRelationSafetyTypeOutDto
  54. {
  55. CitizenId = citizen.Id,
  56. CitizenName = citizen.Name,
  57. PhoneNumber = citizen.PhoneNumber,
  58. SafetyTypeName = safety.Name,
  59. SafetyTypeId = safety.Id
  60. });
  61. return query;
  62. }
  63. }