YD_YiLu.Api/YD_YiLu/Controllers/DeviceSyncController.cs

198 lines
6.5 KiB
C#
Raw Normal View History

2026-03-27 10:53:02 +08:00
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
2026-06-30 14:53:24 +08:00
using Microsoft.Extensions.Logging;
2026-03-27 10:53:02 +08:00
using YD_YiLu.Api.Services.Interface;
using YD_YiLu.Commons.Dto.DeviceSync;
namespace YD_YiLu.Api.Controllers
{
/// <summary>
2026-07-01 15:13:49 +08:00
/// 设备同步 HTTP 接口。
2026-03-27 10:53:02 +08:00
/// </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;
2026-06-30 14:53:24 +08:00
private readonly ILogger<DeviceSyncController> _logger;
2026-03-27 10:53:02 +08:00
2026-06-30 14:53:24 +08:00
public DeviceSyncController(IDeviceSyncService deviceSyncService, ILogger<DeviceSyncController> logger)
2026-03-27 10:53:02 +08:00
{
_deviceSyncService = deviceSyncService;
2026-06-30 14:53:24 +08:00
_logger = logger;
2026-03-27 10:53:02 +08:00
}
/// <summary>
2026-07-01 15:13:49 +08:00
/// 人员全量拉取。
2026-03-27 10:53:02 +08:00
/// </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>
2026-07-01 15:13:49 +08:00
/// 人员分页下发。
2026-03-27 10:53:02 +08:00
/// </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>
2026-07-01 15:13:49 +08:00
/// user_trace 别名。
2026-03-27 10:53:02 +08:00
/// </summary>
[HttpPost]
[Route("/device/sync/user_trace")]
public Task<object> UserTrace([FromBody] DeviceSyncUserPageRequestDto dto) => UserPullPage(dto);
/// <summary>
2026-07-01 15:13:49 +08:00
/// 获取人员详情。
2026-03-27 10:53:02 +08:00
/// </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>
2026-07-01 15:13:49 +08:00
/// 组织信息下发。
2026-03-27 10:53:02 +08:00
/// </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>
2026-07-01 15:13:49 +08:00
/// 人员上次成绩。
2026-04-08 16:09:51 +08:00
/// </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>
2026-07-01 15:13:49 +08:00
/// 成绩批量上报。
2026-03-27 10:53:02 +08:00
/// </summary>
[HttpPost]
[Route("/device/sync/train_push")]
public async Task<object> TrainPush([FromBody] List<DeviceSyncTrainPushRequestDto> list)
{
2026-06-30 14:53:24 +08:00
var rawBody = HttpContext.Items["TrainPushRawBody"] as string;
_logger.LogInformation(
"TrainPush model binding result. RawBodyLength: {RawBodyLength}, MappedCount: {MappedCount}, Body: {RawBody}",
rawBody?.Length ?? 0,
list?.Count ?? 0,
rawBody);
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>
2026-07-01 15:13:49 +08:00
/// 获取训练详情。
2026-03-27 10:53:02 +08:00
/// </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>
2026-07-01 15:13:49 +08:00
/// 个人成绩排行榜。
2026-03-27 10:53:02 +08:00
/// </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>
2026-07-01 15:13:49 +08:00
/// 组织(班级)成绩排行榜。
/// </summary>
[HttpPost]
[Route("/device/sync/organization_grade/order")]
public async Task<object> OrganizationGradeOrder([FromBody] DeviceSyncGradeOrderRequestDto dto)
{
var res = await _deviceSyncService.OrganizationGradeOrderAsync(dto);
return res;
}
/// <summary>
/// 查询挑战最好成绩。
/// </summary>
[HttpPost]
[Route("/device/sync/grade/best_score")]
public async Task<object> BestScore([FromBody] DeviceSyncBestScoreRequestDto dto)
{
var res = await _deviceSyncService.BestScoreAsync(dto);
return res;
}
/// <summary>
/// 查询运动记录。
2026-03-27 10:53:02 +08:00
/// </summary>
[HttpPost]
2026-07-01 13:54:58 +08:00
[Route("/device/sync/grade/record")]
2026-07-15 14:46:25 +08:00
[Route("/applet/train/record_app")]
2026-03-27 10:53:02 +08:00
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>
2026-07-01 15:13:49 +08:00
/// 查询我的运动。
2026-03-27 10:53:02 +08:00
/// </summary>
[HttpPost]
2026-07-01 15:13:49 +08:00
[Route("/device/sync/grade/my_record")]
2026-03-27 10:53:02 +08:00
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
}
2026-04-13 09:59:12 +08:00
2026-07-15 15:04:23 +08:00
/// <summary>
/// 查询我的运动(壹体屏)
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
2026-07-15 14:46:25 +08:00
[HttpPost]
[Route("/device/sync/train/my_record/ytp")]
public async Task<object> YtpMyRecord([FromBody] DeviceSyncYtpMyRecordRequestDto dto)
{
var res = await _deviceSyncService.YtpMyRecordAsync(dto);
return res;
}
2026-04-13 09:59:12 +08:00
/// <summary>
2026-07-01 15:13:49 +08:00
/// 视频回放上传。
2026-04-13 09:59:12 +08:00
/// </summary>
[HttpPost("device/sync/video/upload")]
public async Task<bool> UploadVideo([FromForm] DeviceVideoUploadRequestDto dto)
{
var res = await _deviceSyncService.DeviceVideoUploadAsync(dto);
return res;
}
2026-03-27 10:53:02 +08:00
}
}