瀏覽代碼

Merge branch 'feature/snapshot' into test

qinchaoyue 3 月之前
父節點
當前提交
9f9104c93d

+ 17 - 0
src/Hotline.Api/Controllers/Snapshot/RedPackController.cs

@@ -188,6 +188,23 @@ public class RedPackController : BaseController
     public async Task<PagedDto<SnapshotRedPackRecordItemsGuiderOutDto>> GetRedPackRecordGuiderItemsAsync([FromQuery] SnapshotRedPackRecordItemsGuiderInDto dto)
         => (await _redPackApplication.GetRedPackRecordGuiderItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
 
+    /// <summary>
+    /// 红包发放明细基础数据
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("record/send/database")]
+    public async Task<Dictionary<string, object>> GetRedPackRecordSendBaseDataAsync()
+    {
+        return new Dictionary<string, object>()
+        {
+            { "industry", await _industryRepository.Queryable()
+            .Select(m => new { m.Id, m.Name })
+            .ToListAsync()},
+            { "sendStatus", EnumExts.GetDescriptions<EReadPackSendStatus>().Where(m => m.Key != 2).ToList() },
+            { "userType", EnumExts.GetDescriptions<EReadPackUserType>() }
+        };
+    }
+
     /// <summary>
     /// 红包发放明细
     /// </summary>

+ 4 - 1
src/Hotline.Application.Tests/Application/RedPackApplicationTest.cs

@@ -61,7 +61,10 @@ public class RedPackApplicationTest : TestBase
         var recordItems = await _redPackApplication.GetRedPackRecordItemsAsync(new SnapshotRedPackRecordItemsInDto { Status =2}).ToListAsync();
         recordItems.Count.ShouldNotBe(0);
 
-        var sendRecordItems = await _redPackApplication.GetRedPackRecordDetailAsync(new SnapshotRedPackRecordSendInDto()).ToListAsync();
+        var sendRecordItems = await _redPackApplication.GetRedPackRecordDetailAsync(new SnapshotRedPackRecordSendInDto
+        {
+            IsReceive = true,
+        }).ToListAsync();
         sendRecordItems.Count.ShouldNotBe(0);
     }
 }

+ 13 - 0
src/Hotline.Application/Snapshot/RedPackApplication.cs

@@ -467,7 +467,20 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
     public ISugarQueryable<SnapshotRedPackRecordSendOutDto> GetRedPackRecordDetailAsync(SnapshotRedPackRecordSendInDto dto)
     {
         var query = _redPackRecordRepository.Queryable()
+            .LeftJoin<OrderSnapshot>((m , snapshot) => m.OrderId == snapshot.Id)
+            .LeftJoin<Order>((m , snapshot, order) => m.OrderId == order.Id)
             .Where(m => m.DistributionState != EReadPackSendStatus.Unsend)
+            .WhereIF(dto.Status == 1, m => m.PickupStatus == ERedPackPickupStatus.Received)
+            .WhereIF(dto.Status == 2, m => m.PickupStatus == ERedPackPickupStatus.Back)
+            .WhereIF(dto.Status == 3, m => m.DistributionState == EReadPackSendStatus.Fail)
+            .WhereIF(dto.Status == 4, m => m.PickupStatus == ERedPackPickupStatus.Unreceived)
+            .WhereIF(dto.IndustryId.NotNullOrEmpty(), (m, snapshot) => snapshot.IndustryId == dto.IndustryId)
+            .WhereIF(dto.No.NotNullOrEmpty(), order => order.No.Contains(dto.No))
+            .WhereIF(dto.UserType.HasValue, m => m.PeopleType == dto.UserType)
+            .WhereIF(dto.OpenId.NotNullOrEmpty(), m => m.WXOpenId == dto.OpenId)
+            .WhereIF(dto.SendStatus.HasValue, m => m.DistributionState == dto.SendStatus)
+            .WhereIF(dto.IsReceive.HasValue && dto.IsReceive == true, m => m.PickupStatus == ERedPackPickupStatus.Received)
+            .WhereIF(dto.IsReceive.HasValue && dto.IsReceive == false, m => m.PickupStatus == ERedPackPickupStatus.Unreceived)
             .Select(m => new SnapshotRedPackRecordSendOutDto());
         return query;
     }