YD_YiLu.Api/YD_YiLu/Controllers/DeviceSyncController.cs

143 lines
4.7 KiB
C#
Raw Normal View History

2026-03-27 10:53:02 +08:00
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using YD_YiLu.Api.Services.Interface;
using YD_YiLu.Commons.Dto.DeviceSync;
namespace YD_YiLu.Api.Controllers
{
/// <summary>
/// 壹动站/壹体屏/活力课间屏 设备同步 HTTP 接口(小站登录与心跳见 WebSocket:<c>/ws/camera/device</c>)
/// </summary>
[AllowAnonymous]
2026-04-09 19:59:50 +08:00
public class DeviceSyncController : ControllerBase
2026-03-27 10:53:02 +08:00
{
private readonly IDeviceSyncService _deviceSyncService;
public DeviceSyncController(IDeviceSyncService deviceSyncService)
{
_deviceSyncService = deviceSyncService;
}
/// <summary>
/// 人员拉取(全量,与 user_page 共用服务逻辑;活力课间屏)
/// </summary>
[HttpPost]
[Route("/device/sync/user")]
public async Task<object> UserPullFull([FromBody] DeviceSyncUserRequestDto dto)
{
return await _deviceSyncService.UserSyncAsync(dto.DeviceSerial, dto.DeviceType, dto.UserType);
}
/// <summary>
/// 人员分页下发(壹动站/壹体屏;弃用的 user_trace 请改用本接口)
/// </summary>
[HttpPost]
[Route("/device/sync/user_page")]
public async Task<object> UserPullPage([FromBody] DeviceSyncUserPageRequestDto dto)
{
if (dto.PageSize <= 0 && !dto.FullSync)
dto.PageSize = 10;
if (dto.PageIndex < 1)
dto.PageIndex = 1;
2026-04-02 13:53:26 +08:00
var res = await _deviceSyncService.UserPageAsync(dto);
return res;
2026-03-27 10:53:02 +08:00
}
/// <summary>
/// 弃用地址别名:device/sync/user_trace → 与 user_page 相同
/// </summary>
[HttpPost]
[Route("/device/sync/user_trace")]
public Task<object> UserTrace([FromBody] DeviceSyncUserPageRequestDto dto) => UserPullPage(dto);
/// <summary>
/// 获取人员详情(壹动站协议)
/// </summary>
[HttpGet]
[Route("/device/sync/user/detail")]
public async Task<object> UserDetail([FromQuery] string deviceSerial, [FromQuery] int userId)
{
return await _deviceSyncService.GetUserDetailAsync(deviceSerial, userId);
}
/// <summary>
/// 组织信息下发
/// </summary>
[HttpPost]
[Route("/device/sync/organization")]
public async Task<object> Organization([FromBody] DeviceSyncOrganizationRequestDto dto)
{
return await _deviceSyncService.OrganizationAsync(dto);
}
2026-04-08 16:09:51 +08:00
/// <summary>
/// 人员上次成绩(按人员序列号批量)
/// </summary>
[HttpPost]
[Route("/device/sync/grade/last_grade")]
public async Task<object> LastGrade([FromBody] DeviceSyncLastGradeRequestDto dto)
{
if (dto == null || string.IsNullOrWhiteSpace(dto.DeviceSerial))
return new List<DeviceSyncLastGradeItemDto>();
return await _deviceSyncService.LastGradeAsync(dto);
}
2026-03-27 10:53:02 +08:00
/// <summary>
/// 成绩批量上报
/// </summary>
[HttpPost]
[Route("/device/sync/train_push")]
public async Task<object> TrainPush([FromBody] List<DeviceSyncTrainPushRequestDto> list)
{
2026-04-09 19:59:50 +08:00
var res = await _deviceSyncService.TrainPushAsync(list);
return res;
2026-03-27 10:53:02 +08:00
}
/// <summary>
/// 获取训练详情
/// </summary>
[HttpGet]
[Route("/device/sync/train/details")]
public async Task<object> TrainDetails([FromQuery] int trainId)
{
2026-04-09 19:59:50 +08:00
var res = await _deviceSyncService.TrainDetailsAsync(trainId);
return res;
2026-03-27 10:53:02 +08:00
}
/// <summary>
/// 个人成绩排行榜
/// </summary>
[HttpPost]
[Route("/device/sync/grade/order")]
public async Task<object> GradeOrder([FromBody] DeviceSyncGradeOrderRequestDto dto)
{
2026-04-09 19:59:50 +08:00
var res = await _deviceSyncService.GradeOrderAsync(dto);
return res;
2026-03-27 10:53:02 +08:00
}
/// <summary>
/// 查询运动记录
/// </summary>
[HttpPost]
[Route("/applet/train/record_app")]
public async Task<object> RecordApp([FromBody] DeviceSyncRecordAppRequestDto dto)
{
2026-04-09 19:59:50 +08:00
var res = await _deviceSyncService.RecordAppAsync(dto);
return res;
2026-03-27 10:53:02 +08:00
}
/// <summary>
/// 查询我的运动
/// </summary>
[HttpPost]
[Route("/device/sync/train/my_record/ytp")]
public async Task<object> MyRecord([FromBody] DeviceSyncMyRecordRequestDto dto)
{
2026-04-09 19:59:50 +08:00
var res = await _deviceSyncService.MyRecordAsync(dto);
return res;
2026-03-27 10:53:02 +08:00
}
}
}