Browse Source

1

pull/1/head
吴远 3 months ago
parent
commit
d81d031832
  1. 12
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java
  2. 16
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceTypeEnum.java
  3. 4
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/CreateMapElementRequest.java
  4. 16
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/MapElementCreateWsResponse.java
  5. 16
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/MapElementUpdateWsResponse.java
  6. 20
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/MapGroupElement.java
  7. 4
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/UpdateMapElementRequest.java
  8. 45
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/api/IHttpMapService.java
  9. 10
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaUploadCallbackRequest.java
  10. 42
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/api/IHttpMediaService.java
  11. 12
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/storage/StsCredentialsResponse.java
  12. 4
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/storage/api/IHttpStorageService.java
  13. 6
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/tsa/TopologyList.java
  14. 5
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/tsa/api/IHttpTsaService.java
  15. 40
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/GetWaylineListResponse.java
  16. 14
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java
  17. 2
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock2ThingVersionEnum.java
  18. 47
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock3ThingVersionEnum.java
  19. 4
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DockThingVersionEnum.java
  20. 4
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DroneThingVersionEnum.java
  21. 3
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/GatewayThingVersion.java
  22. 3
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/GatewayTypeEnum.java
  23. 4
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/osd/OsdDeviceTypeEnum.java
  24. 1
      dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/state/StateRouter.java
  25. 2
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java
  26. 2
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceFirmwareController.java
  27. 6
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceHmsController.java
  28. 27
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceLogsController.java
  29. 8
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/LiveStreamController.java
  30. 1
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/WorkspaceController.java
  31. 24
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java
  32. 13
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceFirmwareDTO.java
  33. 3
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceFirmwareNoteDTO.java
  34. 14
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceHmsDTO.java
  35. 11
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceLogsDTO.java
  36. 6
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DevicePayloadDTO.java
  37. 5
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/LiveTypeDTO.java
  38. 10
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java
  39. 7
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceFirmwareEntity.java
  40. 5
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceHmsEntity.java
  41. 8
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceLogsEntity.java
  42. 4
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/enums/DeviceFirmwareStatusEnum.java
  43. 3
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceLogsCreateParam.java
  44. 11
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceFirmwareServiceImpl.java
  45. 13
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceHmsServiceImpl.java
  46. 5
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceLogsServiceImpl.java
  47. 12
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java
  48. 7
      dk-modules/sample/src/main/java/org/dromara/sample/map/controller/DeviceDataController.java
  49. 35
      dk-modules/sample/src/main/java/org/dromara/sample/map/controller/FlightAreaController.java
  50. 9
      dk-modules/sample/src/main/java/org/dromara/sample/map/controller/WorkspaceElementController.java
  51. 6
      dk-modules/sample/src/main/java/org/dromara/sample/map/model/dto/FlightAreaDTO.java
  52. 6
      dk-modules/sample/src/main/java/org/dromara/sample/map/model/dto/FlightAreaWs.java
  53. 6
      dk-modules/sample/src/main/java/org/dromara/sample/map/model/dto/GroupElementDTO.java
  54. 5
      dk-modules/sample/src/main/java/org/dromara/sample/map/model/entity/GroupElementEntity.java
  55. 16
      dk-modules/sample/src/main/java/org/dromara/sample/map/service/impl/FlightAreaServiceImpl.java
  56. 21
      dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java
  57. 26
      dk-modules/sample/src/main/java/org/dromara/sample/media/controller/MediaController.java
  58. 13
      dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileDTO.java
  59. 5
      dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileEntity.java
  60. 3
      dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java
  61. 6
      dk-modules/sample/src/main/java/org/dromara/sample/storage/controller/StorageController.java
  62. 57
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java
  63. 4
      dk-visual/nacos/src/main/resources/application.properties
  64. 2
      pom.xml

12
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java

@ -1,9 +1,9 @@
package org.dromara.common.sdk.cloudapi.device; package org.dromara.common.sdk.cloudapi.device;
import org.dromara.common.sdk.exception.CloudSDKException;
import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import org.dromara.common.sdk.exception.CloudSDKException;
import java.util.Arrays; import java.util.Arrays;
@ -69,6 +69,8 @@ public enum DeviceEnum {
DOCK2(DeviceDomainEnum.DOCK, DeviceTypeEnum.DOCK2, DeviceSubTypeEnum.ZERO), DOCK2(DeviceDomainEnum.DOCK, DeviceTypeEnum.DOCK2, DeviceSubTypeEnum.ZERO),
DOCK3(DeviceDomainEnum.DOCK, DeviceTypeEnum.DOCK3, DeviceSubTypeEnum.ZERO),
M3D(DeviceDomainEnum.DRONE, DeviceTypeEnum.M3D, DeviceSubTypeEnum.ZERO), M3D(DeviceDomainEnum.DRONE, DeviceTypeEnum.M3D, DeviceSubTypeEnum.ZERO),
M3TD(DeviceDomainEnum.DRONE, DeviceTypeEnum.M3D, DeviceSubTypeEnum.ONE), M3TD(DeviceDomainEnum.DRONE, DeviceTypeEnum.M3D, DeviceSubTypeEnum.ONE),
@ -76,6 +78,14 @@ public enum DeviceEnum {
M3D_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M3D_CAMERA, DeviceSubTypeEnum.ZERO), M3D_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M3D_CAMERA, DeviceSubTypeEnum.ZERO),
M3TD_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M3TD_CAMERA, DeviceSubTypeEnum.ZERO), M3TD_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M3TD_CAMERA, DeviceSubTypeEnum.ZERO),
M4D(DeviceDomainEnum.DRONE, DeviceTypeEnum.M4D, DeviceSubTypeEnum.ZERO),
M4TD(DeviceDomainEnum.DRONE, DeviceTypeEnum.M4D, DeviceSubTypeEnum.ONE),
M4D_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M4D_CAMERA, DeviceSubTypeEnum.ZERO),
M4TD_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M4TD_CAMERA, DeviceSubTypeEnum.ZERO),
; ;
@Schema(enumAsRef = true) @Schema(enumAsRef = true)

16
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceTypeEnum.java

