using System.ComponentModel.DataAnnotations;
using Dlhis.Basic.Device.Dtos;
using Dlhis.Basic.Device.Request;
using Dlhis.Basic.Device.Services;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Kurisu.AspNetCore.UnifyResultAndValidation.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Device.Controllers;
///
/// 设备连接控制器
///
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class DevicesConnectController : ControllerBase
{
private readonly IDeviceConnectService _deviceConnectService;
public DevicesConnectController(IDeviceConnectService deviceConnectService)
{
_deviceConnectService = deviceConnectService;
}
///
/// 设备心跳
///
///
///
[DisableApiLog]
[HttpPost("heartbeat")]
[IgnoreTenant]
public async Task HeartbeatAsync(DeviceHeartbeatRequest request)
{
await _deviceConnectService.HeartbeatAsync(request);
}
///
/// 设备注册
///
///
///
[HttpPost("register")]
[IgnoreTenant]
public async Task RegisterAsync(DeviceRegisterRequest request)
{
return await _deviceConnectService.RegisterAsync(request);
}
///
/// 尝试连接
///
///
///
[HttpPost("tryConnect")]
public async Task TryConnectAsync(DeviceConnectionTryRequest request)
{
return await _deviceConnectService.TryConnectAsync(request);
}
///
/// 获取在线设备
///
///
[HttpGet("online-devices")]
public async Task> GetOnlineDeviceUniqueInfoAsync()
{
return await _deviceConnectService.GetOnlineDeviceUniqueInfoAsync();
}
///
/// 获取品牌设备
///
///
///
///
[HttpGet("brand-devices")]
[IgnoreTenant]
public async Task> GetDeviceUniqueInfoByBrandAsync(
[Required(ErrorMessage = "请明确设备品牌")] string brand,
[Required(ErrorMessage = "请明确厂区")] string factory)
{
return await _deviceConnectService.GetDeviceUniqueInfoByBrandAsync(brand, factory);
}
}