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