Commit dcd78a1cfa0c929403d51a347e43414f6aa5f0d8

Authored by panlinlin
1 parent a25f7e4f

存储部分使用sqlite代替redis-3

@@ -45,9 +45,6 @@ @@ -45,9 +45,6 @@
45 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 45 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
46 46
47 <!-- 依赖版本 --> 47 <!-- 依赖版本 -->
48 - <mapper.version>4.1.5</mapper.version>  
49 - <mybatis.version>3.5.5</mybatis.version>  
50 - <mybatis.spring.version>2.0.5</mybatis.spring.version>  
51 <pagehelper.version>5.2.0</pagehelper.version> 48 <pagehelper.version>5.2.0</pagehelper.version>
52 <snippetsDirectory>${project.build.directory}/generated-snippets</snippetsDirectory> 49 <snippetsDirectory>${project.build.directory}/generated-snippets</snippetsDirectory>
53 <asciidoctor.input.directory>${project.basedir}/docs/asciidoc</asciidoctor.input.directory> 50 <asciidoctor.input.directory>${project.basedir}/docs/asciidoc</asciidoctor.input.directory>
@@ -59,30 +56,16 @@ @@ -59,30 +56,16 @@
59 <dependencies> 56 <dependencies>
60 <dependency> 57 <dependency>
61 <groupId>org.springframework.boot</groupId> 58 <groupId>org.springframework.boot</groupId>
62 - <artifactId>spring-boot-starter-jdbc</artifactId>  
63 - </dependency>  
64 - <dependency>  
65 - <groupId>org.springframework.boot</groupId>  
66 - <artifactId>spring-boot-starter-tomcat</artifactId> 59 + <artifactId>spring-boot-starter-data-redis</artifactId>
67 </dependency> 60 </dependency>
68 <dependency> 61 <dependency>
69 <groupId>org.springframework.boot</groupId> 62 <groupId>org.springframework.boot</groupId>
70 <artifactId>spring-boot-starter-web</artifactId> 63 <artifactId>spring-boot-starter-web</artifactId>
71 </dependency> 64 </dependency>
72 <dependency> 65 <dependency>
73 - <groupId>org.springframework</groupId>  
74 - <artifactId>spring-context</artifactId>  
75 - </dependency>  
76 -  
77 - <!-- redis -->  
78 - <dependency>  
79 - <groupId>org.springframework.data</groupId>  
80 - <artifactId>spring-data-redis</artifactId>  
81 - </dependency>  
82 - <dependency>  
83 - <groupId>redis.clients</groupId>  
84 - <artifactId>jedis</artifactId>  
85 - <version>3.3.0</version> 66 + <groupId>org.mybatis.spring.boot</groupId>
  67 + <artifactId>mybatis-spring-boot-starter</artifactId>
  68 + <version>2.1.4</version>
86 </dependency> 69 </dependency>
87 70
88 <!-- druid数据库连接池 --> 71 <!-- druid数据库连接池 -->
@@ -106,36 +89,18 @@ @@ -106,36 +89,18 @@
106 <version>3.32.3.2</version> 89 <version>3.32.3.2</version>
107 </dependency> 90 </dependency>
108 91
109 - <!--Mybatis -->  
110 - <dependency>  
111 - <groupId>org.mybatis</groupId>  
112 - <artifactId>mybatis</artifactId>  
113 - <version>${mybatis.version}</version>  
114 - </dependency>  
115 - <dependency>  
116 - <groupId>org.mybatis</groupId>  
117 - <artifactId>mybatis-spring</artifactId>  
118 - <version>${mybatis.spring.version}</version>  
119 - </dependency>  
120 -  
121 - <!--分页插件 --> 92 + <!--Mybatis分页插件 -->
122 <dependency> 93 <dependency>
123 <groupId>com.github.pagehelper</groupId> 94 <groupId>com.github.pagehelper</groupId>
124 - <artifactId>pagehelper</artifactId>  
125 - <version>${pagehelper.version}</version> 95 + <artifactId>pagehelper-spring-boot-starter</artifactId>
  96 + <version>1.2.10</version>
126 </dependency> 97 </dependency>
127 98
128 - <!--通用Mapper -->  
129 - <dependency>  
130 - <groupId>tk.mybatis</groupId>  
131 - <artifactId>mapper</artifactId>  
132 - <version>${mapper.version}</version>  
133 - </dependency>  
134 - <dependency>  
135 - <groupId>org.apache.commons</groupId>  
136 - <artifactId>commons-lang3</artifactId>  
137 - <version>3.11</version>  
138 - </dependency> 99 +<!-- <dependency>-->
  100 +<!-- <groupId>org.apache.commons</groupId>-->
  101 +<!-- <artifactId>commons-lang3</artifactId>-->
  102 +<!-- <version>3.11</version>-->
  103 +<!-- </dependency>-->
