using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Extensions.Logging; using SlnMesnac.Model.domain; using SlnMesnac.Repository.service; using SlnMesnac.Repository.service.LogImpl; using SlnMesnac.Repository.service.ScanLog; using TouchSocket.Core; using TouchSocket.Rpc; using TouchSocket.WebApi; namespace SlnMesnac.TouchSocket { public class ApiServer : RpcServer { private readonly IScanLogService _scanService; private readonly IBaseCodeService _baseCodeService; readonly IBaseLogService _baseLogService; public Action? ScanLogSocketAction; public Action? ScanStatusSocketAction; private ILogger _logger; public ApiServer(IScanLogService scanService, IBaseCodeService baseCodeService, IBaseLogService baseLogService, ILogger logger) { _scanService = scanService; _baseCodeService = baseCodeService; _baseLogService = baseLogService; _logger=logger; } /// /// 扫描的状态回传 /// /// /// [EnableCors("cors")] [WebApi(HttpMethodType.POST)] public Back ScanStatus(ScanStatusSocket scanStatus) { _logger.LogInformation("扫描的状态接口"); _logger.LogInformation("{Data}",scanStatus.ToJsonString()); BaseLog log = new BaseLog { LogLevel = "Info", ErrMsg = "", Content = scanStatus.ToJsonString() }; try { if (scanStatus.is_alarm == 1 && scanStatus.device_status != null && scanStatus.device_status.Count > 0) { List ls = new List(); var baseCodes = _baseCodeService.QuListCache(); foreach (var baseCode in scanStatus.device_status) { var enBaseCode = baseCodes.FirstOrDefault(x => x.Code == baseCode); if (enBaseCode != null) { ls.Add(enBaseCode.State); } } scanStatus.status_txt = ls; } ScanStatusSocketAction?.Invoke(scanStatus); } catch (Exception e) { log.LogLevel = "Error"; log.ErrMsg=e.Message; } _baseLogService.Insert(log); return new Back(); } /// /// 扫描数据回传接口 /// /// /// [EnableCors("cors")] [WebApi(HttpMethodType.POST)] public Back ScanBack(ScanLogSocket scanLog) { _logger.LogInformation("扫描数据回传接口"); _logger.LogInformation("{Data}", scanLog.ToJsonString()); BaseLog log = new BaseLog(); log.LogLevel = "Info"; log.ErrMsg = ""; log.Content = scanLog.ToJsonString(); try { var model = new ScanLogModel() { CreateTime = scanLog.CreateTime, DataType = scanLog.data_type, Code = scanLog.code, Rfid = scanLog.rfid, Ocr = scanLog.ocr, Url = scanLog.url }; ScanLogSocketAction?.Invoke(model); _scanService.Insert(model); } catch (Exception e) { log.LogLevel = "Error"; log.ErrMsg = e.Message; } _baseLogService.Insert(log); return new Back(); } } }