ly/Controllers/HomeController.cs

66 lines
2.3 KiB
C#
Raw Permalink Normal View History

2025-08-16 09:33:02 +00:00
using LY.App.Common;
using LY.App.Common.Redis;
2025-03-22 12:16:22 +00:00
using LY.App.Device;
using LY.App.Model;
using LY.App.Service;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace LY.App.Controllers
{
2025-03-24 02:59:34 +00:00
/// <summary>
/// 首页控制器
/// </summary>
2025-03-22 12:16:22 +00:00
[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
private readonly DeviceService _deviceService;
private readonly DeviceManager deviceManager = DeviceManager.Instance;
private readonly PositionService _positionService;
private readonly RedisService _redisService;
2025-03-27 16:34:20 +00:00
private readonly AlarmService _alarmService;
private readonly WeatherService _weatherService;
2025-03-24 02:59:34 +00:00
/// <summary>
///
/// </summary>
/// <param name="deviceService"></param>
/// <param name="positionService"></param>
/// <param name="redisService"></param>
2025-03-27 16:34:20 +00:00
/// <param name="alarmService"></param>
/// <param name="weatherService"></param>
public HomeController(DeviceService deviceService, PositionService positionService,
RedisService redisService, AlarmService alarmService, WeatherService weatherService)
2025-03-22 12:16:22 +00:00
{
_deviceService = deviceService;
_positionService = positionService;
_redisService = redisService;
2025-03-27 16:34:20 +00:00
_alarmService = alarmService;
_weatherService = weatherService;
2025-03-22 12:16:22 +00:00
}
/// <summary>
/// 首页
/// </summary>
/// <returns></returns>
2025-04-01 16:05:41 +00:00
[HttpGet("index")]
2025-03-22 12:16:22 +00:00
public async Task<IActionResult> view()
{
ApiResult result = new ApiResult();
var positions = await _positionService.Index();
2025-03-27 16:34:20 +00:00
var alarmCount = await _redisService.GetOrSetAsync(RedisKeyList.index_data(),
async () => await _alarmService.IndexCount(),
2025-08-16 09:33:02 +00:00
TimeSpan.FromSeconds(DateTimeHelper.GetRemainSeconds()));
2025-03-27 16:34:20 +00:00
var weather = await _redisService.GetOrSetAsync(RedisKeyList.Index_Weather,
async () => await _weatherService.GetWeather(),
TimeSpan.FromHours(3));
2025-03-22 12:16:22 +00:00
result.data = new
{
2025-03-27 16:34:20 +00:00
positions,
alarmCount,
weather
2025-03-22 12:16:22 +00:00
};
return Ok(result);
}
}
}