package com.inspur.source.controller; import cn.dev33.satoken.annotation.SaIgnore; import com.inspur.device.domain.SmsbDeviceTask; import com.inspur.device.domain.bo.HttpHeartbeatReq; import com.inspur.device.domain.constants.DeviceTaskConstants; import com.inspur.device.domain.vo.*; import com.inspur.device.mapper.SmsbDeviceTaskMapper; import com.inspur.device.service.*; import com.inspur.source.domain.vo.FrontItemSourceVO; import com.inspur.source.domain.vo.FrontPushInfoVo; import com.inspur.source.service.ISmsbItemPushDeviceService; import com.inspur.source.service.ISmsbItemPushService; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.List; /** * 前端设备接口 * * @author lihao16 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/front") public class SmsbFrontController { private final ISmsbItemPushService smsbItemPushService; private final SmsbDeviceTaskMapper smsbDeviceTaskMapper; private final ISmsbItemPushDeviceService smsbItemPushDeviceService; @Autowired private ISmsbOtaRecordService iSmsbOtaRecordService; @Autowired private ISmsbDeviceService smsbDeviceService; @Autowired private ISmsbDeviceLoginService smsbDeviceLoginService; @Autowired private ISmsbDeviceAuthService smsbDeviceAuthService; @Autowired private ISmsbDeviceTaskService smsbDeviceTaskService; /** * 根据设备identifier 获取该设备最新内容下发记录 * * @param identifier 主键 */ @SaIgnore @GetMapping("/push/{identifier}") public R> getItemPushInfo(@NotNull(message = "identifier不能为空") @PathVariable String identifier) { return smsbItemPushService.getItemPushInfo(identifier); } @SaIgnore @GetMapping("/itemSource/{itemId}") public R> getItemSourceList(@NotNull(message = "identifier不能为空") @PathVariable Long itemId) { return smsbItemPushService.getItemSourceList(itemId); } /** * 根据设备identifier 获取该设备最新内容下发记录 * * @param pushId * @param identifier 主键 */ @SaIgnore @GetMapping("/push/update/end/{identifier}/{pushId}") public R itemUpdateEnd(@NotNull(message = "identifier不能为空") @PathVariable String identifier, @NotNull(message = "pushId不能为空") @PathVariable Long pushId) { return smsbItemPushService.itemUpdateEnd(identifier,pushId); } /** * 根据设备identifier 获取OTA 信息 * * @param identifier 主键 */ @SaIgnore @GetMapping("/ota/check/{identifier}") public R deviceCheckOta(@NotNull(message = "identifier不能为空") @PathVariable String identifier) { return iSmsbOtaRecordService.deviceCheckOta(identifier); } /** * 前端设备上传截图 * * @param identifier 主键 */ @SaIgnore @PostMapping("/screenshot/upload") public R screenshotUpload(@RequestParam("identifier") String identifier,@RequestParam("timestamp") Long timestamp, @RequestBody MultipartFile file) { return smsbDeviceService.screenshotUpload(identifier,timestamp, file); } /** * 前端设备心跳接口 * * @param requestParam 主键 */ @SaIgnore @PostMapping("/heartbeat") public R heartbeat(@RequestBody HttpHeartbeatReq requestParam) { return smsbDeviceService.heartbeat(requestParam); } /** * 前端设备登录接口 * * @param requestParam 主键 */ @SaIgnore @PostMapping("/login") public R deviceLogin(@RequestBody HttpHeartbeatReq requestParam) { return smsbDeviceLoginService.deviceLogin(requestParam); } /** * 前端设备登录接口 * * @param requestParam 主键 */ @SaIgnore @PostMapping("/auth") public R deviceAuth(@RequestBody HttpHeartbeatReq requestParam) { return smsbDeviceAuthService.deviceAuth(requestParam); } /** * 前端设备登录接口 * * @param identifier * @param taskType */ @SaIgnore @GetMapping("/task") public R getDeviceTask(@RequestParam("identifier") String identifier,@RequestParam("taskType") Integer taskType) { return smsbDeviceTaskService.getDeviceTask(identifier,taskType); } /** * 前端设备上报任务状态接口 * * @param taskId * @param taskStatus */ @SaIgnore @GetMapping("/task/status") public R uploadTaskStatus(@RequestParam("taskId") Long taskId,@RequestParam("taskStatus") Integer taskStatus) { SmsbDeviceTask smsbDeviceTask = smsbDeviceTaskMapper.selectById(taskId); // 如果是任务完成且为时间线更新任务 if (taskStatus.equals(DeviceTaskConstants.DEVICE_TASK_STATUS_END) && smsbDeviceTask.getTaskType().equals(DeviceTaskConstants.DEVICE_TASK_PLAY_LINE_UPDATE)) { smsbItemPushDeviceService.updateDevicePushStatus(3,smsbDeviceTask); } return smsbDeviceTaskService.uploadTaskStatus(taskId,taskStatus,smsbDeviceTask); } /** * 前端设备多功能卡上报 * * @param frontMultiCardUploadVo */ @SaIgnore @PostMapping("/multiCard") public R uploadTaskStatus(@RequestBody FrontMultiCardUploadVo frontMultiCardUploadVo) { return smsbDeviceService.uploadMultiCard(frontMultiCardUploadVo); } }