|
@@ -37,6 +37,10 @@ using Hotline.ThirdAccountDomainServices.Interfaces;
|
|
|
using Hotline.Snapshot.IRepository;
|
|
|
using Hotline.Share.Enums.CallCenter;
|
|
|
using Hotline.Repository.SqlSugar.Snapshot;
|
|
|
+using Hotline.Settings.Hotspots;
|
|
|
+using Microsoft.Extensions.Options;
|
|
|
+using XF.Utility.MQ;
|
|
|
+using System.Threading;
|
|
|
|
|
|
namespace Hotline.Application.Snapshot;
|
|
|
|
|
@@ -55,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;
|
|
@@ -81,8 +85,9 @@ public abstract class SnapshotApplicationBase
|
|
|
private readonly IInviteCodeRepository _inviteCodeRepository;
|
|
|
private readonly ICitizenRepository _citizenRepository;
|
|
|
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)
|
|
|
+ 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;
|
|
@@ -116,6 +121,7 @@ public abstract class SnapshotApplicationBase
|
|
|
_inviteCodeRepository = inviteCodeRepository;
|
|
|
_citizenRepository = citizenRepository;
|
|
|
_pointsRecordRepository = snapshotPointsRecordRepository;
|
|
|
+ _mqConfiguration = mqConfiguration;
|
|
|
}
|
|
|
|
|
|
#region 小程序
|
|
@@ -300,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)
|
|
@@ -318,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;
|
|
|
}
|
|
@@ -479,9 +488,11 @@ public abstract class SnapshotApplicationBase
|
|
|
public async Task<IList<RedPackOutDto>> GetRedPacksAsync(RedPacksInDto dto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
var items = await _redPackRecordRepository.Queryable(includeDeleted: true)
|
|
|
+ .LeftJoin<Order>((m , order) => m.OrderId == order.Id)
|
|
|
.Where(m => m.IsDeleted == false)
|
|
|
.Where(m => m.WXOpenId == _sessionContext.OpenId)
|
|
|
- .Where(m => m.PickupStatus == dto.Status)
|
|
|
+ .WhereIF(dto.Status == ERedPackPickupStatus.Unreceived, (m, order) => m.PickupStatus == dto.Status && (order.HotspotId == null || order.HotspotId.StartsWith("18") == false))
|
|
|
+ .WhereIF(dto.Status != ERedPackPickupStatus.Unreceived, (m, order) => m.PickupStatus == dto.Status)
|
|
|
.Where(m => m.CreationTime.ToString("yyyy-MM") == dto.Time)
|
|
|
.LeftJoin<Order>((red, order) => red.OrderId == order.Id)
|
|
|
.Select((red, order) => new RedPackOutDto
|
|
@@ -503,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>
|
|
@@ -653,7 +660,7 @@ public abstract class SnapshotApplicationBase
|
|
|
public async Task GuiderSystemReplyDelayAsync(string orderId, CancellationToken cancellationToken)
|
|
|
{
|
|
|
var orderSnapshot = await _orderSnapshotRepository.GetAsync(orderId)
|
|
|
- ?? throw new UserFriendlyException($"orderId:{orderId} order_snapshot 不存在该数据");
|
|
|
+ ?? throw new UserFriendlyException($"orderId:{orderId} order_snapshot {_mqConfiguration?.Value?.RabbitMq?.VirtualHost} 不存在该数据");
|
|
|
if (orderSnapshot.IsDeal != null && orderSnapshot.IsDeal == true)
|
|
|
return;
|
|
|
// 网格员未回复, 推送事件
|