@ -1,9 +1,9 @@
package org.dromara.common.sdk.cloudapi.device; package org.dromara.common.sdk.cloudapi.device;
import org.dromara.common.sdk.exception.CloudSDKException;
import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import org.dromara.common.sdk.exception.CloudSDKException;
import java.util.Arrays; import java.util.Arrays;
@ -57,15 +57,29 @@ public enum DeviceTypeEnum {
RC_PRO(144), RC_PRO(144),
M4E_CAMERA(88),
M4M_CAMERA(89),
DOCK(1), DOCK(1),
DOCK2(2), DOCK2(2),
DOCK3(3),
M3D(91), M3D(91),
M3D_CAMERA(80), M3D_CAMERA(80),
M3TD_CAMERA(81), M3TD_CAMERA(81),
M4D(100),
M4D_CAMERA(98),
M4TD_CAMERA(99),
TEST(1767)
; ;
private final int type; private final int type;

4
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/CreateMapElementRequest.java

@ -16,10 +16,10 @@ public class CreateMapElementRequest {
@NotNull @NotNull
@Pattern(regexp = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$") @Pattern(regexp = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$")
@Schema(description = "element id", format = "uuid") @Schema(description = "元素id", format = "uuid")
private String id; private String id;
@Schema(description = "element name", example = "PILOT 1") @Schema(description = "元素name", example = "PILOT 1")
@NotNull @NotNull
private String name; private String name;

16
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/MapElementCreateWsResponse.java

@ -8,6 +8,8 @@ import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import java.util.Date;
/** /**
* @author sean * @author sean
@ -35,14 +37,12 @@ public class MapElementCreateWsResponse extends BaseModel {
@NotNull @NotNull
@Schema(description = "element create time", example = "123456789012") @Schema(description = "element create time", example = "123456789012")
@JsonProperty(value = "create_time") @JsonProperty(value = "create_time")
@Min(123456789012L) private Date createTime;
private Long createTime;
@NotNull @NotNull
@Schema(description = "element update time", example = "123456789012") @Schema(description = "element update time", example = "123456789012")
@JsonProperty(value = "update_time") @JsonProperty(value = "update_time")
@Min(123456789012L) private Date updateTime;
private Long updateTime;
@NotNull @NotNull
@Valid @Valid
@ -81,20 +81,20 @@ public class MapElementCreateWsResponse extends BaseModel {
return this; return this;
} }
public Long getCreateTime() { public Date getCreateTime() {
return createTime; return createTime;
} }
public MapElementCreateWsResponse setCreateTime(Long createTime) { public MapElementCreateWsResponse setCreateTime(Date createTime) {
this.createTime = createTime; this.createTime = createTime;
return this; return this;
} }
public Long getUpdateTime() { public Date getUpdateTime() {
return updateTime; return updateTime;
} }
public MapElementCreateWsResponse setUpdateTime(Long updateTime) { public MapElementCreateWsResponse setUpdateTime(Date updateTime) {
this.updateTime = updateTime; this.updateTime = updateTime;
return this; return this;
} }

16
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/MapElementUpdateWsResponse.java

@ -8,6 +8,8 @@ import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import java.util.Date;
/** /**
* @author sean * @author sean
* @version 1.7 * @version 1.7
@ -34,14 +36,12 @@ public class MapElementUpdateWsResponse extends BaseModel {
@NotNull @NotNull
@Schema(description = "element create time", example = "123456789012") @Schema(description = "element create time", example = "123456789012")
@JsonProperty(value = "create_time") @JsonProperty(value = "create_time")
@Min(123456789012L) private Date createTime;
private Long createTime;
@NotNull @NotNull
@Schema(description = "element update time", example = "123456789012") @Schema(description = "element update time", example = "123456789012")
@JsonProperty(value = "update_time") @JsonProperty(value = "update_time")
@Min(123456789012L) private Date updateTime;
private Long updateTime;
@NotNull @NotNull
@Valid @Valid
@ -80,20 +80,20 @@ public class MapElementUpdateWsResponse extends BaseModel {
return this; return this;
} }
public Long getCreateTime() { public Date getCreateTime() {
return createTime; return createTime;
} }
public MapElementUpdateWsResponse setCreateTime(Long createTime) { public MapElementUpdateWsResponse setCreateTime(Date createTime) {
this.createTime = createTime; this.createTime = createTime;
return this; return this;
} }
public Long getUpdateTime() { public Date getUpdateTime() {
return updateTime; return updateTime;
} }
public MapElementUpdateWsResponse setUpdateTime(Long updateTime) { public MapElementUpdateWsResponse setUpdateTime(Date updateTime) {
this.updateTime = updateTime; this.updateTime = updateTime;
return this; return this;
} }

20
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/MapGroupElement.java

@ -7,6 +7,8 @@ import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import java.util.Date;
/** /**
* @author sean * @author sean
@ -26,16 +28,14 @@ public class MapGroupElement {
private String name; private String name;
@NotNull @NotNull
@Schema(description = "element create time", example = "123456789012") @Schema(description = "element 创建时间", example = "123456789012")
@JsonProperty(value = "create_time") @JsonProperty(value = "create_time")
@Min(123456789012L) private Date createTime;
private Long createTime;
@NotNull @NotNull
@Schema(description = "element update time", example = "123456789012") @Schema(description = "element 更新时间", example = "123456789012")
@JsonProperty(value = "update_time") @JsonProperty(value = "update_time")
@Min(123456789012L) private Date updateTime;
private Long updateTime;
@NotNull @NotNull
@Valid @Valid
@ -73,20 +73,20 @@ public class MapGroupElement {
return this; return this;
} }
public Long getCreateTime() { public Date getCreateTime() {
return createTime; return createTime;
} }
public MapGroupElement setCreateTime(Long createTime) { public MapGroupElement setCreateTime(Date createTime) {
this.createTime = createTime; this.createTime = createTime;
return this; return this;
} }
public Long getUpdateTime() { public Date getUpdateTime() {
return updateTime; return updateTime;
} }
public MapGroupElement setUpdateTime(Long updateTime) { public MapGroupElement setUpdateTime(Date updateTime) {
this.updateTime = updateTime; this.updateTime = updateTime;
return this; return this;
} }

4
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/UpdateMapElementRequest.java

@ -10,10 +10,10 @@ import jakarta.validation.constraints.NotNull;
* @version 0.2 * @version 0.2
* @date 2021/12/1 * @date 2021/12/1
*/ */
@Schema(description = "Update element request data") @Schema(description = "更新元素请求数据")
public class UpdateMapElementRequest { public class UpdateMapElementRequest {
@Schema(description = "element name", example = "PILOT 1") @Schema(description = "元素name", example = "PILOT 1")
@NotNull @NotNull
private String name; private String name;

45
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/map/api/IHttpMapService.java

@ -21,12 +21,14 @@ import java.util.List;
* @version 0.2 * @version 0.2
* @date 2021/11/29 * @date 2021/11/29
*/ */
@Tag(name = "map interface") @Tag(name = "地图界面")
public interface IHttpMapService { public interface IHttpMapService {
String PREFIX = "map/api/v1"; String PREFIX = "map/api/v1";
/** /**
* 在第一次连接中飞行员将发送此 HTTP 请求以获取组元素列表同样如果飞行员从WebSocket接收到组刷新指令
* 它需要相同的接口来请求组元素列表
* In the first connection, pilot will send out this http request to get the group element list. * In the first connection, pilot will send out this http request to get the group element list.
* Also, if pilot receives a group refresh instruction from WebSocket, * Also, if pilot receives a group refresh instruction from WebSocket,
* it needs the same interface to request the group element list. * it needs the same interface to request the group element list.
@ -37,25 +39,23 @@ public interface IHttpMapService {
* @param rsp * @param rsp
* @return * @return
*/ */
@Operation(summary = "get map elements", description = "In the first connection, pilot will send out this http " + @Operation(summary = "获取地图元素", description = "在第一个连接中,试点将发送此http请求以获取组元素列表+此外,如果导引器从“+”WebSocket接收到组刷新指令,则需要相同的接口来请求组元素列表。",
"request to get the group element list. Also, if pilot receives a group refresh instruction from " +
"WebSocket, it needs the same interface to request the group element list.",
parameters = { parameters = {
@Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid")), @Parameter(name = "workspace_id", description = "工作区标识id", schema = @Schema(format = "uuid")),
@Parameter(name = "group_id", description = "element group id. The same element group can contain " + @Parameter(name = "group_id", description = "元素组 ID。同一个元素组可以包含多个地图元素这相当于对地图元素进行分组。" +
"multiple map elements, which is equivalent to grouping map elements. " + "在发起请求时,如果未包含 group_id 参数,服务器需要返回所有地图元素。如果指定了group_id," +
"When initiating the request, if the group id parameter is not included, " + "它只需要返回指定元素组中的元素集", schema = @Schema(format = "uuid")),
"the server needs to return all map elements. If the group id is specified, " + @Parameter(name = "is_distributed", description = "元素组是否已分配:")
"it only needs to return the set of elements in the specified element group", schema = @Schema(format = "uuid")),
@Parameter(name = "is_distributed", description = "Whether the element group is distributed.")
}) })
@GetMapping(PREFIX + "/workspaces/element-groups") @GetMapping(PREFIX + "/workspaces/element-groups")
HttpResultResponse<List<GetMapElementsResponse>> getMapElements( HttpResultResponse<List<GetMapElementsResponse>> getMapElements(
@PathVariable(name = "workspace_id") String workspaceId,
@RequestParam(name = "group_id", required = false) String groupId, @RequestParam(name = "group_id", required = false) String groupId,
@RequestParam(name = "is_distributed", required = false) Boolean isDistributed, @RequestParam(name = "is_distributed", required = false) Boolean isDistributed,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
/** /**
* 当用户在PILOT/Web侧绘制点线或多边形时
* When user draws a point, line or polygon on the PILOT/Web side. * When user draws a point, line or polygon on the PILOT/Web side.
* @param workspaceId * @param workspaceId
* @param groupId * @param groupId
@ -64,14 +64,13 @@ public interface IHttpMapService {
* @param rsp * @param rsp
* @return * @return
*/ */
@Operation(summary = "create map element", description = "When user draws a point, line or polygon on the PILOT/Web side.", @Operation(summary = "创建地图元素", description = "当用户在PILOT/Web侧绘制点、线或多边形时。",
parameters = { parameters = {
@Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid")), @Parameter(name = "workspace_id", description = "工作区标识id", schema = @Schema(format = "uuid")),
@Parameter(name = "group_id", description = "element group id. The same element group can contain " + @Parameter(name = "group_id", description = "元素组ID。同一个元素组可以包含" +
"multiple map elements, which is equivalent to grouping map elements. " + "多个地图元素,这相当于将地图元素分组。" +
"When initiating the request, if the group id parameter is not included, " + "在发起请求时,如果未包含组 ID 参数," +
"the server needs to return all map elements. If the group id is specified, " + "服务器需要返回所有地图元素。如果指定了组ID,“它只需要返回指定元素组中的元素集", schema = @Schema(format = "uuid"))
"it only needs to return the set of elements in the specified element group", schema = @Schema(format = "uuid"))
}) })
@PostMapping(PREFIX + "/workspaces/{workspace_id}/element-groups/{group_id}/elements") @PostMapping(PREFIX + "/workspaces/{workspace_id}/element-groups/{group_id}/elements")
HttpResultResponse<CreateMapElementResponse> createMapElement( HttpResultResponse<CreateMapElementResponse> createMapElement(
@ -82,6 +81,7 @@ public interface IHttpMapService {
/** /**
* 当用户在PILOT/Web侧编辑点线或多边形时
* When user edits a point, line or polygon on the PILOT/Web side. * When user edits a point, line or polygon on the PILOT/Web side.
* @param workspaceId * @param workspaceId
* @param elementId * @param elementId
@ -90,10 +90,10 @@ public interface IHttpMapService {
* @param rsp * @param rsp
* @return * @return
*/ */
@Operation(summary = "update map element", description = "When user edits a point, line or polygon on the PILOT/Web side.", @Operation(summary = "更新地图元素", description = "当用户在PILOT/Web侧编辑点、线或多边形时。",
parameters = { parameters = {
@Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid")), @Parameter(name = "workspace_id", description = "工作区标识id", schema = @Schema(format = "uuid")),
@Parameter(name = "element_id", description = "element id", schema = @Schema(format = "uuid")) @Parameter(name = "element_id", description = "元素 id", schema = @Schema(format = "uuid"))
}) })
@PutMapping(PREFIX + "/workspaces/{workspace_id}/elements/{element_id}") @PutMapping(PREFIX + "/workspaces/{workspace_id}/elements/{element_id}")
HttpResultResponse updateMapElement( HttpResultResponse updateMapElement(
@ -104,12 +104,13 @@ public interface IHttpMapService {
/** /**
* 当用户在PILOT/Web侧删除点线或多边形时
* When user delete a point, line or polygon on the PILOT/Web side. * When user delete a point, line or polygon on the PILOT/Web side.
* @param workspaceId * @param workspaceId
* @param elementId * @param elementId
* @return * @return
*/ */
@Operation(summary = "delete map element", description = "When user delete a point, line or polygon on the PILOT/Web side.", @Operation(summary = "删除map元素", description = "当用户在PILOT/Web侧删除点、线或多边形时。",
parameters = { parameters = {
@Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid")), @Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid")),
@Parameter(name = "element_id", description = "element id", schema = @Schema(format = "uuid")) @Parameter(name = "element_id", description = "element id", schema = @Schema(format = "uuid"))

10
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaUploadCallbackRequest.java

@ -11,7 +11,7 @@ import jakarta.validation.constraints.NotNull;
* @version 0.2 * @version 0.2
* @date 2021/12/7 * @date 2021/12/7
*/ */
@Schema(description = "media fast upload request data") @Schema(description = "媒体快速上传请求数据")
public class MediaUploadCallbackRequest { public class MediaUploadCallbackRequest {
@NotNull @NotNull
@ -19,19 +19,19 @@ public class MediaUploadCallbackRequest {
private MediaFileExtension ext; private MediaFileExtension ext;
@NotNull @NotNull
@Schema(description = "media file fingerprint", example = "7F78C9F1999425CB61F10E1FE206009E") @Schema(description = "媒体文件指纹", example = "7F78C9F1999425CB61F10E1FE206009E")
private String fingerprint; private String fingerprint;
@NotNull @NotNull
@Schema(description = "media file name", example = "DJI_20220831151616_0004_W_Waypoint4.JPG") @Schema(description = "媒体文件明皇朝", example = "DJI_20220831151616_0004_W_Waypoint4.JPG")
private String name; private String name;
@Schema(description = "media file path. This value is empty if the photo was not taken in the wayline.", example = "DJI_202208311455_008_Waypoint1") @Schema(description = "媒体文件地址", example = "DJI_202208311455_008_Waypoint1")
private String path; private String path;
@JsonProperty("object_key") @JsonProperty("object_key")
@NotNull @NotNull
@Schema(description = "The key of the object in the bucket", example = "media/DJI_20220831151616_0004_W_Waypoint4.JPG") @Schema(description = "桶中文件的关链字", example = "media/DJI_20220831151616_0004_W_Waypoint4.JPG")
private String objectKey; private String objectKey;
@Schema(type = "int") @Schema(type = "int")

42
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/api/IHttpMediaService.java

@ -23,26 +23,33 @@ import org.springframework.web.bind.annotation.RequestBody;
* @version 0.2 * @version 0.2
* @date 2021/12/9 * @date 2021/12/9
*/ */
@Tag(name = "media interface") @Tag(name = "媒体接口")
public interface IHttpMediaService { public interface IHttpMediaService {
String PREFIX = "media/api/v1"; String PREFIX = "media/api/v1";
/** /**
* 检查文件是否已通过指纹上传
* Check if the file has been uploaded by the fingerprint. * Check if the file has been uploaded by the fingerprint.
* @param request * @param request
* @param req * @param req
* @param rsp * @param rsp
* @return * @return
*/ */
@Operation(summary = "media fast upload", description = "Check if the file has been uploaded by the fingerprint.") @Operation(summary = "媒体快速上传", description = "检查文件是否已通过指纹上传。",
@PostMapping(PREFIX + "/workspace/fast-upload") parameters = {
@Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid"))
})
@PostMapping(PREFIX + "/workspace/{workspace_id}/fast-upload")
HttpResultResponse mediaFastUpload( HttpResultResponse mediaFastUpload(
@PathVariable(name = "workspace_id") String workspaceId,
@Valid @RequestBody MediaFastUploadRequest request, @Valid @RequestBody MediaFastUploadRequest request,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
/** /**
* 当文件由飞行员上传到存储服务器时
* 通过此接口报告文件的基本信息
* When the file is uploaded to the storage server by pilot, * When the file is uploaded to the storage server by pilot,
* the basic information of the file is reported through this interface. * the basic information of the file is reported through this interface.
* @param request * @param request
@ -50,8 +57,11 @@ public interface IHttpMediaService {
* @param rsp * @param rsp
* @return * @return
*/ */
@Operation(summary = "app reports file upload result", description = "When the file is uploaded to the storage server by pilot, " + @Operation(summary = "应用程序报告文件上传结果", description = "当文件由飞行员上传到存储服务器时, " +
"the basic information of the file is reported through this interface.", "通过此接口报告文件的基本信息。",
parameters = {
@Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid"))
},
responses = @ApiResponse(responseCode = "200", description = "OK", responses = @ApiResponse(responseCode = "200", description = "OK",
content = @Content(mediaType = "application/json", content = @Content(mediaType = "application/json",
examples = {@ExampleObject(name = "responseObjectKey", examples = {@ExampleObject(name = "responseObjectKey",
@ -60,36 +70,46 @@ public interface IHttpMediaService {
value = "{\"code\": 0, \"message\":\"success\", \"data\": \"media/DJI_20220831151616_0004_W_Waypoint4.JPG\"}" value = "{\"code\": 0, \"message\":\"success\", \"data\": \"media/DJI_20220831151616_0004_W_Waypoint4.JPG\"}"
)}))) )})))
@PostMapping(PREFIX + "/workspaces/upload-callback") @PostMapping(PREFIX + "/workspaces/{workspace_id}/upload-callback")
HttpResultResponse<String> mediaUploadCallback( HttpResultResponse<String> mediaUploadCallback(
@PathVariable(name = "workspace_id") String workspaceId,
@Valid @RequestBody MediaUploadCallbackRequest request, @Valid @RequestBody MediaUploadCallbackRequest request,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
/** /**
* 根据工作区ID和微小指纹集合查询此工作区中已存在的文件
* 主体中只有一个 tiny_fingerprint参数
* Query the files that already exist in this workspace based on the workspace id and the collection of tiny fingerprints. * Query the files that already exist in this workspace based on the workspace id and the collection of tiny fingerprints.
* @param request There is only one tiny_fingerprint parameter in the body. * @param request There is only one tiny_fingerprint parameter in the body.
* @param req * @param req
* @param rsp * @param rsp
* @return * @return
*/ */
@Operation(summary = "checks whether the file fingerprint exists", description = "Query the files that already exist in this " + @Operation(summary = "检查文件指纹是否存在", description = "查询已经存在于此处的文件" +
"workspace based on the workspace id and the collection of tiny fingerprints.") "基于工作区ID和微小指纹集合的工作区。", parameters = {
@Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid"))
})
@PostMapping(PREFIX + "/workspaces/{workspace_id}/files/tiny-fingerprints") @PostMapping(PREFIX + "/workspaces/{workspace_id}/files/tiny-fingerprints")
HttpResultResponse<GetFileFingerprintResponse> getExistFileTinyFingerprint( HttpResultResponse<GetFileFingerprintResponse> getExistFileTinyFingerprint(
@PathVariable(name = "workspace_id") String workspaceId,
@Valid @RequestBody GetFileFingerprintRequest request, @Valid @RequestBody GetFileFingerprintRequest request,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
/** /**
* Report the upload status of the media files in the file group in real time. * 实时报告文件组中媒体文件的上传状态
* @param request * @param request
* @param req * @param req
* @param rsp * @param rsp
* @return * @return
*/ */
@Operation(summary = "callback after the file group upload complete", description = "Report the upload status of " + @Operation(summary = "文件组上传完成后回调", description = "报告上传状态" +
"the media files in the file group in real time.") "实时更新文件组中的媒体文件。",
parameters = {
@Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid"))
})
@PostMapping(PREFIX + "/workspaces/{workspace_id}/group-upload-callback") @PostMapping(PREFIX + "/workspaces/{workspace_id}/group-upload-callback")
HttpResultResponse folderUploadCallback( HttpResultResponse folderUploadCallback(
@PathVariable(name = "workspace_id") String workspaceId,
@Valid @RequestBody FolderUploadCallbackRequest request, @Valid @RequestBody FolderUploadCallbackRequest request,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);

12
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/storage/StsCredentialsResponse.java

@ -13,33 +13,33 @@ import jakarta.validation.constraints.Pattern;
* @version 0.2 * @version 0.2
* @date 2021/12/7 * @date 2021/12/7
*/ */
@Schema(description = "Temporary credential data") @Schema(description = "临时凭证数据")
public class StsCredentialsResponse extends BaseModel { public class StsCredentialsResponse extends BaseModel {
@Schema(description = "bucket name", example = "bucket-api") @Schema(description = "bucket桶名称", example = "bucket-api")
@NotNull @NotNull
private String bucket; private String bucket;
@NotNull @NotNull
@Valid @Valid
@Schema(description = "The token data of the temporary credential") @Schema(description = "临时凭证的令牌数据")
private CredentialsToken credentials; private CredentialsToken credentials;
@NotNull @NotNull
@Schema(description = "access domain name for external services", example = "https://oss-cn-hangzhou.aliyuncs.com") @Schema(description = "访问域名以获取外部服务", example = "https://oss-cn-hangzhou.aliyuncs.com")
@Pattern(regexp = "^http[s]?://.*$") @Pattern(regexp = "^http[s]?://.*$")
private String endpoint; private String endpoint;
@NotNull @NotNull
@JsonProperty("object_key_prefix") @JsonProperty("object_key_prefix")
@Schema(description = "The folder path where the object needs to be stored.", example = "files/wayline") @Schema(description = "对象需要存储的目录路径。", example = "files/wayline")
private String objectKeyPrefix; private String objectKeyPrefix;
@NotNull @NotNull
private OssTypeEnum provider; private OssTypeEnum provider;
@NotNull @NotNull
@Schema(description = "The region where the bucket is located.", example = "us-east-1") @Schema(description = "桶所在的区域。", example = "us-east-1")
private String region; private String region;
public StsCredentialsResponse() { public StsCredentialsResponse() {

4
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/storage/api/IHttpStorageService.java

@ -21,17 +21,19 @@ public interface IHttpStorageService {
String PREFIX = "storage/api/v1"; String PREFIX = "storage/api/v1";
/** /**
* 在DJIPilot中获取上传媒体和路线的临时凭据
* Get temporary credentials for uploading the media and wayline in DJI Pilot. * Get temporary credentials for uploading the media and wayline in DJI Pilot.
* @param req * @param req
* @param rsp * @param rsp
* @return * @return
*/ */
@Operation(summary = "Get STS Token", description = "Get temporary credentials for uploading the media and wayline in DJI Pilot.", @Operation(summary = "获取STS、Token", description = "获取临时凭据以在DJl Pilot中上传媒体和路标",
parameters = { parameters = {
@Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid")) @Parameter(name = "workspace_id", description = "workspace id", schema = @Schema(format = "uuid"))
}) })
@PostMapping(PREFIX + "/workspaces/sts") @PostMapping(PREFIX + "/workspaces/sts")
HttpResultResponse<StsCredentialsResponse> getTemporaryCredential( HttpResultResponse<StsCredentialsResponse> getTemporaryCredential(
@PathVariable(name = "workspace_id") String workspaceId,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
} }

6
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/tsa/TopologyList.java

@ -11,14 +11,14 @@ import java.util.List;
* @version 0.2 * @version 0.2
* @date 2021/12/8 * @date 2021/12/8
*/ */
@Schema(description = "device topology list") @Schema(description = "设备拓扑列表")
public class TopologyList { public class TopologyList {
@Schema(description = "drone device topology collection") @Schema(description = "无人机设备拓扑集台")
@NotNull @NotNull
private List<@Valid DeviceTopology> hosts; private List<@Valid DeviceTopology> hosts;
@Schema(description = "gateway device topology collection") @Schema(description = "网关设备拓扑集合")
@NotNull @NotNull
private List<@Valid DeviceTopology> parents; private List<@Valid DeviceTopology> parents;

5
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/tsa/api/IHttpTsaService.java

@ -28,10 +28,7 @@ public interface IHttpTsaService {
* @param rsp * @param rsp
* @return * @return
*/ */
@Operation(summary = "obtain device topology list", description = "Get the topology list of all devices in the current user workspace for pilot display." + @Operation(summary = "获取设备拓扑列表", description = "在第一次连接时,DPilot2将调用此接口以获取当前用户工作区中所有设备的拓扑列表。")
"In the first connection, DJI Pilot 2 will call this interface to obtain the list topology of all devices." +
"Also, when Pilot receives a websocket command to notify the device of online, offline, and update, " +
"it will also call this interface to request the device topology list to be updated.")
@GetMapping(PREFIX + "/workspaces/devices/topologies") @GetMapping(PREFIX + "/workspaces/devices/topologies")
HttpResultResponse<TopologyResponse> obtainDeviceTopologyList( HttpResultResponse<TopologyResponse> obtainDeviceTopologyList(
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);

40
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/GetWaylineListResponse.java

@ -10,6 +10,8 @@ import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size; import jakarta.validation.constraints.Size;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -17,14 +19,14 @@ import java.util.List;
* @version 0.3 * @version 0.3
* @date 2021/12/22 * @date 2021/12/22
*/ */
@Schema(description = "The data of the wayline file.") @Schema(description = "航线文件的数据。")
public class GetWaylineListResponse extends BaseModel { public class GetWaylineListResponse extends BaseModel {
/** /**
* wayline file name * wayline file name
*/ */
@NotNull @NotNull
@Schema(description = "wayline file name", example = "waylineFile") @Schema(description = "航线文件名称", example = "waylineFile")
@Pattern(regexp = "^[^<>:\"/|?*._\\\\]+$") @Pattern(regexp = "^[^<>:\"/|?*._\\\\]+$")
private String name; private String name;
@ -33,7 +35,7 @@ public class GetWaylineListResponse extends BaseModel {
*/ */
@NotNull @NotNull
@Pattern(regexp = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$") @Pattern(regexp = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$")
@Schema(description = "wayline file id", format = "uuid") @Schema(description = "航线文件id", format = "uuid")
private String id; private String id;
/** /**
@ -41,7 +43,7 @@ public class GetWaylineListResponse extends BaseModel {
*/ */
@NotNull @NotNull
@JsonProperty("drone_model_key") @JsonProperty("drone_model_key")
@Schema(description = "drone device product enum", example = "0-67-0") @Schema(description = "无人机设备产品枚举", example = "0-67-0")
private DeviceEnum droneModelKey; private DeviceEnum droneModelKey;
private String sign; private String sign;
@ -52,14 +54,14 @@ public class GetWaylineListResponse extends BaseModel {
@NotNull @NotNull
@Size(min = 1) @Size(min = 1)
@JsonProperty("payload_model_keys") @JsonProperty("payload_model_keys")
@Schema(description = "payload device product enum", example = "[\"1-53-0\"]") @Schema(description = "有效负载设备产品枚举", example = "[\"1-53-0\"]")
private List<DeviceEnum> payloadModelKeys; private List<DeviceEnum> payloadModelKeys;
/** /**
* Is the wayline file favorited? * Is the wayline file favorited?
*/ */
@NotNull @NotNull
@Schema(description = "Is the wayline file favorited?") @Schema(description = "路线文件是否被收藏?")
private Boolean favorited; private Boolean favorited;
/** /**
@ -67,12 +69,12 @@ public class GetWaylineListResponse extends BaseModel {
*/ */
@NotNull @NotNull
@Size(min = 1) @Size(min = 1)
@Schema(description = "wayline template collection", example = "[0]") @Schema(description = "wayline 模板集合", example = "[0]")
@JsonProperty("template_types") @JsonProperty("template_types")
private List<WaylineTypeEnum> templateTypes; private List<WaylineTypeEnum> templateTypes;
@NotNull @NotNull
@Schema(description = "The key of the object in the bucket", example = "wayline/waylineFile.kmz") @Schema(description = "桶中的对象键", example = "wayline/waylineFile.kmz")
@JsonProperty("object_key") @JsonProperty("object_key")
private String objectKey; private String objectKey;
@ -81,29 +83,27 @@ public class GetWaylineListResponse extends BaseModel {
*/ */
@NotNull @NotNull
@JsonProperty("user_name") @JsonProperty("user_name")
@Schema(description = "uploader's username", example = "admin") @Schema(description = "上传者的用户名", example = "admin")
private String username; private String username;
/** /**
* update time (millisecond) * update time (millisecond)
*/ */
@NotNull @NotNull
@Min(123456789012L) @Schema(description = "更新时间(毫秒)。名为`更新时间`的字段必须在表中存在", example = "123456789012")
@Schema(description = "update time (millisecond). The field named `update time` must exist in the table.", example = "123456789012")
@JsonProperty("update_time") @JsonProperty("update_time")
private Long updateTime; private Date updateTime;
/** /**
* create time (millisecond) * create time (millisecond)
*/ */
@NotNull @NotNull
@Min(123456789012L) @Schema(description = "创建时间(毫秒)。名为`创建时间`的字段必须在表中存在。.", example = "123456789012")
@Schema(description = "create time (millisecond). The field named `create time` must exist in the table.", example = "123456789012")
@JsonProperty("create_time") @JsonProperty("create_time")
private Long createTime; private Date createTime;
@JsonProperty("action_type") @JsonProperty("action_type")
@Parameter(name = "action_type", description = "wayline template type collection", example = "1") @Parameter(name = "action_type", description = "路线模板类型集合", example = "1")
private ActionTypeEnum actionType; private ActionTypeEnum actionType;
public GetWaylineListResponse() { public GetWaylineListResponse() {
@ -208,20 +208,20 @@ public class GetWaylineListResponse extends BaseModel {
return this; return this;
} }
public Long getUpdateTime() { public Date getUpdateTime() {
return updateTime; return updateTime;
} }
public GetWaylineListResponse setUpdateTime(Long updateTime) { public GetWaylineListResponse setUpdateTime(Date updateTime) {
this.updateTime = updateTime; this.updateTime = updateTime;
return this; return this;
} }
public Long getCreateTime() { public Date getCreateTime() {
return createTime; return createTime;
} }
public GetWaylineListResponse setCreateTime(Long createTime) { public GetWaylineListResponse setCreateTime(Date createTime) {
this.createTime = createTime; this.createTime = createTime;
return this; return this;
} }

14
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/wayline/api/IHttpWaylineService.java

@ -31,6 +31,8 @@ public interface IHttpWaylineService {
String PREFIX = "wayline/api/v1"; String PREFIX = "wayline/api/v1";
/** /**
* 根据查询条件查询路径文件的基本数据
* Pilot中的查询条件字段是固定的
* Query the basic data of the wayline file according to the query conditions. * Query the basic data of the wayline file according to the query conditions.
* The query condition field in pilot is fixed. * The query condition field in pilot is fixed.
* @param request get waylines params * @param request get waylines params
@ -43,6 +45,7 @@ public interface IHttpWaylineService {
@GetMapping(PREFIX + "/workspaces/waylines") @GetMapping(PREFIX + "/workspaces/waylines")
HttpResultResponse<PaginationData<GetWaylineListResponse>> getWaylineList( HttpResultResponse<PaginationData<GetWaylineListResponse>> getWaylineList(
@Valid @ParameterObject GetWaylineListRequest request, @Valid @ParameterObject GetWaylineListRequest request,
@PathVariable(name = "workspace_id") String workspaceId,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
/** /**
@ -59,6 +62,7 @@ public interface IHttpWaylineService {
@GetMapping(PREFIX + "/workspaces/{workspace_id}/waylines/{wayline_id}/url") @GetMapping(PREFIX + "/workspaces/{workspace_id}/waylines/{wayline_id}/url")
void getWaylineFileDownloadAddress( void getWaylineFileDownloadAddress(
@PathVariable(name = "wayline_id") String waylineId, @PathVariable(name = "wayline_id") String waylineId,
@PathVariable(name = "workspace_id") String workspaceId,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
/** /**
@ -75,8 +79,9 @@ public interface IHttpWaylineService {
parameters = { parameters = {
@Parameter(name = "name", description = "wayline file name", required = true) @Parameter(name = "name", description = "wayline file name", required = true)
}) })
@GetMapping(PREFIX + "/workspaces/waylines/duplicate-names") @GetMapping(PREFIX + "/workspaces/{workspace_id}/waylines/duplicate-names")
HttpResultResponse<List<String>> getDuplicatedWaylineName( HttpResultResponse<List<String>> getDuplicatedWaylineName(
@PathVariable(name = "workspace_id") String workspaceId,
@NotNull @Size(min = 1) @RequestParam(name = "name") List<String> names, @NotNull @Size(min = 1) @RequestParam(name = "name") List<String> names,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
@ -90,8 +95,9 @@ public interface IHttpWaylineService {
*/ */
@Operation(summary = "file upload result report", description = "When the wayline file is uploaded to the " + @Operation(summary = "file upload result report", description = "When the wayline file is uploaded to the " +
"storage server by pilot, the basic information of the file is reported through this interface.") "storage server by pilot, the basic information of the file is reported through this interface.")
@PostMapping(PREFIX + "/workspaces/upload-callback") @PostMapping(PREFIX + "/workspaces/{workspace_id}/upload-callback")
HttpResultResponse fileUploadResultReport( HttpResultResponse fileUploadResultReport(
@PathVariable(name = "workspace_id") String workspaceId,
@Valid @RequestBody WaylineUploadCallbackRequest request, @Valid @RequestBody WaylineUploadCallbackRequest request,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
@ -106,8 +112,9 @@ public interface IHttpWaylineService {
parameters = { parameters = {
@Parameter(name = "id", description = "wayline id", required = true) @Parameter(name = "id", description = "wayline id", required = true)
}) })
@PostMapping(PREFIX + "/workspaces/favorites") @PostMapping(PREFIX + "/workspaces/{workspace_id}/favorites")
HttpResultResponse batchFavoritesWayline( HttpResultResponse batchFavoritesWayline(
@PathVariable(name = "workspace_id") String workspaceId,
@NotNull @Size(min = 1) @RequestParam(name = "id") List<String> ids, @NotNull @Size(min = 1) @RequestParam(name = "id") List<String> ids,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
@ -124,6 +131,7 @@ public interface IHttpWaylineService {
}) })
@DeleteMapping(PREFIX + "/workspaces/{workspace_id}/favorites") @DeleteMapping(PREFIX + "/workspaces/{workspace_id}/favorites")
HttpResultResponse batchUnfavoritesWayline( HttpResultResponse batchUnfavoritesWayline(
@PathVariable(name = "workspace_id") String workspaceId,
@NotNull @Size(min = 1) @RequestParam(name = "id") List<String> ids, @NotNull @Size(min = 1) @RequestParam(name = "id") List<String> ids,
HttpServletRequest req, HttpServletResponse rsp); HttpServletRequest req, HttpServletResponse rsp);
} }

2
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock2ThingVersionEnum.java

@ -1,7 +1,7 @@
package org.dromara.common.sdk.config.version; package org.dromara.common.sdk.config.version;
import org.dromara.common.sdk.exception.CloudSDKVersionException;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import org.dromara.common.sdk.exception.CloudSDKVersionException;
import java.util.Arrays; import java.util.Arrays;

47
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/Dock3ThingVersionEnum.java

@ -0,0 +1,47 @@
package org.dromara.common.sdk.config.version;
import com.fasterxml.jackson.annotation.JsonValue;
import org.dromara.common.sdk.exception.CloudSDKVersionException;
import java.util.Arrays;
/**
* @author sean
* @version 1.7
* @date 2023/9/7
*/
public enum Dock3ThingVersionEnum implements IThingVersion {
V1_1_2("1.1.2", CloudSDKVersionEnum.V1_0_1),
V1_2_0("1.2.0", CloudSDKVersionEnum.V1_0_3),
V1_2_3("1.2.3", CloudSDKVersionEnum.V1_0_3),
V1_3_0("1.3.0", CloudSDKVersionEnum.V1_0_3),
V1_3_1("1.3.1", CloudSDKVersionEnum.V1_3_1),
;
private final String thingVersion;
private final CloudSDKVersionEnum cloudSDKVersion;
Dock3ThingVersionEnum(String thingVersion, CloudSDKVersionEnum cloudSDKVersion) {
this.thingVersion = thingVersion;
this.cloudSDKVersion = cloudSDKVersion;
}
@JsonValue
public String getThingVersion() {
return thingVersion;
}
public CloudSDKVersionEnum getCloudSDKVersion() {
return cloudSDKVersion;
}
public static Dock3ThingVersionEnum find(String thingVersion) {
return Arrays.stream(values()).filter(thingVersionEnum -> thingVersionEnum.thingVersion.equals(thingVersion))
.findAny().orElseThrow(() -> new CloudSDKVersionException(thingVersion));
}
}

4
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DockThingVersionEnum.java

@ -1,7 +1,7 @@
package org.dromara.common.sdk.config.version; package org.dromara.common.sdk.config.version;
import org.dromara.common.sdk.exception.CloudSDKVersionException;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import org.dromara.common.sdk.exception.CloudSDKVersionException;
import java.util.Arrays; import java.util.Arrays;
@ -20,6 +20,8 @@ public enum DockThingVersionEnum implements IThingVersion {
V1_1_3("1.1.3", CloudSDKVersionEnum.V1_0_2), V1_1_3("1.1.3", CloudSDKVersionEnum.V1_0_2),
V1_2_3("1.2.3", CloudSDKVersionEnum.V1_0_3),
; ;
private final String thingVersion; private final String thingVersion;

4
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/DroneThingVersionEnum.java

@ -1,7 +1,7 @@
package org.dromara.common.sdk.config.version; package org.dromara.common.sdk.config.version;
import org.dromara.common.sdk.exception.CloudSDKVersionException;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import org.dromara.common.sdk.exception.CloudSDKVersionException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -25,6 +25,8 @@ public enum DroneThingVersionEnum implements IThingVersion {
V1_2_0("1.2.0", CloudSDKVersionEnum.V1_0_3), V1_2_0("1.2.0", CloudSDKVersionEnum.V1_0_3),
V1_2_3("1.2.3", CloudSDKVersionEnum.V1_0_3),
V1_3_0("1.3.0", CloudSDKVersionEnum.V1_0_3), V1_3_0("1.3.0", CloudSDKVersionEnum.V1_0_3),
V1_3_1("1.3.1", CloudSDKVersionEnum.V1_3_1), V1_3_1("1.3.1", CloudSDKVersionEnum.V1_3_1),

3
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/GatewayThingVersion.java

@ -21,6 +21,9 @@ public class GatewayThingVersion {
case DOCK2: case DOCK2:
this.thingVersion = Dock2ThingVersionEnum.find(thingVersion); this.thingVersion = Dock2ThingVersionEnum.find(thingVersion);
return; return;
case DOCK3:
this.thingVersion = Dock3ThingVersionEnum.find(thingVersion);
return;
case RC: case RC:
this.thingVersion = RcThingVersionEnum.find(thingVersion); this.thingVersion = RcThingVersionEnum.find(thingVersion);
return; return;

3
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/config/version/GatewayTypeEnum.java

@ -1,5 +1,6 @@
package org.dromara.common.sdk.config.version; package org.dromara.common.sdk.config.version;
import org.dromara.common.sdk.cloudapi.device.DeviceEnum; import org.dromara.common.sdk.cloudapi.device.DeviceEnum;
import org.dromara.common.sdk.exception.CloudSDKException; import org.dromara.common.sdk.exception.CloudSDKException;
@ -17,6 +18,8 @@ public enum GatewayTypeEnum {
DOCK(DeviceEnum.DOCK), DOCK(DeviceEnum.DOCK),
DOCK2(DeviceEnum.DOCK2), DOCK2(DeviceEnum.DOCK2),
DOCK3(DeviceEnum.DOCK3),
; ;
private final DeviceEnum[] gateway; private final DeviceEnum[] gateway;

4
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/osd/OsdDeviceTypeEnum.java

@ -22,11 +22,11 @@ public enum OsdDeviceTypeEnum {
RC(true, OsdRemoteControl.class, ChannelName.INBOUND_OSD_RC, GatewayTypeEnum.RC), RC(true, OsdRemoteControl.class, ChannelName.INBOUND_OSD_RC, GatewayTypeEnum.RC),
DOCK(true, OsdDock.class, ChannelName.INBOUND_OSD_DOCK, GatewayTypeEnum.DOCK, GatewayTypeEnum.DOCK2), DOCK(true, OsdDock.class, ChannelName.INBOUND_OSD_DOCK, GatewayTypeEnum.DOCK, GatewayTypeEnum.DOCK2,GatewayTypeEnum.DOCK3),
RC_DRONE(false, OsdRcDrone.class, ChannelName.INBOUND_OSD_RC_DRONE, GatewayTypeEnum.RC), RC_DRONE(false, OsdRcDrone.class, ChannelName.INBOUND_OSD_RC_DRONE, GatewayTypeEnum.RC),
DOCK_DRONE(false, OsdDockDrone.class, ChannelName.INBOUND_OSD_DOCK_DRONE, GatewayTypeEnum.DOCK, GatewayTypeEnum.DOCK2); DOCK_DRONE(false, OsdDockDrone.class, ChannelName.INBOUND_OSD_DOCK_DRONE, GatewayTypeEnum.DOCK, GatewayTypeEnum.DOCK2,GatewayTypeEnum.DOCK3);
private final boolean gateway; private final boolean gateway;

1
dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/state/StateRouter.java

@ -81,6 +81,7 @@ public class StateRouter {
return RcStateDataKeyEnum.find(keys).getClassType(); return RcStateDataKeyEnum.find(keys).getClassType();
case DOCK: case DOCK:
case DOCK2: case DOCK2:
case DOCK3:
return DockStateDataKeyEnum.find(keys).getClassType(); return DockStateDataKeyEnum.find(keys).getClassType();
default: default:
throw new CloudSDKException(CloudSDKErrorEnum.WRONG_DATA, "Unexpected value: " + SDKManager.getDeviceSDK(gatewaySn).getType()); throw new CloudSDKException(CloudSDKErrorEnum.WRONG_DATA, "Unexpected value: " + SDKManager.getDeviceSDK(gatewaySn).getType());

2
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java

@ -2,6 +2,7 @@ package org.dromara.sample.manage.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
@ -30,6 +31,7 @@ import java.util.Optional;
@RestController @RestController
@Slf4j @Slf4j
@RequestMapping("${url.manage.prefix}${url.manage.version}/devices") @RequestMapping("${url.manage.prefix}${url.manage.version}/devices")
@Tag(name = "无人机设备模块")
public class DeviceController { public class DeviceController {
@Autowired @Autowired

2
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceFirmwareController.java

@ -1,6 +1,7 @@
package org.dromara.sample.manage.controller; package org.dromara.sample.manage.controller;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -33,6 +34,7 @@ import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("${url.manage.prefix}${url.manage.version}/workspaces") @RequestMapping("${url.manage.prefix}${url.manage.version}/workspaces")
@Validated @Validated
@Tag(name = "无人机设备固件模块")
public class DeviceFirmwareController { public class DeviceFirmwareController {
@Autowired @Autowired

6
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceHmsController.java

@ -1,5 +1,7 @@
package org.dromara.sample.manage.controller; package org.dromara.sample.manage.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.HttpResultResponse;
import org.dromara.common.sdk.common.PaginationData; import org.dromara.common.sdk.common.PaginationData;
import org.dromara.sample.manage.model.dto.DeviceHmsDTO; import org.dromara.sample.manage.model.dto.DeviceHmsDTO;
@ -22,6 +24,7 @@ import java.util.Set;
@RestController @RestController
@Slf4j @Slf4j
@RequestMapping("${url.manage.prefix}${url.manage.version}/devices") @RequestMapping("${url.manage.prefix}${url.manage.version}/devices")
@Tag(name = "无人机设备hms模块")
public class DeviceHmsController { public class DeviceHmsController {
@Autowired @Autowired
@ -33,6 +36,7 @@ public class DeviceHmsController {
* @return * @return
*/ */
@GetMapping("/{workspace_id}/devices/hms") @GetMapping("/{workspace_id}/devices/hms")
@Operation(summary = "分页查询设备hms信息的页面。", description = "分页查询设备hms信息的页面。")
public HttpResultResponse<PaginationData<DeviceHmsDTO>> getHmsInformation( @PathVariable("workspace_id") String workspaceId,DeviceHmsQueryParam param) { public HttpResultResponse<PaginationData<DeviceHmsDTO>> getHmsInformation( @PathVariable("workspace_id") String workspaceId,DeviceHmsQueryParam param) {
PaginationData<DeviceHmsDTO> devices = deviceHmsService.getDeviceHmsByParam(param); PaginationData<DeviceHmsDTO> devices = deviceHmsService.getDeviceHmsByParam(param);
@ -45,6 +49,7 @@ public class DeviceHmsController {
* @param deviceSn * @param deviceSn
* @return * @return
*/ */
@Operation(summary = "将未读hms消息更新为已读状态。", description = "将未读hms消息更新为已读状态。")
@PutMapping("/{workspace_id}/devices/hms/{device_sn}") @PutMapping("/{workspace_id}/devices/hms/{device_sn}")
public HttpResultResponse updateReadHmsByDeviceSn(@PathVariable("device_sn") String deviceSn) { public HttpResultResponse updateReadHmsByDeviceSn(@PathVariable("device_sn") String deviceSn) {
deviceHmsService.updateUnreadHms(deviceSn); deviceHmsService.updateUnreadHms(deviceSn);
@ -57,6 +62,7 @@ public class DeviceHmsController {
* @param deviceSn * @param deviceSn
* @return * @return
*/ */
@Operation(summary = "获取单个设备的hms消息。", description = "获取单个设备的hms消息。")
@GetMapping("/{workspace_id}/devices/hms/{device_sn}") @GetMapping("/{workspace_id}/devices/hms/{device_sn}")
public HttpResultResponse<List<DeviceHmsDTO>> getUnreadHmsByDeviceSn(@PathVariable("device_sn") String deviceSn) { public HttpResultResponse<List<DeviceHmsDTO>> getUnreadHmsByDeviceSn(@PathVariable("device_sn") String deviceSn) {
PaginationData<DeviceHmsDTO> paginationData = deviceHmsService.getDeviceHmsByParam( PaginationData<DeviceHmsDTO> paginationData = deviceHmsService.getDeviceHmsByParam(

27
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceLogsController.java

@ -1,5 +1,7 @@
package org.dromara.sample.manage.controller; package org.dromara.sample.manage.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
@ -29,6 +31,7 @@ import java.net.URL;
@RestController @RestController
@Slf4j @Slf4j
@RequestMapping("${url.manage.prefix}${url.manage.version}/workspaces") @RequestMapping("${url.manage.prefix}${url.manage.version}/workspaces")
@Tag(name = "无人机设备日志模块")
public class DeviceLogsController { public class DeviceLogsController {
@Autowired @Autowired
@ -42,6 +45,7 @@ public class DeviceLogsController {
* @return * @return
*/ */
@GetMapping("/devices/{device_sn}/logs-uploaded") @GetMapping("/devices/{device_sn}/logs-uploaded")
@Operation(summary = "根据查询参数分页获取设备上传日志列表。", description = "根据查询参数分页获取设备上传日志列表。")
public HttpResultResponse getUploadedLogs(DeviceLogsQueryParam param, public HttpResultResponse getUploadedLogs(DeviceLogsQueryParam param,
@PathVariable("device_sn") String deviceSn) { @PathVariable("device_sn") String deviceSn) {
PaginationData<DeviceLogsDTO> data = deviceLogsService.getUploadedLogs(deviceSn, param); PaginationData<DeviceLogsDTO> data = deviceLogsService.getUploadedLogs(deviceSn, param);
@ -55,8 +59,9 @@ public class DeviceLogsController {
* @param param * @param param
* @return * @return
*/ */
@GetMapping("/devices/{device_sn}/logs") @Operation(summary = "获取可以实时上传的日志文件列表。", description = "获取可以实时上传的日志文件列表。")
public HttpResultResponse getLogsBySn( @GetMapping("/{workspace_id}/devices/{device_sn}/logs")
public HttpResultResponse getLogsBySn(@PathVariable("workspace_id") String workspaceId,
@PathVariable("device_sn") String deviceSn, @PathVariable("device_sn") String deviceSn,
DeviceLogsGetParam param) { DeviceLogsGetParam param) {
return deviceLogsService.getRealTimeLogs(deviceSn, param.getDomainList()); return deviceLogsService.getRealTimeLogs(deviceSn, param.getDomainList());
@ -67,8 +72,9 @@ public class DeviceLogsController {
* Initiate a log upload request to the gateway. * Initiate a log upload request to the gateway.
* @return * @return
*/ */
@Operation(summary = "向网关发起日志上传请求。", description = "向网关发起日志上传请求。")
@PostMapping("/{workspace_id}/devices/{device_sn}/logs") @PostMapping("/{workspace_id}/devices/{device_sn}/logs")
public HttpResultResponse uploadLogs(@PathVariable("device_sn") String deviceSn, public HttpResultResponse uploadLogs(@PathVariable("workspace_id") String workspaceId,@PathVariable("device_sn") String deviceSn,
HttpServletRequest request, @RequestBody DeviceLogsCreateParam param) { HttpServletRequest request, @RequestBody DeviceLogsCreateParam param) {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
@ -80,8 +86,9 @@ public class DeviceLogsController {
* Cancel logs file upload. * Cancel logs file upload.
* @return * @return
*/ */
@DeleteMapping("/devices/{device_sn}/logs") @Operation(summary = "取消日志文件上传。", description = "取消日志文件上传。")
public HttpResultResponse cancelUploadedLogs(@PathVariable("device_sn") String deviceSn, @DeleteMapping("/{workspace_id}/devices/{device_sn}/logs")
public HttpResultResponse cancelUploadedLogs(@PathVariable("workspace_id") String workspaceId,@PathVariable("device_sn") String deviceSn,
@RequestBody FileUploadUpdateRequest param) { @RequestBody FileUploadUpdateRequest param) {
return deviceLogsService.pushUpdateFile(deviceSn, param); return deviceLogsService.pushUpdateFile(deviceSn, param);
@ -91,8 +98,9 @@ public class DeviceLogsController {
* 删除上传历史记录 * 删除上传历史记录
* @return * @return
*/ */
@DeleteMapping("/devices/{device_sn}/logs/{logs_id}") @Operation(summary = "删除上传历史记录。", description = "删除上传历史记录。")
public HttpResultResponse deleteUploadedLogs(@PathVariable("device_sn") String deviceSn, @DeleteMapping("/{workspace_id}/devices/{device_sn}/logs/{logs_id}")
public HttpResultResponse deleteUploadedLogs(@PathVariable("workspace_id") String workspaceId,@PathVariable("device_sn") String deviceSn,
@PathVariable("logs_id") String logsId) { @PathVariable("logs_id") String logsId) {
deviceLogsService.deleteLogs(deviceSn, logsId); deviceLogsService.deleteLogs(deviceSn, logsId);
return HttpResultResponse.success(); return HttpResultResponse.success();
@ -106,8 +114,9 @@ public class DeviceLogsController {
* @param logsId * @param logsId
* @param response * @param response
*/ */
@GetMapping("/logs/{logs_id}/url/{file_id}") @Operation(summary = "根据航线文件id查询文件的下载地址。", description = "根据航线文件id查询文件的下载地址。")
public HttpResultResponse getFileUrl(@PathVariable(name = "file_id") String fileId, @GetMapping("/{workspace_id}/logs/{logs_id}/url/{file_id}")
public HttpResultResponse getFileUrl(@PathVariable(name = "workspace_id") String workspaceId,@PathVariable(name = "file_id") String fileId,
@PathVariable(name = "logs_id") String logsId, HttpServletResponse response) { @PathVariable(name = "logs_id") String logsId, HttpServletResponse response) {
try { try {

8
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/LiveStreamController.java

@ -1,5 +1,7 @@
package org.dromara.sample.manage.controller; package org.dromara.sample.manage.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.HttpResultResponse;
@ -23,6 +25,7 @@ import java.util.List;
@RestController @RestController
@Slf4j @Slf4j
@RequestMapping("${url.manage.prefix}${url.manage.version}/live") @RequestMapping("${url.manage.prefix}${url.manage.version}/live")
@Tag(name = "无人机直播模块")
public class LiveStreamController { public class LiveStreamController {
@Autowired @Autowired
@ -38,6 +41,7 @@ public class LiveStreamController {
* @return live capability 实时 * @return live capability 实时
*/ */
@GetMapping("/capacity") @GetMapping("/capacity")
@Operation(summary = "当前用户工作区中所有无人机的实时能力数据。", description = "当前用户工作区中所有无人机的实时能力数据。")
public HttpResultResponse<List<CapacityDeviceDTO>> getLiveCapacity(HttpServletRequest request) { public HttpResultResponse<List<CapacityDeviceDTO>> getLiveCapacity(HttpServletRequest request) {
// Get information about the current user. // Get information about the current user.
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
@ -53,6 +57,7 @@ public class LiveStreamController {
* @return * @return
*/ */
@PostMapping("/streams/start") @PostMapping("/streams/start")
@Operation(summary = "启用直播", description = "启用直播")
public HttpResultResponse liveStart(@RequestBody LiveTypeDTO liveParam) { public HttpResultResponse liveStart(@RequestBody LiveTypeDTO liveParam) {
return liveStreamService.liveStart(liveParam); return liveStreamService.liveStart(liveParam);
} }
@ -64,6 +69,7 @@ public class LiveStreamController {
* @return * @return
*/ */
@PostMapping("/streams/stop") @PostMapping("/streams/stop")
@Operation(summary = "停止直播", description = "停止直播")
public HttpResultResponse liveStop(@RequestBody LiveTypeDTO liveParam) { public HttpResultResponse liveStop(@RequestBody LiveTypeDTO liveParam) {
return liveStreamService.liveStop(liveParam.getVideoId()); return liveStreamService.liveStop(liveParam.getVideoId());
} }
@ -75,11 +81,13 @@ public class LiveStreamController {
* @return * @return
*/ */
@PostMapping("/streams/update") @PostMapping("/streams/update")
@Operation(summary = "设置直播流的质量", description = "设置直播流的质量")
public HttpResultResponse liveSetQuality(@RequestBody LiveTypeDTO liveParam) { public HttpResultResponse liveSetQuality(@RequestBody LiveTypeDTO liveParam) {
return liveStreamService.liveSetQuality(liveParam); return liveStreamService.liveSetQuality(liveParam);
} }
@PostMapping("/streams/switch") @PostMapping("/streams/switch")
@Operation(summary = "设置直播流的广角、变焦、红外", description = "设置直播流的广角、变焦、红外")
public HttpResultResponse liveLensChange(@RequestBody LiveTypeDTO liveParam) { public HttpResultResponse liveLensChange(@RequestBody LiveTypeDTO liveParam) {
return liveStreamService.liveLensChange(liveParam); return liveStreamService.liveLensChange(liveParam);
} }

1
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/WorkspaceController.java

@ -28,6 +28,7 @@ import java.util.Optional;
*/ */
@RestController @RestController
@RequestMapping("${url.manage.prefix}${url.manage.version}/workspaces") @RequestMapping("${url.manage.prefix}${url.manage.version}/workspaces")
@Tag(name = "无人机工作区模块")
public class WorkspaceController extends BaseController { public class WorkspaceController extends BaseController {
@Autowired @Autowired

24
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceDTO.java

@ -1,5 +1,6 @@
package org.dromara.sample.manage.model.dto; package org.dromara.sample.manage.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import org.dromara.common.sdk.cloudapi.device.ControlSourceEnum; import org.dromara.common.sdk.cloudapi.device.ControlSourceEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceDomainEnum; import org.dromara.common.sdk.cloudapi.device.DeviceDomainEnum;
import org.dromara.common.sdk.cloudapi.device.DeviceSubTypeEnum; import org.dromara.common.sdk.cloudapi.device.DeviceSubTypeEnum;
@ -26,51 +27,70 @@ import java.util.List;
@Builder @Builder
public class DeviceDTO { public class DeviceDTO {
@Schema(description = "设备SN:机场dock, 无人机drone, 遥控器remote_control")
private String deviceSn; private String deviceSn;
@Schema(description = "设备名称:此参数对应于设备字典表中的设备名称。")
private String deviceName; private String deviceName;
@Schema(description = "当前设备所属的工作区。")
private String workspaceId; private String workspaceId;
@Schema(description = "无人机的控制,A控制或B控制。。")
private ControlSourceEnum controlSource; private ControlSourceEnum controlSource;
@Schema(description = "备注。")
private String deviceDesc; private String deviceDesc;
@Schema(description = "飞机设备SN")
private String childDeviceSn; private String childDeviceSn;
@Schema(description = "此参数对应于设备字典表中的域。")
private DeviceDomainEnum domain; private DeviceDomainEnum domain;
@Schema(description = "此参数对应于设备字典表中的设备类型。")
private DeviceTypeEnum type; private DeviceTypeEnum type;
@Schema(description = "此参数对应于设备字典表中的子类型。")
private DeviceSubTypeEnum subType; private DeviceSubTypeEnum subType;
@Schema(description = "有效负载信息")
private List<DevicePayloadDTO> payloadsList; private List<DevicePayloadDTO> payloadsList;
private DeviceIconUrl iconUrl; private DeviceIconUrl iconUrl;
@Schema(description = "确定设备是否在线")
private Boolean status; private Boolean status;
@Schema(description = "设备绑定到工作区时的状态。1:绑定;0:未绑定;")
private Boolean boundStatus; private Boolean boundStatus;
@Schema(description = "最后一次设备登录的时间。")
private LocalDateTime loginTime; private LocalDateTime loginTime;
@Schema(description = "设备绑定到工作区的时间。")
private LocalDateTime boundTime; private LocalDateTime boundTime;
@Schema(description = "设备自定义名称")
private String nickname; private String nickname;
private String userId; @Schema(description = "设备的固件版本")
private String firmwareVersion; private String firmwareVersion;
@Schema(description = "工作区名称")
private String workspaceName; private String workspaceName;
@Schema(description = "无人机信息")
private DeviceDTO children; private DeviceDTO children;
@Schema(description = "设备的固件版本升级状态")
private DeviceFirmwareStatusEnum firmwareStatus; private DeviceFirmwareStatusEnum firmwareStatus;
@Schema(description = "升级的阶段")
private Integer firmwareProgress; private Integer firmwareProgress;
private String parentSn; private String parentSn;
@Schema(description = "设备枚举")
private String thingVersion; private String thingVersion;
} }

13
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceFirmwareDTO.java

@ -1,11 +1,13 @@
package org.dromara.sample.manage.model.dto; package org.dromara.sample.manage.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -19,27 +21,36 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
public class DeviceFirmwareDTO { public class DeviceFirmwareDTO {
@Schema(description = "固件uuid")
private String firmwareId; private String firmwareId;
@Schema(description = "固件包的文件名,包括文件后缀")
private String fileName; private String fileName;
@Schema(description = "根据官方固件版本进行格式化。00.00.0000")
private String productVersion; private String productVersion;
@Schema(description = "桶中固件包的对象键。")
private String objectKey; private String objectKey;
@Schema(description = "固件包的大小。")
private Long fileSize; private Long fileSize;
private String fileMd5; private String fileMd5;
private List<String> deviceName; private List<String> deviceName;
@Schema(description = "固件包的发布说明。")
private String releaseNote; private String releaseNote;
private LocalDate releasedTime; @Schema(description = "固件包的发布日期。")
private Date releasedTime;
@Schema(description = "固件包的可用性。1:可用;0:不可用")
private Boolean firmwareStatus; private Boolean firmwareStatus;
private String workspaceId; private String workspaceId;
@Schema(description = "创建人姓名")
private String username; private String username;
} }

3
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceFirmwareNoteDTO.java

@ -6,6 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date;
/** /**
* @author sean * @author sean
@ -24,5 +25,5 @@ public class DeviceFirmwareNoteDTO {
private String releaseNote; private String releaseNote;
private LocalDate releasedTime; private Date releasedTime;
} }

14
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceHmsDTO.java

@ -1,11 +1,13 @@
package org.dromara.sample.manage.model.dto; package org.dromara.sample.manage.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
/** /**
* @author sean * @author sean
@ -20,25 +22,33 @@ public class DeviceHmsDTO implements Cloneable {
private String hmsId; private String hmsId;
@Schema(description = "设备报告 HMS 消息时的tid。")
private String tid; private String tid;
@Schema(description = "当设备报告 hms消息时的bid")
private String bid; private String bid;
@Schema(description = "SN码")
private String sn; private String sn;
@Schema(description = "HMS等级。0:注意;1:警告;2:警告")
private Integer level; private Integer level;
@Schema(description = "哪个模块的消息。0:飞行任务;1:设备管理;2:媒体;3:HMS")
private Integer module; private Integer module;
@Schema(description = "Hms消息的密钥,根据该密钥获取消息文本。")
private String key; private String key;
@Schema(description = "Chinese 异常日志")
private String messageZh; private String messageZh;
@Schema(description = "English 异常日志")
private String messageEn; private String messageEn;
private LocalDateTime createTime; private Date createTime;
private LocalDateTime updateTime; private Date updateTime;
@Override @Override
public DeviceHmsDTO clone() { public DeviceHmsDTO clone() {

11
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DeviceLogsDTO.java

@ -1,5 +1,6 @@
package org.dromara.sample.manage.model.dto; package org.dromara.sample.manage.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -7,6 +8,7 @@ import lombok.NoArgsConstructor;
import org.dromara.common.sdk.cloudapi.tsa.TopologyList; import org.dromara.common.sdk.cloudapi.tsa.TopologyList;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -22,18 +24,23 @@ public class DeviceLogsDTO {
private String logsId; private String logsId;
private LocalDateTime happenTime; @Schema(description = "日志记录问题发生的时间。")
private Date happenTime;
@Schema(description = "创建人")
private String userName; private String userName;
private String logsInformation; private String logsInformation;
private LocalDateTime createTime; private Date createTime;
@Schema(description = "1:上传中;2:完成;3:取消;4:失败;")
private Integer status; private Integer status;
@Schema(description = "设备拓扑列表")
private TopologyList deviceTopo; private TopologyList deviceTopo;
@Schema(description = "日志进度")
private List<LogsProgressDTO> logsProgress; private List<LogsProgressDTO> logsProgress;
private LogsFileUploadListDTO deviceLogs; private LogsFileUploadListDTO deviceLogs;

6
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DevicePayloadDTO.java

@ -1,5 +1,6 @@
package org.dromara.sample.manage.model.dto; package org.dromara.sample.manage.model.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -18,15 +19,20 @@ import org.dromara.common.sdk.cloudapi.device.PayloadIndex;
@AllArgsConstructor @AllArgsConstructor
public class DevicePayloadDTO { public class DevicePayloadDTO {
@Schema(description = "设备有效载荷的sn值。")
private String payloadSn; private String payloadSn;
@Schema(description = "载荷模型。此参数对应于设备字典表中的设备名称。")
private String payloadName; private String payloadName;
@Schema(description = "有效载荷在设备上的位置。")
private Integer index; private Integer index;
private String payloadDesc; private String payloadDesc;
@Schema(description = "控制状态A控B控")
private ControlSourceEnum controlSource; private ControlSourceEnum controlSource;
@Schema(description = "有效载荷在设备上的位置。")
private PayloadIndex payloadIndex; private PayloadIndex payloadIndex;
} }

5
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/LiveTypeDTO.java

@ -2,6 +2,7 @@ package org.dromara.sample.manage.model.dto;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.dromara.common.sdk.cloudapi.device.VideoId; import org.dromara.common.sdk.cloudapi.device.VideoId;
import org.dromara.common.sdk.cloudapi.livestream.LensChangeVideoTypeEnum; import org.dromara.common.sdk.cloudapi.livestream.LensChangeVideoTypeEnum;
@ -17,15 +18,19 @@ import org.dromara.common.sdk.cloudapi.livestream.VideoQualityEnum;
@Data @Data
public class LiveTypeDTO { public class LiveTypeDTO {
@Schema(description = "直播协议类型(1:RTMP,2:GB28181,4:WebRTC)")
@JsonProperty("url_type") @JsonProperty("url_type")
private UrlTypeEnum urlType; private UrlTypeEnum urlType;
@Schema(description = "直播视频流的ID({sn}/{camera_index}/{video_index})")
@JsonProperty("video_id") @JsonProperty("video_id")
private VideoId videoId; private VideoId videoId;
@Schema(description = "直播质量(0:自适应,1:流畅,2:标清,3:高清,4:超清)")
@JsonProperty("video_quality") @JsonProperty("video_quality")
private VideoQualityEnum videoQuality; private VideoQualityEnum videoQuality;
@Schema(description = "镜头参数(wide:广角,zoom:变焦,ir:红外)")
private LensChangeVideoTypeEnum videoType; private LensChangeVideoTypeEnum videoType;
} }

10
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java

@ -5,8 +5,11 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
/** /**
@ -68,9 +71,6 @@ public class DeviceEntity implements Serializable {
@TableField(value = "url_select") @TableField(value = "url_select")
private String urlSelect; private String urlSelect;
@TableField(value = "user_id")
private String userId;
@TableField(value = "nickname") @TableField(value = "nickname")
private String nickname; private String nickname;
@ -84,9 +84,9 @@ public class DeviceEntity implements Serializable {
private Boolean boundStatus; private Boolean boundStatus;
@TableField(value = "bound_time") @TableField(value = "bound_time")
private Long boundTime; private LocalDateTime boundTime;
@TableField(value = "login_time") @TableField(value = "login_time")
private Long loginTime; private LocalDateTime loginTime;
} }

7
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceFirmwareEntity.java

@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* @author sean * @author sean
@ -50,7 +51,7 @@ public class DeviceFirmwareEntity implements Serializable {
private String releaseNote; private String releaseNote;
@TableField("release_date") @TableField("release_date")
private Long releaseDate; private Date releaseDate;
@TableField("status") @TableField("status")
private Boolean status; private Boolean status;
@ -62,9 +63,9 @@ public class DeviceFirmwareEntity implements Serializable {
private String username; private String username;
@TableField(value = "create_time", fill = FieldFill.INSERT) @TableField(value = "create_time", fill = FieldFill.INSERT)
private Long createTime; private Date createTime;
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime; private Date updateTime;
} }

5
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceHmsEntity.java

@ -10,6 +10,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* @author sean * @author sean
@ -56,10 +57,10 @@ public class DeviceHmsEntity implements Serializable, Cloneable {
private String messageEn; private String messageEn;
@TableField("create_time") @TableField("create_time")
private Long createTime; private Date createTime;
@TableField("update_time") @TableField("update_time")
private Long updateTime; private Date updateTime;
@Override @Override
public DeviceHmsEntity clone() { public DeviceHmsEntity clone() {

8
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceLogsEntity.java

@ -7,6 +7,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/** /**
* @author sean * @author sean
@ -38,15 +40,15 @@ public class DeviceLogsEntity implements Serializable {
private String deviceSn; private String deviceSn;
@TableField("happen_time") @TableField("happen_time")
private Long happenTime; private Date happenTime;
@TableField("status") @TableField("status")
private Integer status; private Integer status;
@TableField(value = "create_time", fill = FieldFill.INSERT) @TableField(value = "create_time", fill = FieldFill.INSERT)
private Long createTime; private Date createTime;
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime; private Date updateTime;
} }

4
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/enums/DeviceFirmwareStatusEnum.java

@ -14,21 +14,25 @@ import java.util.Arrays;
public enum DeviceFirmwareStatusEnum { public enum DeviceFirmwareStatusEnum {
/** /**
* 不需要升级
* no need to upgrade * no need to upgrade
*/ */
NOT_UPGRADE(1), NOT_UPGRADE(1),
/** /**
* 需要升级
* to upgraded * to upgraded
*/ */
NORMAL_UPGRADE(2), NORMAL_UPGRADE(2),
/** /**
* 需要一致性升级
* A consistency upgrade is required. * A consistency upgrade is required.
*/ */
CONSISTENT_UPGRADE(3), CONSISTENT_UPGRADE(3),
/** /**
* 升级期间
* during upgrade * during upgrade
*/ */
UPGRADING(4), UPGRADING(4),

3
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceLogsCreateParam.java

@ -3,6 +3,7 @@ package org.dromara.sample.manage.model.param;
import lombok.Data; import lombok.Data;
import org.dromara.common.sdk.cloudapi.log.FileUploadStartFile; import org.dromara.common.sdk.cloudapi.log.FileUploadStartFile;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -15,7 +16,7 @@ public class DeviceLogsCreateParam {
private String logsInformation; private String logsInformation;
private Long happenTime; private Date happenTime;
private List<FileUploadStartFile> files; private List<FileUploadStartFile> files;
} }

11
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceFirmwareServiceImpl.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.core.OssClient;
import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.oss.factory.OssFactory;
import org.dromara.common.redis.config.RedisConst; import org.dromara.common.redis.config.RedisConst;
@ -268,9 +269,7 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement
date = date.substring(0, index); date = date.substring(0, index);
} }
return Optional.of(DeviceFirmwareDTO.builder() return Optional.of(DeviceFirmwareDTO.builder()
.releasedTime(LocalDate.parse( .releasedTime(DateUtils.dateTime(FirmwareFileProperties.FILENAME_RELEASE_DATE_FORMAT,date) )
date,
DateTimeFormatter.ofPattern(FirmwareFileProperties.FILENAME_RELEASE_DATE_FORMAT)))
// delete the string v. // delete the string v.
.productVersion(filenameArr[FirmwareFileProperties.FILENAME_VERSION_INDEX].substring(1)) .productVersion(filenameArr[FirmwareFileProperties.FILENAME_VERSION_INDEX].substring(1))
.build()); .build());
@ -296,7 +295,7 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement
.firmwareVersion(dto.getProductVersion()) .firmwareVersion(dto.getProductVersion())
.objectKey(dto.getObjectKey()) .objectKey(dto.getObjectKey())
.releaseDate(Objects.nonNull(dto.getReleasedTime()) ? .releaseDate(Objects.nonNull(dto.getReleasedTime()) ?
dto.getReleasedTime().atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli() : null) dto.getReleasedTime() : null)
.releaseNote(dto.getReleaseNote()) .releaseNote(dto.getReleaseNote())
.status(dto.getFirmwareStatus()) .status(dto.getFirmwareStatus())
.workspaceId(dto.getWorkspaceId()) .workspaceId(dto.getWorkspaceId())
@ -311,7 +310,7 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement
return DeviceFirmwareNoteDTO.builder() return DeviceFirmwareNoteDTO.builder()
.deviceName(entity.getDeviceName()) .deviceName(entity.getDeviceName())
.productVersion(entity.getFirmwareVersion()) .productVersion(entity.getFirmwareVersion())
.releasedTime(LocalDate.ofInstant(Instant.ofEpochMilli(entity.getReleaseDate()), ZoneId.systemDefault())) .releasedTime(entity.getReleaseDate())
.releaseNote(entity.getReleaseNote()) .releaseNote(entity.getReleaseNote())
.build(); .build();
} }
@ -328,7 +327,7 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement
.firmwareId(entity.getFirmwareId()) .firmwareId(entity.getFirmwareId())
.fileName(entity.getFileName()) .fileName(entity.getFileName())
.productVersion(entity.getFirmwareVersion()) .productVersion(entity.getFirmwareVersion())
.releasedTime(LocalDate.ofInstant(Instant.ofEpochMilli(entity.getReleaseDate()), ZoneId.systemDefault())) .releasedTime(entity.getReleaseDate())
.releaseNote(entity.getReleaseNote()) .releaseNote(entity.getReleaseNote())
.firmwareStatus(entity.getStatus()) .firmwareStatus(entity.getStatus())
.workspaceId(entity.getWorkspaceId()) .workspaceId(entity.getWorkspaceId())

13
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceHmsServiceImpl.java

@ -1,8 +1,10 @@
package org.dromara.sample.manage.service.impl; package org.dromara.sample.manage.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.sdk.cloudapi.device.DeviceDomainEnum; import org.dromara.common.sdk.cloudapi.device.DeviceDomainEnum;
import org.dromara.common.sdk.cloudapi.hms.*; import org.dromara.common.sdk.cloudapi.hms.*;
import org.dromara.common.sdk.cloudapi.hms.api.AbstractHmsService; import org.dromara.common.sdk.cloudapi.hms.api.AbstractHmsService;
@ -71,8 +73,8 @@ public class DeviceHmsServiceImpl extends AbstractHmsService implements IDeviceH
DeviceHmsEntity entity = DeviceHmsEntity.builder() DeviceHmsEntity entity = DeviceHmsEntity.builder()
.bid(response.getBid()) .bid(response.getBid())
.tid(response.getTid()) .tid(response.getTid())
.createTime(response.getTimestamp()) .createTime(new Date(response.getTimestamp()))
.updateTime(0L) .updateTime(null)
.sn(sn) .sn(sn)
.build(); .build();
// Query all unread hms messages of the device in redis. // Query all unread hms messages of the device in redis.
@ -134,7 +136,7 @@ public class DeviceHmsServiceImpl extends AbstractHmsService implements IDeviceH
@Override @Override
public void updateUnreadHms(String deviceSn) { public void updateUnreadHms(String deviceSn) {
mapper.update(DeviceHmsEntity.builder().updateTime(System.currentTimeMillis()).build(), mapper.update(DeviceHmsEntity.builder().updateTime(new Date()).build(),
new LambdaUpdateWrapper<DeviceHmsEntity>() new LambdaUpdateWrapper<DeviceHmsEntity>()
.eq(DeviceHmsEntity::getSn, deviceSn) .eq(DeviceHmsEntity::getSn, deviceSn)
.eq(DeviceHmsEntity::getUpdateTime, 0L)); .eq(DeviceHmsEntity::getUpdateTime, 0L));
@ -149,9 +151,8 @@ public class DeviceHmsServiceImpl extends AbstractHmsService implements IDeviceH
return DeviceHmsDTO.builder() return DeviceHmsDTO.builder()
.bid(entity.getBid()) .bid(entity.getBid())
.tid(entity.getTid()) .tid(entity.getTid())
.createTime(LocalDateTime.ofInstant(Instant.ofEpochMilli(entity.getCreateTime()), ZoneId.systemDefault())) .createTime(entity.getCreateTime())
.updateTime(entity.getUpdateTime().intValue() == 0 ? .updateTime(entity.getUpdateTime())
null : LocalDateTime.ofInstant(Instant.ofEpochMilli(entity.getUpdateTime()), ZoneId.systemDefault()))
.sn(entity.getSn()) .sn(entity.getSn())
.hmsId(entity.getHmsId()) .hmsId(entity.getHmsId())
.key(entity.getHmsKey()) .key(entity.getHmsKey())

5
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceLogsServiceImpl.java

@ -298,9 +298,8 @@ public class DeviceLogsServiceImpl extends AbstractLogService implements IDevice
return DeviceLogsDTO.builder() return DeviceLogsDTO.builder()
.logsId(entity.getLogsId()) .logsId(entity.getLogsId())
.createTime(LocalDateTime.ofInstant(Instant.ofEpochMilli(entity.getCreateTime()), ZoneId.systemDefault())) .createTime(entity.getCreateTime())
.happenTime(Objects.isNull(entity.getHappenTime()) ? .happenTime(entity.getHappenTime())
null : LocalDateTime.ofInstant(Instant.ofEpochMilli(entity.getHappenTime()), ZoneId.systemDefault()))
.status(entity.getStatus()) .status(entity.getStatus())
.logsInformation(entity.getLogsInfo()) .logsInformation(entity.getLogsInfo())
.userName(entity.getUsername()) .userName(entity.getUsername())

12
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java

@ -288,7 +288,6 @@ public class DeviceServiceImpl implements IDeviceService {
.setUserCallsign(device.getNickname()) .setUserCallsign(device.getNickname())
.setBoundStatus(device.getBoundStatus()) .setBoundStatus(device.getBoundStatus())
.setModel(device.getDeviceName()) .setModel(device.getDeviceName())
.setUserId(device.getUserId())
.setDomain(device.getDomain()) .setDomain(device.getDomain())
.setGatewaySn(device.getParentSn()); .setGatewaySn(device.getParentSn());
} }
@ -367,10 +366,9 @@ public class DeviceServiceImpl implements IDeviceService {
.setSelectIconUrl(entity.getUrlSelect())) .setSelectIconUrl(entity.getUrlSelect()))
.boundStatus(entity.getBoundStatus()) .boundStatus(entity.getBoundStatus())
.loginTime(entity.getLoginTime() != null ? .loginTime(entity.getLoginTime() != null ?
LocalDateTime.ofInstant(Instant.ofEpochMilli(entity.getLoginTime()), ZoneId.systemDefault()) entity.getLoginTime()
: null) : null)
.boundTime(entity.getBoundTime() != null ? .boundTime(entity.getBoundTime() != null ?entity.getBoundTime()
LocalDateTime.ofInstant(Instant.ofEpochMilli(entity.getBoundTime()), ZoneId.systemDefault())
: null) : null)
.nickname(entity.getNickname()) .nickname(entity.getNickname())
.firmwareVersion(entity.getFirmwareVersion()) .firmwareVersion(entity.getFirmwareVersion())
@ -498,7 +496,6 @@ public class DeviceServiceImpl implements IDeviceService {
DeviceDTO device = DeviceDTO.builder() DeviceDTO device = DeviceDTO.builder()
.deviceSn(deviceSn) .deviceSn(deviceSn)
.workspaceId("") .workspaceId("")
.userId("")
.boundStatus(false) .boundStatus(false)
.build(); .build();
this.updateDevice(device); this.updateDevice(device);
@ -657,7 +654,6 @@ public class DeviceServiceImpl implements IDeviceService {
.map(ControlSourceEnum::getControlSource).orElse(null)) .map(ControlSourceEnum::getControlSource).orElse(null))
.deviceName(dto.getDeviceName()) .deviceName(dto.getDeviceName())
.version(dto.getThingVersion()) .version(dto.getThingVersion())
.userId(dto.getUserId())
.nickname(dto.getNickname()) .nickname(dto.getNickname())
.workspaceId(dto.getWorkspaceId()) .workspaceId(dto.getWorkspaceId())
.boundStatus(dto.getBoundStatus()) .boundStatus(dto.getBoundStatus())
@ -665,9 +661,9 @@ public class DeviceServiceImpl implements IDeviceService {
.deviceType(Optional.ofNullable(dto.getType()).map(DeviceTypeEnum::getType).orElse(null)) .deviceType(Optional.ofNullable(dto.getType()).map(DeviceTypeEnum::getType).orElse(null))
.subType(Optional.ofNullable(dto.getSubType()).map(DeviceSubTypeEnum::getSubType).orElse(null)) .subType(Optional.ofNullable(dto.getSubType()).map(DeviceSubTypeEnum::getSubType).orElse(null))
.loginTime(dto.getLoginTime() != null ? .loginTime(dto.getLoginTime() != null ?
dto.getLoginTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() : null) dto.getLoginTime() : null)
.boundTime(dto.getBoundTime() != null ? .boundTime(dto.getBoundTime() != null ?
dto.getBoundTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() : null) dto.getBoundTime() : null)
.childSn(dto.getChildDeviceSn()) .childSn(dto.getChildDeviceSn())
.firmwareVersion(dto.getFirmwareVersion()) .firmwareVersion(dto.getFirmwareVersion())
.compatibleStatus(dto.getFirmwareStatus() == null ? null : .compatibleStatus(dto.getFirmwareStatus() == null ? null :

7
dk-modules/sample/src/main/java/org/dromara/sample/map/controller/DeviceDataController.java

@ -26,9 +26,8 @@ public class DeviceDataController {
@Autowired @Autowired
private IDeviceDataService deviceDataService; private IDeviceDataService deviceDataService;
@GetMapping("/device-status") @GetMapping("/{workspace_id}/device-status")
public HttpResultResponse<List<DeviceDataStatusDTO>> getDeviceFlightAreaStatus() { public HttpResultResponse<List<DeviceDataStatusDTO>> getDeviceFlightAreaStatus(@PathVariable(name = "workspace_id") String workspaceId) {
LoginUser loginUser = LoginHelper.getLoginUser(); return HttpResultResponse.success(deviceDataService.getDevicesDataStatus(workspaceId));
return HttpResultResponse.success(deviceDataService.getDevicesDataStatus(loginUser.getTenantId()));
} }
} }

35
dk-modules/sample/src/main/java/org/dromara/sample/map/controller/FlightAreaController.java

@ -1,5 +1,7 @@
package org.dromara.sample.map.controller; package org.dromara.sample.map.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
@ -23,43 +25,46 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("${url.map.prefix}${url.map.version}/workspaces") @RequestMapping("${url.map.prefix}${url.map.version}/workspaces")
@Tag(name = "无人机区域文件模块")
public class FlightAreaController { public class FlightAreaController {
@Autowired @Autowired
private IFlightAreaService flightAreaService; private IFlightAreaService flightAreaService;
@GetMapping("/{workspace_id}/flight-areas") @GetMapping("/{workspace_id}/flight-areas")
public HttpResultResponse<List<FlightAreaDTO>> getFlightAreas() { @Operation(summary = "获取区域信息", description = "获取区域信息")
LoginUser loginUser = LoginHelper.getLoginUser(); public HttpResultResponse<List<FlightAreaDTO>> getFlightAreas(@PathVariable(name = "workspace_id") String workspaceId) {
return HttpResultResponse.success(flightAreaService.getFlightAreaList(loginUser.getTenantId())); return HttpResultResponse.success(flightAreaService.getFlightAreaList(workspaceId));
} }
@PostMapping("/flight-area") @PostMapping("/{workspace_id}/flight-area")
public HttpResultResponse createFlightArea(@Valid @RequestBody PostFlightAreaParam param, HttpServletRequest req) { @Operation(summary = "创建区域信息", description = "创建区域信息")
public HttpResultResponse createFlightArea(@PathVariable(name = "workspace_id") String workspaceId,
@Valid @RequestBody PostFlightAreaParam param, HttpServletRequest req) {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
flightAreaService.createFlightArea(loginUser.getTenantId(), loginUser.getUsername(), param); flightAreaService.createFlightArea(workspaceId, loginUser.getUsername(), param);
return HttpResultResponse.success(); return HttpResultResponse.success();
} }
@DeleteMapping("/flight-area/{area_id}") @DeleteMapping("/flight-area/{area_id}")
public HttpResultResponse deleteFlightArea(@PathVariable(name = "area_id") String areaId) { @Operation(summary = "删除区域信息", description = "删除区域信息")
LoginUser loginUser = LoginHelper.getLoginUser(); public HttpResultResponse deleteFlightArea(@PathVariable(name = "workspace_id") String workspaceId,@PathVariable(name = "area_id") String areaId) {
flightAreaService.deleteFlightArea(loginUser.getTenantId(), areaId); flightAreaService.deleteFlightArea(workspaceId, areaId);
return HttpResultResponse.success(); return HttpResultResponse.success();
} }
@PutMapping("/flight-area/{area_id}") @PutMapping("/flight-area/{area_id}")
public HttpResultResponse updateFlightArea(@PathVariable(name = "area_id") String areaId, @Operation(summary = "更新区域信息", description = "更新区域信息")
public HttpResultResponse updateFlightArea(@PathVariable(name = "workspace_id") String workspaceId,@PathVariable(name = "area_id") String areaId,
@RequestBody PutFlightAreaParam param) { @RequestBody PutFlightAreaParam param) {
LoginUser loginUser = LoginHelper.getLoginUser(); flightAreaService.updateFlightArea(workspaceId, areaId, param);
flightAreaService.updateFlightArea(loginUser.getTenantId(), areaId, param);
return HttpResultResponse.success(); return HttpResultResponse.success();
} }
@PostMapping("/{workspace_id}/flight-area/sync") @PostMapping("/{workspace_id}/flight-area/sync")
public HttpResultResponse syncFlightArea(@RequestBody @Valid SyncFlightAreaParam param) { @Operation(summary = "同步区域信息到机场端", description = "同步区域信息到机场端")
LoginUser loginUser = LoginHelper.getLoginUser(); public HttpResultResponse syncFlightArea(@PathVariable(name = "workspace_id") String workspaceId,@RequestBody @Valid SyncFlightAreaParam param) {
flightAreaService.syncFlightArea(loginUser.getTenantId(), param.getDeviceSns()); flightAreaService.syncFlightArea(workspaceId, param.getDeviceSns());
return HttpResultResponse.success(); return HttpResultResponse.success();
} }

9
dk-modules/sample/src/main/java/org/dromara/sample/map/controller/WorkspaceElementController.java

@ -1,5 +1,7 @@
package org.dromara.sample.map.controller; package org.dromara.sample.map.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@ -27,6 +29,7 @@ import java.util.List;
* @date 2021/11/29 * @date 2021/11/29
*/ */
@RestController @RestController
@Tag(name = "工作区元素表模块")
public class WorkspaceElementController implements IHttpMapService { public class WorkspaceElementController implements IHttpMapService {
@Autowired @Autowired
@ -40,6 +43,7 @@ public class WorkspaceElementController implements IHttpMapService {
* @return * @return
*/ */
@DeleteMapping("${url.map.prefix}${url.map.version}/workspaces/element-groups/{group_id}/elements") @DeleteMapping("${url.map.prefix}${url.map.version}/workspaces/element-groups/{group_id}/elements")
@Operation(summary = "根据组id删除此组中的所有元素信息", description = "根据组id删除此组中的所有元素信息")
public HttpResultResponse deleteAllElementByGroupId(@PathVariable(name = "group_id") String groupId) { public HttpResultResponse deleteAllElementByGroupId(@PathVariable(name = "group_id") String groupId) {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
return elementService.deleteAllElementByGroupId(loginUser.getTenantId(), groupId); return elementService.deleteAllElementByGroupId(loginUser.getTenantId(), groupId);
@ -57,9 +61,8 @@ public class WorkspaceElementController implements IHttpMapService {
* @return * @return
*/ */
@Override @Override
public HttpResultResponse<List<GetMapElementsResponse>> getMapElements( String groupId, Boolean isDistributed, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse<List<GetMapElementsResponse>> getMapElements( String workspaceId, String groupId, Boolean isDistributed, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser(); List<GetMapElementsResponse> groupsList = elementService.getAllGroupsByWorkspaceId(workspaceId, groupId, isDistributed);
List<GetMapElementsResponse> groupsList = elementService.getAllGroupsByWorkspaceId(loginUser.getTenantId(), groupId, isDistributed);
return HttpResultResponse.<List<GetMapElementsResponse>>success(groupsList); return HttpResultResponse.<List<GetMapElementsResponse>>success(groupsList);
} }

6
dk-modules/sample/src/main/java/org/dromara/sample/map/model/dto/FlightAreaDTO.java

@ -6,6 +6,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.dromara.common.sdk.cloudapi.flightarea.GeofenceTypeEnum; import org.dromara.common.sdk.cloudapi.flightarea.GeofenceTypeEnum;
import java.util.Date;
/** /**
* @author sean * @author sean
* @version 1.9 * @version 1.9
@ -29,7 +31,7 @@ public class FlightAreaDTO {
private String username; private String username;
private Long createTime; private Date createTime;
private Long updateTime; private Date updateTime;
} }

6
dk-modules/sample/src/main/java/org/dromara/sample/map/model/dto/FlightAreaWs.java

@ -4,6 +4,8 @@ import org.dromara.common.sdk.cloudapi.flightarea.GeofenceTypeEnum;
import org.dromara.sample.map.model.enums.FlightAreaOpertaionEnum; import org.dromara.sample.map.model.enums.FlightAreaOpertaionEnum;
import lombok.*; import lombok.*;
import java.util.Date;
/** /**
* @author sean * @author sean
* @version 1.9 * @version 1.9
@ -29,8 +31,8 @@ public class FlightAreaWs {
private String username; private String username;
private Long createTime; private Date createTime;
private Long updateTime; private Date updateTime;
} }

6
dk-modules/sample/src/main/java/org/dromara/sample/map/model/dto/GroupElementDTO.java

@ -8,6 +8,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.dromara.common.sdk.cloudapi.map.ElementResource; import org.dromara.common.sdk.cloudapi.map.ElementResource;
import java.util.Date;
/** /**
* @author sean * @author sean
* @version 0.2 * @version 0.2
@ -26,10 +28,10 @@ public class GroupElementDTO {
private String name; private String name;
@JsonProperty(value = "create_time") @JsonProperty(value = "create_time")
private Long createTime; private Date createTime;
@JsonProperty(value = "update_time") @JsonProperty(value = "update_time")
private Long updateTime; private Date updateTime;
private ElementResource resource; private ElementResource resource;

5
dk-modules/sample/src/main/java/org/dromara/sample/map/model/entity/GroupElementEntity.java

@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* @author sean * @author sean
@ -48,8 +49,8 @@ public class GroupElementEntity implements Serializable {
private Boolean clampToGround; private Boolean clampToGround;
@TableField(value = "create_time", fill = FieldFill.INSERT) @TableField(value = "create_time", fill = FieldFill.INSERT)
private Long createTime; private Date createTime;
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime; private Date updateTime;
} }

16
dk-modules/sample/src/main/java/org/dromara/sample/map/service/impl/FlightAreaServiceImpl.java

@ -103,7 +103,7 @@ public class FlightAreaServiceImpl extends AbstractFlightAreaService implements
public void createFlightArea(String workspaceId, String username, PostFlightAreaParam param) { public void createFlightArea(String workspaceId, String username, PostFlightAreaParam param) {
Optional<GetMapElementsResponse> groupOpt = groupService.getCustomGroupByWorkspaceId(workspaceId); Optional<GetMapElementsResponse> groupOpt = groupService.getCustomGroupByWorkspaceId(workspaceId);
if (groupOpt.isEmpty()) { if (groupOpt.isEmpty()) {
throw new RuntimeException("The custom flight area group does not exist, please create it first."); throw new RuntimeException("自定义飞行区域组不存在,请先创建。");
} }
ElementGeometryType geometry = param.getContent().getGeometry(); ElementGeometryType geometry = param.getContent().getGeometry();
String type = geometry.getType(); String type = geometry.getType();
@ -135,7 +135,7 @@ public class FlightAreaServiceImpl extends AbstractFlightAreaService implements
int id = flightAreaPropertyServices.saveProperty(property); int id = flightAreaPropertyServices.saveProperty(property);
if (id <= 0) { if (id <= 0) {
throw new RuntimeException("Failed to save flight area properties."); throw new RuntimeException("无法保存飞行区域属性。");
} }
flightAreaFileService.setNonLatestByWorkspaceId(workspaceId); flightAreaFileService.setNonLatestByWorkspaceId(workspaceId);
@ -146,8 +146,8 @@ public class FlightAreaServiceImpl extends AbstractFlightAreaService implements
.username(username) .username(username)
.type(param.getType()) .type(param.getType())
.name(param.getName()) .name(param.getName())
.updateTime(System.currentTimeMillis()) .updateTime(new Date())
.createTime(System.currentTimeMillis()) .createTime(new Date())
.content(FlightAreaContent.builder().geometry(geometry).properties(param.getContent().getProperties()).build()) .content(FlightAreaContent.builder().geometry(geometry).properties(param.getContent().getProperties()).build())
.status(true) .status(true)
.build()); .build());
@ -182,7 +182,7 @@ public class FlightAreaServiceImpl extends AbstractFlightAreaService implements
} }
int id = flightAreaPropertyServices.deleteProperty(areaId); int id = flightAreaPropertyServices.deleteProperty(areaId);
if (id <= 0) { if (id <= 0) {
throw new RuntimeException("Failed to delete the flight area property."); throw new RuntimeException("无法删除飞行区域属性。");
} }
flightAreaFileService.setNonLatestByWorkspaceId(workspaceId); flightAreaFileService.setNonLatestByWorkspaceId(workspaceId);
WebSocketUtils.publishAll( BizCodeEnum.FLIGHT_AREAS_UPDATE.getCode(), WebSocketUtils.publishAll( BizCodeEnum.FLIGHT_AREAS_UPDATE.getCode(),
@ -218,7 +218,7 @@ public class FlightAreaServiceImpl extends AbstractFlightAreaService implements
int id = flightAreaPropertyServices.updateProperty(FlightAreaPropertyUpdate.builder() int id = flightAreaPropertyServices.updateProperty(FlightAreaPropertyUpdate.builder()
.elementId(areaId).status(param.getStatus()).radius(radius).build()); .elementId(areaId).status(param.getStatus()).radius(radius).build());
if (id <= 0) { if (id <= 0) {
throw new RuntimeException("Failed to update flight area properties."); throw new RuntimeException("未能更新飞行区域属性。");
} }
flightAreaFileService.setNonLatestByWorkspaceId(workspaceId); flightAreaFileService.setNonLatestByWorkspaceId(workspaceId);
Optional<FlightAreaDTO> areaOpt = getFlightAreaByAreaId(areaId); Optional<FlightAreaDTO> areaOpt = getFlightAreaByAreaId(areaId);
@ -242,7 +242,7 @@ public class FlightAreaServiceImpl extends AbstractFlightAreaService implements
public TopicEventsResponse<MqttReply> flightAreasSyncProgress(TopicEventsRequest<FlightAreasSyncProgress> request, MessageHeaders headers) { public TopicEventsResponse<MqttReply> flightAreasSyncProgress(TopicEventsRequest<FlightAreasSyncProgress> request, MessageHeaders headers) {
Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(request.getGateway()); Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(request.getGateway());
if (deviceOpt.isEmpty()) { if (deviceOpt.isEmpty()) {
log.warn("method: flight_areas_sync_progress. Dock is offline."); log.warn("方法:flight_areas_sync_progress。Dock 已离线。");
return null; return null;
} }
@ -270,7 +270,7 @@ public class FlightAreaServiceImpl extends AbstractFlightAreaService implements
public TopicEventsResponse<MqttReply> flightAreasDroneLocation(TopicEventsRequest<FlightAreasDroneLocation> request, MessageHeaders headers) { public TopicEventsResponse<MqttReply> flightAreasDroneLocation(TopicEventsRequest<FlightAreasDroneLocation> request, MessageHeaders headers) {
Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(request.getGateway()); Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(request.getGateway());
if (deviceOpt.isEmpty()) { if (deviceOpt.isEmpty()) {
log.warn("method: flight_areas_drone_location. Dock is offline."); log.warn("方法:flight areas_drone_locations。码头离线。");
return null; return null;
} }
if (request.getData().getDroneLocations().isEmpty()) { if (request.getData().getDroneLocations().isEmpty()) {

21
dk-modules/sample/src/main/java/org/dromara/sample/media/controller/FileController.java

@ -1,5 +1,7 @@
package org.dromara.sample.media.controller; package org.dromara.sample.media.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.HttpResultResponse;
@ -20,6 +22,7 @@ import java.net.URL;
*/ */
@RestController @RestController
@RequestMapping("${url.media.prefix}${url.media.version}/files") @RequestMapping("${url.media.prefix}${url.media.version}/files")
@Tag(name = "无人机媒体文件模块")
public class FileController { public class FileController {
@Autowired @Autowired
@ -30,11 +33,12 @@ public class FileController {
* Get information about all the media files in this workspace based on the workspace id. * Get information about all the media files in this workspace based on the workspace id.
* @return * @return
*/ */
@GetMapping("/files") @GetMapping("/{workspace_id}/files")
@Operation(summary = "根据工作区id获取此工作区中所有媒体文件的信息。", description = "根据工作区id获取此工作区中所有媒体文件的信息。")
public HttpResultResponse<PaginationData<MediaFileDTO>> getFilesList(@RequestParam(defaultValue = "1") Long page, public HttpResultResponse<PaginationData<MediaFileDTO>> getFilesList(@RequestParam(defaultValue = "1") Long page,
@RequestParam(name = "page_size", defaultValue = "10") Long pageSize) { @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
LoginUser loginUser = LoginHelper.getLoginUser(); @PathVariable(name = "workspace_id") String workspaceId) {
PaginationData<MediaFileDTO> filesList = fileService.getMediaFilesPaginationByWorkspaceId(loginUser.getTenantId(), page, pageSize); PaginationData<MediaFileDTO> filesList = fileService.getMediaFilesPaginationByWorkspaceId(workspaceId, page, pageSize);
return HttpResultResponse.success(filesList); return HttpResultResponse.success(filesList);
} }
@ -46,11 +50,12 @@ public class FileController {
* @param fileId * @param fileId
* @param response * @param response
*/ */
@GetMapping("/file/{file_id}/url") @Operation(summary = "根据媒体文件id查询文件的下载地址。", description = "根据媒体文件id查询文件的下载地址,。")
public void getFileUrl(@PathVariable(name = "file_id") String fileId, HttpServletResponse response) { @GetMapping("/{workspace_id}/file/{file_id}/url")
LoginUser loginUser = LoginHelper.getLoginUser(); public void getFileUrl(@PathVariable(name = "workspace_id") String workspaceId,
@PathVariable(name = "file_id") String fileId, HttpServletResponse response) {
try { try {
URL url = fileService.getObjectUrl(loginUser.getTenantId(), fileId); URL url = fileService.getObjectUrl(workspaceId, fileId);
response.sendRedirect(url.toString()); response.sendRedirect(url.toString());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();

26
dk-modules/sample/src/main/java/org/dromara/sample/media/controller/MediaController.java

@ -1,5 +1,6 @@
package org.dromara.sample.media.controller; package org.dromara.sample.media.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@ -12,6 +13,7 @@ import org.dromara.sample.media.service.IMediaService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@ -23,53 +25,55 @@ import java.util.List;
*/ */
@Slf4j @Slf4j
@RestController @RestController
@Tag(name = "媒体接口")
public class MediaController implements IHttpMediaService { public class MediaController implements IHttpMediaService {
@Autowired @Autowired
private IMediaService mediaService; private IMediaService mediaService;
/** /**
* 检查文件是否已通过指纹上传
* Check if the file has been uploaded by the fingerprint. * Check if the file has been uploaded by the fingerprint.
* @param request * @param request
* @return * @return
*/ */
@Override @Override
public HttpResultResponse mediaFastUpload( @Valid MediaFastUploadRequest request, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse mediaFastUpload( String workspaceId,@Valid MediaFastUploadRequest request, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser(); boolean isExist = mediaService.fastUpload(workspaceId, request.getFingerprint());
boolean isExist = mediaService.fastUpload(loginUser.getTenantId(), request.getFingerprint());
return isExist ? HttpResultResponse.success() : HttpResultResponse.error(request.getFingerprint() + "don't exist."); return isExist ? HttpResultResponse.success() : HttpResultResponse.error(request.getFingerprint() + "don't exist.");
} }
/** /**
* 当文件由Pilot上传到存储服务器时文件的基本信息通过此接口报告
* When the file is uploaded to the storage server by pilot, * When the file is uploaded to the storage server by pilot,
* the basic information of the file is reported through this interface. * the basic information of the file is reported through this interface.
* @param request * @param request
* @return * @return
*/ */
@Override @Override
public HttpResultResponse<String> mediaUploadCallback( @Valid MediaUploadCallbackRequest request, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse<String> mediaUploadCallback( String workspaceId, @Valid MediaUploadCallbackRequest request, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser(); mediaService.saveMediaFile(workspaceId, request);
mediaService.saveMediaFile(loginUser.getTenantId(), request);
return HttpResultResponse.success(request.getObjectKey()); return HttpResultResponse.success(request.getObjectKey());
} }
/** /**
* 根据工作区ID和一组小指纹查询此工作区中已存在的文件
* 请求体中只有一个tiny_fingerprint参数
* 但是不建议使用 Map 来接收参数
* Query the files that already exist in this workspace based on the workspace id and the collection of tiny fingerprints. * Query the files that already exist in this workspace based on the workspace id and the collection of tiny fingerprints.
* @param request There is only one tiny_fingerprint parameter in the body. * @param request There is only one tiny_fingerprint parameter in the body.
* But it is not recommended to use Map to receive the parameter. * But it is not recommended to use Map to receive the parameter.
* @return * @return
*/ */
@Override @Override
public HttpResultResponse<GetFileFingerprintResponse> getExistFileTinyFingerprint(@Valid GetFileFingerprintRequest request, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse<GetFileFingerprintResponse> getExistFileTinyFingerprint( String workspaceId, @Valid GetFileFingerprintRequest request, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser(); List<String> existingList = mediaService.getExistTinyFingerprints(workspaceId, request.getTinyFingerprints());
List<String> existingList = mediaService.getExistTinyFingerprints(loginUser.getTenantId(), request.getTinyFingerprints());
return HttpResultResponse.success(new GetFileFingerprintResponse().setTinyFingerprints(existingList)); return HttpResultResponse.success(new GetFileFingerprintResponse().setTinyFingerprints(existingList));
} }
@Override @Override
public HttpResultResponse folderUploadCallback( @Valid FolderUploadCallbackRequest request, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse folderUploadCallback(String workspaceId, @Valid FolderUploadCallbackRequest request, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser();
return null; return null;
} }
} }

13
dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileDTO.java

@ -1,11 +1,13 @@
package org.dromara.sample.media.model; package org.dromara.sample.media.model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
/** /**
* @author sean * @author sean
@ -20,25 +22,34 @@ public class MediaFileDTO {
private String fileId; private String fileId;
@Schema(description = "文件名")
private String fileName; private String fileName;
@Schema(description = "文件的路径")
private String filePath; private String filePath;
@Schema(description = "文件所属的工作区")
private String objectKey; private String objectKey;
@Schema(description = "文件所属的工作区")
private String subFileType; private String subFileType;
@Schema(description = "文件所属的工作区")
private Boolean isOriginal; private Boolean isOriginal;
@Schema(description = "创建文件的无人机的sn。")
private String drone; private String drone;
@Schema(description = "创建文件的无人机有效载荷的名称。")
private String payload; private String payload;
@Schema(description = "文件的小指纹。此属性仅适用于由Pilot上传的媒体文件")
private String tinnyFingerprint; private String tinnyFingerprint;
@Schema(description = "文件的指纹。此属性仅适用于由Pilot上传的媒体文件。")
private String fingerprint; private String fingerprint;
private LocalDateTime createTime; private Date createTime;
private String jobId; private String jobId;
} }

5
dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileEntity.java

@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* @author sean * @author sean
@ -60,9 +61,9 @@ public class MediaFileEntity implements Serializable {
private String jobId; private String jobId;
@TableField(value = "create_time", fill = FieldFill.INSERT) @TableField(value = "create_time", fill = FieldFill.INSERT)
private Long createTime; private Date createTime;
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime; private Date updateTime;
} }

3
dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java

@ -162,8 +162,7 @@ public class FileServiceImpl implements IFileService {
.objectKey(entity.getObjectKey()) .objectKey(entity.getObjectKey())
.tinnyFingerprint(entity.getTinnyFingerprint()) .tinnyFingerprint(entity.getTinnyFingerprint())
.payload(entity.getPayload()) .payload(entity.getPayload())
.createTime(LocalDateTime.ofInstant( .createTime(entity.getCreateTime())
Instant.ofEpochMilli(entity.getCreateTime()), ZoneId.systemDefault()))
.drone(entity.getDrone()) .drone(entity.getDrone())
.jobId(entity.getJobId()); .jobId(entity.getJobId());

6
dk-modules/sample/src/main/java/org/dromara/sample/storage/controller/StorageController.java

@ -1,5 +1,6 @@
package org.dromara.sample.storage.controller; package org.dromara.sample.storage.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
@ -19,18 +20,19 @@ import org.springframework.web.bind.annotation.RestController;
* @date 2021/12/29 * @date 2021/12/29
*/ */
@RestController @RestController
@Tag(name="凭证信息")
public class StorageController implements IHttpStorageService { public class StorageController implements IHttpStorageService {
@Autowired @Autowired
private IStorageService storageService; private IStorageService storageService;
/** /**
* 获取临时凭据以在DJI Pilot中上传媒体和路标
* Get temporary credentials for uploading the media and wayline in DJI Pilot. * Get temporary credentials for uploading the media and wayline in DJI Pilot.
* @return * @return
*/ */
@Override @Override
public HttpResultResponse<StsCredentialsResponse> getTemporaryCredential( HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse<StsCredentialsResponse> getTemporaryCredential(String workspaceId, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser();
StsCredentialsResponse stsCredentials = storageService.getSTSCredentials(); StsCredentialsResponse stsCredentials = storageService.getSTSCredentials();
return HttpResultResponse.success(stsCredentials); return HttpResultResponse.success(stsCredentials);
} }

57
dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java

@ -1,6 +1,7 @@
package org.dromara.sample.wayline.controller; package org.dromara.sample.wayline.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@ -36,53 +37,57 @@ import java.util.stream.Collectors;
* @date 2021/12/22 * @date 2021/12/22
*/ */
@RestController @RestController
@Tag(name="凭证信息")
public class WaylineFileController implements IHttpWaylineService { public class WaylineFileController implements IHttpWaylineService {
@Autowired @Autowired
private IWaylineFileService waylineFileService; private IWaylineFileService waylineFileService;
/** /**
* 根据waylineID删除工作区中的wayline文件
* Delete the wayline file in the workspace according to the wayline id. * Delete the wayline file in the workspace according to the wayline id.
* @param waylineId * @param waylineId
* @return * @return
*/ */
@DeleteMapping("${url.wayline.prefix}${url.wayline.version}/workspaces/waylines/{wayline_id}") @DeleteMapping("${url.wayline.prefix}${url.wayline.version}/workspaces/{workspace_id}/waylines/{wayline_id}")
public HttpResultResponse deleteWayline(@PathVariable(name = "wayline_id") String waylineId) { public HttpResultResponse deleteWayline(@PathVariable(name = "workspace_id") String workspaceId,@PathVariable(name = "wayline_id") String waylineId) {
LoginUser loginUser = LoginHelper.getLoginUser(); boolean isDel = waylineFileService.deleteByWaylineId(workspaceId, waylineId);
boolean isDel = waylineFileService.deleteByWaylineId(loginUser.getTenantId(), waylineId);
return isDel ? HttpResultResponse.success() : HttpResultResponse.error("航线删除失败"); return isDel ? HttpResultResponse.success() : HttpResultResponse.error("航线删除失败");
} }
/** /**
* 导入kmz航路文件
* Import kmz wayline files. * Import kmz wayline files.
* @param file * @param file
* @return * @return
*/ */
@PostMapping("${url.wayline.prefix}${url.wayline.version}/workspaces/waylines/file/upload") @PostMapping("${url.wayline.prefix}${url.wayline.version}/workspaces/{workspace_id}/waylines/file/upload")
public HttpResultResponse importKmzFile(HttpServletRequest request, MultipartFile file) { public HttpResultResponse importKmzFile(@PathVariable(name = "workspace_id") String workspaceId,HttpServletRequest request, MultipartFile file) {
if (Objects.isNull(file)) { if (Objects.isNull(file)) {
return HttpResultResponse.error("No file received."); return HttpResultResponse.error("未收到文件。");
} }
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
String creator = loginUser.getUsername(); String creator = loginUser.getUsername();
waylineFileService.importKmzFile(file, loginUser.getTenantId(), creator); waylineFileService.importKmzFile(file, workspaceId, creator);
return HttpResultResponse.success(); return HttpResultResponse.success();
} }
/** /**
* 根据查询条件查询路线文件的基本数据
* 试点中的查询条件字段是固定的
* Query the basic data of the wayline file according to the query conditions. * Query the basic data of the wayline file according to the query conditions.
* The query condition field in pilot is fixed. * The query condition field in pilot is fixed.
* @param request * @param request
* @return * @return
*/ */
@Override @Override
public HttpResultResponse<PaginationData<GetWaylineListResponse>> getWaylineList(@Valid GetWaylineListRequest request, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse<PaginationData<GetWaylineListResponse>> getWaylineList(@Valid GetWaylineListRequest request,String workspaceId, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser(); PaginationData<GetWaylineListResponse> data = waylineFileService.getWaylinesByParam(workspaceId, request);
PaginationData<GetWaylineListResponse> data = waylineFileService.getWaylinesByParam(loginUser.getTenantId(), request);
return HttpResultResponse.success(data); return HttpResultResponse.success(data);
} }
/** /**
* 根据 wayline 文件 ID 查询文件的下载地址并直接重定向到此地址进行下载
* Query the download address of the file according to the wayline file id, * Query the download address of the file according to the wayline file id,
* and redirect to this address directly for download. * and redirect to this address directly for download.
* @param waylineId * @param waylineId
@ -90,10 +95,9 @@ public class WaylineFileController implements IHttpWaylineService {
* @param rsp * @param rsp
*/ */
@Override @Override
public void getWaylineFileDownloadAddress( String waylineId, HttpServletRequest req, HttpServletResponse rsp) { public void getWaylineFileDownloadAddress( String workspaceId,String waylineId, HttpServletRequest req, HttpServletResponse rsp) {
try { try {
LoginUser loginUser = LoginHelper.getLoginUser(); URL url = waylineFileService.getObjectUrl(workspaceId, waylineId);
URL url = waylineFileService.getObjectUrl(loginUser.getTenantId(), waylineId);
rsp.sendRedirect(url.toString()); rsp.sendRedirect(url.toString());
} catch (IOException | SQLException e) { } catch (IOException | SQLException e) {
@ -102,27 +106,30 @@ public class WaylineFileController implements IHttpWaylineService {
} }
/** /**
* 检查名称是否已经存在根据方式名称必须确保方式名称的唯一性
* 当上传路径线时将调用此接口并且必须可用
* Checking whether the name already exists according to the wayline name must ensure the uniqueness of the wayline name. * Checking whether the name already exists according to the wayline name must ensure the uniqueness of the wayline name.
* This interface will be called when uploading waylines and must be available. * This interface will be called when uploading waylines and must be available.
* @param names * @param names
* @return * @return
*/ */
@Override @Override
public HttpResultResponse<List<String>> getDuplicatedWaylineName(@NotNull @Size(min = 1) List<String> names, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse<List<String>> getDuplicatedWaylineName(String workspaceId,@NotNull @Size(min = 1) List<String> names, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser(); List<String> existNamesList = waylineFileService.getDuplicateNames(workspaceId, names);
List<String> existNamesList = waylineFileService.getDuplicateNames(loginUser.getTenantId(), names);
return HttpResultResponse.success(existNamesList); return HttpResultResponse.success(existNamesList);
} }
/** /**
* 当航线文件由飞行员上传到存储服务器时
* 通过此接口报告文件的基本信息
* When the wayline file is uploaded to the storage server by pilot, * When the wayline file is uploaded to the storage server by pilot,
* the basic information of the file is reported through this interface. * the basic information of the file is reported through this interface.
* @param request * @param request
* @return * @return
*/ */
@Override @Override
public HttpResultResponse fileUploadResultReport( @Valid WaylineUploadCallbackRequest request, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse fileUploadResultReport(String workspaceId, @Valid WaylineUploadCallbackRequest request, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
WaylineUploadCallbackMetadata metadata = request.getMetadata(); WaylineUploadCallbackMetadata metadata = request.getMetadata();
@ -136,38 +143,40 @@ public class WaylineFileController implements IHttpWaylineService {
.droneModelKey(metadata.getDroneModelKey().getDevice()) .droneModelKey(metadata.getDroneModelKey().getDevice())
.build(); .build();
int id = waylineFileService.saveWaylineFile(loginUser.getTenantId(), file); int id = waylineFileService.saveWaylineFile(workspaceId, file);
return id <= 0 ? HttpResultResponse.error() : HttpResultResponse.success(); return id <= 0 ? HttpResultResponse.error() : HttpResultResponse.success();
} }
/** /**
* 根据 wayline 文件 id 收藏 wayline 文件
* Favorite the wayline file according to the wayline file id. * Favorite the wayline file according to the wayline file id.
* @param ids wayline file id * @param ids wayline file id
* @return * @return
*/ */
@Override @Override
public HttpResultResponse batchFavoritesWayline( @NotNull @Size(min = 1) List<String> ids, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse batchFavoritesWayline(String workspaceId, @NotNull @Size(min = 1) List<String> ids, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
boolean isMark = waylineFileService.markFavorite(loginUser.getTenantId(), ids, true); boolean isMark = waylineFileService.markFavorite(workspaceId, ids, true);
return isMark ? HttpResultResponse.success() : HttpResultResponse.error(); return isMark ? HttpResultResponse.success() : HttpResultResponse.error();
} }
/** /**
* 根据 wayline 文件 id 删除该 wayline 文件的收藏夹
* Delete the favorites of this wayline file based on the wayline file id. * Delete the favorites of this wayline file based on the wayline file id.
* @param ids wayline file id * @param ids wayline file id
* @return * @return
*/ */
@Override @Override
public HttpResultResponse batchUnfavoritesWayline(@NotNull @Size(min = 1) List<String> ids, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse batchUnfavoritesWayline(String workspaceId,@NotNull @Size(min = 1) List<String> ids, HttpServletRequest req, HttpServletResponse rsp) {
LoginUser loginUser = LoginHelper.getLoginUser(); boolean isMark = waylineFileService.markFavorite(workspaceId, ids, false);
boolean isMark = waylineFileService.markFavorite(loginUser.getTenantId(), ids, false);
return isMark ? HttpResultResponse.success() : HttpResultResponse.error(); return isMark ? HttpResultResponse.success() : HttpResultResponse.error();
} }
/** /**
* 导入 kmz wayline 文件
* Import kmz wayline files. * Import kmz wayline files.
* @return * @return
*/ */

4
dk-visual/nacos/src/main/resources/application.properties

@ -40,9 +40,9 @@ spring.sql.init.platform=mysql
db.num=1 db.num=1
### Connect URL of DB: ### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/dk_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true db.url.0=jdbc:mysql://114.235.183.147:3306/dk_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
db.user.0=root db.user.0=root
db.password.0=123456 db.password.0=dkcy@yf
### the maximum retry times for push ### the maximum retry times for push
nacos.config.push.maxRetryTime=50 nacos.config.push.maxRetryTime=50

2
pom.xml

@ -86,7 +86,7 @@
<properties> <properties>
<!-- 环境标识,需要与配置文件的名称相对应 --> <!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>dev</profiles.active> <profiles.active>dev</profiles.active>
<nacos.server>114.235.183.147:8848</nacos.server> <nacos.server>127.0.0.1:8848</nacos.server>
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group> <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<nacos.config.group>DEFAULT_GROUP</nacos.config.group> <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<nacos.username>nacos</nacos.username> <nacos.username>nacos</nacos.username>

Loading…
Cancel
Save