using JiShe.IoT.OneNETAggregation.Dto; using JiShe.ServicePro; using JiShe.ServicePro.Encrypt; using JiShe.ServicePro.Enums; using JiShe.ServicePro.Kafka.Consts; using JiShe.ServicePro.Kafka.Producer; using JiShe.ServicePro.ServerOptions; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace JiShe.IoT.BusinessSystemAggregation { /// /// 业务系统聚合服务 /// public class BusinessSystemAggregationService(IOptions options, IKafkaProducerService _producerService) :IoTAppService, IBusinessSystemAggregationService { ServerApplicationOptions srverOptions = options.Value; /// /// 接收业务系统指令信息,缓存进Kafka /// [AllowAnonymous] public async Task ReceiveCommandInfoAsync(OpenApiRequest input) { try { bool verifySignatureReult = EncryptUtil.OpenApiVerifySignature(input.Message, input.Nonce, input.Timestamp, input.Signature, srverOptions.VerifySignatureToken); if (verifySignatureReult == false)//签名校验失败 { return HttpDataResultExtensions.Failed>("签名校验失败", -101, ResponeResultEnum.NotAllowed); } if (string.IsNullOrWhiteSpace(input.Message)) { return HttpDataResultExtensions.Failed>("指令下发内容不能为空", -102, ResponeResultEnum.Fail); } //将指令存储Kafka中 await _producerService.ProduceAsync(KafkaTopicConsts.OneNETCommandIssuedEventName, $"{GuidGenerator.Create()}", input); return HttpDataResultExtensions.Success("指令下发Kafka成功"); } catch (Exception) { throw; } } } }