package com.dji.sample.control.controller; import com.dji.sample.common.model.CustomClaim; import com.dji.sample.control.model.dto.JwtAclDTO; import com.dji.sample.control.model.param.*; import com.dji.sample.control.service.IDrcService; import com.dji.sdk.cloudapi.control.DrcModeMqttBroker; import com.dji.sdk.common.HttpResultResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM; /** * @author sean * @version 1.3 * @date 2023/1/11 */ @RestController @Slf4j @RequestMapping("${url.control.prefix}${url.control.version}") public class DrcController { @Autowired private IDrcService drcService; @PostMapping("/workspaces/{workspace_id}/drc/connect") public HttpResultResponse drcConnect(@PathVariable("workspace_id") String workspaceId, HttpServletRequest request, @Valid @RequestBody DrcConnectParam param) { CustomClaim claims = (CustomClaim) request.getAttribute(TOKEN_CLAIM); DrcModeMqttBroker brokerDTO = drcService.userDrcAuth(workspaceId, claims.getId(), claims.getUsername(), param); return HttpResultResponse.success(brokerDTO); } @PostMapping("/drc/enter") public HttpResultResponse drcEnter(@Valid @RequestBody DrcModeParam param) { JwtAclDTO acl = drcService.deviceDrcEnter( param); return HttpResultResponse.success(acl); } @PostMapping("/drc/exit") public HttpResultResponse drcExit( @Valid @RequestBody DrcModeParam param) { drcService.deviceDrcExit(param); return HttpResultResponse.success(); } @PostMapping("/drc/control") public HttpResultResponse droneControl(@RequestParam(value = "device_sn") String sn, @Valid @RequestBody DroneControlParam param) { drcService.droneControl(sn, param); return HttpResultResponse.success(); } @PostMapping("/drc/emergency-stop") public HttpResultResponse droneEmergencyStop(@RequestParam(value = "device_sn") String sn) { drcService.droneEmergencyStop(sn); return HttpResultResponse.success(); } @PostMapping("/drc/heart-beat") public HttpResultResponse heartBeat(@RequestParam(value = "device_sn") String sn, @Valid @RequestBody HeartBeatParam param) { drcService.heartBeat(sn, param); return HttpResultResponse.success(); } // @PostMapping("/drc/heart-beat/per-half-minute") // public HttpResultResponse heartBeatPerHalfMinute(@RequestParam(value = "device_sn") String sn, @Valid @RequestBody HeartBeatParam param) { // drcService.heartBeat(sn, param); // // return HttpResultResponse.success(); // } }