You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
3.7 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. using Microsoft.AspNetCore.Authorization;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Shentun.WebPeis.AppointSchedules;
  4. using Shentun.WebPeis.Models;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using Volo.Abp;
  11. using Volo.Abp.Application.Services;
  12. using Volo.Abp.Domain.Repositories;
  13. namespace Shentun.WebPeis.AppointScheduleTimes
  14. {
  15. /// <summary>
  16. /// 预约计划明细
  17. /// </summary>
  18. [ApiExplorerSettings(GroupName = "Work")]
  19. [Authorize]
  20. public class AppointScheduleTimeAppService : ApplicationService
  21. {
  22. private readonly IRepository<AppointScheduleTime> _appointScheduleTimeRepository;
  23. private readonly CacheService _cacheService;
  24. public AppointScheduleTimeAppService(
  25. IRepository<AppointScheduleTime> appointScheduleTimeRepository,
  26. CacheService cacheService
  27. )
  28. {
  29. _appointScheduleTimeRepository = appointScheduleTimeRepository;
  30. _cacheService = cacheService;
  31. }
  32. /// <summary>
  33. /// 获取预约计划明细
  34. /// </summary>
  35. /// <returns></returns>
  36. [HttpPost("api/app/AppointScheduleTime/GetAppointScheduleTimeListByAppointScheduleId")]
  37. public async Task<List<AppointScheduleTimeDto>> GetAppointScheduleTimeListByAppointScheduleIdAsync(AppointScheduleIdInputDto input)
  38. {
  39. var entList = (await _appointScheduleTimeRepository.GetQueryableAsync())
  40. .Where(m => m.AppointScheduleId == input.AppointScheduleId)
  41. .OrderBy(o => o.StartTime);
  42. var entListDto = entList.Select(s => new AppointScheduleTimeDto
  43. {
  44. AppointScheduleId = s.AppointScheduleId,
  45. CreationTime = s.CreationTime,
  46. CreatorId = s.CreatorId,
  47. LastModificationTime = s.LastModificationTime,
  48. LastModifierId = s.LastModifierId,
  49. CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).Result,
  50. LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result,
  51. AppointNumber = s.AppointNumber,
  52. AppointScheduleTimeId = s.AppointScheduleTimeId,
  53. NumberLimit = s.NumberLimit,
  54. CanAppointNumber = s.NumberLimit - s.AppointNumber,
  55. StartTime = DataHelper.ConvertTimeOnlyToString(s.StartTime),
  56. StopTime = DataHelper.ConvertTimeOnlyToString(s.StopTime)
  57. }).ToList();
  58. return entListDto;
  59. }
  60. /// <summary>
  61. /// 修改预约计划明细人数限制
  62. /// </summary>
  63. /// <param name="input"></param>
  64. /// <returns></returns>
  65. [HttpPost("api/app/AppointScheduleTime/UpdateAppointScheduleTimeNumberLimit")]
  66. public async Task UpdateAppointScheduleTimeNumberLimitAsync(List<UpdateAppointScheduleTimeNumberLimitInputDto> input)
  67. {
  68. if (input.Any())
  69. {
  70. foreach (var item in input)
  71. {
  72. var appointScheduleTimeEnt = await _appointScheduleTimeRepository.FirstOrDefaultAsync(f => f.AppointScheduleTimeId == item.AppointScheduleTimeId);
  73. if (appointScheduleTimeEnt == null)
  74. throw new UserFriendlyException("预约计划明细ID不正确");
  75. if (appointScheduleTimeEnt.AppointNumber > item.NumberLimit)
  76. throw new UserFriendlyException("人数限制不能小于当前已预约数量");
  77. appointScheduleTimeEnt.NumberLimit = item.NumberLimit;
  78. await _appointScheduleTimeRepository.UpdateAsync(appointScheduleTimeEnt);
  79. }
  80. }
  81. }
  82. }
  83. }