Selaa lähdekoodia

Merge branch 'feature/snapshot' into dev

qinchaoyue 4 kuukautta sitten
vanhempi
commit
d4f60aa0fb

+ 28 - 0
src/Hotline.Api/Controllers/Snapshot/IndustryController.cs

@@ -157,4 +157,32 @@ public class IndustryController : BaseController
     public async Task UpdateSmsTemplateAsync([FromBody] UpdateSnapshotSMSTemplateInDto dto)
         => await _industryApplication.UpdateSMSTemplateAsync(dto);
     #endregion
+
+    #region 区域从业人员
+    /// <summary>
+    /// 区域从业人员集合
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("practitioner")]
+    public async Task GetPractitionerItemsAsync([FromQuery] PractitionerItemsInDto dto)
+        => (await _industryApplication.GetPractitionerItemsAsync(dto).ToPagedListAsync(dto, HttpContext.RequestAborted)).ToPaged();
+
+    /// <summary>
+    /// 添加区域从业人员
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpPost("practitioner")]
+    public async Task<string> AddPractitionerAsync([FromBody]AddBatchPractitionerInDto dto)
+        => await _industryApplication.AddPractitionerAsync(dto);
+
+    /// <summary>
+    /// 删除区域从业人员
+    /// </summary>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    [HttpDelete("practitioner/{id}")]
+    public async Task DeletePractitionerAsync(string id)
+        => await _industryApplication.DeletePractitionerAsync(id);
+    #endregion
 }

+ 1 - 1
src/Hotline.Api/Controllers/Snapshot/SnapshotController.cs

@@ -239,7 +239,7 @@ public class SnapshotController : BaseController
     /// <param name="dtos"></param>
     /// <returns></returns>
     [HttpPost("practitioner")]
-    public async Task AddPractitionerAsync([FromBody]IList<AddPractitionerInDto> dtos)
+    public async Task AddPractitionerAsync([FromBody]IList<AddBatchPractitionerInDto> dtos)
         => await _snapshotApplication.AddPractitionerAsync(dtos);
 
     /// <summary>

+ 1 - 1
src/Hotline.Application/Mappers/SnapshotMapperConfigs.cs

@@ -46,7 +46,7 @@ public class SnapshotMapperConfigs : IRegister
         config.ForType<Order, OrderPublishDetailOutDto>()
             .Map(m => m.Opinion, n => n.ActualOpinion);
 
-        config.ForType<AddPractitionerInDto, Practitioner>()
+        config.ForType<AddBatchPractitionerInDto, Practitioner>()
             .Ignore(m => m.Gender);
 
         config.ForType<GuiderSystemInDto, OrderSnapshot>()

+ 21 - 0
src/Hotline.Application/Snapshot/IIndustryApplication.cs

@@ -86,4 +86,25 @@ public interface IIndustryApplication
     /// <param name="dto"></param>
     /// <returns></returns>
     Task UpdateSMSTemplateAsync(UpdateSnapshotSMSTemplateInDto dto);
+
+    /// <summary>
+    /// 区域从业人员集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    ISugarQueryable<PractitionerItemsOutDto> GetPractitionerItemsAsync(PractitionerItemsInDto dto);
+
+    /// <summary>
+    /// 删除区域从业人员
+    /// </summary>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    Task DeletePractitionerAsync(string id);
+
+    /// <summary>
+    /// 添加区域从业人员
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    Task<string> AddPractitionerAsync(AddBatchPractitionerInDto dto);
 }

+ 1 - 1
src/Hotline.Application/Snapshot/ISnapshotApplication.cs

@@ -139,7 +139,7 @@ public interface ISnapshotApplication
     /// </summary>
     /// <param name="dtos"></param>
     /// <returns></returns>
-    Task AddPractitionerAsync(IList<AddPractitionerInDto> dtos);
+    Task AddPractitionerAsync(IList<AddBatchPractitionerInDto> dtos);
 
     /// <summary>
     /// 添加志愿者

+ 48 - 1
src/Hotline.Application/Snapshot/IndustryApplication.cs

@@ -27,14 +27,16 @@ public class IndustryApplication : IIndustryApplication, IScopeDependency
     private readonly ISystemSettingCacheManager _sysSetting;
     private readonly IIndustryCaseRepository _industryCaseRepository;
     private readonly ISnapshotSMSTemplateRepository _snapshotSMSTemplateRepository;
+    private readonly IPractitionerRepository _practitionerRepository;
 
-    public IndustryApplication(IIndustryRepository industryRepository, IFileRepository fileRepository, ISystemSettingCacheManager sysSetting, IIndustryCaseRepository industryCaseRepository, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository)
+    public IndustryApplication(IIndustryRepository industryRepository, IFileRepository fileRepository, ISystemSettingCacheManager sysSetting, IIndustryCaseRepository industryCaseRepository, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IPractitionerRepository practitionerRepository)
     {
         _industryRepository = industryRepository;
         _fileRepository = fileRepository;
         _sysSetting = sysSetting;
         _industryCaseRepository = industryCaseRepository;
         _snapshotSMSTemplateRepository = snapshotSMSTemplateRepository;
+        _practitionerRepository = practitionerRepository;
     }
     /// <summary>
     /// 新增行业
@@ -198,5 +200,50 @@ public class IndustryApplication : IIndustryApplication, IScopeDependency
         dto.Adapt(entity);
         await _snapshotSMSTemplateRepository.UpdateAsync(entity);
     }
