|
@@ -37,6 +37,10 @@ using Hotline.ThirdAccountDomainServices.Interfaces;
|
|
using Hotline.Snapshot.IRepository;
|
|
using Hotline.Snapshot.IRepository;
|
|
using Hotline.Share.Enums.CallCenter;
|
|
using Hotline.Share.Enums.CallCenter;
|
|
using Hotline.Repository.SqlSugar.Snapshot;
|
|
using Hotline.Repository.SqlSugar.Snapshot;
|
|
|
|
+using Hotline.Settings.Hotspots;
|
|
|
|
+using Microsoft.Extensions.Options;
|
|
|
|
+using XF.Utility.MQ;
|
|
|
|
+using System.Threading;
|
|
|
|
|
|
namespace Hotline.Application.Snapshot;
|
|
namespace Hotline.Application.Snapshot;
|
|
|
|
|
|
@@ -55,7 +59,7 @@ public abstract class SnapshotApplicationBase
|
|
private readonly IIndustryRepository _industryRepository;
|
|
private readonly IIndustryRepository _industryRepository;
|
|
private readonly IThirdIdentiyService _thirdLoginService;
|
|
private readonly IThirdIdentiyService _thirdLoginService;
|
|
private readonly ISessionContext _sessionContext;
|
|
private readonly ISessionContext _sessionContext;
|
|
- private readonly IRepository<RedPackRecord> _redPackRecordRepository;
|
|
|
|
|
|
+ private readonly IRedPackRecordRepository _redPackRecordRepository;
|
|
private readonly IOrderSnapshotRepository _orderSnapshotRepository;
|
|
private readonly IOrderSnapshotRepository _orderSnapshotRepository;
|
|
private readonly ISystemSettingCacheManager _sysSetting;
|
|
private readonly ISystemSettingCacheManager _sysSetting;
|
|
private readonly ISystemAreaDomainService _systemAreaDomainService;
|
|
private readonly ISystemAreaDomainService _systemAreaDomainService;
|
|
@@ -81,8 +85,9 @@ public abstract class SnapshotApplicationBase
|
|
private readonly IInviteCodeRepository _inviteCodeRepository;
|
|
private readonly IInviteCodeRepository _inviteCodeRepository;
|
|
private readonly ICitizenRepository _citizenRepository;
|
|
private readonly ICitizenRepository _citizenRepository;
|
|
private readonly ISnapshotPointsRecordRepository _pointsRecordRepository;
|
|
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;
|
|
_thirdLoginService = thirdLoginService;
|
|
_industryRepository = industryRepository;
|
|
_industryRepository = industryRepository;
|
|
@@ -116,6 +121,7 @@ public abstract class SnapshotApplicationBase
|
|
_inviteCodeRepository = inviteCodeRepository;
|
|
_inviteCodeRepository = inviteCodeRepository;
|
|
_citizenRepository = citizenRepository;
|
|
_citizenRepository = citizenRepository;
|
|
_pointsRecordRepository = snapshotPointsRecordRepository;
|
|
_pointsRecordRepository = snapshotPointsRecordRepository;
|
|
|
|
+ _mqConfiguration = mqConfiguration;
|
|
}
|
|
}
|
|
|
|
|
|
#region 小程序
|
|
#region 小程序
|
|
@@ -300,16 +306,19 @@ public abstract class SnapshotApplicationBase
|
|
/// 获取个人中心数据
|
|
/// 获取个人中心数据
|
|
/// </summary>
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
- public async Task<SnapshotUserInfoOutDto> GetSnapshotUserInfoAsync()
|
|
|
|
|
|
+ public async Task<SnapshotUserInfoOutDto> GetSnapshotUserInfoAsync(CancellationToken token)
|
|
{
|
|
{
|
|
var userInfo = await _citizenRepository.GetAsync(_sessionContext.UserId);
|
|
var userInfo = await _citizenRepository.GetAsync(_sessionContext.UserId);
|
|
|
|
|
|
var dayTime = DateTime.Now;
|
|
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.WXOpenId == _sessionContext.OpenId && m.PickupStatus == ERedPackPickupStatus.Received)
|
|
.Where(m => m.CreationTime.Date == dayTime.Date)
|
|
.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()
|
|
var outDto = await _orderRepository.Queryable()
|
|
.Where(m => m.Contact == userInfo.PhoneNumber && m.CreatorId == _sessionContext.UserId)
|
|
.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)),
|
|
NoReplyCount = SqlFunc.AggregateSum(SqlFunc.IIF(m.Status < EOrderStatus.Filed, 1, 0)),
|
|
ReplyCount = 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)),
|
|
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;
|
|
outDto.PhoneNumber = userInfo.PhoneNumber;
|
|
return outDto;
|
|
return outDto;
|
|
}
|
|
}
|
|
@@ -479,9 +488,11 @@ public abstract class SnapshotApplicationBase
|
|
public async Task<IList<RedPackOutDto>> GetRedPacksAsync(RedPacksInDto dto, CancellationToken cancellationToken)
|
|
public async Task<IList<RedPackOutDto>> GetRedPacksAsync(RedPacksInDto dto, CancellationToken cancellationToken)
|
|
{
|
|
{
|
|
var items = await _redPackRecordRepository.Queryable(includeDeleted: true)
|
|
var items = await _redPackRecordRepository.Queryable(includeDeleted: true)
|
|
|
|
+ .LeftJoin<Order>((m , order) => m.OrderId == order.Id)
|
|
.Where(m => m.IsDeleted == false)
|
|
.Where(m => m.IsDeleted == false)
|
|
.Where(m => m.WXOpenId == _sessionContext.OpenId)
|
|
.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)
|
|
.Where(m => m.CreationTime.ToString("yyyy-MM") == dto.Time)
|
|
.LeftJoin<Order>((red, order) => red.OrderId == order.Id)
|
|
.LeftJoin<Order>((red, order) => red.OrderId == order.Id)
|
|
.Select((red, order) => new RedPackOutDto
|
|
.Select((red, order) => new RedPackOutDto
|
|
@@ -503,11 +514,7 @@ public abstract class SnapshotApplicationBase
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
public async Task<string> GetRedPackReceivedTotalAsync(CancellationToken cancellationToken)
|
|
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>
|
|
/// <summary>
|
|
@@ -653,7 +660,7 @@ public abstract class SnapshotApplicationBase
|
|
public async Task GuiderSystemReplyDelayAsync(string orderId, CancellationToken cancellationToken)
|
|
public async Task GuiderSystemReplyDelayAsync(string orderId, CancellationToken cancellationToken)
|
|
{
|
|
{
|
|
var orderSnapshot = await _orderSnapshotRepository.GetAsync(orderId)
|
|
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)
|
|
if (orderSnapshot.IsDeal != null && orderSnapshot.IsDeal == true)
|
|
return;
|
|
return;
|
|
// 网格员未回复, 推送事件
|
|
// 网格员未回复, 推送事件
|