SpecialNumberApplication.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. using MapsterMapper;
  2. using SqlSugar;
  3. using XF.Domain.Authentications;
  4. using XF.Domain.Dependency;
  5. using XF.Domain.Exceptions;
  6. using XF.Domain.Repository;
  7. using Hotline.Repository.SqlSugar.Extensions;
  8. using Hotline.Share.Dtos.Special;
  9. namespace Hotline.Application.SpecialNumber
  10. {
  11. public class SpecialNumberApplication : ISpecialNumberApplication, IScopeDependency
  12. {
  13. #region 注册
  14. private readonly IRepository<Hotline.Special.SpecialNumber> _specialNumberRepository;
  15. private readonly ISessionContext _sessionContext;
  16. private readonly IMapper _mapper;
  17. public SpecialNumberApplication(
  18. IRepository<Hotline.Special.SpecialNumber> specialNumberRepository,
  19. ISessionContext sessionContext,
  20. IMapper mapper)
  21. {
  22. _specialNumberRepository = specialNumberRepository;
  23. _sessionContext = sessionContext;
  24. _mapper = mapper;
  25. }
  26. #endregion
  27. #region 特殊号码
  28. #region 特殊号码 - 列表
  29. /// <summary>
  30. /// 特殊号码 - 列表
  31. /// </summary>
  32. /// <param name="pagedDto"></param>
  33. /// <returns></returns>
  34. public async Task<(int, IList<SpecialNumberInfoDto>)> QueryAllSpecialNumberListAsync(SpecialNumberDto dto, CancellationToken cancellationToken)
  35. {
  36. var typeSpliceName = string.Empty;
  37. //单表分页
  38. var (total, temp) = await _specialNumberRepository.Queryable()
  39. .WhereIF(!string.IsNullOrEmpty(dto.PhoneNumber), x => x.PhoneNumber.Contains(dto.PhoneNumber))
  40. .WhereIF(!string.IsNullOrEmpty(dto.Notes), x => x.Notes.Contains(dto.Notes))
  41. .WhereIF(dto.CreationTimeStart.HasValue, x => x.CreationTime >= dto.CreationTimeStart)
  42. .WhereIF(dto.CreationTimeEnd.HasValue, x => x.CreationTime <= dto.CreationTimeEnd)
  43. .OrderByIF(dto is { SortField: "creationTime", SortRule: 0 }, x => x.CreationTime, OrderByType.Asc) //创建时间升序
  44. .OrderByIF(dto is { SortField: "creationTime", SortRule: 1 }, x => x.CreationTime, OrderByType.Desc) //创建时间降序
  45. .OrderByIF(string.IsNullOrEmpty(dto.SortField), x => x.CreationTime, OrderByType.Desc) //创建时间降序
  46. .ToPagedListAsync(dto.PageIndex, dto.PageSize, cancellationToken);
  47. return (total, _mapper.Map<IList<SpecialNumberInfoDto>>(temp));
  48. //return (total, temp);
  49. }
  50. #endregion
  51. #region 特殊号码 - 新增
  52. /// <summary>
  53. /// 新增
  54. /// </summary>
  55. /// <param name="dto"></param>
  56. /// <param name="cancellationToken"></param>
  57. /// <returns></returns>
  58. public async Task<string> AddSpecialNumberAsync(AddSpecialNumberDto dto, CancellationToken cancellationToken)
  59. {
  60. var data = _mapper.Map<Hotline.Special.SpecialNumber>(dto);
  61. var any = await _specialNumberRepository.Queryable().Where(x => x.PhoneNumber == dto.PhoneNumber).AnyAsync();
  62. if (any)
  63. throw UserFriendlyException.SameMessage("特殊号码已存在!");
  64. data.InitId();
  65. return await _specialNumberRepository.AddAsync(data, cancellationToken);
  66. }
  67. #endregion
  68. #region 特殊号码 - 修改
  69. /// <summary>
  70. /// 修改
  71. /// </summary>
  72. /// <param name="dto"></param>
  73. /// <param name="cancellationToken"></param>
  74. /// <returns></returns>
  75. public async Task UpdateSpecialNumberAsync(UpdateSpecialNumberDto dto, CancellationToken cancellationToken)
  76. {
  77. var data = await _specialNumberRepository.GetAsync(dto.Id);
  78. if (data == null)
  79. throw UserFriendlyException.SameMessage("特殊号码查询失败");
  80. var any = await _specialNumberRepository.Queryable().Where(x => x.PhoneNumber == dto.PhoneNumber && x.Id != dto.Id).AnyAsync();
  81. if (any)
  82. throw UserFriendlyException.SameMessage("特殊号码已存在!");
  83. data.PhoneNumber = dto.PhoneNumber;
  84. data.Notes = dto.Notes;
  85. await _specialNumberRepository.UpdateAsync(data, cancellationToken);
  86. }
  87. #endregion
  88. #region 特殊号码 - 删除
  89. /// <summary>
  90. /// 删除
  91. /// </summary>
  92. /// <param name="dto"></param>
  93. /// <param name="cancellationToken"></param>
  94. /// <returns></returns>
  95. public async Task RemoveSpecialNumberAsync(DelSpecialNumberDto dto, CancellationToken cancellationToken)
  96. {
  97. var data = await _specialNumberRepository.GetAsync(dto.Id);
  98. if (data == null)
  99. throw UserFriendlyException.SameMessage("特殊号码查询失败");
  100. await _specialNumberRepository.RemoveAsync(data, false, cancellationToken);
  101. }
  102. #endregion
  103. #region 特殊号码 - 详情
  104. /// <summary>
  105. /// 详情
  106. /// </summary>
  107. /// <param name="Id"></param>
  108. /// <returns></returns>
  109. public async Task<SpecialNumberInfoDto> GetSpecialNumberAsync(string Id, CancellationToken cancellationToken)
  110. {
  111. var data = await _specialNumberRepository.Queryable()
  112. .FirstAsync(x => x.Id == Id, cancellationToken);
  113. if (data == null) return new();
  114. return _mapper.Map<SpecialNumberInfoDto>(data);
  115. }
  116. #endregion
  117. #region 特殊号码 - 详情
  118. /// <summary>
  119. /// 详情
  120. /// </summary>
  121. /// <param name="PhoneNumber"></param>
  122. /// <returns></returns>
  123. public async Task<SpecialNumberInfoDto> GetSpecialNumberByAsync(string PhoneNumber, CancellationToken cancellationToken)
  124. {
  125. var data = await _specialNumberRepository.Queryable()
  126. .FirstAsync(x => x.PhoneNumber == PhoneNumber, cancellationToken);
  127. if (data == null) return new();
  128. return _mapper.Map<SpecialNumberInfoDto>(data);
  129. }
  130. #endregion
  131. #endregion
  132. }
  133. }