From 62a1fa4521266e7872cc54c518109cca7712179f Mon Sep 17 00:00:00 2001 From: shikong <919411476@qq.com> Date: Tue, 22 Aug 2023 11:24:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=8B=E8=AF=95=E7=94=A8?= =?UTF-8?q?=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/pom.xml | 13 +++++ .../gb28181/api/record/RecordController.java | 33 ++++++++++++ .../gb28181/api/record/dto/GetInfoDTO.java | 11 ++++ .../docking/gb28181/config/SwaggerConfig.java | 53 +++++++++++++++++++ .../docking/gb28181/config/WebConfig.java | 5 +- .../gb28181/service/record/RecordService.java | 31 +++++++++++ starter/pom.xml | 6 +++ 7 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 api/src/main/java/cn/skcks/docking/gb28181/api/record/RecordController.java create mode 100644 api/src/main/java/cn/skcks/docking/gb28181/api/record/dto/GetInfoDTO.java create mode 100644 api/src/main/java/cn/skcks/docking/gb28181/config/SwaggerConfig.java create mode 100644 gb28181-service/src/main/java/cn/skcks/docking/gb28181/service/record/RecordService.java diff --git a/api/pom.xml b/api/pom.xml index 6482d3f..9c77e5b 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -19,6 +19,19 @@ + + cn.skcks.docking.gb28181 + gb28181-service + ${project.version} + + + + cn.skcks.docking.gb28181 + annotation + ${project.version} + compile + + org.springdoc springdoc-openapi-starter-webmvc-ui diff --git a/api/src/main/java/cn/skcks/docking/gb28181/api/record/RecordController.java b/api/src/main/java/cn/skcks/docking/gb28181/api/record/RecordController.java new file mode 100644 index 0000000..d4dc919 --- /dev/null +++ b/api/src/main/java/cn/skcks/docking/gb28181/api/record/RecordController.java @@ -0,0 +1,33 @@ +package cn.skcks.docking.gb28181.api.record; + +import cn.skcks.docking.gb28181.annotation.web.JsonMapping; +import cn.skcks.docking.gb28181.annotation.web.methods.GetJson; +import cn.skcks.docking.gb28181.api.record.dto.GetInfoDTO; +import cn.skcks.docking.gb28181.common.json.JsonResponse; +import cn.skcks.docking.gb28181.config.SwaggerConfig; +import cn.skcks.docking.gb28181.service.record.RecordService; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springdoc.core.annotations.ParameterObject; +import org.springdoc.core.models.GroupedOpenApi; +import org.springframework.context.annotation.Bean; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name="历史录像") +@RestController +@JsonMapping("/record") +@RequiredArgsConstructor +public class RecordController { + private final RecordService recordService; + + @Bean + public GroupedOpenApi recordApi() { + return SwaggerConfig.api("Record", "/record"); + } + + @GetJson("/getInfo") + public JsonResponse getInfo(@ParameterObject GetInfoDTO dto){ + recordService.requestRecordInfo(dto.getDeviceId()); + return JsonResponse.success(null); + } +} diff --git a/api/src/main/java/cn/skcks/docking/gb28181/api/record/dto/GetInfoDTO.java b/api/src/main/java/cn/skcks/docking/gb28181/api/record/dto/GetInfoDTO.java new file mode 100644 index 0000000..f1bfdab --- /dev/null +++ b/api/src/main/java/cn/skcks/docking/gb28181/api/record/dto/GetInfoDTO.java @@ -0,0 +1,11 @@ +package cn.skcks.docking.gb28181.api.record.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(title = "查询历史录像") +@Data +public class GetInfoDTO { + @Schema(description = "设备id") + private String deviceId; +} diff --git a/api/src/main/java/cn/skcks/docking/gb28181/config/SwaggerConfig.java b/api/src/main/java/cn/skcks/docking/gb28181/config/SwaggerConfig.java new file mode 100644 index 0000000..b8a1504 --- /dev/null +++ b/api/src/main/java/cn/skcks/docking/gb28181/config/SwaggerConfig.java @@ -0,0 +1,53 @@ +package cn.skcks.docking.gb28181.config; + +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import lombok.Data; +import org.springdoc.core.customizers.OpenApiCustomizer; +import org.springdoc.core.models.GroupedOpenApi; +import org.springframework.context.annotation.Configuration; + +import static org.springdoc.core.utils.Constants.ALL_PATTERN; + + +@Configuration +@Data +public class SwaggerConfig { + public static final Info INFO; + private static final License LICENSE; + + static { + INFO = new Info() + .title("GB28181 Docking Platform API") + .description("Matrix API description") + .version("2.0"); + LICENSE = new License() + .name("Apache 2.0") + .url("http://www.apache.org/licenses/LICENSE-2.0.html"); + INFO.license(LICENSE); + } + + public static GroupedOpenApi api(String group, String path) { + return GroupedOpenApi.builder() + .group(group) + .pathsToMatch(path + ALL_PATTERN) + .addOpenApiCustomizer(openApi -> openApi.info(SwaggerConfig.INFO)) + .addOpenApiCustomizer(authOpenApiDocs()) + .build(); + } + + private static OpenApiCustomizer authOpenApiDocs(){ + return openApi -> { + // swagger 全局添加 token 认证选项 + openApi.addSecurityItem(new SecurityRequirement().addList("token")); + openApi.getComponents() + .addSecuritySchemes("token", + new SecurityScheme() + .type(SecurityScheme.Type.APIKEY) + .in(SecurityScheme.In.HEADER) + .name("token")); + }; + } +} diff --git a/api/src/main/java/cn/skcks/docking/gb28181/config/WebConfig.java b/api/src/main/java/cn/skcks/docking/gb28181/config/WebConfig.java index e6fa3fc..e66565c 100644 --- a/api/src/main/java/cn/skcks/docking/gb28181/config/WebConfig.java +++ b/api/src/main/java/cn/skcks/docking/gb28181/config/WebConfig.java @@ -1,10 +1,13 @@ package cn.skcks.docking.gb28181.config; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Slf4j @Configuration @RequiredArgsConstructor -public class WebConfig { +public class WebConfig implements WebMvcConfigurer { + } diff --git a/gb28181-service/src/main/java/cn/skcks/docking/gb28181/service/record/RecordService.java b/gb28181-service/src/main/java/cn/skcks/docking/gb28181/service/record/RecordService.java new file mode 100644 index 0000000..f68e0e0 --- /dev/null +++ b/gb28181-service/src/main/java/cn/skcks/docking/gb28181/service/record/RecordService.java @@ -0,0 +1,31 @@ +package cn.skcks.docking.gb28181.service.record; + +import cn.skcks.docking.gb28181.core.sip.service.SipService; +import cn.skcks.docking.gb28181.orm.mybatis.dynamic.model.DockingDevice; +import cn.skcks.docking.gb28181.service.docking.device.DockingDeviceService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.sip.SipProvider; + +@Slf4j +@Service +@RequiredArgsConstructor +public class RecordService { + private final DockingDeviceService deviceService; + private final SipService sipService; + + public void requestRecordInfo(String deviceId){ + DockingDevice device = deviceService.getDevice(deviceId); + if(device == null){ + log.info("未能找到 编码为 => {} 的设备", deviceId); + return; + } + + String transport = device.getTransport(); + String senderIp = device.getLocalIp(); + SipProvider provider = sipService.getProvider(transport, senderIp); + log.info("provider => {}", provider); + } +} diff --git a/starter/pom.xml b/starter/pom.xml index 944f055..92a1d50 100644 --- a/starter/pom.xml +++ b/starter/pom.xml @@ -21,6 +21,12 @@ + + cn.skcks.docking.gb28181 + api + ${project.version} + + cn.skcks.docking.gb28181 gb28181-service