diff --git a/web-app/pom.xml b/web-app/pom.xml
index d8b6a77..706d4bc 100644
--- a/web-app/pom.xml
+++ b/web-app/pom.xml
@@ -21,6 +21,23 @@
com.zcloud.primeport
web-infrastructure
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ net.bytebuddy
+ byte-buddy
+
+
+
+
+ net.bytebuddy
+ byte-buddy
+ 1.12.23
+ test
+
diff --git a/web-app/src/main/java/com/zcloud/primeport/command/query/VideoQueryExe.java b/web-app/src/main/java/com/zcloud/primeport/command/query/VideoQueryExe.java
index 5772e42..c5b1e9d 100644
--- a/web-app/src/main/java/com/zcloud/primeport/command/query/VideoQueryExe.java
+++ b/web-app/src/main/java/com/zcloud/primeport/command/query/VideoQueryExe.java
@@ -34,7 +34,7 @@ public class VideoQueryExe {
*/
public PageResponse execute(VideoPageQry videoPageQry) {
Map parmas = PageQueryHelper.toHashMap(videoPageQry);
- PageResponse pageResponse = videoRepository.listPage(parmas);
+ PageResponse pageResponse = videoRepository.listPageWithOnline(parmas);
List examCenterCOS = videoCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
diff --git a/web-app/src/test/java/com/zcloud/primeport/command/query/VideoQueryExeTest.java b/web-app/src/test/java/com/zcloud/primeport/command/query/VideoQueryExeTest.java
new file mode 100644
index 0000000..3c2ca8b
--- /dev/null
+++ b/web-app/src/test/java/com/zcloud/primeport/command/query/VideoQueryExeTest.java
@@ -0,0 +1,95 @@
+package com.zcloud.primeport.command.query;
+
+import com.alibaba.cola.dto.PageResponse;
+import com.zcloud.primeport.command.convertor.VideoCoConvertor;
+import com.zcloud.primeport.dto.VideoPageQry;
+import com.zcloud.primeport.dto.clientobject.VideoCO;
+import com.zcloud.primeport.persistence.dataobject.VideoDO;
+import com.zcloud.primeport.persistence.repository.VideoRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.Collections;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class VideoQueryExeTest {
+
+ @Mock
+ private VideoRepository videoRepository;
+
+ @Mock
+ private VideoCoConvertor videoCoConvertor;
+
+ private VideoQueryExe videoQueryExe;
+
+ @BeforeEach
+ void setUp() {
+ videoQueryExe = new VideoQueryExe(videoRepository, videoCoConvertor);
+ }
+
+ @Test
+ void shouldCallListPageWithOnlineAndReturnIsOnlineAndType() {
+ VideoPageQry qry = new VideoPageQry();
+ qry.setEqIsOnline(1);
+ qry.setPageSize(10);
+ qry.setPageIndex(1);
+
+ VideoDO videoDO = new VideoDO();
+ videoDO.setId(1L);
+ videoDO.setVideoResourceName("test-camera");
+ videoDO.setIsOnline("1");
+ videoDO.setType("yd");
+
+ PageResponse doPage = PageResponse.of(
+ Collections.singletonList(videoDO), 1, 10, 1);
+
+ VideoCO videoCO = new VideoCO();
+ videoCO.setId(1L);
+ videoCO.setVideoResourceName("test-camera");
+ videoCO.setIsOnline("1");
+ videoCO.setType("yd");
+
+ when(videoRepository.listPageWithOnline(anyMap())).thenReturn(doPage);
+ when(videoCoConvertor.converDOsToCOs(any())).thenReturn(Collections.singletonList(videoCO));
+
+ PageResponse result = videoQueryExe.execute(qry);
+
+ assertNotNull(result);
+ assertEquals(1, result.getTotalCount());
+ List data = result.getData();
+ assertEquals(1, data.size());
+ assertEquals("test-camera", data.get(0).getVideoResourceName());
+ assertEquals("1", data.get(0).getIsOnline());
+ assertEquals("yd", data.get(0).getType());
+
+ verify(videoRepository).listPageWithOnline(anyMap());
+ }
+
+ @Test
+ void shouldReturnEmptyListWhenNoData() {
+ VideoPageQry qry = new VideoPageQry();
+ qry.setPageSize(10);
+ qry.setPageIndex(1);
+
+ PageResponse doPage = PageResponse.of(Collections.emptyList(), 0, 10, 1);
+
+ when(videoRepository.listPageWithOnline(anyMap())).thenReturn(doPage);
+ when(videoCoConvertor.converDOsToCOs(any())).thenReturn(Collections.emptyList());
+
+ PageResponse result = videoQueryExe.execute(qry);
+
+ assertNotNull(result);
+ assertEquals(0, result.getTotalCount());
+ assertTrue(result.getData().isEmpty());
+ }
+}
diff --git a/web-client/src/main/java/com/zcloud/primeport/dto/VideoPageQry.java b/web-client/src/main/java/com/zcloud/primeport/dto/VideoPageQry.java
index b1cf88d..c2f1865 100644
--- a/web-client/src/main/java/com/zcloud/primeport/dto/VideoPageQry.java
+++ b/web-client/src/main/java/com/zcloud/primeport/dto/VideoPageQry.java
@@ -31,5 +31,8 @@ public class VideoPageQry extends PageQuery {
// 视频名称
private String videoResourceName;
+
+ // 是否在线(0离线/1在线)
+ private Integer eqIsOnline;
}
diff --git a/web-client/src/main/java/com/zcloud/primeport/dto/clientobject/VideoCO.java b/web-client/src/main/java/com/zcloud/primeport/dto/clientobject/VideoCO.java
index ee57be0..89e2f63 100644
--- a/web-client/src/main/java/com/zcloud/primeport/dto/clientobject/VideoCO.java
+++ b/web-client/src/main/java/com/zcloud/primeport/dto/clientobject/VideoCO.java
@@ -38,5 +38,9 @@ public class VideoCO extends ClientObject {
//纬度
@ApiModelProperty(value = "纬度")
private String latitude;
+ @ApiModelProperty(value = "是否在线")
+ private String isOnline;
+ @ApiModelProperty(value = "摄像头来源(yd移动/gd固定)")
+ private String type;
}
diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/VideoDO.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/VideoDO.java
index 4e0ac26..6a0af2f 100644
--- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/VideoDO.java
+++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/dataobject/VideoDO.java
@@ -1,6 +1,7 @@
package com.zcloud.primeport.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
@@ -40,5 +41,11 @@ public class VideoDO extends BaseDO {
//纬度
@ApiModelProperty(value = "纬度")
private String latitude;
+ @ApiModelProperty(value = "是否在线")
+ @TableField(exist = false)
+ private String isOnline;
+ @ApiModelProperty(value = "摄像头来源(yd移动/gd固定)")
+ @TableField(exist = false)
+ private String type;
}
diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/VideoMapper.java b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/VideoMapper.java
index 0230ff6..572a555 100644
--- a/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/VideoMapper.java
+++ b/web-infrastructure/src/main/java/com/zcloud/primeport/persistence/mapper/VideoMapper.java
@@ -1,8 +1,13 @@
package com.zcloud.primeport.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zcloud.primeport.persistence.dataobject.VideoDO;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
/**
* web-infrastructure
@@ -13,5 +18,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface VideoMapper extends BaseMapper {
+ IPage listPageWithOnline(Page