From dcd78a1cfa0c929403d51a347e43414f6aa5f0d8 Mon Sep 17 00:00:00 2001 From: panlinlin <648540858@qq.com> Date: 星期一, 04 一月 2021 18:30:44 +0800 Subject: [PATCH] 存储部分使用sqlite代替redis-3 --- src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java | 53 +- web_src/src/components/videoList.vue | 5 src/main/resources/wvp.sqlite | 0 pom.xml | 59 -- src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java | 281 ++-------------- src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java | 18 src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java | 50 ++ /dev/null | 385 ---------------------- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java | 13 web_src/src/components/channelList.vue | 6 src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java | 4 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java | 8 src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java | 40 + src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java | 19 src/main/resources/application-dev.yml | 1 src/main/resources/application.yml | 2 src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java | 40 ++ 17 files changed, 222 insertions(+), 762 deletions(-) diff --git a/pom.xml b/pom.xml index ae4d666..2f45a6d 100644 --- a/pom.xml +++ b/pom.xml @@ -45,9 +45,6 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 渚濊禆鐗堟湰 --> - <mapper.version>4.1.5</mapper.version> - <mybatis.version>3.5.5</mybatis.version> - <mybatis.spring.version>2.0.5</mybatis.spring.version> <pagehelper.version>5.2.0</pagehelper.version> <snippetsDirectory>${project.build.directory}/generated-snippets</snippetsDirectory> <asciidoctor.input.directory>${project.basedir}/docs/asciidoc</asciidoctor.input.directory> @@ -59,30 +56,16 @@ <dependencies> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-jdbc</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-tomcat</artifactId> + <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - </dependency> - - <!-- redis --> - <dependency> - <groupId>org.springframework.data</groupId> - <artifactId>spring-data-redis</artifactId> - </dependency> - <dependency> - <groupId>redis.clients</groupId> - <artifactId>jedis</artifactId> - <version>3.3.0</version> + <groupId>org.mybatis.spring.boot</groupId> + <artifactId>mybatis-spring-boot-starter</artifactId> + <version>2.1.4</version> </dependency> <!-- druid鏁版嵁搴撹繛鎺ユ睜 --> @@ -106,36 +89,18 @@ <version>3.32.3.2</version> </dependency> - <!--Mybatis --> - <dependency> - <groupId>org.mybatis</groupId> - <artifactId>mybatis</artifactId> - <version>${mybatis.version}</version> - </dependency> - <dependency> - <groupId>org.mybatis</groupId> - <artifactId>mybatis-spring</artifactId> - <version>${mybatis.spring.version}</version> - </dependency> - - <!--鍒嗛〉鎻掍欢 --> + <!--Mybatis鍒嗛〉鎻掍欢 --> <dependency> <groupId>com.github.pagehelper</groupId> - <artifactId>pagehelper</artifactId> - <version>${pagehelper.version}</version> + <artifactId>pagehelper-spring-boot-starter</artifactId> + <version>1.2.10</version> </dependency> - <!--閫氱敤Mapper --> - <dependency> - <groupId>tk.mybatis</groupId> - <artifactId>mapper</artifactId> - <version>${mapper.version}</version> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - <version>3.11</version> - </dependency> +<!-- <dependency>--> +<!-- <groupId>org.apache.commons</groupId>--> +<!-- <artifactId>commons-lang3</artifactId>--> +<!-- <version>3.11</version>--> +<!-- </dependency>--> <!--Swagger2 --> <!--鍦ㄧ嚎鏂囨。 --> diff --git a/src/main/java/com/genersoft/iot/vmp/common/PageResult.java b/src/main/java/com/genersoft/iot/vmp/common/PageResult.java deleted file mode 100644 index 6d7c89e..0000000 --- a/src/main/java/com/genersoft/iot/vmp/common/PageResult.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.genersoft.iot.vmp.common; - - -import java.util.List; - -public class PageResult<T> { - - private int page; - private int count; - private int total; - - private List<T> data; - - public List<T> getData() { - return data; - } - - public int getPage() { - return page; - } - - public void setPage(int page) { - this.page = page; - } - - public int getCount() { - return count; - } - - public void setCount(int count) { - this.count = count; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public void setData(List<T> data) { - this.data = data; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java index 12b8a00..9393106 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java @@ -1,16 +1,7 @@ package com.genersoft.iot.vmp.gb28181.bean; -import java.util.Date; -import java.util.List; -import java.util.Map; - public class Device { - - /** - * 鏁版嵁搴撳瓨鍌↖D - */ - private int id; /** * 璁惧Id @@ -52,9 +43,19 @@ private String streamMode; /** + * wan鍦板潃_ip + */ + private String ip; + + /** + * wan鍦板潃_port + */ + private int port; + + /** * wan鍦板潃 */ - private Host host; + private String hostAddress; /** * 鍦ㄧ嚎 @@ -71,14 +72,6 @@ * 閫氶亾涓暟 */ private int channelCount; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } public String getDeviceId() { return deviceId; @@ -136,12 +129,28 @@ this.streamMode = streamMode; } - public Host getHost() { - return host; + public String getIp() { + return ip; } - public void setHost(Host host) { - this.host = host; + public void setIp(String ip) { + this.ip = ip; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + + public String getHostAddress() { + return hostAddress; + } + + public void setHostAddress(String hostAddress) { + this.hostAddress = hostAddress; } public int getOnline() { diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java index a606171..8f2c0dd 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java @@ -44,9 +44,8 @@ public Request createMessageRequest(Device device, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException, PeerUnavailableException { Request request = null; - Host host = device.getHost(); // sipuri - SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), host.getAddress()); + SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress()); // via ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), @@ -79,12 +78,11 @@ public Request createInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, String ssrc) throws ParseException, InvalidArgumentException, PeerUnavailableException { Request request = null; - Host host = device.getHost(); //璇锋眰琛� - SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, host.getAddress()); + SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress()); //via ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(device.getHost().getIp(), device.getHost().getPort(), device.getTransport(), viaTag); + ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(device.getIp(), device.getPort(), device.getTransport(), viaTag); viaHeader.setRPort(); viaHeaders.add(viaHeader); @@ -126,12 +124,11 @@ public Request createPlaybackInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException, PeerUnavailableException { Request request = null; - Host host = device.getHost(); //璇锋眰琛� - SipURI requestLine = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), host.getAddress()); + SipURI requestLine = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress()); // via ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); - ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(device.getHost().getIp(), device.getHost().getPort(), device.getTransport(), viaTag); + ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(device.getIp(), device.getPort(), device.getTransport(), viaTag); viaHeader.setRPort(); viaHeaders.add(viaHeader); //from diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java index bcd4482..4faab0e 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java @@ -107,17 +107,15 @@ rPort = viaHeader.getPort(); } // - Host host = new Host(); - host.setIp(received); - host.setPort(rPort); - host.setAddress(received.concat(":").concat(String.valueOf(rPort))); AddressImpl address = (AddressImpl) fromHeader.getAddress(); SipUri uri = (SipUri) address.getURI(); String deviceId = uri.getUser(); device = new Device(); device.setStreamMode("UDP"); device.setDeviceId(deviceId); - device.setHost(host); + device.setIp(received); + device.setPort(rPort); + device.setHostAddress(received.concat(":").concat(String.valueOf(rPort))); // 娉ㄩ攢鎴愬姛 if (expiresHeader != null && expiresHeader.getExpires() == 0) { registerFlag = 2; diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java index 4174507..c601f7e 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java @@ -1,14 +1,10 @@ package com.genersoft.iot.vmp.storager; import java.util.List; -import java.util.Map; -import com.alibaba.fastjson.JSONObject; -import com.genersoft.iot.vmp.common.PageResult; -import com.genersoft.iot.vmp.common.StreamInfo; -import com.genersoft.iot.vmp.conf.MediaServerConfig; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; +import com.github.pagehelper.PageInfo; /** * @Description:瑙嗛璁惧鏁版嵁瀛樺偍鎺ュ彛 @@ -65,7 +61,7 @@ * @param count 姣忛〉鏁伴噺 * @return */ - public PageResult queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, String online, int page, int count); + public PageInfo queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, Boolean online, int page, int count); /** * 鑾峰彇鏌愪釜璁惧鐨勯�氶亾鍒楄〃 @@ -82,13 +78,13 @@ */ public DeviceChannel queryChannel(String deviceId, String channelId); - /** + /** * 鑾峰彇澶氫釜璁惧 - * - * @param deviceIds 璁惧ID鏁扮粍 + * @param page 褰撳墠椤垫暟 + * @param count 姣忛〉鏁伴噺 * @return List<Device> 璁惧瀵硅薄鏁扮粍 */ - public PageResult<Device> queryVideoDeviceList(String[] deviceIds, int page, int count); + public PageInfo<Device> queryVideoDeviceList(int page, int count); /** * 鑾峰彇澶氫釜璁惧 @@ -131,7 +127,7 @@ * @param count * @return */ - PageResult querySubChannels(String deviceId, String channelId, String query, Boolean hasSubChannel, String online, int page, int count); + PageInfo querySubChannels(String deviceId, String channelId, String query, Boolean hasSubChannel, String online, int page, int count); /** diff --git a/src/main/java/com/genersoft/iot/vmp/storager/VodeoMannagerTask.java b/src/main/java/com/genersoft/iot/vmp/storager/VodeoMannagerTask.java deleted file mode 100644 index c207484..0000000 --- a/src/main/java/com/genersoft/iot/vmp/storager/VodeoMannagerTask.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.genersoft.iot.vmp.storager; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.stereotype.Component; - -@Component -public class VodeoMannagerTask implements CommandLineRunner { - - @Autowired - private IVideoManagerStorager redisStorager; - - @Override - public void run(String... strings) throws Exception { - redisStorager.updateCatch(); - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java index bf67095..072b1bf 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java @@ -1,20 +1,50 @@ package com.genersoft.iot.vmp.storager.dao; -import com.genersoft.iot.vmp.common.PageResult; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; -import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.*; import java.util.List; +/** + * 鐢ㄤ簬瀛樺偍璁惧閫氶亾淇℃伅 + */ @Mapper public interface DeviceChannelMapper { + + @Insert("INSERT INTO device_channel (channelId, deviceId, name, manufacture, model, owner, civilCode, block, " + + "address, parental, parentId, safetyWay, registerWay, certNum, certifiable, errCode, secrecy, " + + "ipAddress, port, password, PTZType, status) " + + "VALUES ('${channelId}', '${deviceId}', '${name}', '${manufacture}', '${model}', '${owner}', '${civilCode}', '${block}'," + + "'${address}', ${parental}, '${parentId}', ${safetyWay}, ${registerWay}, '${certNum}', ${certifiable}, ${errCode}, '${secrecy}', " + + "'${ipAddress}', ${port}, '${password}', ${PTZType}, ${status})") + int add(DeviceChannel channel); + + @Update("UPDATE device_channel " + + "SET name=#{name}, manufacture=#{manufacture}, model=#{model}, owner=#{owner}, civilCode=#{civilCode}, " + + "block=#{block}, address=#{address}, parental=#{parental}, parentId=#{parentId}, safetyWay=#{safetyWay}, " + + "registerWay=#{registerWay}, certNum=#{certNum}, certifiable=#{certifiable}, errCode=#{errCode}, secrecy=#{secrecy}, " + + "ipAddress=#{ipAddress}, port=#{port}, password=#{password}, PTZType=#{PTZType}, status=#{status} " + + "WHERE deviceId=#{deviceId} AND channelId=#{channelId}") int update(DeviceChannel channel); - List<DeviceChannel> queryChannelsByDeviceId(String deviceId); + @Select(value = {" <script>" + + "SELECT * FROM ( "+ + " SELECT * , (SELECT count(0) FROM device_channel WHERE parentId=dc.channelId) as subCount FROM device_channel dc " + + " WHERE dc.deviceId=#{deviceId} " + + " <if test=\"query != null\"> AND (dc.channelId LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " + + " <if test=\"parentChannelId != null\"> AND dc.parentId=#{parentChannelId} </if> " + + " <if test=\"online == true\" > AND dc.status=1</if>" + + " <if test=\"online == false\" > AND dc.status=0</if>) dcr" + + " WHERE 1=1 " + + " <if test=\"hasSubChannel == true\" > AND subCount >0</if>" + + " <if test=\"hasSubChannel == false\" > AND subCount=0</if>" + + " </script>"}) + List<DeviceChannel> queryChannelsByDeviceId(String deviceId, String parentChannelId, String query, Boolean hasSubChannel, Boolean online); - List<DeviceChannel> queryChannelsByDeviceId(String deviceId, String parentChannelId); - + @Select("SELECT * FROM device_channel WHERE deviceId=#{deviceId} AND channelId=#{channelId}") DeviceChannel queryChannel(String deviceId, String channelId); + @Delete("DELETE FROM device_channel WHERE deviceId=#{deviceId}") int cleanChannelsByDeviceId(String deviceId); + } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java index da455fb..3c10618 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java @@ -1,24 +1,66 @@ package com.genersoft.iot.vmp.storager.dao; import com.genersoft.iot.vmp.gb28181.bean.Device; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; import java.util.List; +/** + * 鐢ㄤ簬瀛樺偍璁惧淇℃伅 + */ @Mapper +@Repository public interface DeviceMapper { @Select("SELECT * FROM device WHERE deviceId = #{deviceId}") Device getDeviceByDeviceId(String deviceId); - @Insert("SELECT * FROM device WHERE deviceId = #{deviceId}") + @Insert("INSERT INTO device (" + + "deviceId, " + + "name, " + + "manufacturer, " + + "model, " + + "firmware, " + + "transport," + + "streamMode," + + "ip," + + "port," + + "hostAddress," + + "online" + + ") VALUES (" + + "#{deviceId}," + + "#{name}," + + "#{manufacturer}," + + "#{model}," + + "#{firmware}," + + "#{transport}," + + "#{streamMode}," + + "#{ip}," + + "#{port}," + + "#{hostAddress}," + + "#{online}" + + ")") int add(Device device); + + @Update("UPDATE device " + + "SET name=#{name}, " + + "manufacturer=#{manufacturer}," + + "model=#{model}," + + "firmware=#{firmware}, " + + "transport=#{transport}," + + "streamMode=#{streamMode}, " + + "ip=#{ip}, " + + "port=#{port}, " + + "hostAddress=#{hostAddress}, " + + "online=#{online} " + + "WHERE deviceId=#{deviceId}") int update(Device device); + @Select("SELECT *, (SELECT count(0) FROM device_channel WHERE deviceId=de.deviceId) as channelCount FROM device de") List<Device> getDevices(); + @Delete("DELETE FROM device WHERE deviceId=#{deviceId}") int del(String deviceId); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java index 96b55b0..cebb30b 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java @@ -6,7 +6,6 @@ import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; -import com.genersoft.iot.vmp.storager.dao.DeviceMapper; import com.genersoft.iot.vmp.utils.redis.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -21,9 +20,6 @@ @Autowired private RedisUtil redis; - - @Autowired - private DeviceMapper deviceMapper; @Autowired private DeviceChannelMapper deviceChannelMapper; diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java index 1288efc..01ed247 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java @@ -2,19 +2,17 @@ import java.util.*; -import com.genersoft.iot.vmp.common.PageResult; -import com.genersoft.iot.vmp.common.StreamInfo; -import com.genersoft.iot.vmp.conf.MediaServerConfig; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; import com.genersoft.iot.vmp.storager.dao.DeviceMapper; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import com.genersoft.iot.vmp.common.VideoManagerConstants; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; -import com.genersoft.iot.vmp.utils.redis.RedisUtil; import org.springframework.util.StringUtils; /** @@ -50,7 +48,7 @@ * @return true锛氬垱寤烘垚鍔� false锛氬垱寤哄け璐� */ @Override - public boolean create(Device device) { + public synchronized boolean create(Device device) { return deviceMapper.add(device) > 0; } @@ -63,69 +61,26 @@ * @return true锛氭洿鏂版垚鍔� false锛氭洿鏂板け璐� */ @Override - public boolean updateDevice(Device device) { -// if (deviceMap.get(device.getDeviceId()) == null) { -// deviceMap.put(device.getDeviceId(), new HashMap<String, HashSet<String>>()); -// } - // 鏇存柊device涓殑閫氶亾鏁伴噺 -// device.setChannelCount(deviceMap.get(device.getDeviceId()).size()); - int result = deviceMapper.update(device); - // 瀛樺偍device - return result > 0; - + public synchronized boolean updateDevice(Device device) { + Device deviceByDeviceId = deviceMapper.getDeviceByDeviceId(device.getDeviceId()); + if (deviceByDeviceId == null) { + return deviceMapper.add(device) > 0; + }else { + return deviceMapper.update(device) > 0; + } } @Override - public void updateChannel(String deviceId, DeviceChannel channel) { + public synchronized void updateChannel(String deviceId, DeviceChannel channel) { String channelId = channel.getChannelId(); channel.setDeviceId(deviceId); - deviceChannelMapper.update(channel); - -// HashMap<String, HashSet<String>> channelMap = deviceMap.get(deviceId); -// if (channelMap == null) return; -// // 浣滀负鐖惰澶�, 纭畾鑷繁鐨勫瓙鑺傜偣鏁� -// if (channelMap.get(channelId) == null) { -// channelMap.put(channelId, new HashSet<String>()); -// }else if (channelMap.get(channelId).size() > 0) { -// channel.setSubCount(channelMap.get(channelId).size()); -// } -// -// // 瀛樺偍閫氶亾 -// redis.set(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + -// "_" + channel.getChannelId() + -// "_" + (channel.getStatus() == 1 ? "on":"off") + -// "_" + (channelMap.get(channelId).size() > 0)+ -// "_" + (StringUtils.isEmpty(channel.getParentId())?null:channel.getParentId()), -// channel); -// // 鏇存柊device涓殑閫氶亾鏁伴噺 -// Device device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceId); -// device.setChannelCount(deviceMap.get(deviceId).size()); -// redis.set(VideoManagerConstants.DEVICE_PREFIX+device.getDeviceId(), device); -// -// -// // 濡傛灉鏈夌埗璁惧,鏇存柊鐖惰澶囧唴瀛愯妭鐐规暟 -// String parentId = channel.getParentId(); -// if (!StringUtils.isEmpty(parentId) && !parentId.equals(deviceId)) { -// -// if (channelMap.get(parentId) == null) { -// channelMap.put(parentId, new HashSet<String>()); -// } -// channelMap.get(parentId).add(channelId); -// -// DeviceChannel deviceChannel = queryChannel(deviceId, parentId); -// if (deviceChannel != null) { -// deviceChannel.setSubCount(channelMap.get(parentId).size()); -// redis.set(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + -// "_" + deviceChannel.getChannelId() + -// "_" + (deviceChannel.getStatus() == 1 ? "on":"off") + -// "_" + (channelMap.get(deviceChannel.getChannelId()).size() > 0)+ -// "_" + (StringUtils.isEmpty(deviceChannel.getParentId())?null:deviceChannel.getParentId()), -// deviceChannel); -// -// } -// } - + DeviceChannel deviceChannel = deviceChannelMapper.queryChannel(deviceId, channelId); + if (deviceChannel == null) { + deviceChannelMapper.add(channel); + }else { + deviceChannelMapper.update(channel); + } } /** @@ -140,179 +95,45 @@ } @Override - public PageResult queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, String online, int page, int count) { + public PageInfo queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, Boolean online, int page, int count) { // 鑾峰彇鍒版墍鏈夋鍦ㄦ挱鏀剧殑娴� - List<DeviceChannel> result = new ArrayList<>(); - PageResult pageResult = new PageResult<DeviceChannel>(); - - deviceChannelMapper.queryChannelsByDeviceId(deviceId); -// String queryContent = "*"; -// if (!StringUtils.isEmpty(query)) queryContent = String.format("*%S*",query); -// String queryHasSubChannel = "*"; -// if (hasSubChannel != null) queryHasSubChannel = hasSubChannel?"true":"false"; -// String queryOnline = "*"; -// if (!StringUtils.isEmpty(online)) queryOnline = online; -// String queryStr = VideoManagerConstants.CACHEKEY_PREFIX + deviceId + -// "_" + queryContent + // 鎼滅储缂栧彿鍜屽悕绉� -// "_" + queryOnline + // 鎼滅储鏄惁鍦ㄧ嚎 -// "_" + queryHasSubChannel + // 鎼滅储鏄惁鍚湁瀛愯妭鐐� -// "_" + "*"; -// List<Object> deviceChannelList = redis.scan(queryStr); -// //瀵规煡璇㈢粨鏋滄帓搴忥紝閬垮厤鍑虹幇閫氶亾鎺掑垪椤哄簭涔卞簭鐨勬儏鍐� -// Collections.sort(deviceChannelList,new Comparator<Object>(){ -// @Override -// public int compare(Object o1, Object o2) { -// return o1.toString().compareToIgnoreCase(o2.toString()); -// } -// }); -// pageResult.setPage(page); -// pageResult.setCount(count); -// pageResult.setTotal(deviceChannelList.size()); -// int maxCount = (page + 1 ) * count; -// if (deviceChannelList != null && deviceChannelList.size() > 0 ) { -// for (int i = page * count; i < (pageResult.getTotal() > maxCount ? maxCount : pageResult.getTotal() ); i++) { -// DeviceChannel deviceChannel = (DeviceChannel)redis.get((String)deviceChannelList.get(i)); -// StreamInfo streamInfo = stringStreamInfoMap.get(deviceId + "_" + deviceChannel.getChannelId()); -// deviceChannel.setPlay(streamInfo != null); -// if (streamInfo != null) deviceChannel.setStreamId(streamInfo.getStreamId()); -// result.add(deviceChannel); -// } -// pageResult.setData(result); -// } - - return pageResult; + PageHelper.startPage(page, count); + List<DeviceChannel> all = deviceChannelMapper.queryChannelsByDeviceId(deviceId, null, query, hasSubChannel, online); + return new PageInfo<>(all); } @Override public List<DeviceChannel> queryChannelsByDeviceId(String deviceId) { -// List<DeviceChannel> result = new ArrayList<>(); -//// List<Object> deviceChannelList = redis.keys(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + "_" + "*"); -// List<Object> deviceChannelList = redis.scan(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + "_" + "*"); -// -// if (deviceChannelList != null && deviceChannelList.size() > 0 ) { -// for (int i = 0; i < deviceChannelList.size(); i++) { -// result.add((DeviceChannel)redis.get((String) deviceChannelList.get(i))); -// } -// } - return deviceChannelMapper.queryChannelsByDeviceId(deviceId); + return deviceChannelMapper.queryChannelsByDeviceId(deviceId, null,null, null, null); } @Override - public PageResult querySubChannels(String deviceId, String parentChannelId, String query, Boolean hasSubChannel, String online, int page, int count) { - - deviceChannelMapper.queryChannelsByDeviceId(deviceId, parentChannelId); - -// List<DeviceChannel> allDeviceChannels = new ArrayList<>(); -// String queryContent = "*"; -// if (!StringUtils.isEmpty(query)) queryContent = String.format("*%S*",query); -// String queryHasSubChannel = "*"; -// if (hasSubChannel != null) queryHasSubChannel = hasSubChannel?"true":"false"; -// String queryOnline = "*"; -// if (!StringUtils.isEmpty(online)) queryOnline = online; -// String queryStr = VideoManagerConstants.CACHEKEY_PREFIX + deviceId + -// "_" + queryContent + // 鎼滅储缂栧彿鍜屽悕绉� -// "_" + queryOnline + // 鎼滅储鏄惁鍦ㄧ嚎 -// "_" + queryHasSubChannel + // 鎼滅储鏄惁鍚湁瀛愯妭鐐� -// "_" + parentChannelId; -// -//// List<Object> deviceChannelList = redis.keys(queryStr); -// List<Object> deviceChannelList = redis.scan(queryStr); -// -// if (deviceChannelList != null && deviceChannelList.size() > 0 ) { -// for (int i = 0; i < deviceChannelList.size(); i++) { -// DeviceChannel deviceChannel = (DeviceChannel)redis.get((String)deviceChannelList.get(i)); -// if (deviceChannel.getParentId() != null && deviceChannel.getParentId().equals(parentChannelId)) { -// allDeviceChannels.add(deviceChannel); -// } -// } -// } -// int maxCount = (page + 1 ) * count; - PageResult pageResult = new PageResult<DeviceChannel>(); -// pageResult.setPage(page); -// pageResult.setCount(count); -// pageResult.setTotal(allDeviceChannels.size()); -// -// if (allDeviceChannels.size() > 0) { -// pageResult.setData(allDeviceChannels.subList( -// page * count, pageResult.getTotal() > maxCount ? maxCount : pageResult.getTotal() -// )); -// } - return pageResult; - } - - public List<DeviceChannel> querySubChannels(String deviceId, String parentChannelId) { - List<DeviceChannel> allDeviceChannels = new ArrayList<>(); -// List<Object> deviceChannelList = redis.keys(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + "_" + "*"); -// List<Object> deviceChannelList = redis.scan(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + "_" + "*"); -// -// if (deviceChannelList != null && deviceChannelList.size() > 0 ) { -// for (int i = 0; i < deviceChannelList.size(); i++) { -// DeviceChannel deviceChannel = (DeviceChannel)redis.get((String)deviceChannelList.get(i)); -// if (deviceChannel.getParentId() != null && deviceChannel.getParentId().equals(parentChannelId)) { -// allDeviceChannels.add(deviceChannel); -// } -// } -// } - - return allDeviceChannels; + public PageInfo<DeviceChannel> querySubChannels(String deviceId, String parentChannelId, String query, Boolean hasSubChannel, String online, int page, int count) { + PageHelper.startPage(page, count); + List<DeviceChannel> all = deviceChannelMapper.queryChannelsByDeviceId(deviceId, parentChannelId, null, null, null); + return new PageInfo<>(all); } @Override public DeviceChannel queryChannel(String deviceId, String channelId) { - DeviceChannel deviceChannel = null; return deviceChannelMapper.queryChannel(deviceId, channelId); -//// List<Object> deviceChannelList = redis.keys(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + -// List<Object> deviceChannelList = redis.scan(VideoManagerConstants.CACHEKEY_PREFIX + deviceId + -// "_" + channelId + "*"); -// if (deviceChannelList != null && deviceChannelList.size() > 0 ) { -// deviceChannel = (DeviceChannel)redis.get((String)deviceChannelList.get(0)); -// } -// return deviceChannel; } /** * 鑾峰彇澶氫釜璁惧 * - * @param deviceIds 璁惧ID鏁扮粍 - * @return List<Device> 璁惧瀵硅薄鏁扮粍 + * @param page 褰撳墠椤垫暟 + * @param count 姣忛〉鏁伴噺 + * @return PageInfo<Device> 鍒嗛〉璁惧瀵硅薄鏁扮粍 */ @Override - public PageResult<Device> queryVideoDeviceList(String[] deviceIds, int page, int count) { - List<Device> devices = new ArrayList<>(); - PageResult pageResult = new PageResult<Device>(); -// pageResult.setPage(page); -// pageResult.setCount(count); -// Device device = null; -// -// if (deviceIds == null || deviceIds.length == 0) { -// -//// List<Object> deviceIdList = redis.keys(VideoManagerConstants.DEVICE_PREFIX+"*"); -// List<Object> deviceIdList = redis.scan(VideoManagerConstants.DEVICE_PREFIX+"*"); -// pageResult.setTotal(deviceIdList.size()); -// int maxCount = (page + 1)* count; -// for (int i = page * count; i < (pageResult.getTotal() > maxCount ? maxCount : pageResult.getTotal() ); i++) { -// // devices.add((Device)redis.get((String)deviceIdList.get(i))); -// device =(Device)redis.get((String)deviceIdList.get(i)); -// if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){ -// // outline(device.getDeviceId()); -// } -// devices.add(device); -// } -// } else { -// for (int i = 0; i < deviceIds.length; i++) { -// // devices.add((Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i])); -// device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i]); -// if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){ -// // outline(device.getDeviceId()); -// } -// devices.add(device); -// } -// } -// pageResult.setData(devices); - return pageResult; + public PageInfo<Device> queryVideoDeviceList(int page, int count) { + PageHelper.startPage(page, count); + List<Device> all = deviceMapper.getDevices(); + return new PageInfo<>(all); } /** @@ -322,26 +143,6 @@ */ @Override public List<Device> queryVideoDeviceList() { - -// if (deviceIds == null || deviceIds.length == 0) { -//// List<Object> deviceIdList = redis.keys(VideoManagerConstants.DEVICE_PREFIX+"*"); -// List<Object> deviceIdList = redis.scan(VideoManagerConstants.DEVICE_PREFIX+"*"); -// for (int i = 0; i < deviceIdList.size(); i++) { -// device =(Device)redis.get((String)deviceIdList.get(i)); -// if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){ -// outline(device.getDeviceId()); -// } -// devices.add(device); -// } -// } else { -// for (int i = 0; i < deviceIds.length; i++) { -// device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceIds[i]); -// if (redis.scan(VideoManagerConstants.KEEPLIVEKEY_PREFIX+device.getDeviceId()).size() == 0){ -// outline(device.getDeviceId()); -// } -// devices.add(device); -// } -// } List<Device> deviceList = deviceMapper.getDevices(); return deviceList; @@ -367,9 +168,13 @@ * @return true锛氭洿鏂版垚鍔� false锛氭洿鏂板け璐� */ @Override - public boolean online(String deviceId) { + public synchronized boolean online(String deviceId) { Device device = deviceMapper.getDeviceByDeviceId(deviceId); device.setOnline(1); + System.out.println("鏇存柊璁惧鍦ㄧ嚎"); + if (device == null) { + return false; + } return deviceMapper.update(device) > 0; } @@ -380,14 +185,10 @@ * @return true锛氭洿鏂版垚鍔� false锛氭洿鏂板け璐� */ @Override - public boolean outline(String deviceId) { -// Device device = (Device)redis.get(VideoManagerConstants.DEVICE_PREFIX+deviceId); -// if (device == null) return false; -// device.setOnline(0); -// return redis.set(VideoManagerConstants.DEVICE_PREFIX+device.getDeviceId(), device); - + public synchronized boolean outline(String deviceId) { Device device = deviceMapper.getDeviceByDeviceId(deviceId); device.setOnline(0); + System.out.println("鏇存柊璁惧绂荤嚎"); return deviceMapper.update(device) > 0; } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java index 65e294a..d64b632 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceController.java @@ -1,15 +1,14 @@ package com.genersoft.iot.vmp.vmanager.device; -import java.util.List; - -import com.genersoft.iot.vmp.common.PageResult; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; +import com.github.pagehelper.PageInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.context.request.async.DeferredResult; @@ -53,13 +52,13 @@ } @GetMapping("/devices") - public PageResult<Device> devices(int page, int count){ + public PageInfo<Device> devices(int page, int count){ if (logger.isDebugEnabled()) { logger.debug("鏌ヨ鎵�鏈夎棰戣澶嘇PI璋冪敤"); } - return storager.queryVideoDeviceList(null, page, count); + return storager.queryVideoDeviceList(page, count); } /** @@ -69,18 +68,33 @@ * @param count 姣忛〉鏉℃暟 * @return 閫氶亾鍒楄〃 */ + /** + * 鍒嗛〉鏌ヨ閫氶亾鏁� + * + * @param deviceId 璁惧id + * @param page 褰撳墠椤� + * @param count 姣忛〉鏉℃暟 + * @param query 鏌ヨ鍐呭 + * @param online 鏄惁鍦ㄧ嚎 鍦ㄧ嚎 true / 绂荤嚎 false + * @param channelType 璁惧 false/瀛愮洰褰� true + * @return 閫氶亾鍒楄〃 + */ @GetMapping("/devices/{deviceId}/channels") - public ResponseEntity<PageResult> channels(@PathVariable String deviceId, + public ResponseEntity<PageInfo> channels(@PathVariable String deviceId, int page, int count, @RequestParam(required = false) String query, - @RequestParam(required = false) String online, + @RequestParam(required = false) Boolean online, @RequestParam(required = false) Boolean channelType ){ if (logger.isDebugEnabled()) { logger.debug("鏌ヨ鎵�鏈夎棰戣澶嘇PI璋冪敤"); } - PageResult pageResult = storager.queryChannelsByDeviceId(deviceId, query, channelType, online, page, count); + if (StringUtils.isEmpty(query)) { + query = null; + } + + PageInfo pageResult = storager.queryChannelsByDeviceId(deviceId, query, channelType, online, page, count); return new ResponseEntity<>(pageResult,HttpStatus.OK); } @@ -141,7 +155,7 @@ * @return 瀛愰�氶亾鍒楄〃 */ @GetMapping("/subChannels/{deviceId}/{channelId}/channels") - public ResponseEntity<PageResult> subChannels(@PathVariable String deviceId, + public ResponseEntity<PageInfo> subChannels(@PathVariable String deviceId, @PathVariable String channelId, int page, int count, @@ -154,23 +168,23 @@ } DeviceChannel deviceChannel = storager.queryChannel(deviceId,channelId); if (deviceChannel == null) { - PageResult<DeviceChannel> deviceChannelPageResult = new PageResult<>(); + PageInfo<DeviceChannel> deviceChannelPageResult = new PageInfo<>(); return new ResponseEntity<>(deviceChannelPageResult,HttpStatus.OK); } - PageResult pageResult = storager.querySubChannels(deviceId, channelId, query, channelType, online, page, count); + PageInfo pageResult = storager.querySubChannels(deviceId, channelId, query, channelType, online, page, count); return new ResponseEntity<>(pageResult,HttpStatus.OK); } @PostMapping("/channel/update/{deviceId}") - public ResponseEntity<PageResult> updateChannel(@PathVariable String deviceId,DeviceChannel channel){ + public ResponseEntity<PageInfo> updateChannel(@PathVariable String deviceId,DeviceChannel channel){ storager.updateChannel(deviceId, channel); return new ResponseEntity<>(null,HttpStatus.OK); } @GetMapping("/devices/{deviceId}/transport/{streamMode}") @PostMapping("/devices/{deviceId}/transport/{streamMode}") - public ResponseEntity<PageResult> updateTransport(@PathVariable String deviceId, @PathVariable String streamMode){ + public ResponseEntity<PageInfo> updateTransport(@PathVariable String deviceId, @PathVariable String streamMode){ Device device = storager.queryVideoDevice(deviceId); device.setStreamMode(streamMode); storager.updateDevice(device); diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/device/entity/Device.java b/src/main/java/com/genersoft/iot/vmp/vmanager/device/entity/Device.java deleted file mode 100644 index e47f796..0000000 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/device/entity/Device.java +++ /dev/null @@ -1,401 +0,0 @@ -package com.genersoft.iot.vmp.vmanager.device.entity; - -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.validation.constraints.Max; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -/** - * @Description:瑙嗛璁惧淇℃伅 - * @author: songww - * @date: 2020骞�5鏈�8鏃� 涓嬪崍2:05:56 - */ -@ApiModel(value = "瑙嗛璁惧淇℃伅", description = "瑙嗛璁惧淇℃伅") -@Table(name="VMP_VIDEODEVICES") -public class Device { - - /** - * 璁惧Id - */ - @ApiModelProperty("璁惧缂栧彿") - @Id - @Column(name="DEVICE_ID") - @NotNull(message = "deviceId 涓嶈兘涓� null") - @Size(min = 4, max = 32, message = "deviceId 蹇呴』澶т簬 4 浣嶅苟涓斿皬浜� 32 浣�") - private String deviceId; - - /** - * 璁惧鍚嶇О - */ - @ApiModelProperty("璁惧鍚嶇О") - @Column(name="DEVICE_NAME") - @Size(max = 32, message = "deviceName 蹇呴』灏忎簬 32 浣�") - private String deviceName; - - /** - * 鐢熶骇鍘傚晢 - */ - @ApiModelProperty("鐢熶骇鍘傚晢") - @Column(name="MANUFACTURER") - @Size(max = 64, message = "manufacturer 蹇呴』灏忎簬 64 浣�") - private String manufacturer; - - /** - * 鍨嬪彿 - */ - @ApiModelProperty("鍨嬪彿") - @Column(name="MODEL") - @Size(max = 64, message = "manufacturer 蹇呴』灏忎簬 64 浣�") - private String model; - - /** - * 鍥轰欢鐗堟湰 - */ - @ApiModelProperty("鍥轰欢鐗堟湰") - @Column(name="FIRMWARE") - @Size(max = 64, message = "firmware 蹇呴』灏忎簬 64 浣�") - private String firmware; - - /** - * 閫氫俊鍗忚 - * GB28181 ONVIF - */ - @ApiModelProperty("閫氫俊鍗忚") - @Column(name="PROTOCOL") - @NotNull(message = "protocol 涓嶈兘涓� null") - @Size(max = 16, message = "protocol 蹇呴』灏忎簬 16 浣�") - private String protocol; - - /** - * SIP 浼犺緭鍗忚 - * UDP/TCP - */ - @ApiModelProperty("SIP 浼犺緭鍗忚") - @Column(name="TRANSPORT") - @Size(min = 3,max = 3 ,message = "transport 蹇呴』涓� 3 浣�") - private String transport; - - /** - * 鏁版嵁娴佷紶杈撴ā寮� - * UDP:udp浼犺緭 - * TCP-ACTIVE锛歵cp涓诲姩妯″紡 - * TCP-PASSIVE锛歵cp琚姩妯″紡 - */ - @ApiModelProperty("鏁版嵁娴佷紶杈撴ā寮�") - @Column(name="STREAM_MODE") - @Size(max = 64, message = "streamMode 蹇呴』灏忎簬 16 浣�") - private String streamMode; - - /** - * IP鍦板潃 - */ - @ApiModelProperty("IP鍦板潃") - @Column(name="IP") - @Size(max = 15, message = "streamMode 蹇呴』灏忎簬 15 浣�") - private String ip; - - /** - * 绔彛鍙� - */ - @ApiModelProperty("绔彛鍙�") - @Column(name="PORT") - @Max(value = 65535,message = "port 鏈�澶у�间负 65535") - private Integer port; - - /** - * 鍦ㄧ嚎鐘舵�� 1鍦ㄧ嚎, 0绂荤嚎 - */ - @ApiModelProperty("鍦ㄧ嚎鐘舵��") - @Size(min = 1,max = 1 ,message = "online 蹇呴』涓� 1 浣�") - @Column(name="ONLINE") - private String online; - - /** - * 閫氶亾鏁伴噺 - */ - @ApiModelProperty("閫氶亾鏁伴噺") - @Column(name="CHANNEL_SUM") - @Max(value = 1000000000,message = "channelSum 鏈�澶у�间负 1000000000") - private Integer channelSum; - - @Override - public String toString() { - return "Device{" + - "deviceId='" + deviceId + '\'' + - ", deviceName='" + deviceName + '\'' + - ", manufacturer='" + manufacturer + '\'' + - ", model='" + model + '\'' + - ", firmware='" + firmware + '\'' + - ", protocol='" + protocol + '\'' + - ", transport='" + transport + '\'' + - ", streamMode='" + streamMode + '\'' + - ", ip='" + ip + '\'' + - ", port=" + port + - ", online='" + online + '\'' + - ", channelSum=" + channelSum + - ", createTime='" + createTime + '\'' + - ", registerTime='" + registerTime + '\'' + - ", heartbeatTime='" + heartbeatTime + '\'' + - ", updateTime='" + updateTime + '\'' + - ", updatePerson='" + updatePerson + '\'' + - ", syncTime='" + syncTime + '\'' + - ", syncPerson='" + syncPerson + '\'' + - ", username='" + username + '\'' + - ", password='" + password + '\'' + - ", channelList=" + channelList + - '}'; - } - - /** - * 鍒涘缓鏃堕棿 - */ - @ApiModelProperty("鍒涘缓鏃堕棿") - @Column(name="CREATE_TIME") - private String createTime; - - /** - * 娉ㄥ唽鏃堕棿 - */ - @ApiModelProperty("娉ㄥ唽鏃堕棿") - @Column(name="REGISTER_TIME") - private String registerTime; - - /** - * 蹇冭烦鏃堕棿 - */ - @ApiModelProperty("蹇冭烦鏃堕棿") - @Column(name="HEARTBEAT_TIME") - private String heartbeatTime; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty("鏇存柊鏃堕棿") - @Column(name="UPDATE_TIME") - private String updateTime; - - /** - * 淇敼浜� - */ - @ApiModelProperty("淇敼浜�") - @Column(name="UPDATE_PERSON") - private String updatePerson; - - /** - * 鍚屾鏃堕棿 - */ - @ApiModelProperty("鍚屾鏃堕棿") - @Column(name="SYNC_TIME") - private String syncTime; - - /** - * 鍚屾浜� - */ - @ApiModelProperty("鍚屾浜�") - @Column(name="SYNC_PERSON") - private String syncPerson; - - /** - * ONVIF鍗忚-鐢ㄦ埛鍚� - */ - @ApiModelProperty("鐢ㄦ埛鍚�") - @Column(name="USERNAME") - @Size(max = 32, message = "username 蹇呴』灏忎簬 32 浣�") - private String username; - - /** - * ONVIF鍗忚-瀵嗙爜 - */ - @ApiModelProperty("瀵嗙爜") - @Size(max = 32, message = "password 蹇呴』灏忎簬 32 浣�") - @Column(name="PASSWORD") - private String password; - - @Transient - private List<DeviceChannel> channelList; - - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getDeviceName() { - return deviceName; - } - - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getManufacturer() { - return manufacturer; - } - - public void setManufacturer(String manufacturer) { - this.manufacturer = manufacturer; - } - - public String getModel() { - return model; - } - - public void setModel(String model) { - this.model = model; - } - - public String getFirmware() { - return firmware; - } - - public void setFirmware(String firmware) { - this.firmware = firmware; - } - - public String getProtocol() { - return protocol; - } - - public void setProtocol(String protocol) { - this.protocol = protocol; - } - - public String getTransport() { - return transport; - } - - public void setTransport(String transport) { - this.transport = transport; - } - - public String getStreamMode() { - return streamMode; - } - - public void setStreamMode(String streamMode) { - this.streamMode = streamMode; - } - - public String getIp() { - return ip; - } - - public void setIp(String ip) { - this.ip = ip; - } - - public Integer getPort() { - return port; - } - - public void setPort(Integer port) { - this.port = port; - } - - public String getOnline() { - return online; - } - - public void setOnline(String online) { - this.online = online; - } - - public Integer getChannelSum() { - return channelSum; - } - - public void setChannelSum(Integer channelSum) { - this.channelSum = channelSum; - } - - public String getCreateTime() { - return createTime; - } - - public void setCreateTime(String createTime) { - this.createTime = createTime; - } - - public String getRegisterTime() { - return registerTime; - } - - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } - - public String getHeartbeatTime() { - return heartbeatTime; - } - - public void setHeartbeatTime(String heartbeatTime) { - this.heartbeatTime = heartbeatTime; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getUpdatePerson() { - return updatePerson; - } - - public void setUpdatePerson(String updatePerson) { - this.updatePerson = updatePerson; - } - - public String getSyncTime() { - return syncTime; - } - - public void setSyncTime(String syncTime) { - this.syncTime = syncTime; - } - - public String getSyncPerson() { - return syncPerson; - } - - public void setSyncPerson(String syncPerson) { - this.syncPerson = syncPerson; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public List<DeviceChannel> getChannelList() { - return channelList; - } - - public void setChannelList(List<DeviceChannel> channelList) { - this.channelList = channelList; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/device/entity/DeviceChannel.java b/src/main/java/com/genersoft/iot/vmp/vmanager/device/entity/DeviceChannel.java deleted file mode 100644 index bedd075..0000000 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/device/entity/DeviceChannel.java +++ /dev/null @@ -1,385 +0,0 @@ -package com.genersoft.iot.vmp.vmanager.device.entity; - -import javax.persistence.Column; -import javax.persistence.Id; -import javax.persistence.Table; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -/** - * @Description:璁惧閫氶亾淇℃伅 - * @author: songww - * @date: 2020骞�5鏈�20鏃� 涓嬪崍9:00:46 - */ -@ApiModel(value = "璁惧閫氶亾淇℃伅", description = "璁惧閫氶亾淇℃伅") -@Table(name="VMP_VIDEOCHANNELS") -public class DeviceChannel { - - /** - * 閫氶亾缂栧彿 - */ - @ApiModelProperty("閫氶亾缂栧彿") - @Id - @Column(name="CHANNEL_ID") - private String channelId; - - /** - * 璁惧缂栧彿 - */ - @ApiModelProperty("璁惧缂栧彿") - @Column(name="DEVICE_ID") - private String deviceId; - - /** - * 閫氶亾鍚� - */ - @ApiModelProperty("閫氶亾鍚�") - @Column(name="CHANNEL_NAME") - private String channelName; - - /** - * 鐢熶骇鍘傚晢 - */ - @ApiModelProperty("鐢熶骇鍘傚晢") - @Column(name="MANUFACTURER") - private String manufacture; - - /** - * 鍨嬪彿 - */ - @ApiModelProperty("鍨嬪彿") - @Column(name="MODEL") - private String model; - - /** - * 璁惧褰掑睘 - */ - @ApiModelProperty("璁惧褰掑睘") - @Column(name="OWNER") - private String owner; - - /** - * 琛屾斂鍖哄煙 - */ - @ApiModelProperty("琛屾斂鍖哄煙") - @Column(name="CIVIL_CODE") - private String civilCode; - - /** - * 璀﹀尯 - */ - @ApiModelProperty("璀﹀尯") - @Column(name="BLOCK") - private String block; - - /** - * 瀹夎鍦板潃 - */ - @ApiModelProperty("瀹夎鍦板潃") - @Column(name="ADDRESS") - private String address; - - /** - * 鏄惁鏈夊瓙璁惧 1鏈�, 0娌℃湁 - */ - @ApiModelProperty("鏄惁鏈夊瓙璁惧") - @Column(name="PARENTAL") - private String parental; - - /** - * 鐖剁骇id - */ - @ApiModelProperty("鐖剁骇缂栫爜") - @Column(name="PARENT_ID") - private String parentId; - - /** - * 淇′护瀹夊叏妯″紡 缂虹渷涓�0; 0:涓嶉噰鐢�; 2: S/MIME绛惧悕鏂瑰紡; 3: S/ MIME鍔犲瘑绛惧悕鍚屾椂閲囩敤鏂瑰紡; 4:鏁板瓧鎽樿鏂瑰紡 - */ - @ApiModelProperty("淇′护瀹夊叏妯″紡") - @Column(name="SAFETY_WAY") - private String safetyWay; - - /** - * 娉ㄥ唽鏂瑰紡 缂虹渷涓�1;1:绗﹀悎IETFRFC3261鏍囧噯鐨勮璇佹敞鍐屾ā 寮�; 2:鍩轰簬鍙d护鐨勫弻鍚戣璇佹敞鍐屾ā寮�; 3:鍩轰簬鏁板瓧璇佷功鐨勫弻鍚戣璇佹敞鍐屾ā寮� - */ - @ApiModelProperty("娉ㄥ唽鏂瑰紡") - @Column(name="REGISTER_WAY") - private String registerWay; - - /** - * 璇佷功搴忓垪鍙� - */ - @ApiModelProperty("璇佷功搴忓垪鍙�") - @Column(name="CERT_NUM") - private String certNum; - - /** - * 璇佷功鏈夋晥鏍囪瘑 缂虹渷涓�0;璇佷功鏈夋晥鏍囪瘑:0:鏃犳晥1: 鏈夋晥 - */ - @ApiModelProperty("璇佷功鏈夋晥鏍囪瘑") - @Column(name="CERT_VALID") - private String certValid; - - /** - * 璇佷功鏃犳晥鍘熷洜鐮� - */ - @ApiModelProperty("璇佷功鏃犳晥鍘熷洜鐮�") - @Column(name="CERT_ERRCODE") - private String certErrCode; - - /** - * 璇佷功缁堟鏈夋晥鏈� - */ - @ApiModelProperty("璇佷功缁堟鏈夋晥鏈�") - @Column(name="CERT_ENDTIME") - private String certEndTime; - - /** - * 淇濆瘑灞炴�� 缂虹渷涓�0; 0:涓嶆秹瀵�, 1:娑夊瘑 - */ - @ApiModelProperty("淇濆瘑灞炴��") - @Column(name="SECRECY") - private String secrecy; - - /** - * IP鍦板潃 - */ - @ApiModelProperty("IP鍦板潃") - @Column(name="IP") - private String ip; - - /** - * 绔彛鍙� - */ - @ApiModelProperty("绔彛鍙�") - @Column(name="PORT") - private Integer port; - - /** - * 瀵嗙爜 - */ - @ApiModelProperty("瀵嗙爜") - @Column(name="PASSWORD") - private String password; - - /** - * 鍦ㄧ嚎/绂荤嚎 - * 1鍦ㄧ嚎,0绂荤嚎 - * 榛樿鍦ㄧ嚎 - * 淇′护: - * <Status>ON</Status> - * <Status>OFF</Status> - * 閬囧埌杩嘚VR涓嬬殑IPC涓嬪彂淇′护鍙互鎺ㄦ祦锛� 浣嗘槸 Status 鍝嶅簲 OFF - */ - @ApiModelProperty("鐘舵��") - @Column(name="ONLINE") - private String online; - - /** - * 缁忓害 - */ - @ApiModelProperty("缁忓害") - @Column(name="LONGITUDE") - private double longitude; - - /** - * 绾害 - */ - @ApiModelProperty("绾害") - @Column(name="LATITUDE") - private double latitude; - - public String getChannelId() { - return channelId; - } - - public void setChannelId(String channelId) { - this.channelId = channelId; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getChannelName() { - return channelName; - } - - public void setChannelName(String channelName) { - this.channelName = channelName; - } - - public String getManufacture() { - return manufacture; - } - - public void setManufacture(String manufacture) { - this.manufacture = manufacture; - } - - public String getModel() { - return model; - } - - public void setModel(String model) { - this.model = model; - } - - public String getOwner() { - return owner; - } - - public void setOwner(String owner) { - this.owner = owner; - } - - public String getCivilCode() { - return civilCode; - } - - public void setCivilCode(String civilCode) { - this.civilCode = civilCode; - } - - public String getBlock() { - return block; - } - - public void setBlock(String block) { - this.block = block; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getParental() { - return parental; - } - - public void setParental(String parental) { - this.parental = parental; - } - - public String getParentId() { - return parentId; - } - - public void setParentId(String parentId) { - this.parentId = parentId; - } - - public String getSafetyWay() { - return safetyWay; - } - - public void setSafetyWay(String safetyWay) { - this.safetyWay = safetyWay; - } - - public String getRegisterWay() { - return registerWay; - } - - public void setRegisterWay(String registerWay) { - this.registerWay = registerWay; - } - - public String getCertNum() { - return certNum; - } - - public void setCertNum(String certNum) { - this.certNum = certNum; - } - - public String getCertValid() { - return certValid; - } - - public void setCertValid(String certValid) { - this.certValid = certValid; - } - - public String getCertErrCode() { - return certErrCode; - } - - public void setCertErrCode(String certErrCode) { - this.certErrCode = certErrCode; - } - - public String getCertEndTime() { - return certEndTime; - } - - public void setCertEndTime(String certEndTime) { - this.certEndTime = certEndTime; - } - - public String getSecrecy() { - return secrecy; - } - - public void setSecrecy(String secrecy) { - this.secrecy = secrecy; - } - - public String getIp() { - return ip; - } - - public void setIp(String ip) { - this.ip = ip; - } - - public Integer getPort() { - return port; - } - - public void setPort(Integer port) { - this.port = port; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public String getOnline() { - return online; - } - - public void setOnline(String online) { - this.online = online; - } - - public double getLongitude() { - return longitude; - } - - public void setLongitude(double longitude) { - this.longitude = longitude; - } - - public double getLatitude() { - return latitude; - } - - public void setLatitude(double latitude) { - this.latitude = latitude; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java b/src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java index def98d8..199a9e6 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java @@ -1,22 +1,17 @@ package com.genersoft.iot.vmp.web; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.genersoft.iot.vmp.common.PageResult; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.event.DeviceOffLineDetector; import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; -import com.genersoft.iot.vmp.vmanager.device.DeviceController; +import com.github.pagehelper.PageInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -68,9 +63,9 @@ devices = storager.queryVideoDeviceList(); result.put("DeviceCount", devices.size()); }else { - PageResult<Device> deviceList = storager.queryVideoDeviceList(null, start/limit, limit); + PageInfo<Device> deviceList = storager.queryVideoDeviceList(start/limit, limit); result.put("DeviceCount", deviceList.getTotal()); - devices = deviceList.getData(); + devices = deviceList.getList(); } JSONArray deviceJSONList = new JSONArray(); @@ -86,8 +81,8 @@ deviceJsonObject.put("Online", device.getOnline() == 1); deviceJsonObject.put("Password", ""); deviceJsonObject.put("MediaTransport", device.getTransport()); - deviceJsonObject.put("RemoteIP", device.getHost().getIp()); - deviceJsonObject.put("RemotePort", device.getHost().getPort()); + deviceJsonObject.put("RemoteIP", device.getIp()); + deviceJsonObject.put("RemotePort", device.getPort()); deviceJsonObject.put("LastRegisterAt", ""); deviceJsonObject.put("LastKeepaliveAt", ""); deviceJsonObject.put("UpdatedAt", ""); @@ -123,9 +118,9 @@ deviceChannels = storager.queryChannelsByDeviceId(serial); result.put("ChannelCount", deviceChannels.size()); }else { - PageResult<DeviceChannel> pageResult = storager.queryChannelsByDeviceId(serial, null, null, null,start/limit, limit); + PageInfo<DeviceChannel> pageResult = storager.queryChannelsByDeviceId(serial, null, null, null,start/limit, limit); result.put("ChannelCount", pageResult.getTotal()); - deviceChannels = pageResult.getData(); + deviceChannels = pageResult.getList(); } JSONArray channleJSONList = new JSONArray(); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 34f615a..6cee0cb 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -27,6 +27,7 @@ type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver + # [鍙�塢 WVP鐩戝惉鐨凥TTP绔彛, 缃戦〉鍜屾帴鍙h皟鐢ㄩ兘鏄繖涓鍙� server: port: 18080 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index caf4dfc..ef46c2a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: dev \ No newline at end of file + active: local \ No newline at end of file diff --git a/src/main/resources/wvp.sqlite b/src/main/resources/wvp.sqlite index e781bbc..ab68634 100644 --- a/src/main/resources/wvp.sqlite +++ b/src/main/resources/wvp.sqlite Binary files differ diff --git a/web_src/src/components/channelList.vue b/web_src/src/components/channelList.vue index b46f1d9..2867d7b 100644 --- a/web_src/src/components/channelList.vue +++ b/web_src/src/components/channelList.vue @@ -21,8 +21,8 @@ </el-select> 鍦ㄧ嚎鐘舵��: <el-select size="mini" @change="search" v-model="online" placeholder="璇烽�夋嫨" default-first-option> <el-option label="鍏ㄩ儴" value=""></el-option> - <el-option label="鍦ㄧ嚎" value="on"></el-option> - <el-option label="绂荤嚎" value="off"></el-option> + <el-option label="鍦ㄧ嚎" value="true"></el-option> + <el-option label="绂荤嚎" value="false"></el-option> </el-select> </div> @@ -161,7 +161,7 @@ .then(function (res) { console.log(res); that.total = res.data.total; - that.deviceChannelList = res.data.data; + that.deviceChannelList = res.data.list; // 闃叉鍑虹幇琛ㄦ牸閿欎綅 that.$nextTick(() => { that.$refs.channelListTable.doLayout(); diff --git a/web_src/src/components/videoList.vue b/web_src/src/components/videoList.vue index 50767cc..9e03696 100644 --- a/web_src/src/components/videoList.vue +++ b/web_src/src/components/videoList.vue @@ -21,7 +21,7 @@ <el-table-column label="鍦板潃" width="180" align="center"> <template slot-scope="scope"> <div slot="reference" class="name-wrapper"> - <el-tag size="medium">{{ scope.row.host.address }}</el-tag> + <el-tag size="medium">{{ scope.row.hostAddress }}</el-tag> </div> </template> </el-table-column> @@ -140,8 +140,9 @@ } ) .then(function (res) { console.log(res); + console.log(res.data.list); that.total = res.data.total; - that.deviceList = res.data.data; + that.deviceList = res.data.list; that.getDeviceListLoading = false; }) .catch(function (error) { -- Gitblit v1.8.0