设备查询/添加 api
This commit is contained in:
parent
a7e453fbda
commit
8db1726e10
@ -32,7 +32,7 @@ public class VideoController {
|
||||
return SwaggerConfig.api("VideoApi", "/video");
|
||||
}
|
||||
|
||||
@Operation(summary = "获取视频")
|
||||
@Operation(summary = "获取视频 (目前仅供测试)")
|
||||
@GetMapping(produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
|
||||
@ResponseBody
|
||||
public void video(HttpServletRequest request, HttpServletResponse response) {
|
||||
|
@ -0,0 +1,47 @@
|
||||
package cn.skcks.docking.gb28181.wvp.api.device;
|
||||
|
||||
import cn.skcks.docking.gb28181.annotation.web.methods.GetJson;
|
||||
import cn.skcks.docking.gb28181.annotation.web.methods.PostJson;
|
||||
import cn.skcks.docking.gb28181.common.json.JsonResponse;
|
||||
import cn.skcks.docking.gb28181.common.page.PageWrapper;
|
||||
import cn.skcks.docking.gb28181.wvp.api.device.convertor.DeviceDTOConvertor;
|
||||
import cn.skcks.docking.gb28181.wvp.api.device.dto.AddDeviceDTO;
|
||||
import cn.skcks.docking.gb28181.wvp.api.device.dto.DevicePageDTO;
|
||||
import cn.skcks.docking.gb28181.wvp.config.SwaggerConfig;
|
||||
import cn.skcks.docking.gb28181.wvp.orm.mybatis.dynamic.model.WvpProxyDevice;
|
||||
import cn.skcks.docking.gb28181.wvp.service.device.DeviceService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springdoc.core.annotations.ParameterObject;
|
||||
import org.springdoc.core.models.GroupedOpenApi;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@Slf4j
|
||||
@Tag(name = "设备信息")
|
||||
@RestController
|
||||
@RequestMapping("/device")
|
||||
@RequiredArgsConstructor
|
||||
public class DeviceController {
|
||||
private final DeviceService deviceService;
|
||||
|
||||
@Bean
|
||||
public GroupedOpenApi deviceApi() {
|
||||
return SwaggerConfig.api("DeviceApi", "/device");
|
||||
}
|
||||
|
||||
@Operation(summary = "分页查询设备列表")
|
||||
@GetJson("/page")
|
||||
public JsonResponse<PageWrapper<WvpProxyDevice>> getDevicesWithPagePage(@ParameterObject @Validated DevicePageDTO dto) {
|
||||
return JsonResponse.success(PageWrapper.of(deviceService.getDevicesWithPage(dto.getPage(), dto.getSize())));
|
||||
}
|
||||
|
||||
@PostJson("/add")
|
||||
public JsonResponse<Boolean> addDevice(@RequestBody AddDeviceDTO dto){
|
||||
return JsonResponse.success(deviceService.addDevice(DeviceDTOConvertor.INSTANCE.dto2dao(dto)));
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package cn.skcks.docking.gb28181.wvp.api.device.convertor;
|
||||
|
||||
import cn.skcks.docking.gb28181.wvp.api.device.dto.AddDeviceDTO;
|
||||
import cn.skcks.docking.gb28181.wvp.orm.mybatis.dynamic.model.WvpProxyDevice;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@Mapper
|
||||
public abstract class DeviceDTOConvertor {
|
||||
public static final DeviceDTOConvertor INSTANCE = Mappers.getMapper(DeviceDTOConvertor.class);
|
||||
|
||||
abstract public WvpProxyDevice dto2dao(AddDeviceDTO dto);
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package cn.skcks.docking.gb28181.wvp.api.device.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AddDeviceDTO {
|
||||
@NotBlank(message = "设备编码 不能为空")
|
||||
@Schema(description = "设备编码")
|
||||
private String deviceCode;
|
||||
@NotBlank(message = "国标编码 不能为空")
|
||||
@Schema(description = "国标编码")
|
||||
private String gbDeviceId;
|
||||
@NotBlank(message = "国标通道id 不能为空")
|
||||
@Schema(description = "国标通道id")
|
||||
private String gbDeviceChannelId;
|
||||
@NotBlank(message = "设备名称 不能为空")
|
||||
@Schema(description = "设备名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "地址")
|
||||
private String address;
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package cn.skcks.docking.gb28181.wvp.api.device.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DevicePageDTO {
|
||||
@Schema(description = "页数", example = "1")
|
||||
@NotNull(message = "page 不能为空")
|
||||
@Min(value = 1, message = "page 必须为正整数")
|
||||
int page;
|
||||
|
||||
@Schema(description = "每页条数", example = "10")
|
||||
@NotNull(message = "size 不能为空")
|
||||
@Min(value = 1, message = "size 必须为正整数")
|
||||
int size;
|
||||
}
|
@ -1,7 +1,8 @@
|
||||
package cn.skcks.docking.gb28181.wvp.api.video;
|
||||
|
||||
import cn.skcks.docking.gb28181.wvp.service.video.RecordService;
|
||||
import jakarta.servlet.AsyncContext;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -9,17 +10,20 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@Slf4j
|
||||
@Tag(name = "录像api")
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/video/record")
|
||||
public class RecordController {
|
||||
private final RecordService recordService;
|
||||
|
||||
@Operation(summary = "返回文件下载 http 头信息",description = "禁止多线程下载, 默认文件名为 record.flv")
|
||||
@RequestMapping(method = {RequestMethod.HEAD,RequestMethod.OPTIONS})
|
||||
public void record(HttpServletResponse response){
|
||||
recordService.header(response);
|
||||
}
|
||||
|
||||
@Operation(summary = "录制flv视频流, 并下载为flv文件")
|
||||
@GetMapping
|
||||
public void record(HttpServletRequest request, HttpServletResponse response, @RequestParam String url, @RequestParam long time){
|
||||
recordService.record(request, response,url,time);
|
||||
|
@ -0,0 +1,17 @@
|
||||
package cn.skcks.docking.gb28181.wvp.common.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
public class PageDTO {
|
||||
@Schema(description = "页数", example = "10")
|
||||
@NotNull(message = "page 不能为空")
|
||||
@Min(value = 1, message = "page 必须为正整数")
|
||||
int page;
|
||||
|
||||
@Schema(description = "每页条数", example = "10")
|
||||
@NotNull(message = "size 不能为空")
|
||||
@Min(value = 1, message = "size 必须为正整数")
|
||||
int size;
|
||||
}
|
@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
|
||||
@ -48,15 +49,19 @@ public class DeviceService {
|
||||
}
|
||||
|
||||
String deviceCode = device.getDeviceCode();
|
||||
if(StringUtils.isBlank(deviceCode)){
|
||||
throw new RuntimeException("设备编码不能为空");
|
||||
}
|
||||
if(getDeviceByDeviceCode(deviceCode).isPresent()){
|
||||
log.info("设备编码 {} 已存在" ,deviceCode);
|
||||
return false;
|
||||
throw new RuntimeException(MessageFormat.format("设备编码 {0} 已存在" ,deviceCode));
|
||||
}
|
||||
|
||||
String gbDeviceId = device.getGbDeviceId();
|
||||
if(StringUtils.isBlank(gbDeviceId)){
|
||||
throw new RuntimeException("国标编码不能为空");
|
||||
}
|
||||
if(getDeviceByGbDeviceId(gbDeviceId).isPresent()){
|
||||
log.info("国标编码 {} 已存在" ,gbDeviceId);
|
||||
return false;
|
||||
throw new RuntimeException(MessageFormat.format("国标编码 {0} 已存在" ,gbDeviceId));
|
||||
}
|
||||
|
||||
return deviceMapper.insert(device) > 0;
|
||||
|
Loading…
Reference in New Issue
Block a user