139 104
140 <!--Swagger2 --> 105 <!--Swagger2 -->
141 <!--在线文档 --> 106 <!--在线文档 -->
src/main/java/com/genersoft/iot/vmp/common/PageResult.java deleted 100644 → 0
1 -package com.genersoft.iot.vmp.common;  
2 -  
3 -  
4 -import java.util.List;  
5 -  
6 -public class PageResult<T> {  
7 -  
8 - private int page;  
9 - private int count;  
10 - private int total;  
11 -  
12 - private List<T> data;  
13 -  
14 - public List<T> getData() {  
15 - return data;  
16 - }  
17 -  
18 - public int getPage() {  
19 - return page;  
20 - }  
21 -  
22 - public void setPage(int page) {  
23 - this.page = page;  
24 - }  
25 -  
26 - public int getCount() {  
27 - return count;  
28 - }  
29 -  
30 - public void setCount(int count) {  
31 - this.count = count;  
32 - }  
33 -  
34 - public int getTotal() {  
35 - return total;  
36 - }  
37 -  
38 - public void setTotal(int total) {  
39 - this.total = total;  
40 - }  
41 -  
42 - public void setData(List<T> data) {  
43 - this.data = data;  
44 - }  
45 -}  
src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
1 package com.genersoft.iot.vmp.gb28181.bean; 1 package com.genersoft.iot.vmp.gb28181.bean;
2 2
3 3
4 -import java.util.Date;  
5 -import java.util.List;  
6 -import java.util.Map;  
7 -  
8 public class Device { 4 public class Device {
9 5
10 /** 6 /**
11 - * 数据库存储ID  
12 - */  
13 - private int id;  
14 -  
15 - /**  
16 * 设备Id 7 * 设备Id
17 */ 8 */
18 private String deviceId; 9 private String deviceId;
@@ -52,9 +43,19 @@ public class Device { @@ -52,9 +43,19 @@ public class Device {
52 private String streamMode; 43 private String streamMode;
53 44
54 /** 45 /**
  46 + * wan地址_ip
  47 + */
  48 + private String ip;
  49 +
  50 + /**
  51 + * wan地址_port
  52 + */
  53 + private int port;
  54 +
  55 + /**
55 * wan地址 56 * wan地址
56 */ 57 */
57 - private Host host; 58 + private String hostAddress;
58 59
59 /** 60 /**
60 * 在线 61 * 在线
@@ -72,14 +73,6 @@ public class Device { @@ -72,14 +73,6 @@ public class Device {
72 */ 73 */
73 private int channelCount; 74 private int channelCount;
74 75
75 - public int getId() {  
76 - return id;  
77 - }  
78 -  
79 - public void setId(int id) {  
80 - this.id = id;  
81 - }  
82 -  
83 public String getDeviceId() { 76 public String getDeviceId() {
84 return deviceId; 77 return deviceId;
85 } 78 }
@@ -136,12 +129,28 @@ public class Device { @@ -136,12 +129,28 @@ public class Device {
136 this.streamMode = streamMode; 129 this.streamMode = streamMode;
137 } 130 }
138 131
139 - public Host getHost() {  
140 - return host; 132 + public String getIp() {
  133 + return ip;
  134 + }
  135 +
  136 + public void setIp(String ip) {
  137 + this.ip = ip;
  138 + }
  139 +
  140 + public int getPort() {
  141 + return port;
  142 + }
  143 +
  144 + public void setPort(int port) {
  145 + this.port = port;
  146 + }
  147 +
  148 + public String getHostAddress() {
  149 + return hostAddress;
141 } 150 }
142 151
143 - public void setHost(Host host) {  
144 - this.host = host; 152 + public void setHostAddress(String hostAddress) {
  153 + this.hostAddress = hostAddress;
145 } 154 }
146 155
147 public int getOnline() { 156 public int getOnline() {
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
@@ -44,9 +44,8 @@ public class SIPRequestHeaderProvider { @@ -44,9 +44,8 @@ public class SIPRequestHeaderProvider {
44 44
45 public Request createMessageRequest(Device device, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException, PeerUnavailableException { 45 public Request createMessageRequest(Device device, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException, PeerUnavailableException {
46 Request request = null; 46 Request request = null;
47 - Host host = device.getHost();  
48 // sipuri 47 // sipuri
49 - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), host.getAddress()); 48 + SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
50 // via 49 // via
51 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 50 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
52 ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), 51 ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(),
@@ -79,12 +78,11 @@ public class SIPRequestHeaderProvider { @@ -79,12 +78,11 @@ public class SIPRequestHeaderProvider {
79 78
80 public Request createInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, String ssrc) throws ParseException, InvalidArgumentException, PeerUnavailableException { 79 public Request createInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, String ssrc) throws ParseException, InvalidArgumentException, PeerUnavailableException {
81 Request request = null; 80 Request request = null;
82 - Host host = device.getHost();  
83 //请求行 81 //请求行
84 - SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, host.getAddress()); 82 + SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
85 //via 83 //via
86 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 84 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
87 - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(device.getHost().getIp(), device.getHost().getPort(), device.getTransport(), viaTag); 85 + ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(device.getIp(), device.getPort(), device.getTransport(), viaTag);
88 viaHeader.setRPort(); 86 viaHeader.setRPort();
89 viaHeaders.add(viaHeader); 87 viaHeaders.add(viaHeader);
90 88
@@ -126,12 +124,11 @@ public class SIPRequestHeaderProvider { @@ -126,12 +124,11 @@ public class SIPRequestHeaderProvider {
126 124
127 public Request createPlaybackInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException, PeerUnavailableException { 125 public Request createPlaybackInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException, PeerUnavailableException {
128 Request request = null; 126 Request request = null;
129 - Host host = device.getHost();  
130 //请求行 127 //请求行
131 - SipURI requestLine = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), host.getAddress()); 128 + SipURI requestLine = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
132 // via 129 // via
133 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); 130 ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
134 - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(device.getHost().getIp(), device.getHost().getPort(), device.getTransport(), viaTag); 131 + ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(device.getIp(), device.getPort(), device.getTransport(), viaTag);
135 viaHeader.setRPort(); 132 viaHeader.setRPort();
136 viaHeaders.add(viaHeader); 133 viaHeaders.add(viaHeader);
137 //from 134 //from
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
@@ -107,17 +107,15 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor { @@ -107,17 +107,15 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor {
107 rPort = viaHeader.getPort(); 107 rPort = viaHeader.getPort();
108 } 108 }
109 // 109 //
110 - Host host = new Host();  
111 - host.setIp(received);  
112 - host.setPort(rPort);  
113 - host.setAddress(received.concat(":").concat(String.valueOf(rPort)));  
114 AddressImpl address = (AddressImpl) fromHeader.getAddress(); 110 AddressImpl address = (AddressImpl) fromHeader.getAddress();
115 SipUri uri = (SipUri) address.getURI(); 111 SipUri uri = (SipUri) address.getURI();
116 String deviceId = uri.getUser(); 112 String deviceId = uri.getUser();
117 device = new Device(); 113 device = new Device();
118 device.setStreamMode("UDP"); 114 device.setStreamMode("UDP");
119 device.setDeviceId(deviceId); 115 device.setDeviceId(deviceId);
120 - device.setHost(host); 116 + device.setIp(received);
  117 + device.setPort(rPort);
  118 + device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
121 // 注销成功 119 // 注销成功
122 if (expiresHeader != null && expiresHeader.getExpires() == 0) { 120 if (expiresHeader != null && expiresHeader.getExpires() == 0) {
123 registerFlag = 2; 121 registerFlag = 2;
src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
1 package com.genersoft.iot.vmp.storager; 1 package com.genersoft.iot.vmp.storager;
2 2
3 import java.util.List; 3 import java.util.List;
4 -import java.util.Map;  
5 4
6 -import com.alibaba.fastjson.JSONObject;  
7 -import com.genersoft.iot.vmp.common.PageResult;  
8 -import com.genersoft.iot.vmp.common.StreamInfo;  
9 -import com.genersoft.iot.vmp.conf.MediaServerConfig;  
10 import com.genersoft.iot.vmp.gb28181.bean.Device; 5 import com.genersoft.iot.vmp.gb28181.bean.Device;
11 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; 6 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
  7 +import com.github.pagehelper.PageInfo;
12 8
13 /** 9 /**
14 * @Description:视频设备数据存储接口 10 * @Description:视频设备数据存储接口
@@ -65,7 +61,7 @@ public interface IVideoManagerStorager { @@ -65,7 +61,7 @@ public interface IVideoManagerStorager {
65 * @param count 每页数量 61 * @param count 每页数量
66 * @return 62 * @return
67 */ 63 */
68 - public PageResult queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, String online, int page, int count); 64 + public PageInfo queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, Boolean online, int page, int count);
69 65
70 /** 66 /**
71 * 获取某个设备的通道列表 67 * 获取某个设备的通道列表
@@ -82,13 +78,13 @@ public interface IVideoManagerStorager { @@ -82,13 +78,13 @@ public interface IVideoManagerStorager {
82 */ 78 */
83 public DeviceChannel queryChannel(String deviceId, String channelId); 79 public DeviceChannel queryChannel(String deviceId, String channelId);
84 80
85 - /** 81 + /**
86 * 获取多个设备 82 * 获取多个设备
87 - *  
88 - * @param deviceIds 设备ID数组 83 + * @param page 当前页数
  84 + * @param count 每页数量
89 * @return List<Device> 设备对象数组 85 * @return List<Device> 设备对象数组
90 */ 86 */
91 - public PageResult<Device> queryVideoDeviceList(String[] deviceIds, int page, int count); 87 + public PageInfo<Device> queryVideoDeviceList(int page, int count);
92 88
93 /** 89 /**
94 * 获取多个设备 90 * 获取多个设备
@@ -131,7 +127,7 @@ public interface IVideoManagerStorager { @@ -131,7 +127,7 @@ public interface IVideoManagerStorager {
131 * @param count 127 * @param count
132 * @return 128 * @return
133 */ 129 */
134 - PageResult querySubChannels(String deviceId, String channelId, String query, Boolean hasSubChannel, String online, int page, int count); 130 + PageInfo querySubChannels(String deviceId, String channelId, String query, Boolean hasSubChannel, String online, int page, int count);
135 131
136 132
137 /** 133 /**
src/main/java/com/genersoft/iot/vmp/storager/VodeoMannagerTask.java deleted 100644 → 0
1 -package com.genersoft.iot.vmp.storager;  
2 -  
3 -import org.springframework.beans.factory.annotation.Autowired;  
4 -import org.springframework.boot.CommandLineRunner;  
5 -import org.springframework.stereotype.Component;  
6 -  
7 -@Component  
8 -public class VodeoMannagerTask implements CommandLineRunner {  
9 -  
10 - @Autowired  
11 - private IVideoManagerStorager redisStorager;  
12 -  
13 - @Override  
14 - public void run(String... strings) throws Exception {  
15 - redisStorager.updateCatch();  
16 - }  
17 -}  
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
1 package com.genersoft.iot.vmp.storager.dao; 1 package com.genersoft.iot.vmp.storager.dao;
2 2
3 -import com.genersoft.iot.vmp.common.PageResult;  
4 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; 3 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
5 -import org.apache.ibatis.annotations.Mapper; 4 +import org.apache.ibatis.annotations.*;
6 5
7 import java.util.List; 6 import java.util.List;
8 7
  8 +/**
  9 + * 用于存储设备通道信息
  10 + */
9 @Mapper 11 @Mapper
10 public interface DeviceChannelMapper { 12 public interface DeviceChannelMapper {
11 - int update(DeviceChannel channel);  
12 13
13 - List<DeviceChannel> queryChannelsByDeviceId(String deviceId); 14 + @Insert("INSERT INTO device_channel (channelId, deviceId, name, manufacture, model, owner, civilCode, block, " +
  15 + "address, parental, parentId, safetyWay, registerWay, certNum, certifiable, errCode, secrecy, " +
  16 + "ipAddress, port, password, PTZType, status) " +
  17 + "VALUES ('${channelId}', '${deviceId}', '${name}', '${manufacture}', '${model}', '${owner}', '${civilCode}', '${block}'," +
  18 + "'${address}', ${parental}, '${parentId}', ${safetyWay}, ${registerWay}, '${certNum}', ${certifiable}, ${errCode}, '${secrecy}', " +
  19 + "'${ipAddress}', ${port}, '${password}', ${PTZType}, ${status})")
  20 + int add(DeviceChannel channel);
  21 +
  22 + @Update("UPDATE device_channel " +
  23 + "SET name=#{name}, manufacture=#{manufacture}, model=#{model}, owner=#{owner}, civilCode=#{civilCode}, " +
  24 + "block=#{block}, address=#{address}, parental=#{parental}, parentId=#{parentId}, safetyWay=#{safetyWay}, " +
  25 + "registerWay=#{registerWay}, certNum=#{certNum}, certifiable=#{certifiable}, errCode=#{errCode}, secrecy=#{secrecy}, " +
  26 + "ipAddress=#{ipAddress}, port=#{port}, password=#{password}, PTZType=#{PTZType}, status=#{status} " +
  27 + "WHERE deviceId=#{deviceId} AND channelId=#{channelId}")
  28 + int update(DeviceChannel channel);
14 29
15 - List<DeviceChannel> queryChannelsByDeviceId(String deviceId, String parentChannelId); 30 + @Select(value = {" <script>" +
  31 + "SELECT * FROM ( "+
  32 + " SELECT * , (SELECT count(0) FROM device_channel WHERE parentId=dc.channelId) as subCount FROM device_channel dc " +
  33 + " WHERE dc.deviceId=#{deviceId} " +
  34 + " <if test=\"query != null\"> AND (dc.channelId LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " +
  35 + " <if test=\"parentChannelId != null\"> AND dc.parentId=#{parentChannelId} </if> " +
  36 + " <if test=\"online == true\" > AND dc.status=1</if>" +
  37 + " <if test=\"online == false\" > AND dc.status=0</if>) dcr" +
  38 + " WHERE 1=1 " +
  39 + " <if test=\"hasSubChannel == true\" > AND subCount >0</if>" +
  40 + " <if test=\"hasSubChannel == false\" > AND subCount=0</if>" +
  41 + " </script>"})
  42 + List<DeviceChannel> queryChannelsByDeviceId(String deviceId, String parentChannelId, String query, Boolean hasSubChannel, Boolean online);
16 43
  44 + @Select("SELECT * FROM device_channel WHERE deviceId=#{deviceId} AND channelId=#{channelId}")
17 DeviceChannel queryChannel(String deviceId, String channelId); 45 DeviceChannel queryChannel(String deviceId, String channelId);
18 46
  47 + @Delete("DELETE FROM device_channel WHERE deviceId=#{deviceId}")
19 int cleanChannelsByDeviceId(String deviceId); 48 int cleanChannelsByDeviceId(String deviceId);
  49 +
20 } 50 }
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
1 package com.genersoft.iot.vmp.storager.dao; 1 package com.genersoft.iot.vmp.storager.dao;
2 2
3 import com.genersoft.iot.vmp.gb28181.bean.Device; 3 import com.genersoft.iot.vmp.gb28181.bean.Device;
4 -import org.apache.ibatis.annotations.Insert;  
5 -import org.apache.ibatis.annotations.Mapper;  
6 -import org.apache.ibatis.annotations.Select; 4 +import org.apache.ibatis.annotations.*;
  5 +import org.springframework.stereotype.Repository;
7 6
8 import java.util.List; 7 import java.util.List;
9 8
  9 +/**
  10 + * 用于存储设备信息
  11 + */
10 @Mapper 12 @Mapper
  13 +@Repository
11 public interface DeviceMapper { 14 public interface DeviceMapper {
12 15
13 @Select("SELECT * FROM device WHERE deviceId = #{deviceId}") 16 @Select("SELECT * FROM device WHERE deviceId = #{deviceId}")
14 Device getDeviceByDeviceId(String deviceId); 17 Device getDeviceByDeviceId(String deviceId);
15 18
16 - @Insert("SELECT * FROM device WHERE deviceId = #{deviceId}") 19 + @Insert("INSERT INTO device (" +
  20 + "deviceId, " +
  21 + "name, " +
  22 + "manufacturer, " +
  23 + "model, " +
  24 + "firmware, " +
  25 + "transport," +
  26 + "streamMode," +
  27 + "ip," +
  28 + "port," +
  29 + "hostAddress," +
  30 + "online" +
  31 + ") VALUES (" +
  32 + "#{deviceId}," +
  33 + "#{name}," +
  34 + "#{manufacturer}," +
  35 + "#{model}," +
  36 + "#{firmware}," +
  37 + "#{transport}," +
  38 + "#{streamMode}," +
  39 + "#{ip}," +
  40 + "#{port}," +
  41 + "#{hostAddress}," +
  42 + "#{online}" +
  43 + ")")
17 int add(Device device); 44 int add(Device device);
18 45
  46 +
  47 + @Update("UPDATE device " +
  48 + "SET name=#{name}, " +
  49 + "manufacturer=#{manufacturer}," +
  50 + "model=#{model}," +
  51 + "firmware=#{firmware}, " +
  52 + "transport=#{transport}," +
  53 + "streamMode=#{streamMode}, " +
  54 + "ip=#{ip}, " +
  55 + "port=#{port}, " +
  56 + "hostAddress=#{hostAddress}, " +
  57 + "online=#{online} " +
  58 + "WHERE deviceId=#{deviceId}")
19 int update(Device device); 59 int update(Device device);
20 60
  61 + @Select("SELECT *, (SELECT count(0) FROM device_channel WHERE deviceId=de.deviceId) as channelCount FROM device de")
21 List<Device> getDevices(); 62 List<Device> getDevices();
22 63
  64 + @Delete("DELETE FROM device WHERE deviceId=#{deviceId}")
23 int del(String deviceId); 65 int del(String deviceId);
24 } 66 }
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -6,7 +6,6 @@ import com.genersoft.iot.vmp.conf.MediaServerConfig; @@ -6,7 +6,6 @@ import com.genersoft.iot.vmp.conf.MediaServerConfig;
6 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; 6 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
7 import com.genersoft.iot.vmp.storager.IRedisCatchStorage; 7 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
8 import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; 8 import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
9 -import com.genersoft.iot.vmp.storager.dao.DeviceMapper;  
10 import com.genersoft.iot.vmp.utils.redis.RedisUtil; 9 import com.genersoft.iot.vmp.utils.redis.RedisUtil;
11 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.stereotype.Component; 11 import org.springframework.stereotype.Component;
@@ -23,9 +22,6 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -23,9 +22,6 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
23 private RedisUtil redis; 22 private RedisUtil redis;
24 23
25 @Autowired 24 @Autowired
26 - private DeviceMapper deviceMapper;  
27 -  
28 - @Autowired  
29 private DeviceChannelMapper deviceChannelMapper; 25 private DeviceChannelMapper deviceChannelMapper;
30 26
31 27
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
@@ -2,19 +2,17 @@ package com.genersoft.iot.vmp.storager.impl; @@ -2,19 +2,17 @@ package com.genersoft.iot.vmp.storager.impl;
2 2
3 import java.util.*; 3 import java.util.*;
4 4
5 -import com.genersoft.iot.vmp.common.PageResult;  
6 -import com.genersoft.iot.vmp.common.StreamInfo;  
7 -import com.genersoft.iot.vmp.conf.MediaServerConfig;  
8 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; 5 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
9 import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; 6 import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
10 import com.genersoft.iot.vmp.storager.dao.DeviceMapper; 7 import com.genersoft.iot.vmp.storager.dao.DeviceMapper;
  8 +import com.github.pagehelper.PageHelper;
  9 +import com.github.pagehelper.PageInfo;
  10 +import io.swagger.models.auth.In;
11 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.stereotype.Component; 12 import org.springframework.stereotype.Component;
13 13
14 -import com.genersoft.iot.vmp.common.VideoManagerConstants;  
15 import com.genersoft.iot.vmp.gb28181.bean.Device; 14 import com.genersoft.iot.vmp.gb28181.bean.Device;
16 import com.genersoft.iot.vmp.storager.IVideoManagerStorager; 15 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
17 -import com.genersoft.iot.vmp.utils.redis.RedisUtil;  
18 import org.springframework.util.StringUtils; 16 import org.springframework.util.StringUtils;
19 17
20 /** 18 /**
@@ -50,7 +48,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { @@ -50,7 +48,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
50 * @return true:创建成功 false:创建失败 48 * @return true:创建成功 false:创建失败
51 */ 49 */
52 @Override 50 @Override
53 - public boolean create(Device device) { 51 + public synchronized boolean create(Device device) {
54 return deviceMapper.add(device) > 0; 52 return deviceMapper.add(device) > 0;
55 } 53 }
56 54
@@ -63,69 +61,26 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { @@ -63,69 +61,26 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
63 * @return true:更新成功 false:更新失败 61 * @return true:更新成功 false:更新失败
64 */ 62 */
65 @Override 63 @Override
66 - public boolean updateDevice(Device device) {  
67 -// if (deviceMap.get(device.getDeviceId()) == null) {  
68 -// deviceMap.put(device.getDeviceId(), new HashMap<String, HashSet<String>>());  
69 -// }  
70 - // 更新device中的通道数量  
71 -// device.setChannelCount(deviceMap.get(device.getDeviceId()).size());  
72 - int result = deviceMapper.update(device);  
73 - // 存储device  
74 - return result > 0;  
75 - 64 + public synchronized boolean updateDevice(Device device) {
  65 + Device deviceByDeviceId = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
  66 + if (deviceByDeviceId == null) {
  67 + return deviceMapper.add(device) > 0;
  68 + }else {
  69 + return deviceMapper.update(device) > 0;
  70 + }
76 71
77 } 72 }
78 73
79 @Override 74 @Override
80 - public void updateChannel(String deviceId, DeviceChannel channel) { 75 + public synchronized void updateChannel(String deviceId, DeviceChannel channel) {
81 String channelId = channel.getChannelId(); 76 String channelId = channel.getChannelId();
82 channel.setDeviceId(deviceId); 77 channel.setDeviceId(deviceId);
83 - deviceChannelMapper.update(channel);  
84 -  
85 -// HashMap<String, HashSet<String>> channelMap = deviceMap.get(deviceId);  
86 -// if (channelMap == null) return;  
87 -// // 作为父设备, 确定自己的子节点数  
88 -// if (channelMap.get(channelId) == null) {  
89 -// channelMap.put(channelId, new HashSet<String>());  
90 -// }else if (channelMap.get(channelId).size() > 0) {  
91 -// channel.setSubCount(channelMap.get(channelId).size());  
92 -// }  
93 -//  
94 -// // 存储通道  
95 -// redis.set(VideoManagerConstants.CACHEKEY_PREFIX + deviceId +  
96 -// "_" + channel.getChannelId() +  
97 -// "_" + (channel.getStatus() == 1 ? "on":"off") +  
98 -// "_" + (channelMap.get(channelId).size() > 0)+  
99 -// "_" + (StringUtils.isEmpty(channel.getParentId())?null:channel.getParentId()),  
100 -// channel);  
101 -// // 更新device中的通道数量  
102 -// Device device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceId);  
103 -// device.setChannelCount(deviceMap.get(deviceId).size());  
104 -// redis.set(VideoManagerConstants.DEVICE_PREFIX+device.getDeviceId(), device);  
105 -//  
106 -//  
107 -// // 如果有父设备,更新父设备内子节点数  
108 -// String parentId = channel.getParentId();  
109 -// if (!StringUtils.isEmpty(parentId) && !parentId.equals(deviceId)) {  
110 -//  
111 -// if (channelMap.get(parentId) == null) {  
112 -// channelMap.put(parentId, new HashSet<String>());  
113 -// }  
114 -// channelMap.get(parentId).add(channelId);  
115 -//  
116 -// DeviceChannel deviceChannel = queryChannel(deviceId, parentId);  
117 -// if (deviceChannel != null) {  
118 -// deviceChannel.setSubCount(channelMap.get(parentId).size());  
119 -// redis.set(VideoManagerConstants.CACHEKEY_PREFIX + deviceId +  
120 -// "_" + deviceChannel.getChannelId() +  
121 -// "_" + (deviceChannel.getStatus() == 1 ? "on":"off") +  
122 -// "_" + (channelMap.get(deviceChannel.getChannelId()).size() > 0)+  
123 -// "_" + (StringUtils.isEmpty(deviceChannel.getParentId())?null:deviceChannel.getParentId()),  
124 -// deviceChannel);  
125 -//  
126 -// }  
127 -// }  
128 - 78 + DeviceChannel deviceChannel = deviceChannelMapper.queryChannel(deviceId, channelId);
  79 + if (deviceChannel == null) {
  80 + deviceChannelMapper.add(channel);
  81 + }else {
  82 + deviceChannelMapper.update(channel);
  83 + }
129 } 84 }
130 85
131 /** 86 /**
@@ -140,179 +95,45 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { @@ -140,179 +95,45 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
140 } 95 }
141 96
142 @Override 97 @Override
143 - public PageResult queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, String online, int page, int count) { 98 + public PageInfo queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, Boolean online, int page, int count) {
144 // 获取到所有正在播放的流 99 // 获取到所有正在播放的流
145 - List<DeviceChannel> result = new ArrayList<>();  
146 - PageResult pageResult = new PageResult<DeviceChannel>();  
147 -  
148 - deviceChannelMapper.queryChannelsByDeviceId(deviceId);  
149 -// String queryContent = "*";  
150 -// if (!StringUtils.isEmpty(query)) queryContent = String.format("*%S*",query);  
151 -// String queryHasSubChannel = "*";  
152 -// if (hasSubChannel != null) queryHasSubChannel = hasSubChannel?"true":"false";  
153 -// String queryOnline = "*";  
154 -// if (!StringUtils.isEmpty(online)) queryOnline = online;  
155 -// String queryStr = VideoManagerConstants.CACHEKEY_PREFIX + deviceId +  
156 -// "_" + queryContent + // 搜索编号和名称  
157 -// "_" + queryOnline + // 搜索是否在线  
158 -// "_" + queryHasSubChannel + // 搜索是否含有子节点  
159 -// "_" + "*";  
160 -// List<Object> deviceChannelList = redis.scan(queryStr);  
161 -// //对查询结果排序,避免出现通道排列顺序乱序的情况  
162 -// Collections.sort(deviceChannelList,new Comparator<Object>(){  
163 -// @Override  
164 -// public int compare(Object o1, Object o2) {  
165 -// return o1.toString().compareToIgnoreCase(o2.toString());  
166 -// }  
167 -// });  
168 -// pageResult.setPage(page);  
169 -// pageResult.setCount(count);  
170 -// pageResult.setTotal(deviceChannelList.size());  
171 -// int maxCount = (page + 1 ) * count;  
172 -// if (deviceChannelList != null && deviceChannelList.size() > 0 ) {  
173 -// for (int i = page * count; i < (pageResult.getTotal() > maxCount ? maxCount : pageResult.getTotal() ); i++) {  
174 -// DeviceChannel deviceChannel = (DeviceChannel)redis.get((String)deviceChannelList.get(i));  
175 -// StreamInfo streamInfo = stringStreamInfoMap.get(deviceId + "_" + deviceChannel.getChannelId());  
176 -// deviceChannel.setPlay(streamInfo != null);  
177 -// if (streamInfo != null) deviceChannel.setStreamId(streamInfo.getStreamId());  
178 -// result.add(deviceChannel);  
179 -// }  
180 -// pageResult.setData(result);  
181 -// }  
182 -  
183 - return pageResult; 100 + PageHelper.startPage(page, count);
  101 + List<DeviceChannel> all = deviceChannelMapper.queryChannelsByDeviceId(deviceId, null, query, hasSubChannel, online);
  102 + return new PageInfo<>(all);
184 } 103 }
185 104
186 105
187 106
188 @Override 107 @Override
189 public List<DeviceChannel> queryChannelsByDeviceId(String deviceId) { 108 public List<DeviceChannel> queryChannelsByDeviceId(String deviceId) {
190 -// List<DeviceChannel> result = new ArrayList<>();  
191 -//// List<Object> deviceChannelList = redis.keys(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + "_" + "*");  
192 -// List<Object> deviceChannelList = redis.scan(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + "_" + "*");  
193 -//  
194 -// if (deviceChannelList != null && deviceChannelList.size() > 0 ) {  
195 -// for (int i = 0; i < deviceChannelList.size(); i++) {  
196 -// result.add((DeviceChannel)redis.get((String) deviceChannelList.get(i)));  
197 -// }  
198 -// }  
199 - return deviceChannelMapper.queryChannelsByDeviceId(deviceId); 109 + return deviceChannelMapper.queryChannelsByDeviceId(deviceId, null,null, null, null);
200 } 110 }
201 111
202 @Override 112 @Override
203 - public PageResult querySubChannels(String deviceId, String parentChannelId, String query, Boolean hasSubChannel, String online, int page, int count) {  
204 -  
205 - deviceChannelMapper.queryChannelsByDeviceId(deviceId, parentChannelId);  
206 -  
207 -// List<DeviceChannel> allDeviceChannels = new ArrayList<>();  
208 -// String queryContent = "*";  
209 -// if (!StringUtils.isEmpty(query)) queryContent = String.format("*%S*",query);  
210 -// String queryHasSubChannel = "*";  
211 -// if (hasSubChannel != null) queryHasSubChannel = hasSubChannel?"true":"false";  
212 -// String queryOnline = "*";  
213 -// if (!StringUtils.isEmpty(online)) queryOnline = online;  
214 -// String queryStr = VideoManagerConstants.CACHEKEY_PREFIX + deviceId +  
215 -// "_" + queryContent + // 搜索编号和名称  
216 -// "_" + queryOnline + // 搜索是否在线  
217 -// "_" + queryHasSubChannel + // 搜索是否含有子节点  
218 -// "_" + parentChannelId;  
219 -//  
220 -//// List<Object> deviceChannelList = redis.keys(queryStr);  
221 -// List<Object> deviceChannelList = redis.scan(queryStr);  
222 -//  
223 -// if (deviceChannelList != null && deviceChannelList.size() > 0 ) {  
224 -// for (int i = 0; i < deviceChannelList.size(); i++) {  
225 -// DeviceChannel deviceChannel = (DeviceChannel)redis.get((String)deviceChannelList.get(i));  
226 -// if (deviceChannel.getParentId() != null && deviceChannel.getParentId().equals(parentChannelId)) {  
227 -// allDeviceChannels.add(deviceChannel);  
228 -// }  
229 -// }  
230 -// }  
231 -// int maxCount = (page + 1 ) * count;  
232 - PageResult pageResult = new PageResult<DeviceChannel>();  
233 -// pageResult.setPage(page);  
234 -// pageResult.setCount(count);  
235 -// pageResult.setTotal(allDeviceChannels.size());  
236 -//  
237 -// if (allDeviceChannels.size() > 0) {  
238 -// pageResult.setData(allDeviceChannels.subList(  
239 -// page * count, pageResult.getTotal() > maxCount ? maxCount : pageResult.getTotal()  
240 -// ));  
241 -// }  
242 - return pageResult;  
243 - }  
244 -  
245 - public List<DeviceChannel> querySubChannels(String deviceId, String parentChannelId) {  
246 - List<DeviceChannel> allDeviceChannels = new ArrayList<>();  
247 -// List<Object> deviceChannelList = redis.keys(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + "_" + "*");  
248 -// List<Object> deviceChannelList = redis.scan(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + "_" + "*");  
249 -//  
250 -// if (deviceChannelList != null && deviceChannelList.size() > 0 ) {  
251 -// for (int i = 0; i < deviceChannelList.size(); i++) {  
252 -// DeviceChannel deviceChannel = (DeviceChannel)redis.get((String)deviceChannelList.get(i));  
253 -// if (deviceChannel.getParentId() != null && deviceChannel.getParentId().equals(parentChannelId)) {  
254 -// allDeviceChannels.add(deviceChannel);  
255 -// }  
256 -// }  
257 -// }  
258 -  
259 - return allDeviceChannels; 113 + public PageInfo<DeviceChannel> querySubChannels(String deviceId, String parentChannelId, String query, Boolean hasSubChannel, String online, int page, int count) {
  114 + PageHelper.startPage(page, count);
  115 + List<DeviceChannel> all = deviceChannelMapper.queryChannelsByDeviceId(deviceId, parentChannelId, null, null, null);
  116 + return new PageInfo<>(all);
260 } 117 }
261 118
262 @Override 119 @Override
263 public DeviceChannel queryChannel(String deviceId, String channelId) { 120 public DeviceChannel queryChannel(String deviceId, String channelId) {
264 - DeviceChannel deviceChannel = null;  
265 return deviceChannelMapper.queryChannel(deviceId, channelId); 121 return deviceChannelMapper.queryChannel(deviceId, channelId);
266 -//// List<Object> deviceChannelList = redis.keys(VideoManagerConstants.CACHEKEY_PREFIX + deviceId +  
267 -// List<Object> deviceChannelList = redis.scan(VideoManagerConstants.CACHEKEY_PREFIX + deviceId +  
268 -// "_" + channelId + "*");  
269 -// if (deviceChannelList != null && deviceChannelList.size() > 0 ) {  
270 -// deviceChannel = (DeviceChannel)redis.get((String)deviceChannelList.get(0));  
271 -// }  
272 -// return deviceChannel;  
273 } 122 }
274 123
275 124
276 /** 125 /**
277 * 获取多个设备 126 * 获取多个设备
278 * 127 *
279 - * @param deviceIds 设备ID数组  
280 - * @return List<Device> 设备对象数组 128 + * @param page 当前页数
  129 + * @param count 每页数量
  130 + * @return PageInfo<Device> 分页设备对象数组
281 */ 131 */
282 @Override 132 @Override
283 - public PageResult<Device> queryVideoDeviceList(String[] deviceIds, int page, int count) {  
284 - List<Device> devices = new ArrayList<>();  
285 - PageResult pageResult = new PageResult<Device>();  
286 -// pageResult.setPage(page);  
287 -// pageResult.setCount(count);  
288 -// Device device = null;  
289 -//  
290 -// if (deviceIds == null || deviceIds.length == 0) {  
291 -//  
292 -//// List<Object> deviceIdList = redis.keys(VideoManagerConstants.DEVICE_PREFIX+"*");  
293 -// List<Object> deviceIdList = redis.scan(VideoManagerConstants.DEVICE_PREFIX+"*");  
294 -// pageResult.setTotal(deviceIdList.size());  
295 -// int maxCount = (page + 1)* count;  
296 -// for (int i = page * count; i < (pageResult.getTotal() > maxCount ? maxCount : pageResult.getTotal() ); i++) {  
297 -// // devices.add((Device)redis.get((String)deviceIdList.get(i)));  
298 -// device =(Device)redis.get((String)deviceIdList.get(i));  
299 -// if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){  
300 -// // outline(device.getDeviceId());  
301 -// }  
302 -// devices.add(device);  
303 -// }  
304 -// } else {  
305 -// for (int i = 0; i < deviceIds.length; i++) {  
306 -// // devices.add((Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i]));  
307 -// device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i]);  
308 -// if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){  
309 -// // outline(device.getDeviceId());  
310 -// }  
311 -// devices.add(device);  
312 -// }  
313 -// }  
314 -// pageResult.setData(devices);  
315 - return pageResult; 133 + public PageInfo<Device> queryVideoDeviceList(int page, int count) {
  134 + PageHelper.startPage(page, count);
  135 + List<Device> all = deviceMapper.getDevices();
  136 + return new PageInfo<>(all);
316 } 137 }
317 138
318 /** 139 /**
@@ -323,26 +144,6 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { @@ -323,26 +144,6 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
323 @Override 144 @Override
324 public List<Device> queryVideoDeviceList() { 145 public List<Device> queryVideoDeviceList() {
325 146
326 -// if (deviceIds == null || deviceIds.length == 0) {  
327 -//// List<Object> deviceIdList = redis.keys(VideoManagerConstants.DEVICE_PREFIX+"*");  
328 -// List<Object> deviceIdList = redis.scan(VideoManagerConstants.DEVICE_PREFIX+"*");  
329 -// for (int i = 0; i < deviceIdList.size(); i++) {  
330 -// device =(Device)redis.get((String)deviceIdList.get(i));  
331 -// if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){  
332 -// outline(device.getDeviceId());  
333 -// }  
334 -// devices.add(device);  
335 -// }  
336 -// } else {  
337 -// for (int i = 0; i < deviceIds.length; i++) {  
338 -// device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i]);  
339 -// if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){  
340 -// outline(device.getDeviceId());  
341 -// }  
342 -// devices.add(device);  
343 -// }  
344 -// }  
345 -  
346 List<Device> deviceList = deviceMapper.getDevices(); 147 List<Device> deviceList = deviceMapper.getDevices();
347 return deviceList; 148 return deviceList;
348 } 149 }
@@ -367,9 +168,13 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { @@ -367,9 +168,13 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
367 * @return true:更新成功 false:更新失败 168 * @return true:更新成功 false:更新失败
368 */ 169 */
369 @Override 170 @Override
370 - public boolean online(String deviceId) { 171 + public synchronized boolean online(String deviceId) {
371 Device device = deviceMapper.getDeviceByDeviceId(deviceId); 172 Device device = deviceMapper.getDeviceByDeviceId(deviceId);
372 device.setOnline(1); 173 device.setOnline(1);
  174 + System.out.println("更新设备在线");
  175 + if (device == null) {
  176 + return false;
  177 + }
373 return deviceMapper.update(device) > 0; 178 return deviceMapper.update(device) > 0;
374 } 179 }
375 180
@@ -380,14 +185,10 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { @@ -380,14 +185,10 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
380 * @return true:更新成功 false:更新失败 185 * @return true:更新成功 false:更新失败
381 */ 186 */
382 @Override 187 @Override
383 - public boolean outline(String deviceId) {  
384 -// Device device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceId);  
385 -// if (device == null) return false;  
386 -// device.setOnline(0);  
387 -// return redis.set(VideoManagerConstants.DEVICE_PREFIX+device.getDeviceId(), device);  
388 - 188 + public synchronized boolean outline(String deviceId) {
389 Device device = deviceMapper.getDeviceByDeviceId(deviceId); 189 Device device = deviceMapper.getDeviceByDeviceId(deviceId);
390 device.setOnline(0); 190 device.setOnline(0);
  191 + System.out.println("更新设备离线");
391 return deviceMapper.update(device) > 0; 192 return deviceMapper.update(device) > 0;
392 } 193 }
393 194
src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java
1 package com.genersoft.iot.vmp.vmanager.device; 1 package com.genersoft.iot.vmp.vmanager.device;
2 2
3 -import java.util.List;  
4 -  
5 -import com.genersoft.iot.vmp.common.PageResult;  
6 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; 3 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
7 import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; 4 import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
  5 +import com.github.pagehelper.PageInfo;
8 import org.slf4j.Logger; 6 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory; 7 import org.slf4j.LoggerFactory;
10 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.http.HttpStatus; 9 import org.springframework.http.HttpStatus;
12 import org.springframework.http.ResponseEntity; 10 import org.springframework.http.ResponseEntity;
  11 +import org.springframework.util.StringUtils;
13 import org.springframework.web.bind.annotation.*; 12 import org.springframework.web.bind.annotation.*;
14 import org.springframework.web.context.request.async.DeferredResult; 13 import org.springframework.web.context.request.async.DeferredResult;
15 14
@@ -53,13 +52,13 @@ public class DeviceController { @@ -53,13 +52,13 @@ public class DeviceController {
53 } 52 }
54 53
55 @GetMapping("/devices") 54 @GetMapping("/devices")
56 - public PageResult<Device> devices(int page, int count){ 55 + public PageInfo<Device> devices(int page, int count){
57 56
58 if (logger.isDebugEnabled()) { 57 if (logger.isDebugEnabled()) {
59 logger.debug("查询所有视频设备API调用"); 58 logger.debug("查询所有视频设备API调用");
60 } 59 }
61 60
62 - return storager.queryVideoDeviceList(null, page, count); 61 + return storager.queryVideoDeviceList(page, count);
63 } 62 }
64 63
65 /** 64 /**
@@ -69,18 +68,33 @@ public class DeviceController { @@ -69,18 +68,33 @@ public class DeviceController {
69 * @param count 每页条数 68 * @param count 每页条数
70 * @return 通道列表 69 * @return 通道列表
71 */ 70 */
  71 + /**
  72 + * 分页查询通道数
  73 + *
  74 + * @param deviceId 设备id
  75 + * @param page 当前页
  76 + * @param count 每页条数
  77 + * @param query 查询内容
  78 + * @param online 是否在线 在线 true / 离线 false
  79 + * @param channelType 设备 false/子目录 true
  80 + * @return 通道列表
  81 + */
72 @GetMapping("/devices/{deviceId}/channels") 82 @GetMapping("/devices/{deviceId}/channels")
73 - public ResponseEntity<PageResult> channels(@PathVariable String deviceId, 83 + public ResponseEntity<PageInfo> channels(@PathVariable String deviceId,
74 int page, int count, 84 int page, int count,
75 @RequestParam(required = false) String query, 85 @RequestParam(required = false) String query,
76 - @RequestParam(required = false) String online, 86 + @RequestParam(required = false) Boolean online,
77 @RequestParam(required = false) Boolean channelType 87 @RequestParam(required = false) Boolean channelType
78 ){ 88 ){
79 89
80 if (logger.isDebugEnabled()) { 90 if (logger.isDebugEnabled()) {
81 logger.debug("查询所有视频设备API调用"); 91 logger.debug("查询所有视频设备API调用");
82 } 92 }
83 - PageResult pageResult = storager.queryChannelsByDeviceId(deviceId, query, channelType, online, page, count); 93 + if (StringUtils.isEmpty(query)) {
  94 + query = null;
  95 + }
  96 +
  97 + PageInfo pageResult = storager.queryChannelsByDeviceId(deviceId, query, channelType, online, page, count);
84 return new ResponseEntity<>(pageResult,HttpStatus.OK); 98 return new ResponseEntity<>(pageResult,HttpStatus.OK);
85 } 99 }
86 100
@@ -141,7 +155,7 @@ public class DeviceController { @@ -141,7 +155,7 @@ public class DeviceController {
141 * @return 子通道列表 155 * @return 子通道列表
142 */ 156 */
143 @GetMapping("/subChannels/{deviceId}/{channelId}/channels") 157 @GetMapping("/subChannels/{deviceId}/{channelId}/channels")
144 - public ResponseEntity<PageResult> subChannels(@PathVariable String deviceId, 158 + public ResponseEntity<PageInfo> subChannels(@PathVariable String deviceId,
145 @PathVariable String channelId, 159 @PathVariable String channelId,
146 int page, 160 int page,
147 int count, 161 int count,
@@ -154,23 +168,23 @@ public class DeviceController { @@ -154,23 +168,23 @@ public class DeviceController {
154 } 168 }
155 DeviceChannel deviceChannel = storager.queryChannel(deviceId,channelId); 169 DeviceChannel deviceChannel = storager.queryChannel(deviceId,channelId);
156 if (deviceChannel == null) { 170 if (deviceChannel == null) {
157 - PageResult<DeviceChannel> deviceChannelPageResult = new PageResult<>(); 171 + PageInfo<DeviceChannel> deviceChannelPageResult = new PageInfo<>();
158 return new ResponseEntity<>(deviceChannelPageResult,HttpStatus.OK); 172 return new ResponseEntity<>(deviceChannelPageResult,HttpStatus.OK);
159 } 173 }
160 174
161 - PageResult pageResult = storager.querySubChannels(deviceId, channelId, query, channelType, online, page, count); 175 + PageInfo pageResult = storager.querySubChannels(deviceId, channelId, query, channelType, online, page, count);
162 return new ResponseEntity<>(pageResult,HttpStatus.OK); 176 return new ResponseEntity<>(pageResult,HttpStatus.OK);
163 } 177 }
164 178
165 @PostMapping("/channel/update/{deviceId}") 179 @PostMapping("/channel/update/{deviceId}")
166 - public ResponseEntity<PageResult> updateChannel(@PathVariable String deviceId,DeviceChannel channel){ 180 + public ResponseEntity<PageInfo> updateChannel(@PathVariable String deviceId,DeviceChannel channel){
167 storager.updateChannel(deviceId, channel); 181 storager.updateChannel(deviceId, channel);
168 return new ResponseEntity<>(null,HttpStatus.OK); 182 return new ResponseEntity<>(null,HttpStatus.OK);
169 } 183 }
170 184
171 @GetMapping("/devices/{deviceId}/transport/{streamMode}") 185 @GetMapping("/devices/{deviceId}/transport/{streamMode}")
172 @PostMapping("/devices/{deviceId}/transport/{streamMode}") 186 @PostMapping("/devices/{deviceId}/transport/{streamMode}")
173 - public ResponseEntity<PageResult> updateTransport(@PathVariable String deviceId, @PathVariable String streamMode){ 187 + public ResponseEntity<PageInfo> updateTransport(@PathVariable String deviceId, @PathVariable String streamMode){
174 Device device = storager.queryVideoDevice(deviceId); 188 Device device = storager.queryVideoDevice(deviceId);
175 device.setStreamMode(streamMode); 189 device.setStreamMode(streamMode);
176 storager.updateDevice(device); 190 storager.updateDevice(device);
src/main/java/com/genersoft/iot/vmp/vmanager/device/entity/Device.java deleted 100644 → 0
1 -package com.genersoft.iot.vmp.vmanager.device.entity;  
2 -  
3 -import java.util.List;  
4 -  
5 -import javax.persistence.Column;  
6 -import javax.persistence.Id;  
7 -import javax.persistence.Table;  
8 -import javax.persistence.Transient;  
9 -import javax.validation.constraints.Max;  
10 -import javax.validation.constraints.NotNull;  
11 -import javax.validation.constraints.Size;  
12 -  
13 -import io.swagger.annotations.ApiModel;  
14 -import io.swagger.annotations.ApiModelProperty;  
15 -  
16 -/**  
17 - * @Description:视频设备信息  
18 - * @author: songww  
19 - * @date: 2020年5月8日 下午2:05:56  
20 - */  
21 -@ApiModel(value = "视频设备信息", description = "视频设备信息")  
22 -@Table(name="VMP_VIDEODEVICES")  
23 -public class Device {  
24 -  
25 - /**  
26 - * 设备Id  
27 - */  
28 - @ApiModelProperty("设备编号")  
29 - @Id  
30 - @Column(name="DEVICE_ID")  
31 - @NotNull(message = "deviceId 不能为 null")  
32 - @Size(min = 4, max = 32, message = "deviceId 必须大于 4 位并且小于 32 位")  
33 - private String deviceId;  
34 -  
35 - /**  
36 - * 设备名称  
37 - */  
38 - @ApiModelProperty("设备名称")  
39 - @Column(name="DEVICE_NAME")  
40 - @Size(max = 32, message = "deviceName 必须小于 32 位")  
41 - private String deviceName;  
42 -  
43 - /**  
44 - * 生产厂商  
45 - */  
46 - @ApiModelProperty("生产厂商")  
47 - @Column(name="MANUFACTURER")  
48 - @Size(max = 64, message = "manufacturer 必须小于 64 位")  
49 - private String manufacturer;  
50 -  
51 - /**  
52 - * 型号  
53 - */  
54 - @ApiModelProperty("型号")  
55 - @Column(name="MODEL")  
56 - @Size(max = 64, message = "manufacturer 必须小于 64 位")  
57 - private String model;  
58 -  
59 - /**  
60 - * 固件版本  
61 - */  
62 - @ApiModelProperty("固件版本")  
63 - @Column(name="FIRMWARE")  
64 - @Size(max = 64, message = "firmware 必须小于 64 位")  
65 - private String firmware;  
66 -  
67 - /**  
68 - * 通信协议  
69 - * GB28181 ONVIF  
70 - */  
71 - @ApiModelProperty("通信协议")  
72 - @Column(name="PROTOCOL")  
73 - @NotNull(message = "protocol 不能为 null")  
74 - @Size(max = 16, message = "protocol 必须小于 16 位")  
75 - private String protocol;  
76 -  
77 - /**  
78 - * SIP 传输协议  
79 - * UDP/TCP  
80 - */  
81 - @ApiModelProperty("SIP 传输协议")  
82 - @Column(name="TRANSPORT")  
83 - @Size(min = 3,max = 3 ,message = "transport 必须为 3 位")  
84 - private String transport;  
85 -  
86 - /**  
87 - * 数据流传输模式  
88 - * UDP:udp传输  
89 - * TCP-ACTIVE:tcp主动模式  
90 - * TCP-PASSIVE:tcp被动模式  
91 - */  
92 - @ApiModelProperty("数据流传输模式")  
93 - @Column(name="STREAM_MODE")  
94 - @Size(max = 64, message = "streamMode 必须小于 16 位")  
95 - private String streamMode;  
96 -  
97 - /**  
98 - * IP地址  
99 - */  
100 - @ApiModelProperty("IP地址")  
101 - @Column(name="IP")  
102 - @Size(max = 15, message = "streamMode 必须小于 15 位")  
103 - private String ip;  
104 -  
105 - /**  
106 - * 端口号  
107 - */  
108 - @ApiModelProperty("端口号")  
109 - @Column(name="PORT")  
110 - @Max(value = 65535,message = "port 最大值为 65535")  
111 - private Integer port;  
112 -  
113 - /**  
114 - * 在线状态 1在线, 0离线  
115 - */  
116 - @ApiModelProperty("在线状态")  
117 - @Size(min = 1,max = 1 ,message = "online 必须为 1 位")  
118 - @Column(name="ONLINE")  
119 - private String online;  
120 -  
121 - /**  
122 - * 通道数量  
123 - */  
124 - @ApiModelProperty("通道数量")  
125 - @Column(name="CHANNEL_SUM")  
126 - @Max(value = 1000000000,message = "channelSum 最大值为 1000000000")  
127 - private Integer channelSum;  
128 -  
129 - @Override  
130 - public String toString() {  
131 - return "Device{" +  
132 - "deviceId='" + deviceId + '\'' +  
133 - ", deviceName='" + deviceName + '\'' +  
134 - ", manufacturer='" + manufacturer + '\'' +  
135 - ", model='" + model + '\'' +  
136 - ", firmware='" + firmware + '\'' +  
137 - ", protocol='" + protocol + '\'' +  
138 - ", transport='" + transport + '\'' +  
139 - ", streamMode='" + streamMode + '\'' +  
140 - ", ip='" + ip + '\'' +  
141 - ", port=" + port +  
142 - ", online='" + online + '\'' +  
143 - ", channelSum=" + channelSum +  
144 - ", createTime='" + createTime + '\'' +  
145 - ", registerTime='" + registerTime + '\'' +  
146 - ", heartbeatTime='" + heartbeatTime + '\'' +  
147 - ", updateTime='" + updateTime + '\'' +  
148 - ", updatePerson='" + updatePerson + '\'' +  
149 - ", syncTime='" + syncTime + '\'' +  
150 - ", syncPerson='" + syncPerson + '\'' +  
151 - ", username='" + username + '\'' +  
152 - ", password='" + password + '\'' +  
153 - ", channelList=" + channelList +  
154 - '}';  
155 - }  
156 -  
157 - /**  
158 - * 创建时间  
159 - */  
160 - @ApiModelProperty("创建时间")  
161 - @Column(name="CREATE_TIME")  
162 - private String createTime;  
163 -  
164 - /**  
165 - * 注册时间  
166 - */  
167 - @ApiModelProperty("注册时间")  
168 - @Column(name="REGISTER_TIME")  
169 - private String registerTime;  
170 -  
171 - /**  
172 - * 心跳时间  
173 - */  
174 - @ApiModelProperty("心跳时间")  
175 - @Column(name="HEARTBEAT_TIME")  
176 - private String heartbeatTime;  
177 -  
178 - /**  
179 - * 修改时间  
180 - */  
181 - @ApiModelProperty("更新时间")  
182 - @Column(name="UPDATE_TIME")  
183 - private String updateTime;  
184 -  
185 - /**  
186 - * 修改人  
187 - */  
188 - @ApiModelProperty("修改人")  
189 - @Column(name="UPDATE_PERSON")  
190 - private String updatePerson;  
191 -  
192 - /**  
193 - * 同步时间  
194 - */  
195 - @ApiModelProperty("同步时间")  
196 - @Column(name="SYNC_TIME")  
197 - private String syncTime;  
198 -  
199 - /**  
200 - * 同步人  
201 - */  
202 - @ApiModelProperty("同步人")  
203 - @Column(name="SYNC_PERSON")  
204 - private String syncPerson;  
205 -  
206 - /**  
207 - * ONVIF协议-用户名  
208 - */  
209 - @ApiModelProperty("用户名")  
210 - @Column(name="USERNAME")  
211 - @Size(max = 32, message = "username 必须小于 32 位")  
212 - private String username;  
213 -  
214 - /**  
215 - * ONVIF协议-密码  
216 - */  
217 - @ApiModelProperty("密码")  
218 - @Size(max = 32, message = "password 必须小于 32 位")  
219 - @Column(name="PASSWORD")  
220 - private String password;  
221 -  
222 - @Transient  
223 - private List<DeviceChannel> channelList;  
224 -  
225 -  
226 - public String getDeviceId() {  
227 - return deviceId;  
228 - }  
229 -  
230 - public void setDeviceId(String deviceId) {  
231 - this.deviceId = deviceId;  
232 - }  
233 -  
234 - public String getDeviceName() {  
235 - return deviceName;  
236 - }  
237 -  
238 - public void setDeviceName(String deviceName) {  
239 - this.deviceName = deviceName;  
240 - }  
241 -  
242 - public String getManufacturer() {  
243 - return manufacturer;  
244 - }  
245 -  
246 - public void setManufacturer(String manufacturer) {  
247 - this.manufacturer = manufacturer;  
248 - }  
249 -  
250 - public String getModel() {  
251 - return model;  
252 - }  
253 -  
254 - public void setModel(String model) {  
255 - this.model = model;  
256 - }  
257 -  
258 - public String getFirmware() {  
259 - return firmware;  
260 - }  
261 -  
262 - public void setFirmware(String firmware) {  
263 - this.firmware = firmware;  
264 - }  
265 -  
266 - public String getProtocol() {  
267 - return protocol;  
268 - }  
269 -  
270 - public void setProtocol(String protocol) {  
271 - this.protocol = protocol;  
272 - }  
273 -  
274 - public String getTransport() {  
275 - return transport;  
276 - }  
277 -  
278 - public void setTransport(String transport) {  
279 - this.transport = transport;  
280 - }  
281 -  
282 - public String getStreamMode() {  
283 - return streamMode;  
284 - }  
285 -  
286 - public void setStreamMode(String streamMode) {  
287 - this.streamMode = streamMode;  
288 - }  
289 -  
290 - public String getIp() {  
291 - return ip;  
292 - }  
293 -  
294 - public void setIp(String ip) {  
295 - this.ip = ip;  
296 - }  
297 -  
298 - public Integer getPort() {  
299 - return port;  
300 - }  
301 -  
302 - public void setPort(Integer port) {  
303 - this.port = port;  
304 - }  
305 -  
306 - public String getOnline() {  
307 - return online;  
308 - }  
309 -  
310 - public void setOnline(String online) {  
311 - this.online = online;  
312 - }  
313 -  
314 - public Integer getChannelSum() {  
315 - return channelSum;  
316 - }  
317 -  
318 - public void setChannelSum(Integer channelSum) {  
319 - this.channelSum = channelSum;  
320 - }  
321 -  
322 - public String getCreateTime() {  
323 - return createTime;  
324 - }  
325 -  
326 - public void setCreateTime(String createTime) {  
327 - this.createTime = createTime;  
328 - }  
329 -  
330 - public String getRegisterTime() {  
331 - return registerTime;  
332 - }  
333 -  
334 - public void setRegisterTime(String registerTime) {  
335 - this.registerTime = registerTime;  
336 - }  
337 -  
338 - public String getHeartbeatTime() {  
339 - return heartbeatTime;  
340 - }  
341 -  
342 - public void setHeartbeatTime(String heartbeatTime) {  
343 - this.heartbeatTime = heartbeatTime;  
344 - }  
345 -  
346 - public String getUpdateTime() {  
347 - return updateTime;  
348 - }  
349 -  
350 - public void setUpdateTime(String updateTime) {  
351 - this.updateTime = updateTime;  
352 - }  
353 -  
354 - public String getUpdatePerson() {  
355 - return updatePerson;  
356 - }  
357 -  
358 - public void setUpdatePerson(String updatePerson) {  
359 - this.updatePerson = updatePerson;  
360 - }  
361 -  
362 - public String getSyncTime() {  
363 - return syncTime;  
364 - }  
365 -  
366 - public void setSyncTime(String syncTime) {  
367 - this.syncTime = syncTime;  
368 - }  
369 -  
370 - public String getSyncPerson() {  
371 - return syncPerson;  
372 - }  
373 -  
374 - public void setSyncPerson(String syncPerson) {  
375 - this.syncPerson = syncPerson;  
376 - }  
377 -  
378 - public String getUsername() {  
379 - return username;  
380 - }  
381 -  
382 - public void setUsername(String username) {  
383 - this.username = username;  
384 - }  
385 -  
386 - public String getPassword() {  
387 - return password;  
388 - }  
389 -  
390 - public void setPassword(String password) {  
391 - this.password = password;  
392 - }  
393 -  
394 - public List<DeviceChannel> getChannelList() {  
395 - return channelList;  
396 - }  
397 -  
398 - public void setChannelList(List<DeviceChannel> channelList) {  
399 - this.channelList = channelList;  
400 - }  
401 -}  
src/main/java/com/genersoft/iot/vmp/vmanager/device/entity/DeviceChannel.java deleted 100644 → 0
1 -package com.genersoft.iot.vmp.vmanager.device.entity;  
2 -  
3 -import javax.persistence.Column;  
4 -import javax.persistence.Id;  
5 -import javax.persistence.Table;  
6 -  
7 -import io.swagger.annotations.ApiModel;  
8 -import io.swagger.annotations.ApiModelProperty;  
9 -  
10 -/**  
11 - * @Description:设备通道信息  
12 - * @author: songww  
13 - * @date: 2020年5月20日 下午9:00:46  
14 - */  
15 -@ApiModel(value = "设备通道信息", description = "设备通道信息")  
16 -@Table(name="VMP_VIDEOCHANNELS")  
17 -public class DeviceChannel {  
18 -  
19 - /**  
20 - * 通道编号  
21 - */  
22 - @ApiModelProperty("通道编号")  
23 - @Id  
24 - @Column(name="CHANNEL_ID")  
25 - private String channelId;  
26 -  
27 - /**  
28 - * 设备编号  
29 - */  
30 - @ApiModelProperty("设备编号")  
31 - @Column(name="DEVICE_ID")  
32 - private String deviceId;  
33 -  
34 - /**  
35 - * 通道名  
36 - */  
37 - @ApiModelProperty("通道名")  
38 - @Column(name="CHANNEL_NAME")  
39 - private String channelName;  
40 -  
41 - /**  
42 - * 生产厂商  
43 - */  
44 - @ApiModelProperty("生产厂商")  
45 - @Column(name="MANUFACTURER")  
46 - private String manufacture;  
47 -  
48 - /**  
49 - * 型号  
50 - */  
51 - @ApiModelProperty("型号")  
52 - @Column(name="MODEL")  
53 - private String model;  
54 -  
55 - /**  
56 - * 设备归属  
57 - */  
58 - @ApiModelProperty("设备归属")  
59 - @Column(name="OWNER")  
60 - private String owner;  
61 -  
62 - /**  
63 - * 行政区域  
64 - */  
65 - @ApiModelProperty("行政区域")  
66 - @Column(name="CIVIL_CODE")  
67 - private String civilCode;  
68 -  
69 - /**  
70 - * 警区  
71 - */  
72 - @ApiModelProperty("警区")  
73 - @Column(name="BLOCK")  
74 - private String block;  
75 -  
76 - /**  
77 - * 安装地址  
78 - */  
79 - @ApiModelProperty("安装地址")  
80 - @Column(name="ADDRESS")  
81 - private String address;  
82 -  
83 - /**  
84 - * 是否有子设备 1有, 0没有  
85 - */  
86 - @ApiModelProperty("是否有子设备")  
87 - @Column(name="PARENTAL")  
88 - private String parental;  
89 -  
90 - /**  
91 - * 父级id  
92 - */  
93 - @ApiModelProperty("父级编码")  
94 - @Column(name="PARENT_ID")  
95 - private String parentId;  
96 -  
97 - /**  
98 - * 信令安全模式 缺省为0; 0:不采用; 2: S/MIME签名方式; 3: S/ MIME加密签名同时采用方式; 4:数字摘要方式  
99 - */  
100 - @ApiModelProperty("信令安全模式")  
101 - @Column(name="SAFETY_WAY")  
102 - private String safetyWay;  
103 -  
104 - /**  
105 - * 注册方式 缺省为1;1:符合IETFRFC3261标准的认证注册模 式; 2:基于口令的双向认证注册模式; 3:基于数字证书的双向认证注册模式  
106 - */  
107 - @ApiModelProperty("注册方式")  
108 - @Column(name="REGISTER_WAY")  
109 - private String registerWay;  
110 -  
111 - /**  
112 - * 证书序列号  
113 - */  
114 - @ApiModelProperty("证书序列号")  
115 - @Column(name="CERT_NUM")  
116 - private String certNum;  
117 -  
118 - /**  
119 - * 证书有效标识 缺省为0;证书有效标识:0:无效1: 有效  
120 - */  
121 - @ApiModelProperty("证书有效标识")  
122 - @Column(name="CERT_VALID")  
123 - private String certValid;  
124 -  
125 - /**  
126 - * 证书无效原因码  
127 - */  
128 - @ApiModelProperty("证书无效原因码")  
129 - @Column(name="CERT_ERRCODE")  
130 - private String certErrCode;  
131 -  
132 - /**  
133 - * 证书终止有效期  
134 - */  
135 - @ApiModelProperty("证书终止有效期")  
136 - @Column(name="CERT_ENDTIME")  
137 - private String certEndTime;  
138 -  
139 - /**  
140 - * 保密属性 缺省为0; 0:不涉密, 1:涉密  
141 - */  
142 - @ApiModelProperty("保密属性")  
143 - @Column(name="SECRECY")  
144 - private String secrecy;  
145 -  
146 - /**  
147 - * IP地址  
148 - */  
149 - @ApiModelProperty("IP地址")  
150 - @Column(name="IP")  
151 - private String ip;  
152 -  
153 - /**  
154 - * 端口号  
155 - */  
156 - @ApiModelProperty("端口号")  
157 - @Column(name="PORT")  
158 - private Integer port;  
159 -  
160 - /**  
161 - * 密码  
162 - */  
163 - @ApiModelProperty("密码")  
164 - @Column(name="PASSWORD")  
165 - private String password;  
166 -  
167 - /**  
168 - * 在线/离线  
169 - * 1在线,0离线  
170 - * 默认在线  
171 - * 信令:  
172 - * <Status>ON</Status>  
173 - * <Status>OFF</Status>  
174 - * 遇到过NVR下的IPC下发信令可以推流, 但是 Status 响应 OFF  
175 - */  
176 - @ApiModelProperty("状态")  
177 - @Column(name="ONLINE")  
178 - private String online;  
179 -  
180 - /**  
181 - * 经度  
182 - */  
183 - @ApiModelProperty("经度")  
184 - @Column(name="LONGITUDE")  
185 - private double longitude;  
186 -  
187 - /**  
188 - * 纬度  
189 - */  
190 - @ApiModelProperty("纬度")  
191 - @Column(name="LATITUDE")  
192 - private double latitude;  
193 -  
194 - public String getChannelId() {  
195 - return channelId;  
196 - }  
197 -  
198 - public void setChannelId(String channelId) {  
199 - this.channelId = channelId;  
200 - }  
201 -  
202 - public String getDeviceId() {  
203 - return deviceId;  
204 - }  
205 -  
206 - public void setDeviceId(String deviceId) {  
207 - this.deviceId = deviceId;  
208 - }  
209 -  
210 - public String getChannelName() {  
211 - return channelName;  
212 - }  
213 -  
214 - public void setChannelName(String channelName) {  
215 - this.channelName = channelName;  
216 - }  
217 -  
218 - public String getManufacture() {  
219 - return manufacture;  
220 - }  
221 -  
222 - public void setManufacture(String manufacture) {  
223 - this.manufacture = manufacture;  
224 - }  
225 -  
226 - public String getModel() {  
227 - return model;  
228 - }  
229 -  
230 - public void setModel(String model) {  
231 - this.model = model;  
232 - }  
233 -  
234 - public String getOwner() {  
235 - return owner;  
236 - }  
237 -  
238 - public void setOwner(String owner) {  
239 - this.owner = owner;  
240 - }  
241 -  
242 - public String getCivilCode() {  
243 - return civilCode;  
244 - }  
245 -  
246 - public void setCivilCode(String civilCode) {  
247 - this.civilCode = civilCode;  
248 - }  
249 -  
250 - public String getBlock() {  
251 - return block;  
252 - }  
253 -  
254 - public void setBlock(String block) {  
255 - this.block = block;  
256 - }  
257 -  
258 - public String getAddress() {  
259 - return address;  
260 - }  
261 -  
262 - public void setAddress(String address) {  
263 - this.address = address;  
264 - }  
265 -  
266 - public String getParental() {  
267 - return parental;  
268 - }  
269 -  
270 - public void setParental(String parental) {  
271 - this.parental = parental;  
272 - }  
273 -  
274 - public String getParentId() {  
275 - return parentId;  
276 - }  
277 -  
278 - public void setParentId(String parentId) {  
279 - this.parentId = parentId;  
280 - }  
281 -  
282 - public String getSafetyWay() {  
283 - return safetyWay;  
284 - }  
285 -  
286 - public void setSafetyWay(String safetyWay) {  
287 - this.safetyWay = safetyWay;  
288 - }  
289 -  
290 - public String getRegisterWay() {  
291 - return registerWay;  
292 - }  
293 -  
294 - public void setRegisterWay(String registerWay) {  
295 - this.registerWay = registerWay;  
296 - }  
297 -  
298 - public String getCertNum() {  
299 - return certNum;  
300 - }  
301 -  
302 - public void setCertNum(String certNum) {  
303 - this.certNum = certNum;  
304 - }  
305 -  
306 - public String getCertValid() {  
307 - return certValid;  
308 - }  
309 -  
310 - public void setCertValid(String certValid) {  
311 - this.certValid = certValid;  
312 - }  
313 -  
314 - public String getCertErrCode() {  
315 - return certErrCode;  
316 - }  
317 -  
318 - public void setCertErrCode(String certErrCode) {  
319 - this.certErrCode = certErrCode;  
320 - }  
321 -  
322 - public String getCertEndTime() {  
323 - return certEndTime;  
324 - }  
325 -  
326 - public void setCertEndTime(String certEndTime) {  
327 - this.certEndTime = certEndTime;  
328 - }  
329 -  
330 - public String getSecrecy() {  
331 - return secrecy;  
332 - }  
333 -  
334 - public void setSecrecy(String secrecy) {  
335 - this.secrecy = secrecy;  
336 - }  
337 -  
338 - public String getIp() {  
339 - return ip;  
340 - }  
341 -  
342 - public void setIp(String ip) {  
343 - this.ip = ip;  
344 - }  
345 -  
346 - public Integer getPort() {  
347 - return port;  
348 - }  
349 -  
350 - public void setPort(Integer port) {  
351 - this.port = port;  
352 - }  
353 -  
354 - public String getPassword() {  
355 - return password;  
356 - }  
357 -  
358 - public void setPassword(String password) {  
359 - this.password = password;  
360 - }  
361 -  
362 - public String getOnline() {  
363 - return online;  
364 - }  
365 -  
366 - public void setOnline(String online) {  
367 - this.online = online;  
368 - }  
369 -  
370 - public double getLongitude() {  
371 - return longitude;  
372 - }  
373 -  
374 - public void setLongitude(double longitude) {  
375 - this.longitude = longitude;  
376 - }  
377 -  
378 - public double getLatitude() {  
379 - return latitude;  
380 - }  
381 -  
382 - public void setLatitude(double latitude) {  
383 - this.latitude = latitude;  
384 - }  
385 -}  
src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java
1 package com.genersoft.iot.vmp.web; 1 package com.genersoft.iot.vmp.web;
2 2
3 -import com.alibaba.fastjson.JSON;  
4 import com.alibaba.fastjson.JSONArray; 3 import com.alibaba.fastjson.JSONArray;
5 import com.alibaba.fastjson.JSONObject; 4 import com.alibaba.fastjson.JSONObject;
6 -import com.genersoft.iot.vmp.common.PageResult;  
7 import com.genersoft.iot.vmp.gb28181.bean.Device; 5 import com.genersoft.iot.vmp.gb28181.bean.Device;
8 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; 6 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
9 import com.genersoft.iot.vmp.gb28181.event.DeviceOffLineDetector; 7 import com.genersoft.iot.vmp.gb28181.event.DeviceOffLineDetector;
10 import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; 8 import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
11 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; 9 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
12 import com.genersoft.iot.vmp.storager.IVideoManagerStorager; 10 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
13 -import com.genersoft.iot.vmp.vmanager.device.DeviceController; 11 +import com.github.pagehelper.PageInfo;
14 import org.slf4j.Logger; 12 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory; 13 import org.slf4j.LoggerFactory;
16 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
17 -import org.springframework.http.HttpStatus;  
18 -import org.springframework.http.ResponseEntity;  
19 -import org.springframework.stereotype.Controller;  
20 import org.springframework.web.bind.annotation.*; 15 import org.springframework.web.bind.annotation.*;
21 16
22 import java.util.List; 17 import java.util.List;
@@ -68,9 +63,9 @@ public class ApiDeviceController { @@ -68,9 +63,9 @@ public class ApiDeviceController {
68 devices = storager.queryVideoDeviceList(); 63 devices = storager.queryVideoDeviceList();
69 result.put("DeviceCount", devices.size()); 64 result.put("DeviceCount", devices.size());
70 }else { 65 }else {
71 - PageResult<Device> deviceList = storager.queryVideoDeviceList(null, start/limit, limit); 66 + PageInfo<Device> deviceList = storager.queryVideoDeviceList(start/limit, limit);
72 result.put("DeviceCount", deviceList.getTotal()); 67 result.put("DeviceCount", deviceList.getTotal());
73 - devices = deviceList.getData(); 68 + devices = deviceList.getList();
74 } 69 }
75 70
76 JSONArray deviceJSONList = new JSONArray(); 71 JSONArray deviceJSONList = new JSONArray();
@@ -86,8 +81,8 @@ public class ApiDeviceController { @@ -86,8 +81,8 @@ public class ApiDeviceController {
86 deviceJsonObject.put("Online", device.getOnline() == 1); 81 deviceJsonObject.put("Online", device.getOnline() == 1);
87 deviceJsonObject.put("Password", ""); 82 deviceJsonObject.put("Password", "");
88 deviceJsonObject.put("MediaTransport", device.getTransport()); 83 deviceJsonObject.put("MediaTransport", device.getTransport());
89 - deviceJsonObject.put("RemoteIP", device.getHost().getIp());  
90 - deviceJsonObject.put("RemotePort", device.getHost().getPort()); 84 + deviceJsonObject.put("RemoteIP", device.getIp());
  85 + deviceJsonObject.put("RemotePort", device.getPort());
91 deviceJsonObject.put("LastRegisterAt", ""); 86 deviceJsonObject.put("LastRegisterAt", "");
92 deviceJsonObject.put("LastKeepaliveAt", ""); 87 deviceJsonObject.put("LastKeepaliveAt", "");
93 deviceJsonObject.put("UpdatedAt", ""); 88 deviceJsonObject.put("UpdatedAt", "");
@@ -123,9 +118,9 @@ public class ApiDeviceController { @@ -123,9 +118,9 @@ public class ApiDeviceController {
123 deviceChannels = storager.queryChannelsByDeviceId(serial); 118 deviceChannels = storager.queryChannelsByDeviceId(serial);
124 result.put("ChannelCount", deviceChannels.size()); 119 result.put("ChannelCount", deviceChannels.size());
125 }else { 120 }else {
126 - PageResult<DeviceChannel> pageResult = storager.queryChannelsByDeviceId(serial, null, null, null,start/limit, limit); 121 + PageInfo<DeviceChannel> pageResult = storager.queryChannelsByDeviceId(serial, null, null, null,start/limit, limit);
127 result.put("ChannelCount", pageResult.getTotal()); 122 result.put("ChannelCount", pageResult.getTotal());
128 - deviceChannels = pageResult.getData(); 123 + deviceChannels = pageResult.getList();
129 } 124 }
130 125
131 JSONArray channleJSONList = new JSONArray(); 126 JSONArray channleJSONList = new JSONArray();
src/main/resources/application-dev.yml
@@ -27,6 +27,7 @@ spring: @@ -27,6 +27,7 @@ spring:
27 type: com.alibaba.druid.pool.DruidDataSource 27 type: com.alibaba.druid.pool.DruidDataSource
28 driver-class-name: com.mysql.jdbc.Driver 28 driver-class-name: com.mysql.jdbc.Driver
29 29
  30 +
30 # [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口 31 # [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
31 server: 32 server:
32 port: 18080 33 port: 18080
src/main/resources/application.yml
1 spring: 1 spring:
2 profiles: 2 profiles:
3 - active: dev  
4 \ No newline at end of file 3 \ No newline at end of file
  4 + active: local
5 \ No newline at end of file 5 \ No newline at end of file
src/main/resources/wvp.sqlite
No preview for this file type
web_src/src/components/channelList.vue
@@ -21,8 +21,8 @@ @@ -21,8 +21,8 @@
21 </el-select> 21 </el-select>
22 在线状态: <el-select size="mini" @change="search" v-model="online" placeholder="请选择" default-first-option> 22 在线状态: <el-select size="mini" @change="search" v-model="online" placeholder="请选择" default-first-option>
23 <el-option label="全部" value=""></el-option> 23 <el-option label="全部" value=""></el-option>
24 - <el-option label="在线" value="on"></el-option>  
25 - <el-option label="离线" value="off"></el-option> 24 + <el-option label="在线" value="true"></el-option>
  25 + <el-option label="离线" value="false"></el-option>
26 </el-select> 26 </el-select>
27 27
28 </div> 28 </div>
@@ -161,7 +161,7 @@ export default { @@ -161,7 +161,7 @@ export default {
161 .then(function (res) { 161 .then(function (res) {
162 console.log(res); 162 console.log(res);
163 that.total = res.data.total; 163 that.total = res.data.total;
164 - that.deviceChannelList = res.data.data; 164 + that.deviceChannelList = res.data.list;
165 // 防止出现表格错位 165 // 防止出现表格错位
166 that.$nextTick(() => { 166 that.$nextTick(() => {
167 that.$refs.channelListTable.doLayout(); 167 that.$refs.channelListTable.doLayout();
web_src/src/components/videoList.vue
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
21 <el-table-column label="地址" width="180" align="center"> 21 <el-table-column label="地址" width="180" align="center">
22 <template slot-scope="scope"> 22 <template slot-scope="scope">
23 <div slot="reference" class="name-wrapper"> 23 <div slot="reference" class="name-wrapper">
24 - <el-tag size="medium">{{ scope.row.host.address }}</el-tag> 24 + <el-tag size="medium">{{ scope.row.hostAddress }}</el-tag>
25 </div> 25 </div>
26 </template> 26 </template>
27 </el-table-column> 27 </el-table-column>
@@ -140,8 +140,9 @@ @@ -140,8 +140,9 @@
140 } ) 140 } )
141 .then(function (res) { 141 .then(function (res) {
142 console.log(res); 142 console.log(res);
  143 + console.log(res.data.list);
143 that.total = res.data.total; 144 that.total = res.data.total;
144 - that.deviceList = res.data.data; 145 + that.deviceList = res.data.list;
145 that.getDeviceListLoading = false; 146 that.getDeviceListLoading = false;
146 }) 147 })
147 .catch(function (error) { 148 .catch(function (error) {