소스 검색

修复小程序奖励无数据

qinchaoyue 1 주 전
부모
커밋
91f785bd59

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

@@ -219,7 +219,7 @@ public class SnapshotController : BaseController
     [AllowAnonymous]
     [HttpGet("user")]
     public async Task<SnapshotUserInfoOutDto> GetUserInfo()
-        => await _snapshotApplication.GetSnapshotUserInfoAsync();
+        => await _snapshotApplication.GetSnapshotUserInfoAsync(HttpContext.RequestAborted);
 
     /// <summary>
     /// 获取我提交的线索列表

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

@@ -10,7 +10,7 @@ public interface ISnapshotApplication
     /// 获取用户首页数据
     /// </summary>
     /// <returns></returns>
-    Task<SnapshotUserInfoOutDto> GetSnapshotUserInfoAsync();
+    Task<SnapshotUserInfoOutDto> GetSnapshotUserInfoAsync(CancellationToken token);
 
     /// <summary>
     /// 获取小程序首页数据

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
src/Hotline.Application/Snapshot/DefaultSnapshotApplication.cs


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

@@ -40,6 +40,7 @@ using Hotline.Repository.SqlSugar.Snapshot;
 using Hotline.Settings.Hotspots;
 using Microsoft.Extensions.Options;
 using XF.Utility.MQ;
+using System.Threading;
 
 namespace Hotline.Application.Snapshot;
 
@@ -58,7 +59,7 @@ public abstract class SnapshotApplicationBase
     private readonly IIndustryRepository _industryRepository;
     private readonly IThirdIdentiyService _thirdLoginService;
     private readonly ISessionContext _sessionContext;
-    private readonly IRepository<RedPackRecord> _redPackRecordRepository;
+    private readonly IRedPackRecordRepository _redPackRecordRepository;
     private readonly IOrderSnapshotRepository _orderSnapshotRepository;
     private readonly ISystemSettingCacheManager _sysSetting;
     private readonly ISystemAreaDomainService _systemAreaDomainService;
@@ -86,7 +87,7 @@ public abstract class SnapshotApplicationBase
     private readonly ISnapshotPointsRecordRepository _pointsRecordRepository;
     private readonly IOptionsSnapshot<MqConfiguration> _mqConfiguration;
 
-    public SnapshotApplicationBase(IThirdIdentiyService thirdLoginService, IIndustryRepository industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository, IRedPackGuiderAuditRepository redPackGuiderAuditRepository, IInviteCodeRecordRepository inviteCodeRecordRepository, IInviteCodeRepository inviteCodeRepository, ICitizenRepository citizenRepository, ISnapshotPointsRecordRepository snapshotPointsRecordRepository, IOptionsSnapshot<MqConfiguration> mqConfiguration)
+    public SnapshotApplicationBase(IThirdIdentiyService thirdLoginService, IIndustryRepository industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRedPackRecordRepository redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository, IRedPackGuiderAuditRepository redPackGuiderAuditRepository, IInviteCodeRecordRepository inviteCodeRecordRepository, IInviteCodeRepository inviteCodeRepository, ICitizenRepository citizenRepository, ISnapshotPointsRecordRepository snapshotPointsRecordRepository, IOptionsSnapshot<MqConfiguration> mqConfiguration)
     {
         _thirdLoginService = thirdLoginService;
         _industryRepository = industryRepository;
@@ -305,16 +306,19 @@ public abstract class SnapshotApplicationBase
     /// 获取个人中心数据
     /// </summary>
     /// <returns></returns>
-    public async Task<SnapshotUserInfoOutDto> GetSnapshotUserInfoAsync()
+    public async Task<SnapshotUserInfoOutDto> GetSnapshotUserInfoAsync(CancellationToken token)
     {
         var userInfo = await _citizenRepository.GetAsync(_sessionContext.UserId);
 
         var dayTime = DateTime.Now;
-        var readPack = await _redPackRecordRepository.Queryable()
+        var query = _redPackRecordRepository.Queryable()
             .Where(m => m.WXOpenId == _sessionContext.OpenId && m.PickupStatus == ERedPackPickupStatus.Received)
             .Where(m => m.CreationTime.Date == dayTime.Date)
-            .Select(m => SqlFunc.AggregateSum(m.Amount))
-            .FirstAsync();
+            .Select(m => SqlFunc.AggregateSum(m.Amount));
+#if DEBUG
+        var sql = query.ToSqlString();
+#endif
+        var redPack = await query.FirstAsync(token);
 
         var outDto = await _orderRepository.Queryable()
             .Where(m => m.Contact == userInfo.PhoneNumber && m.CreatorId == _sessionContext.UserId)
@@ -323,10 +327,10 @@ public abstract class SnapshotApplicationBase
                 NoReplyCount = SqlFunc.AggregateSum(SqlFunc.IIF(m.Status < EOrderStatus.Filed, 1, 0)),
                 ReplyCount = SqlFunc.AggregateSum(SqlFunc.IIF(m.Status >= EOrderStatus.Filed, 1, 0)),
                 AppraiseCount = SqlFunc.AggregateSum(SqlFunc.IIF(m.Status == EOrderStatus.Visited, 1, 0)),
-            }).FirstAsync();
+            }).FirstAsync(token);
 
