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 { /// /// 壹动站/壹体屏/活力课间屏 设备同步 HTTP 接口(小站登录与心跳见 WebSocket:/ws/camera/device) /// [AllowAnonymous] public class DeviceSyncController : ControllerBase { private readonly IDeviceSyncService _deviceSyncService; public DeviceSyncController(IDeviceSyncService deviceSyncService) { _deviceSyncService = deviceSyncService; } /// /// 人员拉取(全量,与 user_page 共用服务逻辑;活力课间屏) /// [HttpPost] [Route("/device/sync/user")] public async Task UserPullFull([FromBody] DeviceSyncUserRequestDto dto) { return await _deviceSyncService.UserSyncAsync(dto.DeviceSerial, dto.DeviceType, dto.UserType); } /// /// 人员分页下发(壹动站/壹体屏;弃用的 user_trace 请改用本接口) /// [HttpPost] [Route("/device/sync/user_page")] public async Task UserPullPage([FromBody] DeviceSyncUserPageRequestDto dto) { if (dto.PageSize <= 0 && !dto.FullSync) dto.PageSize = 10; if (dto.PageIndex < 1) dto.PageIndex = 1; var res = await _deviceSyncService.UserPageAsync(dto); return res; } /// /// 弃用地址别名:device/sync/user_trace → 与 user_page 相同 /// [HttpPost] [Route("/device/sync/user_trace")] public Task UserTrace([FromBody] DeviceSyncUserPageRequestDto dto) => UserPullPage(dto); /// /// 获取人员详情(壹动站协议) /// [HttpGet] [Route("/device/sync/user/detail")] public async Task UserDetail([FromQuery] string deviceSerial, [FromQuery] int userId) { return await _deviceSyncService.GetUserDetailAsync(deviceSerial, userId); } /// /// 组织信息下发 /// [HttpPost] [Route("/device/sync/organization")] public async Task Organization([FromBody] DeviceSyncOrganizationRequestDto dto) { return await _deviceSyncService.OrganizationAsync(dto); } /// /// 成绩批量上报 /// [HttpPost] [Route("/device/sync/train_push")] public async Task TrainPush([FromBody] List list) { return await _deviceSyncService.TrainPushAsync(list); } /// /// 获取训练详情 /// [HttpGet] [Route("/device/sync/train/details")] public async Task TrainDetails([FromQuery] int trainId) { return await _deviceSyncService.TrainDetailsAsync(trainId); } /// /// 个人成绩排行榜 /// [HttpPost] [Route("/device/sync/grade/order")] public async Task GradeOrder([FromBody] DeviceSyncGradeOrderRequestDto dto) { return await _deviceSyncService.GradeOrderAsync(dto); } /// /// 查询运动记录 /// [HttpPost] [Route("/applet/train/record_app")] public async Task RecordApp([FromBody] DeviceSyncRecordAppRequestDto dto) { return await _deviceSyncService.RecordAppAsync(dto); } /// /// 查询我的运动 /// [HttpPost] [Route("/device/sync/train/my_record/ytp")] public async Task MyRecord([FromBody] DeviceSyncMyRecordRequestDto dto) { return await _deviceSyncService.MyRecordAsync(dto); } } }