qinchaoyue пре 3 месеци
родитељ
комит
d41e600066

+ 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;
     }