Browse Source

新增从业人员详情

qinchaoyue 4 months ago
parent
commit
b055daeefa

+ 18 - 0
src/Hotline.Api/Controllers/Snapshot/SnapshotController.cs

@@ -223,4 +223,22 @@ public class SnapshotController : BaseController
     [HttpPost("practitioner")]
     public async Task AddPractitionerAsync([FromBody]IList<AddPractitionerInDto> dtos)
         => await _snapshotApplication.AddPractitionerAsync(dtos);
+
+    /// <summary>
+    /// 获取从业人员详情
+    /// </summary>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    [HttpGet("practitioner/{id}")]
+    public async Task<PractitionerDetailOutDto> GetPractitionerDetailAsync(string id)
+        => await _snapshotApplication.GetPractitionerDetailAsync(id, HttpContext.RequestAborted);
+
+    /// <summary>
+    /// 获取从业人员集合(每次随机)
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpGet("practitioner")]
+    public async Task<IList<PractitionerItemOutDto>> GetPractitionerDetailAsync(PractitionerItemInDto dto)
+        => await _snapshotApplication.GetPractitionerItemsAsync(dto, CancellationToken.None);
 }

+ 7 - 1
src/Hotline.Application.Tests/Application/SnapshotApplicationMockTest.cs

@@ -37,6 +37,8 @@ namespace Hotline.Application.Tests.Snapshot
         private readonly Mock<ISystemDicDataCacheManager> _systemDicDataCacheManagerMock;
         private readonly Mock<ISnapshotOrderPublishRepository> _snapshotOrderPublishRepositoryMock;
         private readonly Mock<IRepository<WorkflowTrace>> _workflowTraceRepositoryMock;
+        private readonly Mock<IPractitionerRepository> _practitionerRepositoryMock;
+        private readonly Mock<IRepository<SystemArea>> _systemAreaRepositoryMock;
 
         private readonly DefaultSnapshotApplication _snapshotApplication;
 
@@ -56,6 +58,8 @@ namespace Hotline.Application.Tests.Snapshot
             _systemDicDataCacheManagerMock = new Mock<ISystemDicDataCacheManager>();
             _snapshotOrderPublishRepositoryMock = new Mock<ISnapshotOrderPublishRepository>();
             _workflowTraceRepositoryMock = new Mock<IRepository<WorkflowTrace>>();
+            _practitionerRepositoryMock = new Mock<IPractitionerRepository>();
+            _systemAreaRepositoryMock = new Mock<IRepository<SystemArea>>();
 
             _snapshotApplication = new DefaultSnapshotApplication(
                 _thirdLoginServiceMock.Object,
@@ -71,7 +75,9 @@ namespace Hotline.Application.Tests.Snapshot
                 _fileRepositoryMock.Object,
                 _systemDicDataCacheManagerMock.Object,
                 _snapshotOrderPublishRepositoryMock.Object,
-                _workflowTraceRepositoryMock.Object
+                _workflowTraceRepositoryMock.Object,
+                _practitionerRepositoryMock.Object,
+                _systemAreaRepositoryMock.Object
             );
         }
 

+ 10 - 0
src/Hotline.Application.Tests/Application/SnapshotApplicationTest.cs

@@ -10,6 +10,7 @@ using Hotline.Orders;
 using Hotline.Share.Dtos.Article;
 using Hotline.Share.Dtos.Snapshot;
 using Hotline.Share.Enums;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Snapshot;
 using Hotline.Share.Tools;
 using Hotline.Snapshot;
@@ -228,6 +229,15 @@ public class SnapshotApplicationTest : TestBase
     {
         var items = await _snapshotApplication.GetPractitionerItemsAsync(new PractitionerItemInDto { AreaId = "510399" }, CancellationToken.None);
         items.Count.ShouldNotBe(0);
+
+        var item = await _snapshotApplication.GetPractitionerDetailAsync(items.First().Id, CancellationToken.None);
+        item.Street.ShouldNotBeNullOrEmpty();
+        item.Name.ShouldNotBeNullOrEmpty();
+        item.SystemAreaName.ShouldNotBeNullOrEmpty();
+        item.SystemAreaName.ShouldNotBeNullOrEmpty();
+        item.Gender.ShouldNotBe(EGender.Unknown);
+        item.GenderTxt.ShouldNotBeNullOrEmpty();
+        item.PhoneNumber.ShouldNotBeNullOrEmpty();
     }
 
     [Theory]

+ 8 - 0
src/Hotline.Application/Snapshot/ISnapshotApplication.cs

@@ -124,6 +124,14 @@ public interface ISnapshotApplication
     /// <returns></returns>
     Task<IList<PractitionerItemOutDto>> GetPractitionerItemsAsync(PractitionerItemInDto dto, CancellationToken cancellationToken);
 
+    /// <summary>
+    /// 获取从业人员详情
+    /// </summary>
+    /// <param name="id"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    Task<PractitionerDetailOutDto> GetPractitionerDetailAsync(string id, CancellationToken cancellationToken);
+
     /// <summary>
     /// 批量添加从业人员
     /// </summary>

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

@@ -482,7 +482,7 @@ public abstract class SnapshotApplicationBase
                         break;
                 }
                 var area = await _systemAreaRepository.Queryable()
-                    .Where(m => m.AreaName == item.AreaName)
+                    .Where(m => m.AreaName == item.SystemAreaName)
                     .FirstAsync();
                 entity.SystemAreaId = area.Id;
                 entity.SystemAreaName = area.AreaName;
@@ -512,5 +512,18 @@ public abstract class SnapshotApplicationBase
             .ToListAsync(cancellationToken);
         return items;
     }
+
+    /// <summary>
+    /// 获取从业人员详情
+    /// </summary>
+    /// <param name="id"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<PractitionerDetailOutDto> GetPractitionerDetailAsync(string id, CancellationToken cancellationToken)
+    { 
+        var item = await _practitionerRepository.GetAsync(id, cancellationToken)
+            ?? throw UserFriendlyException.SameMessage("从业人员不存在");
+        return item.Adapt<PractitionerDetailOutDto>();
+    }
     #endregion
 }

+ 35 - 3
src/Hotline.Share/Dtos/Snapshot/PractitionerDto.cs

@@ -1,4 +1,5 @@
-using System;
+using Hotline.Share.Enums.Order;
+using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
 using System.Linq;
@@ -19,9 +20,9 @@ public class AddPractitionerInDto
     public string Gender { get; set; }
 
     /// <summary>
-    /// 区域
+    /// 区域名称
     /// </summary>
-    public string AreaName { get; set; }
+    public string SystemAreaName { get; set; }
 
     /// <summary>
     /// 电话
@@ -34,6 +35,37 @@ public class AddPractitionerInDto
     public string Street { get; set; }
 }
 
+public class PractitionerDetailOutDto : AddPractitionerInDto
+{
+    /// <summary>
+    /// Id
+    /// </summary>
+    public string Id { get; set; }
+
+    /// <summary>
+    /// 性别
+    /// </summary>
+    new public EGender Gender { get; set; }
+
+    /// <summary>
+    /// 性别
+    /// </summary>
+    public string GenderTxt
+    {
+        get
+        {
+            if (Gender == EGender.Unknown)
+                return "未知";
+            if (Gender == EGender.Male)
+                return "男";
+            if (Gender == EGender.Female)
+                return "女";
+            return "未知";
+        }
+    }
+
+}
+
 public class PractitionerItemInDto
 {
     /// <summary>