using DotNetCore.CAP; using Furion.DependencyInjection; using Nirvana.Common; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Waste.Application.SubscribeInfo; using Waste.Domain; namespace Waste.Application.ThirdApiInfo.Message { /// /// 设备消息推送给第三方处理 /// public class MessageService : IMessageService, ITransient { private readonly ISqlSugarRepository repository; private readonly ICapPublisher _capBus; private readonly SqlSugarClient dbClient; public MessageService(ISqlSugarRepository sqlSugarRepository, ICapPublisher capBus) { repository = sqlSugarRepository; dbClient = repository.Context; _capBus = capBus; } /// /// 消息发送 /// /// /// public async Task SeedMessageAsync(SendMessageS2SDto input) { if (!await dbClient.Queryable().AnyAsync(x => x.DeviceId == input.DeviceId)) { return; } var config = await dbClient.Queryable().Where(x => x.DeviceId == input.DeviceId).Select(x => new W_DeviceConfig { Body = x.Body, Url = x.Url }).FirstAsync(); var time = input.Time.GetTimeStamp(); await _capBus.PublishAsync("third.service.sendmessage", new SendThirdMessageSubscriDto { WasteType = input.WasteType, Body = config.Body, Time = time, TrashCode = input.TrashCode, Url = config.Url, Weight = input.Weight }); } } }