|
@@ -1,5 +1,6 @@
|
|
|
using Hotline.Early;
|
|
|
using Hotline.Orders.Notifications;
|
|
|
+using Hotline.Share.Tools;
|
|
|
using MediatR;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
@@ -13,10 +14,12 @@ namespace Hotline.Application.OrderApp.Handlers.OrderHandler
|
|
|
public class OrderEarlyWarningNotifyHandler : INotificationHandler<OrderEarlyWarningNotify>
|
|
|
{
|
|
|
private readonly IRepository<EarlyWarningOrder> _orderEarlyWarningRepository;
|
|
|
+ private readonly IRepository<EarlyWarningOrderDetail> _orderEarlyWarningDetailRepository;
|
|
|
|
|
|
- public OrderEarlyWarningNotifyHandler(IRepository<EarlyWarningOrder> orderEarlyWarningRepository)
|
|
|
+ public OrderEarlyWarningNotifyHandler(IRepository<EarlyWarningOrder> orderEarlyWarningRepository, IRepository<EarlyWarningOrderDetail> orderEarlyWarningDetailRepository)
|
|
|
{
|
|
|
_orderEarlyWarningRepository = orderEarlyWarningRepository;
|
|
|
+ _orderEarlyWarningDetailRepository = orderEarlyWarningDetailRepository;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -27,27 +30,56 @@ namespace Hotline.Application.OrderApp.Handlers.OrderHandler
|
|
|
var now = DateTime.Now;
|
|
|
foreach (var item in settiingList)
|
|
|
{
|
|
|
- switch (item.Frequency)
|
|
|
+ var model = new EarlyWarningOrderDetail()
|
|
|
{
|
|
|
- //每日
|
|
|
- case Share.Enums.Early.EFrequency.Day:
|
|
|
- _orderEarlyWarningRepository.Queryable().Where(x => x.StartTime<= now && x.EndTime>= now && x.EarlyWarningSettingId == item.Id);
|
|
|
- break;
|
|
|
- //每周
|
|
|
- case Share.Enums.Early.EFrequency.Week:
|
|
|
- break;
|
|
|
- //每月
|
|
|
- case Share.Enums.Early.EFrequency.Month:
|
|
|
- break;
|
|
|
- //每年
|
|
|
- case Share.Enums.Early.EFrequency.Year:
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
+ OrderId = order.Id,
|
|
|
+ OrderContent = order.Content,
|
|
|
+ OrderTitle = order.Title,
|
|
|
+ Sensitive = order.Sensitive,
|
|
|
+ OrderPushStatus = Share.Enums.Early.EOrderPushStatus.NoPush,
|
|
|
+ };
|
|
|
+ var orderEarly = await _orderEarlyWarningRepository.Queryable().Where(x => x.StartTime<= now && x.EndTime>= now && x.EarlyWarningSettingId == item.Id).FirstAsync();
|
|
|
+ if (orderEarly != null)
|
|
|
+ {
|
|
|
+ model.EarlyWarningOrderId = orderEarly.Id;
|
|
|
+ await _orderEarlyWarningDetailRepository.AddAsync(model);
|
|
|
+ await _orderEarlyWarningRepository.Updateable().SetColumns(x => new EarlyWarningOrder()
|
|
|
+ {
|
|
|
+ LastEarlyTime = now,
|
|
|
+ }).Where(x=>x.Id == orderEarly.Id).ExecuteCommandAsync(cancellationToken);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ orderEarly = new EarlyWarningOrder()
|
|
|
+ {
|
|
|
+ EarlyWarningSettingId = item.Id,
|
|
|
+ LastEarlyTime= now,
|
|
|
+ };
|
|
|
+ switch (item.Frequency)
|
|
|
+ {
|
|
|
+ case Share.Enums.Early.EFrequency.Day:
|
|
|
+ orderEarly.StartTime = now.Date;
|
|
|
+ orderEarly.EndTime = now.Date.AddDays(1).AddSeconds(-1);
|
|
|
+ break;
|
|
|
+ case Share.Enums.Early.EFrequency.Week:
|
|
|
+ var (startTime,endTime) = now.GetWeekRange();
|
|
|
+ orderEarly.StartTime = startTime;
|
|
|
+ orderEarly.EndTime = endTime;
|
|
|
+ break;
|
|
|
+ case Share.Enums.Early.EFrequency.Month:
|
|
|
+ (startTime, endTime) = now.GetMonthRange();
|
|
|
+ break;
|
|
|
+ case Share.Enums.Early.EFrequency.Year:
|
|
|
+ (startTime, endTime) = now.GetYearRange();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ await _orderEarlyWarningRepository.AddAsync(orderEarly,cancellationToken);
|
|
|
+ model.EarlyWarningOrderId = orderEarly.Id;
|
|
|
+ await _orderEarlyWarningDetailRepository.AddAsync(model);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- throw new NotImplementedException();
|
|
|
}
|
|
|
}
|
|
|
}
|