+
+    #endregion
+
+    #region 区域从业人员
+    /// <summary>
+    /// 区域从业人员集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    /// <exception cref="NotImplementedException"></exception>
+    public ISugarQueryable<PractitionerItemsOutDto> GetPractitionerItemsAsync(PractitionerItemsInDto dto)
+    {
+        var query = _practitionerRepository.Queryable()
+            .WhereIF(dto.Name.NotNullOrEmpty(), m => m.Name.Contains(dto.Name!))
+            .WhereIF(dto.SystemAreaName.NotNullOrEmpty(), m => m.SystemAreaName.Contains(dto.SystemAreaName!))
+            .WhereIF(dto.PhoneNumber.NotNullOrEmpty(), m => m.PhoneNumber.Contains(dto.PhoneNumber!))
+            .Select<PractitionerItemsOutDto>();
+
+        return query;
+    }
+
+    /// <summary>
+    /// 添加区域从业人员
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    public async Task<string> AddPractitionerAsync(AddBatchPractitionerInDto dto)
+    {
+        dto.ValidateObject();
+        var entity = dto.Adapt<Practitioner>();
+        return await _practitionerRepository.AddAsync(entity);
+    }
+
+    /// <summary>
+    /// 删除区域从业人员
+    /// </summary>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    public async Task DeletePractitionerAsync(string id)
+    {
+        var entity = await _practitionerRepository.GetAsync(id)
+            ?? throw UserFriendlyException.SameMessage($"区域从业人员不存在 {id}");
+        entity.IsDeleted = true;
+        await _practitionerRepository.UpdateAsync(entity);
+    }
     #endregion
 }

+ 1 - 1
src/Hotline.Application/Snapshot/SnapshotApplicationBase.cs

@@ -633,7 +633,7 @@ public abstract class SnapshotApplicationBase
     /// </summary>
     /// <param name="dtos"></param>
     /// <returns></returns>
-    public async Task AddPractitionerAsync(IList<AddPractitionerInDto> dtos)
+    public async Task AddPractitionerAsync(IList<AddBatchPractitionerInDto> dtos)
     {
         foreach (var item in dtos)
         {

+ 52 - 0
src/Hotline.Share/Dtos/Snapshot/IndustryDto.cs

@@ -1,5 +1,6 @@
 using Hotline.Share.Dtos.File;
 using Hotline.Share.Dtos.Settings;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Snapshot;
 using Hotline.Share.Requests;
 using Hotline.Share.Tools;
@@ -469,3 +470,54 @@ public class AddSnapshotSMSTemplateInDto
     /// </summary>
     public int DisplayOrder { get; set; }
 }
+
+/// <summary>
+/// 区域从业人员集合入参
+/// </summary>
+/// <param name="Name">姓名</param>
+/// <param name="PhoneNumber">联系方式</param>
+/// <param name="SystemAreaName">区县</param>
+public record PractitionerItemsInDto(string? Name, string? PhoneNumber, string? SystemAreaName) : PagedRequest;
+
+public class PractitionerItemsOutDto
+{
+    /// <summary>
+    /// Id
+    /// </summary>
+    public string Id { get; set; }
+
+    /// <summary>
+    /// 名字
+    /// </summary>
+    public string Name { get; set; }
+
+    /// <summary>
+    /// 区域Id
+    /// </summary>
+    public string SystemAreaId { get; set; }
+
+    /// <summary>
+    /// 区域名称
+    /// </summary>
+    public string SystemAreaName { get; set; }
+
+    /// <summary>
+    /// 详细街道
+    /// </summary>
+    public string Street { get; set; }
+
+    /// <summary>
+    /// 电话
+    /// </summary>
+    public string PhoneNumber { get; set; }
+
+    /// <summary>
+    /// 性别
+    /// </summary>
+    public EGender Gender { get; set; }
+
+    /// <summary>
+    /// 性别
+    /// </summary>
+    public string GenderTxt => Gender.GetDescription();
+}

+ 41 - 2
src/Hotline.Share/Dtos/Snapshot/PractitionerDto.cs

@@ -7,7 +7,7 @@ using System.Text;
 using System.Threading.Tasks;
 
 namespace Hotline.Share.Dtos.Snapshot;
-public class AddPractitionerInDto
+public class AddBatchPractitionerInDto
 {
     /// <summary>
     /// 名字
@@ -35,7 +35,7 @@ public class AddPractitionerInDto
     public string Street { get; set; }
 }
 
-public class PractitionerDetailOutDto : AddPractitionerInDto
+public class PractitionerDetailOutDto : AddBatchPractitionerInDto
 {
     /// <summary>
     /// Id
@@ -92,3 +92,42 @@ public class PractitionerItemOutDto
     /// </summary>
     public string Name { get; set; }
 }
+
+public class AddPractitionerInDto
+{
+    /// <summary>
+    /// 名字
+    /// </summary>
+    [Required]
+    public string Name { get; set; }
+
+    /// <summary>
+    /// 区域Id
+    /// </summary>
+    [Required]
+    public string SystemAreaId { get; set; }
+
+    /// <summary>
+    /// 区域名称
+    /// </summary>
+    [Required]
+    public string SystemAreaName { get; set; }
+
+    /// <summary>
+    /// 详细街道
+    /// </summary>
+    [Required]
+    public string Street { get; set; }
+
+    /// <summary>
+    /// 电话
+    /// </summary>
+    [Required]
+    public string PhoneNumber { get; set; }
+
+    /// <summary>
+    /// 性别
+    /// </summary>
+    [Required]
+    public EGender Gender { get; set; }
+}