38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
using Dlhis.Entity.Basic.Entity;
|
|
using Dlhis.External.MealSupplement.Request;
|
|
using Kurisu.AspNetCore.EventBus.Abstractions;
|
|
using Kurisu.AspNetCore.EventBus.Abstractions.Handler;
|
|
using Kurisu.SqlSugar.Services;
|
|
using Mapster;
|
|
|
|
namespace Dlhis.External.MealSupplement.Channel;
|
|
|
|
public class MealSupplementHandler : IAsyncChannelHandler<MealSupplementMessage>
|
|
{
|
|
private readonly IServiceProvider _serviceProvider;
|
|
|
|
public MealSupplementHandler(IServiceProvider serviceProvider)
|
|
{
|
|
_serviceProvider = serviceProvider;
|
|
}
|
|
|
|
public async Task InvokeAsync(MealSupplementMessage message)
|
|
{
|
|
using (var scope = _serviceProvider.CreateScope())
|
|
{
|
|
var db = scope.ServiceProvider.GetService<IDbContext>();
|
|
|
|
var existsIds = await db.Queryable<MealSupplementRecordEntity>().Select(x => x.UniqueId).ToListAsync();
|
|
var items = message.Items.Where(x => !existsIds.Contains(x.UniqueId)).ToList();
|
|
|
|
var entities = items.Adapt<List<MealSupplementRecordEntity>>();
|
|
await db.InsertAsync(entities);
|
|
}
|
|
}
|
|
}
|
|
|
|
public class MealSupplementMessage : IAsyncChannelMessage
|
|
{
|
|
public List<MealSupplementReceiveReuqest> Items { get; set; }
|
|
}
|