-        outDto.DayAmount = readPack;
-        outDto.TotalAmount = userInfo.TotalAmount ?? 0;
+        outDto.DayAmount = redPack;
+        outDto.TotalAmount = await _redPackRecordRepository.GetReceivedTotalAmountAsync(_sessionContext.OpenId, token);
         outDto.PhoneNumber = userInfo.PhoneNumber;
         return outDto;
     }
@@ -510,11 +514,7 @@ public abstract class SnapshotApplicationBase
     /// <returns></returns>
     public async Task<string> GetRedPackReceivedTotalAsync(CancellationToken cancellationToken)
     {
-        var totalAmount = await _redPackRecordRepository.Queryable()
-            .Where(m => m.WXOpenId == _sessionContext.OpenId && m.PickupStatus == ERedPackPickupStatus.Received)
-            .Select(m => SqlFunc.AggregateSum(m.Amount))
-            .FirstAsync(cancellationToken);
-        return totalAmount.ToYuanFinance();
+        return (await _redPackRecordRepository.GetReceivedTotalAmountAsync(_sessionContext.OpenId, cancellationToken)).ToYuanFinance();
     }
 
     /// <summary>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
src/Hotline.Application/Snapshot/ZiGongSnapshotApplication.cs


+ 11 - 0
src/Hotline.Repository.SqlSugar/Snapshot/RedPackRecordRepository.cs

@@ -1,4 +1,6 @@
 using Hotline.Repository.SqlSugar.DataPermissions;
+using Hotline.Share.Enums.Snapshot;
+using Hotline.Share.Tools;
 using Hotline.Snapshot;
 using Hotline.Snapshot.IRepository;
 using SqlSugar;
@@ -15,5 +17,14 @@ public class RedPackRecordRepository : BaseRepository<RedPackRecord>, IRedPackRe
     public RedPackRecordRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder, IServiceProvider serviceProvider) : base(uow, dataPermissionFilterBuilder, serviceProvider)
     {
     }
+
+    public async Task<double> GetReceivedTotalAmountAsync(string? openId, CancellationToken cancellationToken)
+    {
+        if (openId.IsNullOrEmpty()) return 0d;
+        return await Queryable()
+            .Where(m => m.WXOpenId == openId && m.PickupStatus == ERedPackPickupStatus.Received)
+            .Select(m => SqlFunc.AggregateSum(m.Amount))
+            .FirstAsync(cancellationToken);
+    }
 }
 

+ 1 - 0
src/Hotline/Snapshot/IRepository/IRedPackRecordRepository.cs

@@ -8,4 +8,5 @@ using XF.Domain.Repository;
 namespace Hotline.Snapshot.IRepository;
 public interface IRedPackRecordRepository : IRepository<RedPackRecord>
 {
+    Task<double> GetReceivedTotalAmountAsync(string? openId, CancellationToken cancellationToken);
 }

+ 2 - 2
src/Hotline/Snapshot/RedPackRecord.cs

@@ -84,12 +84,12 @@ public class RedPackRecord : CreationSoftDeleteEntity
     /// 红包领取状态
     /// </summary>
     [SugarColumn(ColumnDescription = "红包领取状态")]
-    public ERedPackPickupStatus PickupStatus { get; set; }
+    public ERedPackPickupStatus? PickupStatus { get; set; }
 
     /// <summary>
     /// 发放失败原因
     /// </summary>
-    public ERedPackPickupFailCase FailCase { get; set; }
+    public ERedPackPickupFailCase? FailCase { get; set; }
 
     /// <summary>
     /// 备注

+ 2 - 2
test/Hotline.Tests/Application/SnapshotApplicationTest.cs

@@ -237,8 +237,8 @@ public class SnapshotApplicationTest : TestBase
     [Fact]
     public async Task GetSnapshotUserInfo_Test()
     {
-        await _identityAppService.GetThredTokenAsync(new ThirdTokenInDto(), CancellationToken.None);
-        var result = await _snapshotApplication.GetSnapshotUserInfoAsync();
+        //await _identityAppService.GetThredTokenAsync(new ThirdTokenInDto() { ThirdType = EThirdType.Test}, CancellationToken.None);
+        var result = await _snapshotApplication.GetSnapshotUserInfoAsync(CancellationToken.None);
         result.ShouldNotBeNull();
         result.PhoneNumber.ShouldNotBeNullOrEmpty();
         result.PhoneNumberMask.Contains("***").ShouldBeTrue();

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.