140 lines
5.1 KiB
C#
140 lines
5.1 KiB
C#
using DotNetCore.CAP;
|
|
using SJZY.InterfaceRelay.Application.Contracts;
|
|
using SJZY.Track.Application.Contract.Events;
|
|
using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
|
|
using SJZY.Track.Domain.Consts;
|
|
using Volo.Abp.DependencyInjection;
|
|
using Volo.Abp.Http.Client.DynamicProxying;
|
|
|
|
namespace SJZY.Track.Application.EventHandlers;
|
|
|
|
public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
|
|
{
|
|
private readonly IHttpClientProxy<IInterfaceForwardServiceV2> _httpClientProxy;
|
|
private readonly ITrackPushRecordsRepository _trackPushRecordsRepository;
|
|
private readonly ICapPublisher _capPublisher;
|
|
|
|
public TrackPushEventHandler(IHttpClientProxy<IInterfaceForwardServiceV2> httpClientProxy,
|
|
ITrackPushRecordsRepository trackPushRecordsRepository, ICapPublisher capPublisher)
|
|
{
|
|
_httpClientProxy = httpClientProxy;
|
|
_trackPushRecordsRepository = trackPushRecordsRepository;
|
|
_capPublisher = capPublisher;
|
|
}
|
|
|
|
[CapSubscribe(GlobalConst.TrackPushSubscribe, Group = GlobalConst.TrackPushSubscribe)]
|
|
public async Task ConsumerAsync(TrackPushEvent @event)
|
|
{
|
|
InterfaceRelayUnifyResultDto res = null!;
|
|
switch (@event.OptionType)
|
|
{
|
|
case OptionType.无:
|
|
return;
|
|
case OptionType.新增:
|
|
res = await PushAddAsync(@event);
|
|
break;
|
|
case OptionType.删除:
|
|
break;
|
|
case OptionType.修改:
|
|
res = await PushUpdateAsync(@event);
|
|
break;
|
|
default:
|
|
throw new ArgumentOutOfRangeException();
|
|
}
|
|
|
|
var isSuccess = res.Code == InterfaceRelayConst.SuccessCode;
|
|
|
|
// 写推送日志
|
|
await _trackPushRecordsRepository.AddAsync(new TrackPushRecordIndex
|
|
{
|
|
IndexName = $"{GlobalConst.TrackPushRecordsIndex}-{DateTime.Now:yyyy.MM.dd}",
|
|
RequestId = res.RequestId,
|
|
Message = res.Msg,
|
|
OptionType = @event.OptionType.ToString(),
|
|
OrderId = @event.OrderId,
|
|
TrackStatus = @event.TrackStatus,
|
|
TrackCode = @event.TrackCode,
|
|
TrackContent = @event.TrackContent,
|
|
TrackPlace = @event.TrackPlace,
|
|
TrackTime = @event.TrackTime,
|
|
TrackTimeZone = @event.TrackTimeZone,
|
|
TrackContentCodeValue = @event.TrackContentCodeValue,
|
|
TrackContentValue = @event.TrackContentValue,
|
|
TrackEnContentValue = @event.TrackEnContentValue,
|
|
TrackStatusValue = @event.TrackStatusValue,
|
|
ExpandFieldsValue = @event.ExpandFieldsValue,
|
|
IsSuccess = isSuccess,
|
|
CreateUser = @event.OperationMan ?? "系统",
|
|
CreateTime = DateTime.Now
|
|
});
|
|
|
|
// 更新订单主表(异步)
|
|
await _capPublisher.PublishAsync(GlobalConst.TrackPushAfterUpdateOrderSubscribe,
|
|
new TrackPushAfterUpdateOrderEvent
|
|
{
|
|
OptionType = @event.OptionType,
|
|
OrderId = @event.OrderId,
|
|
TrackContentId = @event.TrackContentId,
|
|
IsSuccess = isSuccess,
|
|
Message = res.Msg
|
|
});
|
|
}
|
|
|
|
private async Task<InterfaceRelayUnifyResultDto> PushAddAsync(TrackPushEvent @event)
|
|
{
|
|
var data = new
|
|
{
|
|
orderNo = @event.OrderNo,
|
|
data = new[]
|
|
{
|
|
new
|
|
{
|
|
// 推真实的发生地和发生时间(时间是计算后的)
|
|
location = @event.TrackPlace,
|
|
date = @event.TrackTime,
|
|
timeZone = @event.TrackTimeZone,
|
|
description = @event.TrackEnContentValue,
|
|
description_cn = @event.TrackContentValue,
|
|
code = @event.TrackContentCodeValue,
|
|
status = @event.TrackStatusValue,
|
|
extra = @event.ExpandFieldsValue
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
var res = await _httpClientProxy.Service.ForwardWithSubscribeAsync(InterfaceRelayConst.PushTrackInterfaceCode,
|
|
@event.ServiceProviderCode, data);
|
|
|
|
return res;
|
|
}
|
|
|
|
private async Task<InterfaceRelayUnifyResultDto> PushUpdateAsync(TrackPushEvent @event)
|
|
{
|
|
var data = new
|
|
{
|
|
orderNo = @event.OrderNo,
|
|
data = new[]
|
|
{
|
|
new
|
|
{
|
|
// 推真实的发生地和发生时间
|
|
location = @event.TrackPlace,
|
|
date = @event.TrackTime,
|
|
timeZone = @event.TrackTimeZone,
|
|
description = @event.TrackEnContentValue,
|
|
description_cn = @event.TrackContentValue,
|
|
code = @event.TrackContentCodeValue,
|
|
status = @event.TrackStatusValue,
|
|
extra = @event.ExpandFieldsValue
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
var res = await _httpClientProxy.Service.ForwardWithSubscribeAsync(InterfaceRelayConst.TrackUpdateInterfaceCode,
|
|
@event.ServiceProviderCode, data);
|
|
|
|
return res;
|
|
}
|
|
} |