#region << 版 本 注 释 >> /*-------------------------------------------------------------------- * 版权所有 (c) 2025 WenJY 保留所有权利。 * CLR版本:4.0.30319.42000 * 机器名称:Mr.Wen's MacBook Pro * 命名空间:Sln.Iot.Business * 唯一标识:A937102D-813C-4FB6-8ECE-BC01749B020F * * 创建者:WenJY * 电子邮箱: * 创建时间:2025-05-27 10:57:06 * 版本:V1.0.0 * 描述: * *-------------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.0 *--------------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using System; using System.Collections.Generic; using Sln.Iot.Business.@base; using Sln.Iot.Common; using Sln.Iot.Config; using Sln.Iot.Model.dao; using Sln.Iot.Repository.service; using Sln.Iot.Serilog; using Sln.Iot.Socket.Adapter; using TouchSocket.Core; using TouchSocket.Sockets; namespace Sln.Iot.Business { public class StatusBusiness:BaseBusiness { private readonly IDeviceRecordService _deviceRecordService; public StatusBusiness(SerilogHelper logger, AppConfig appConfig, StringChange stringChange, IDeviceRecordService deviceRecordService) : base(logger, appConfig, stringChange) { _deviceRecordService = deviceRecordService; } public override FilterResult BufferAnalysis(ISocketClient client, BufferRequestInfo requestInfo, int bodyLength) { ByteBlock byteBlock = new ByteBlock(requestInfo.Body); if (byteBlock.CanReadLen < 1) { return FilterResult.Cache; } int pos = byteBlock.Pos; try { var amount = requestInfo.BufferLength / bodyLength; _logger.Info($"收到{amount}个物联锁具状态,开始循环解析......"); for (int i = 0; i < amount; i++) { byte[] ids = new byte[3]; Array.Copy(requestInfo.buffer, 1, ids, 0, ids.Length); string idsStr = _stringChange.bytesToHexStr(ids,ids.Length); var status = _stringChange.bytesToHexStr(requestInfo.Body, requestInfo.Body.Length); _logger.Info($"设备编号:{idsStr};状态:{status}"); if (status == "00") { //更新锁具信息 DeviceRecord deviceRecord = new DeviceRecord() { deviceCode = idsStr, closeTime = DateTime.Now, useState = '0' }; var res = _deviceRecordService.UpdateCloseTime(deviceRecord,out List resIds); } } return FilterResult.Success; } catch (Exception e) { base._logger.Error($"物联网锁具状态解析异常:{e.Message}"); } return FilterResult.Cache; } public override void ResponseHandle(ISocketClient client, BufferRequestInfo requestInfo) { //throw new System.NotImplementedException(); } } }