From a004a978fa54779425d7498b4737c970b8c71f7b Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期日, 11 四月 2021 22:32:28 +0800
Subject: [PATCH] 规范api

---
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java                 |   22 +
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/RecordController.java                     |   30 +
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java                         |   21 
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java                       |   11 
 src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java                           |    2 
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java                          |   62 ++--
 web_src/src/components/PushVideoList.vue                                                              |    2 
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platformGbStream/PlatformGbStreamController.java |   14 +
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/ChannelReduce.java                 |    2 
 web_src/index.html                                                                                    |    2 
 src/main/java/com/genersoft/iot/vmp/conf/Swagger3Config.java                                          |   58 ++++
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/SseController/SseController.java                 |   17 +
 web_src/src/components/dialog/devicePlayer.vue                                                        |   20 
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/UpdateChannelParam.java            |    2 
 src/main/java/com/genersoft/iot/vmp/service/IPlayService.java                                         |    2 
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java                 |   13 
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/bean/GbStreamParam.java                 |    2 
 src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java                                 |    2 
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java                        |   35 +-
 src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java                     |   31 ++
 src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java                   |   34 ++
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java                       |    2 
 src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java                             |    5 
 src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java                               |    2 
 src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java                                      |    2 
 /dev/null                                                                                             |   57 ----
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java                 |  104 +++++++
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java                           |   72 +++--
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java         |    2 
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java                                |    6 
 web_src/src/components/dialog/addStreamTOGB.vue                                                       |    2 
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java                         |   35 ++
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/bean/PlayResult.java                        |    2 
 src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java                                 |   15 +
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java        |    2 
 src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java     |   18 
 src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java                             |    2 
 37 files changed, 467 insertions(+), 245 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/conf/Swagger3Config.java b/src/main/java/com/genersoft/iot/vmp/conf/Swagger3Config.java
index 70be188..84aa3d9 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/Swagger3Config.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/Swagger3Config.java
@@ -23,12 +23,70 @@
     public Docket createRestApi() {
         return new Docket(DocumentationType.OAS_30)
                 .apiInfo(apiInfo())
+                .groupName("鍏ㄩ儴")
                 .select()
                 .apis(RequestHandlerSelectors.basePackage("com.genersoft.iot.vmp.vmanager"))
                 .paths(PathSelectors.any())
                 .build()
                 .pathMapping("/");
     }
+    @Bean
+    public Docket createRestGBApi() {
+        return new Docket(DocumentationType.OAS_30)
+                .apiInfo(apiInfo())
+                .groupName("鍥芥爣")
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.genersoft.iot.vmp.vmanager.gb28181"))
+                .paths(PathSelectors.any())
+                .build()
+                .pathMapping("/");
+    }
+    @Bean
+    public Docket createRestStreamProxyApi() {
+        return new Docket(DocumentationType.OAS_30)
+                .apiInfo(apiInfo())
+                .groupName("鎷夋祦杞彂")
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.genersoft.iot.vmp.vmanager.streamProxy"))
+                .paths(PathSelectors.any())
+                .build()
+                .pathMapping("/");
+    }
+    @Bean
+    public Docket createRestStreamPushApi() {
+        return new Docket(DocumentationType.OAS_30)
+                .apiInfo(apiInfo())
+                .groupName("鎺ㄦ祦绠$悊")
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.genersoft.iot.vmp.vmanager.streamPush"))
+                .paths(PathSelectors.any())
+                .build()
+                .pathMapping("/");
+    }
+
+
+    @Bean
+    public Docket createServerApi() {
+        return new Docket(DocumentationType.OAS_30)
+                .apiInfo(apiInfo())
+                .groupName("鏈嶅姟绠$悊")
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.genersoft.iot.vmp.vmanager.server"))
+                .paths(PathSelectors.any())
+                .build()
+                .pathMapping("/");
+    }
+    @Bean
+    public Docket createUserApi() {
+        return new Docket(DocumentationType.OAS_30)
+                .apiInfo(apiInfo())
+                .groupName("鐢ㄦ埛绠$悊")
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.genersoft.iot.vmp.vmanager.user"))
+                .paths(PathSelectors.any())
+                .build()
+                .pathMapping("/");
+    }
 
     private ApiInfo apiInfo() {
         return new ApiInfoBuilder()
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
index 9db7a29..4b752a0 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
@@ -19,7 +19,7 @@
 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
-import com.genersoft.iot.vmp.vmanager.play.bean.PlayResult;
+import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.PlayResult;
 import com.genersoft.iot.vmp.service.IPlayService;
 import gov.nist.javax.sip.address.AddressImpl;
 import gov.nist.javax.sip.address.SipUri;
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
index 5277425..a73bc51 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
@@ -40,7 +40,7 @@
 import com.genersoft.iot.vmp.utils.GpsUtil;
 import com.genersoft.iot.vmp.utils.SpringBeanFactory;
 import com.genersoft.iot.vmp.utils.redis.RedisUtil;
-import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
+import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
 
 import gov.nist.javax.sip.SipStackImpl;
 import gov.nist.javax.sip.address.AddressImpl;
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index ade4f46..49d06ad 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -245,13 +245,13 @@
 		String streamId = json.getString("stream");
 		String schema = json.getString("schema");
 		JSONArray tracks = json.getJSONArray("tracks");
-		String regist = json.getString("regist");
+		boolean regist = json.getBoolean("regist");
 		if (tracks != null) {
 			System.out.println("222222" + schema);
 		}
 		if ("rtmp".equals(schema)){
 
-			if ("rtp".equals(app) && regist != null ) {
+			if ("rtp".equals(app) && !regist ) {
 				StreamInfo streamInfo = redisCatchStorage.queryPlayByStreamId(streamId);
 				if (streamInfo!=null){
 					redisCatchStorage.stopPlay(streamInfo);
@@ -262,7 +262,7 @@
 				}
 			}else {
 				if (!"rtp".equals(app) ){
-					if (regist == null) {
+					if (regist) {
 						zlmMediaListManager.addMedia(app, streamId);
 					}else {
 						zlmMediaListManager.removeMedia(app, streamId);
diff --git a/src/main/java/com/genersoft/iot/vmp/service/IPlayService.java b/src/main/java/com/genersoft/iot/vmp/service/IPlayService.java
index 7f4d9c7..a649267 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/IPlayService.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/IPlayService.java
@@ -3,7 +3,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
 import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe;
-import com.genersoft.iot.vmp.vmanager.play.bean.PlayResult;
+import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.PlayResult;
 
 /**
  * 鐐规挱澶勭悊
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
index e7298d2..abe2278 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -13,7 +13,7 @@
 import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
-import com.genersoft.iot.vmp.vmanager.play.bean.PlayResult;
+import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.PlayResult;
 import com.genersoft.iot.vmp.service.IMediaService;
 import com.genersoft.iot.vmp.service.IPlayService;
 import org.slf4j.Logger;
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 846e8c7..632d243 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
@@ -5,7 +5,7 @@
 import com.genersoft.iot.vmp.gb28181.bean.*;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
-import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
+import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
 import com.github.pagehelper.PageInfo;
 
 /**    
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 e35f3cd..b98b66f 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,7 +1,7 @@
 package com.genersoft.iot.vmp.storager.dao;
 
 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
-import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
+import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
 import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
 
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java
index a88f266..db2bb77 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/PlatformChannelMapper.java
@@ -2,7 +2,7 @@
 
 import com.genersoft.iot.vmp.gb28181.bean.Device;
 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
-import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
+import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
 import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Mapper;
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 63fbbd1..6d35eb2 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
@@ -7,7 +7,7 @@
 import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.dao.*;
-import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
+import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/MobilePosition/MobilePositionController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
similarity index 92%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/MobilePosition/MobilePositionController.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
index c284fe9..6dd31ee 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/MobilePosition/MobilePositionController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.vmanager.MobilePosition;
+package com.genersoft.iot.vmp.vmanager.gb28181.MobilePosition;
 
 import java.util.List;
 
@@ -58,9 +58,9 @@
      */
     @ApiOperation("鏌ヨ鍘嗗彶杞ㄨ抗")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true),
-            @ApiImplicitParam(name = "start", value = "寮�濮嬫椂闂�", required = true),
-            @ApiImplicitParam(name = "end", value = "缁撴潫鏃堕棿", required = true),
+            @ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true, dataTypeClass = String.class),
+            @ApiImplicitParam(name = "start", value = "寮�濮嬫椂闂�", required = true, dataTypeClass = String.class),
+            @ApiImplicitParam(name = "end", value = "缁撴潫鏃堕棿", required = true, dataTypeClass = String.class),
     })
     @GetMapping("/history/{deviceId}")
     public ResponseEntity<List<MobilePosition>> positions(@PathVariable String deviceId,
@@ -88,7 +88,7 @@
      */
     @ApiOperation("鏌ヨ璁惧鏈�鏂颁綅缃�")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true),
+            @ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true, dataTypeClass = String.class),
     })
     @GetMapping("/latest/{deviceId}")
     public ResponseEntity<MobilePosition> latestPosition(@PathVariable String deviceId) {
@@ -106,7 +106,7 @@
      */
     @ApiOperation("鑾峰彇绉诲姩浣嶇疆淇℃伅")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true),
+            @ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true, dataTypeClass = String.class),
     })
     @GetMapping("/realtime/{deviceId}")
     public DeferredResult<ResponseEntity<MobilePosition>> realTimePosition(@PathVariable String deviceId) {
@@ -140,9 +140,9 @@
      */
     @ApiOperation("璁㈤槄浣嶇疆淇℃伅")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true),
-            @ApiImplicitParam(name = "expires", value = "璁㈤槄瓒呮椂鏃堕棿"),
-            @ApiImplicitParam(name = "interval", value = "涓婃姤鏃堕棿闂撮殧"),
+            @ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true, dataTypeClass = String.class),
+            @ApiImplicitParam(name = "expires", value = "璁㈤槄瓒呮椂鏃堕棿", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "interval", value = "涓婃姤鏃堕棿闂撮殧", dataTypeClass = String.class),
     })
     @GetMapping("/subscribe/{deviceId}")
     public ResponseEntity<String> positionSubscribe(@PathVariable String deviceId,
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/SseController/SseController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/SseController/SseController.java
similarity index 68%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/SseController/SseController.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/SseController/SseController.java
index 1e55c32..145855d 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/SseController/SseController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/SseController/SseController.java
@@ -1,6 +1,10 @@
-package com.genersoft.iot.vmp.vmanager.SseController;
+package com.genersoft.iot.vmp.vmanager.gb28181.SseController;
 
 import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEventListener;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.CrossOrigin;
@@ -13,15 +17,18 @@
  * @author: lawrencehj
  * @data: 2021-01-20
  */
-
+@Api(tags = "SSE鎺ㄩ��")
 @CrossOrigin
 @Controller
 @RequestMapping("/api")
 public class SseController {
-    @Autowired 
+    @Autowired
     AlarmEventListener alarmEventListener;
-    
-   	//璁剧疆鍝嶅簲
+
+    @ApiOperation("璁剧疆鍝嶅簲")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "browserId", value = "娴忚鍣↖D", dataTypeClass = String.class),
+    })
     @RequestMapping("/emit")
     public SseEmitter emit(@RequestParam String browserId) {
         final SseEmitter sseEmitter = new SseEmitter(0L);
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceConfig.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java
similarity index 90%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceConfig.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java
index a988550..5aa626e 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java
@@ -5,7 +5,7 @@
  * @date 2021骞�2鏈�2鏃�
  */
 
-package com.genersoft.iot.vmp.vmanager.device;
+package com.genersoft.iot.vmp.vmanager.gb28181.device;
 
 import javax.sip.message.Response;
 
@@ -24,7 +24,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpRequest;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.context.request.async.DeferredResult;
@@ -59,12 +58,12 @@
 	@ApiOperation("鐪嬪畧浣嶆帶鍒跺懡浠�")
 	@GetMapping("/basicParam/{deviceId}")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value ="璁惧ID" ),
-			@ApiImplicitParam(name = "channelId", value ="閫氶亾ID" ),
-			@ApiImplicitParam(name = "name", value ="鍚嶇О" ),
-			@ApiImplicitParam(name = "expiration", value ="鍒版湡鏃堕棿" ),
-			@ApiImplicitParam(name = "heartBeatInterval", value ="蹇冭烦闂撮殧" ),
-			@ApiImplicitParam(name = "heartBeatCount", value ="蹇冭烦璁℃暟" ),
+			@ApiImplicitParam(name = "deviceId", value ="璁惧ID" ,dataTypeClass = String.class),
+			@ApiImplicitParam(name = "channelId", value ="閫氶亾ID",dataTypeClass = String.class ),
+			@ApiImplicitParam(name = "name", value ="鍚嶇О" ,dataTypeClass = String.class),
+			@ApiImplicitParam(name = "expiration", value ="鍒版湡鏃堕棿" ,dataTypeClass = String.class),
+			@ApiImplicitParam(name = "heartBeatInterval", value ="蹇冭烦闂撮殧" ,dataTypeClass = String.class),
+			@ApiImplicitParam(name = "heartBeatCount", value ="蹇冭烦璁℃暟" ,dataTypeClass = String.class),
 	})
 	public DeferredResult<ResponseEntity<String>> homePositionApi(@PathVariable String deviceId,
                                                                 @RequestParam(required = false) String channelId,
@@ -109,9 +108,9 @@
 	 */
 	@ApiOperation("璁惧閰嶇疆鏌ヨ璇锋眰")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value ="璁惧ID" ),
-			@ApiImplicitParam(name = "channelId", value ="閫氶亾ID" ),
-			@ApiImplicitParam(name = "configType", value ="閰嶇疆绫诲瀷" ),
+			@ApiImplicitParam(name = "deviceId", value ="璁惧ID" ,dataTypeClass = String.class),
+			@ApiImplicitParam(name = "channelId", value ="閫氶亾ID" ,dataTypeClass = String.class),
+			@ApiImplicitParam(name = "configType", value ="閰嶇疆绫诲瀷" ,dataTypeClass = String.class),
 	})
 	@GetMapping("/query/{deviceId}/{configType}")
     public DeferredResult<ResponseEntity<String>> configDownloadApi(@PathVariable String deviceId, 
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceControl.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
similarity index 92%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceControl.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
index ae517af..220d321 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceControl.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
@@ -5,7 +5,7 @@
  * @date 2021骞�2鏈�1鏃�
  */
 
-package com.genersoft.iot.vmp.vmanager.device;
+package com.genersoft.iot.vmp.vmanager.gb28181.device;
 
 import javax.sip.message.Response;
 
@@ -53,7 +53,7 @@
      */
 	@ApiOperation("杩滅▼鍚姩鎺у埗鍛戒护")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value ="璁惧ID", required = true),
+			@ApiImplicitParam(name = "deviceId", value ="璁惧ID", required = true, dataTypeClass = String.class),
 	})
     @GetMapping("/teleboot/{deviceId}")
     public ResponseEntity<String> teleBootApi(@PathVariable String deviceId) {
@@ -82,10 +82,10 @@
      */
     @ApiOperation("褰曞儚鎺у埗鍛戒护")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value ="璁惧ID", required = true),
-			@ApiImplicitParam(name = "channelId", value ="閫氶亾缂栫爜"),
+			@ApiImplicitParam(name = "deviceId", value ="璁惧ID", required = true, dataTypeClass = String.class),
+			@ApiImplicitParam(name = "channelId", value ="閫氶亾缂栫爜" ,dataTypeClass = String.class),
 			@ApiImplicitParam(name = "recordCmdStr", value ="鍛戒护锛� 鍙�夊�硷細Record锛堟墜鍔ㄥ綍鍍忥級锛孲topRecord锛堝仠姝㈡墜鍔ㄥ綍鍍忥級",
-					required = true),
+					required = true ,dataTypeClass = String.class),
 	})
     @GetMapping("/record/{deviceId}/{recordCmdStr}")
     public DeferredResult<ResponseEntity<String>> recordApi(@PathVariable String deviceId,
@@ -122,8 +122,9 @@
 	 */
 	@ApiOperation("褰曞儚鎺у埗鍛戒护")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true),
-			@ApiImplicitParam(name = "guardCmdStr", value ="鍛戒护锛� 鍙�夊�硷細SetGuard锛堝竷闃诧級锛孯esetGuard锛堟挙闃诧級", required = true)
+			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true, dataTypeClass = String.class),
+			@ApiImplicitParam(name = "guardCmdStr", value ="鍛戒护锛� 鍙�夊�硷細SetGuard锛堝竷闃诧級锛孯esetGuard锛堟挙闃诧級", required = true,
+					dataTypeClass = String.class)
 	})
 	@GetMapping("/guard/{deviceId}/{guardCmdStr}")
 	public DeferredResult<ResponseEntity<String>> guardApi(@PathVariable String deviceId, @PathVariable String guardCmdStr) {
@@ -160,9 +161,9 @@
 	 */
 	@ApiOperation("鎶ヨ澶嶄綅")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true),
-			@ApiImplicitParam(name = "alarmMethod", value ="鎶ヨ鏂瑰紡"),
-			@ApiImplicitParam(name = "alarmType", value ="鎶ヨ绫诲瀷"),
+			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true, dataTypeClass = String.class),
+			@ApiImplicitParam(name = "alarmMethod", value ="鎶ヨ鏂瑰紡", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "alarmType", value ="鎶ヨ绫诲瀷", dataTypeClass = String.class),
 	})
 	@GetMapping("/reset_alarm/{deviceId}")
 	public DeferredResult<ResponseEntity<String>> resetAlarmApi(@PathVariable String deviceId, 
@@ -200,8 +201,8 @@
 	 */
 	@ApiOperation("寮哄埗鍏抽敭甯�")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true),
-			@ApiImplicitParam(name = "channelId", value ="閫氶亾ID", required = true),
+			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true, dataTypeClass = String.class),
+			@ApiImplicitParam(name = "channelId", value ="閫氶亾ID", required = true, dataTypeClass = String.class),
 	})
 	@GetMapping("/i_frame/{deviceId}")
 	public ResponseEntity<String> iFrame(@PathVariable String deviceId,
@@ -234,11 +235,11 @@
 	 */
 	@ApiOperation("鐪嬪畧浣嶆帶鍒�")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true),
-			@ApiImplicitParam(name = "enabled", value = "鏄惁寮�鍚湅瀹堜綅 1:寮�鍚�,0:鍏抽棴", required = true),
-			@ApiImplicitParam(name = "resetTime", value = "鑷姩褰掍綅鏃堕棿闂撮殧"),
-			@ApiImplicitParam(name = "presetIndex", value = "璋冪敤棰勭疆浣嶇紪鍙�"),
-			@ApiImplicitParam(name = "channelId", value ="閫氶亾ID"),
+			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true, dataTypeClass = String.class),
+			@ApiImplicitParam(name = "enabled", value = "鏄惁寮�鍚湅瀹堜綅 1:寮�鍚�,0:鍏抽棴", required = true, dataTypeClass = String.class),
+			@ApiImplicitParam(name = "resetTime", value = "鑷姩褰掍綅鏃堕棿闂撮殧", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "presetIndex", value = "璋冪敤棰勭疆浣嶇紪鍙�", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "channelId", value ="閫氶亾ID", dataTypeClass = String.class),
 	})
 	@GetMapping("/home_position/{deviceId}/{enabled}")
 	public DeferredResult<ResponseEntity<String>> homePositionApi(@PathVariable String deviceId,
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceQuery.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
similarity index 88%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceQuery.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
index bded1b9..e243d23 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceQuery.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.vmanager.device;
+package com.genersoft.iot.vmp.vmanager.gb28181.device;
 
 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
 import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
@@ -22,7 +22,7 @@
 
 import javax.sip.message.Response;
 
-@Api(tags = "鍥芥爣璁惧鏌ヨ1", value = "鍥芥爣璁惧鏌ヨ")
+@Api(tags = "鍥芥爣璁惧鏌ヨ", value = "鍥芥爣璁惧鏌ヨ")
 @SuppressWarnings("rawtypes")
 @CrossOrigin
 @RestController
@@ -50,7 +50,7 @@
 	 */
 	@ApiOperation("浣跨敤ID鏌ヨ鍥芥爣璁惧")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true),
+			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", required = true, dataTypeClass = String.class),
 	})
 	@GetMapping("/devices/{deviceId}")
 	public ResponseEntity<Device> devices(@PathVariable String deviceId){
@@ -71,8 +71,8 @@
 	 */
 	@ApiOperation("鍒嗛〉鏌ヨ鍥芥爣璁惧")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "page", value = "褰撳墠椤�", required = true),
-			@ApiImplicitParam(name = "count", value = "姣忛〉鏌ヨ鏁伴噺", required = true),
+			@ApiImplicitParam(name = "page", value = "褰撳墠椤�", required = true, dataTypeClass = Integer.class),
+			@ApiImplicitParam(name = "count", value = "姣忛〉鏌ヨ鏁伴噺", required = true, dataTypeClass = Integer.class),
 	})
 	@GetMapping("/devices")
 	public PageInfo<Device> devices(int page, int count){
@@ -98,12 +98,12 @@
 	@ApiOperation("鍒嗛〉鏌ヨ閫氶亾")
 	@GetMapping("/devices/{deviceId}/channels")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name="deviceId", value = "璁惧id", required = true),
-			@ApiImplicitParam(name="page", value = "褰撳墠椤�", required = true),
-			@ApiImplicitParam(name="count", value = "姣忛〉鏌ヨ鏁伴噺", required = true),
-			@ApiImplicitParam(name="query", value = "鏌ヨ鍐呭"),
-			@ApiImplicitParam(name="online", value = "鏄惁鍦ㄧ嚎"),
-			@ApiImplicitParam(name="channelType", value = "璁惧/瀛愮洰褰�-> false/true"),
+			@ApiImplicitParam(name="deviceId", value = "璁惧id", required = true ,dataTypeClass = String.class),
+			@ApiImplicitParam(name="page", value = "褰撳墠椤�", required = true ,dataTypeClass = Integer.class),
+			@ApiImplicitParam(name="count", value = "姣忛〉鏌ヨ鏁伴噺", required = true ,dataTypeClass = Integer.class),
+			@ApiImplicitParam(name="query", value = "鏌ヨ鍐呭" ,dataTypeClass = String.class),
+			@ApiImplicitParam(name="online", value = "鏄惁鍦ㄧ嚎"  ,dataTypeClass = Boolean.class),
+			@ApiImplicitParam(name="channelType", value = "璁惧/瀛愮洰褰�-> false/true" ,dataTypeClass = Boolean.class),
 	})
 	public ResponseEntity<PageInfo> channels(@PathVariable String deviceId,
 											   int page, int count,
@@ -128,7 +128,7 @@
 	 */
 	@ApiOperation("鍚屾璁惧閫氶亾")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name="deviceId", value = "璁惧id", required = true),
+			@ApiImplicitParam(name="deviceId", value = "璁惧id", required = true ,dataTypeClass = String.class),
 	})
 	@PostMapping("/devices/{deviceId}/sync")
 	public DeferredResult<ResponseEntity<Device>> devicesSync(@PathVariable String deviceId){
@@ -165,7 +165,7 @@
 	 */
 	@ApiOperation("绉婚櫎璁惧")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name="deviceId", value = "璁惧id", required = true),
+			@ApiImplicitParam(name="deviceId", value = "璁惧id", required = true, dataTypeClass = String.class),
 	})
 	@DeleteMapping("/devices/{deviceId}/delete")
 	public ResponseEntity<String> delete(@PathVariable String deviceId){
@@ -201,13 +201,13 @@
 	 */
 	@ApiOperation("鍒嗛〉鏌ヨ瀛愮洰褰曢�氶亾")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name="deviceId", value = "璁惧id", required = true),
-			@ApiImplicitParam(name="channelId", value = "閫氶亾id", required = true),
-			@ApiImplicitParam(name="page", value = "褰撳墠椤�", required = true),
-			@ApiImplicitParam(name="count", value = "姣忛〉鏉℃暟", required = true),
-			@ApiImplicitParam(name="query", value = "鏌ヨ鍐呭"),
-			@ApiImplicitParam(name="online", value = "鏄惁鍦ㄧ嚎"),
-			@ApiImplicitParam(name="channelType", value = "閫氶亾绫诲瀷锛� 瀛愮洰褰�"),
+			@ApiImplicitParam(name="deviceId", value = "璁惧id", required = true, dataTypeClass = String.class),
+			@ApiImplicitParam(name="channelId", value = "閫氶亾id", required = true, dataTypeClass = String.class),
+			@ApiImplicitParam(name="page", value = "褰撳墠椤�", required = true, dataTypeClass = Integer.class),
+			@ApiImplicitParam(name="count", value = "姣忛〉鏉℃暟", required = true, dataTypeClass = Integer.class),
+			@ApiImplicitParam(name="query", value = "鏌ヨ鍐呭", dataTypeClass = String.class),
+			@ApiImplicitParam(name="online", value = "鏄惁鍦ㄧ嚎", dataTypeClass = String.class),
+			@ApiImplicitParam(name="channelType", value = "閫氶亾绫诲瀷锛� 瀛愮洰褰�", dataTypeClass = Boolean.class),
 	})
 	@GetMapping("/sub_channels/{deviceId}/{channelId}/channels")
 	public ResponseEntity<PageInfo> subChannels(@PathVariable String deviceId,
@@ -239,8 +239,8 @@
 	 */
 	@ApiOperation("鏇存柊閫氶亾淇℃伅")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name="deviceId", value = "璁惧id", required = true),
-			@ApiImplicitParam(name="channel", value = "閫氶亾", required = true),
+			@ApiImplicitParam(name="deviceId", value = "璁惧id", required = true, dataTypeClass = String.class),
+			@ApiImplicitParam(name="channel", value = "閫氶亾", required = true, dataTypeClass = String.class),
 	})
 	@PostMapping("/channel/update/{deviceId}")
 	public ResponseEntity<PageInfo> updateChannel(@PathVariable String deviceId,DeviceChannel channel){
@@ -256,7 +256,7 @@
 	 */
 	@ApiOperation("淇敼鏁版嵁娴佷紶杈撴ā寮�")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value = "璁惧id", required = true),
+			@ApiImplicitParam(name = "deviceId", value = "璁惧id", required = true, dataTypeClass = String.class),
 			@ApiImplicitParam(name = "streamMode", value = "鏁版嵁娴佷紶杈撴ā寮�, 鍙栧�硷細" +
 					"UDP锛坲dp浼犺緭锛夛紝TCP-ACTIVE锛坱cp涓诲姩妯″紡,鏆備笉鏀寔锛夛紝TCP-PASSIVE锛坱cp琚姩妯″紡锛�"),
 	})
@@ -275,7 +275,7 @@
 	 */
 	@ApiOperation("璁惧鐘舵�佹煡璇�")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value = "璁惧id", required = true),
+			@ApiImplicitParam(name = "deviceId", value = "璁惧id", required = true, dataTypeClass = String.class),
 	})
 	@GetMapping("/devices/{deviceId}/status")
 	public DeferredResult<ResponseEntity<String>> deviceStatusApi(@PathVariable String deviceId) {
@@ -316,13 +316,13 @@
 	 */
 	@ApiOperation("璁惧鎶ヨ鏌ヨ")
 	@ApiImplicitParams({
-			@ApiImplicitParam(name = "deviceId", value = "璁惧id", required = true),
-			@ApiImplicitParam(name = "startPriority", value = "鎶ヨ璧峰绾у埆"),
-			@ApiImplicitParam(name = "endPriority", value = "鎶ヨ缁堟绾у埆"),
-			@ApiImplicitParam(name = "alarmMethod", value = "鎶ヨ鏂瑰紡鏉′欢"),
-			@ApiImplicitParam(name = "alarmType", value = "鎶ヨ绫诲瀷"),
-			@ApiImplicitParam(name = "startTime", value = "鎶ヨ鍙戠敓璧峰鏃堕棿"),
-			@ApiImplicitParam(name = "endTime", value = "鎶ヨ鍙戠敓缁堟鏃堕棿"),
+			@ApiImplicitParam(name = "deviceId", value = "璁惧id", required = true, dataTypeClass = String.class),
+			@ApiImplicitParam(name = "startPriority", value = "鎶ヨ璧峰绾у埆", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "endPriority", value = "鎶ヨ缁堟绾у埆", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "alarmMethod", value = "鎶ヨ鏂瑰紡鏉′欢", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "alarmType", value = "鎶ヨ绫诲瀷", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "startTime", value = "鎶ヨ鍙戠敓璧峰鏃堕棿", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "endTime", value = "鎶ヨ鍙戠敓缁堟鏃堕棿", dataTypeClass = String.class),
 	})
 	@GetMapping("/alarm/{deviceId}")
 	public DeferredResult<ResponseEntity<String>> alarmApi(@PathVariable String deviceId,
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gbStream/GbStreamController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
similarity index 86%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/gbStream/GbStreamController.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
index 64e4567..36535a3 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gbStream/GbStreamController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/GbStreamController.java
@@ -1,8 +1,8 @@
-package com.genersoft.iot.vmp.vmanager.gbStream;
+package com.genersoft.iot.vmp.vmanager.gb28181.gbStream;
 
 import com.genersoft.iot.vmp.gb28181.bean.GbStream;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
-import com.genersoft.iot.vmp.vmanager.gbStream.bean.GbStreamParam;
+import com.genersoft.iot.vmp.vmanager.gb28181.gbStream.bean.GbStreamParam;
 import com.genersoft.iot.vmp.service.IGbStreamService;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
@@ -37,8 +37,8 @@
      */
     @ApiOperation("鏌ヨ鍥芥爣閫氶亾")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "page", value = "褰撳墠椤�", required = true ),
-            @ApiImplicitParam(name = "count", value = "姣忛〉鏉℃暟", required = true ),
+            @ApiImplicitParam(name = "page", value = "褰撳墠椤�", required = true , dataTypeClass = Integer.class),
+            @ApiImplicitParam(name = "count", value = "姣忛〉鏉℃暟", required = true , dataTypeClass = Integer.class),
     })
     @GetMapping(value = "/list")
     @ResponseBody
@@ -56,7 +56,8 @@
      */
     @ApiOperation("绉婚櫎鍥芥爣鍏宠仈")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "gbStreamParam", value = "GbStreamParam", required = true ),
+            @ApiImplicitParam(name = "gbStreamParam", value = "GbStreamParam", required = true ,
+                    dataTypeClass = GbStreamParam.class),
     })
     @DeleteMapping(value = "/del")
     @ResponseBody
@@ -76,7 +77,7 @@
      */
     @ApiOperation("淇濆瓨鍥芥爣鍏宠仈")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "gbStreamParam", value = "GbStreamParam", required = true ),
+            @ApiImplicitParam(name = "gbStreamParam", value = "GbStreamParam", required = true , dataTypeClass = GbStreamParam.class),
     })
     @PostMapping(value = "/add")
     @ResponseBody
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gbStream/bean/GbStreamParam.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/bean/GbStreamParam.java
similarity index 89%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/gbStream/bean/GbStreamParam.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/bean/GbStreamParam.java
index 2181cc8..40456a8 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gbStream/bean/GbStreamParam.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/gbStream/bean/GbStreamParam.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.vmanager.gbStream.bean;
+package com.genersoft.iot.vmp.vmanager.gb28181.gbStream.bean;
 
 import com.genersoft.iot.vmp.gb28181.bean.GbStream;
 
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/media/MediaController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
similarity index 76%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/media/MediaController.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
index a195cc9..7598178 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/media/MediaController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
@@ -1,13 +1,8 @@
-package com.genersoft.iot.vmp.vmanager.media;
+package com.genersoft.iot.vmp.vmanager.gb28181.media;
 
-import com.alibaba.fastjson.JSONObject;
 import com.genersoft.iot.vmp.common.StreamInfo;
-import com.genersoft.iot.vmp.gb28181.bean.GbStream;
-import com.genersoft.iot.vmp.gb28181.bean.PlatformGbStream;
 import com.genersoft.iot.vmp.service.IStreamPushService;
-import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.service.IMediaService;
-import com.genersoft.iot.vmp.service.IStreamProxyService;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -46,8 +41,8 @@
      */
     @ApiOperation("鏍规嵁搴旂敤鍚嶅拰娴乮d鑾峰彇鎾斁鍦板潃")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "app", value = "搴旂敤鍚�"),
-            @ApiImplicitParam(name = "stream", value = "娴乮d"),
+            @ApiImplicitParam(name = "app", value = "搴旂敤鍚�", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "stream", value = "娴乮d", dataTypeClass = String.class),
     })
     @RequestMapping(value = "/getStreamInfoByAppAndStream")
     @ResponseBody
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
similarity index 68%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
index 834c00b..ce476f7 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/PlatformController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
@@ -1,14 +1,17 @@
-package com.genersoft.iot.vmp.vmanager.platform;
+package com.genersoft.iot.vmp.vmanager.gb28181.platform;
 
 import com.alibaba.fastjson.JSONObject;
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
-import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
-import com.genersoft.iot.vmp.vmanager.platform.bean.UpdateChannelParam;
+import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
+import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.UpdateChannelParam;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,7 +24,7 @@
 /**
  * 绾ц仈骞冲彴绠$悊
  */
-@Api("绾ц仈骞冲彴绠$悊")
+@Api(tags = "绾ц仈骞冲彴绠$悊")
 @CrossOrigin
 @RestController
 @RequestMapping("/api/platform")
@@ -41,6 +44,11 @@
 	@Autowired
 	private SipConfig sipConfig;
 
+    /**
+     * 鑾峰彇鍥芥爣鏈嶅姟鐨勯厤缃�
+     * @return
+     */
+    @ApiOperation("鑾峰彇鍥芥爣鏈嶅姟鐨勯厤缃�")
     @GetMapping("/server_config")
     public ResponseEntity<JSONObject> serverConfig() {
         JSONObject result = new JSONObject();
@@ -51,7 +59,18 @@
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
+    /**
+     * 鍒嗛〉鏌ヨ绾ц仈骞冲彴
+     * @param page 褰撳墠椤�
+     * @param count 姣忛〉鏉℃暟
+     * @return
+     */
+    @ApiOperation("鍒嗛〉鏌ヨ绾ц仈骞冲彴")
     @GetMapping("/query/{count}/{page}")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "褰撳墠椤�", dataTypeClass = Integer.class),
+            @ApiImplicitParam(name = "count", value = "姣忛〉鏉℃暟", dataTypeClass = Integer.class),
+    })
     public PageInfo<ParentPlatform> platforms(@PathVariable int page, @PathVariable int count){
 
         if (logger.isDebugEnabled()) {
@@ -60,6 +79,15 @@
         return storager.queryParentPlatformList(page, count);
     }
 
+    /**
+     * 淇濆瓨涓婄骇骞冲彴淇℃伅
+     * @param parentPlatform
+     * @return
+     */
+    @ApiOperation("淇濆瓨涓婄骇骞冲彴淇℃伅")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "parentPlatform", value = "涓婄骇骞冲彴淇℃伅", dataTypeClass = ParentPlatform.class),
+    })
     @PostMapping("/save")
     @ResponseBody
     public ResponseEntity<String> savePlatform(@RequestBody ParentPlatform parentPlatform){
@@ -96,13 +124,22 @@
                 commanderForPlatform.unregister(parentPlatform, null, null);
             }
 
- 
+
             return new ResponseEntity<>("success", HttpStatus.OK);
         } else {
             return new ResponseEntity<>("fail", HttpStatus.OK);
         }
     }
 
+    /**
+     * 鍒犻櫎涓婄骇骞冲彴
+      * @param serverGBId 涓婄骇骞冲彴鍥芥爣ID
+     * @return
+     */
+    @ApiOperation("鍒犻櫎涓婄骇骞冲彴")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "serverGBId", value = "涓婄骇骞冲彴鍥芥爣ID", dataTypeClass = String.class),
+    })
     @DeleteMapping("/delete/{serverGBId}")
     @ResponseBody
     public ResponseEntity<String> deletePlatform(@PathVariable String serverGBId){
@@ -139,17 +176,47 @@
         }
     }
 
-    @GetMapping("/exit/{deviceGbId}")
+    /**
+     * 鏌ヨ涓婄骇骞冲彴鏄惁瀛樺湪
+     * @param serverGBId 涓婄骇骞冲彴鍥芥爣ID
+     * @return
+     */
+    @ApiOperation("鏌ヨ涓婄骇骞冲彴鏄惁瀛樺湪")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "serverGBId", value = "涓婄骇骞冲彴鍥芥爣ID", dataTypeClass = String.class),
+    })
+    @GetMapping("/exit/{serverGBId}")
     @ResponseBody
-    public ResponseEntity<String> exitPlatform(@PathVariable String deviceGbId){
+    public ResponseEntity<String> exitPlatform(@PathVariable String serverGBId){
 
         if (logger.isDebugEnabled()) {
-            logger.debug("鏌ヨ涓婄骇骞冲彴鏄惁瀛樺湪API璋冪敤锛�" + deviceGbId);
+            logger.debug("鏌ヨ涓婄骇骞冲彴鏄惁瀛樺湪API璋冪敤锛�" + serverGBId);
         }
-        ParentPlatform parentPlatform = storager.queryParentPlatById(deviceGbId);
+        ParentPlatform parentPlatform = storager.queryParentPlatById(serverGBId);
         return new ResponseEntity<>(String.valueOf(parentPlatform != null), HttpStatus.OK);
     }
 
+    /**
+     * 鍒嗛〉鏌ヨ绾ц仈骞冲彴鐨勬墍鏈夋墍鏈夐�氶亾
+     * @param page 褰撳墠椤�
+     * @param count 姣忛〉鏉℃暟
+     * @param platformId 涓婄骇骞冲彴ID
+     * @param query 鏌ヨ鍐呭
+     * @param online 鏄惁鍦ㄧ嚎
+     * @param choosed 鏄惁宸查�変腑
+     * @param channelType 閫氶亾绫诲瀷
+     * @return
+     */
+    @ApiOperation("鍒嗛〉鏌ヨ绾ц仈骞冲彴鐨勬墍鏈夋墍鏈夐�氶亾")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "褰撳墠椤�", dataTypeClass = Integer.class),
+            @ApiImplicitParam(name = "count", value = "姣忛〉鏉℃暟", dataTypeClass = Integer.class),
+            @ApiImplicitParam(name = "platformId", value = "涓婄骇骞冲彴ID", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "query", value = "鏌ヨ鍐呭", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "online", value = "鏄惁鍦ㄧ嚎", dataTypeClass = Boolean.class),
+            @ApiImplicitParam(name = "choosed", value = "鏄惁宸查�変腑", dataTypeClass = Boolean.class),
+            @ApiImplicitParam(name = "channelType", value = "閫氶亾绫诲瀷", dataTypeClass = Boolean.class),
+    })
     @GetMapping("/channel_list")
     @ResponseBody
     public PageInfo<ChannelReduce> channelList(int page, int count,
@@ -172,7 +239,15 @@
         return channelReduces;
     }
 
-
+    /**
+     * 鍚戜笂绾у钩鍙版坊鍔犲浗鏍囬�氶亾
+     * @param param 閫氶亾鍏宠仈鍙傛暟
+     * @return
+     */
+    @ApiOperation("鍚戜笂绾у钩鍙版坊鍔犲浗鏍囬�氶亾")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "param", value = "閫氶亾鍏宠仈鍙傛暟", dataTypeClass = UpdateChannelParam.class),
+    })
     @PostMapping("/update_channel_for_gb")
     @ResponseBody
     public ResponseEntity<String> updateChannelForGB(@RequestBody UpdateChannelParam param){
@@ -185,6 +260,15 @@
         return new ResponseEntity<>(String.valueOf(result > 0), HttpStatus.OK);
     }
 
+    /**
+     * 浠庝笂绾у钩鍙扮Щ闄ゅ浗鏍囬�氶亾
+     * @param param 閫氶亾鍏宠仈鍙傛暟
+     * @return
+     */
+    @ApiOperation("浠庝笂绾у钩鍙扮Щ闄ゅ浗鏍囬�氶亾")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "param", value = "閫氶亾鍏宠仈鍙傛暟", dataTypeClass = UpdateChannelParam.class),
+    })
     @DeleteMapping("/del_channel_for_gb")
     @ResponseBody
     public ResponseEntity<String> delChannelForGB(@RequestBody UpdateChannelParam param){
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/ChannelReduce.java
similarity index 96%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/ChannelReduce.java
index cf62650..d4ef0bc 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/ChannelReduce.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/ChannelReduce.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.vmanager.platform.bean;
+package com.genersoft.iot.vmp.vmanager.gb28181.platform.bean;
 
 /**
  * 绮剧畝鐨刢hannel淇℃伅灞曠ず锛屼富瑕佹槸閫夋嫨閫氶亾鐨勬椂鍊欏睍绀哄垪琛ㄤ娇鐢�
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/UpdateChannelParam.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/UpdateChannelParam.java
similarity index 89%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/UpdateChannelParam.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/UpdateChannelParam.java
index 34192ca..445b08b 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/platform/bean/UpdateChannelParam.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/bean/UpdateChannelParam.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.vmanager.platform.bean;
+package com.genersoft.iot.vmp.vmanager.gb28181.platform.bean;
 
 import java.util.List;
 
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/platformGbStream/PlatformGbStreamController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platformGbStream/PlatformGbStreamController.java
similarity index 60%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/platformGbStream/PlatformGbStreamController.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platformGbStream/PlatformGbStreamController.java
index f040d1a..5859102 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/platformGbStream/PlatformGbStreamController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platformGbStream/PlatformGbStreamController.java
@@ -1,17 +1,22 @@
-package com.genersoft.iot.vmp.vmanager.platformGbStream;
+package com.genersoft.iot.vmp.vmanager.gb28181.platformGbStream;
 
 import com.genersoft.iot.vmp.gb28181.bean.GbStream;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 import com.genersoft.iot.vmp.service.IGbStreamService;
 import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+@Api(tags = "绾ц仈骞冲彴鍏宠仈瑙嗛娴�")
 @CrossOrigin
 @RestController
-@RequestMapping("/api")
+@RequestMapping("/api/platform_gb_stream")
 public class PlatformGbStreamController {
 
     private final static Logger logger = LoggerFactory.getLogger(PlatformGbStreamController.class);
@@ -22,6 +27,11 @@
     @Autowired
     private IVideoManagerStorager storager;
 
+    @ApiOperation("鍒嗛〉鏌ヨ绾ц仈骞冲彴鍏宠仈鐨勮棰戞祦")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "褰撳墠椤�", dataTypeClass = Integer.class),
+            @ApiImplicitParam(name = "count", value = "姣忛〉鏉℃暟", dataTypeClass = Integer.class),
+    })
     @RequestMapping(value = "/list")
     @ResponseBody
     public PageInfo<GbStream> list(@RequestParam(required = false)Integer page,
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
similarity index 87%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
index df16dd8..1af7e6e 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.vmanager.play;
+package com.genersoft.iot.vmp.vmanager.gb28181.play;
 
 import com.genersoft.iot.vmp.common.StreamInfo;
 import com.genersoft.iot.vmp.conf.MediaServerConfig;
@@ -7,9 +7,13 @@
 import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
 import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
-import com.genersoft.iot.vmp.vmanager.play.bean.PlayResult;
+import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.PlayResult;
 import com.genersoft.iot.vmp.service.IMediaService;
 import com.genersoft.iot.vmp.service.IPlayService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +35,7 @@
 
 import javax.sip.message.Response;
 
+@Api(tags = "鍥芥爣璁惧鐐规挱")
 @CrossOrigin
 @RestController
 @RequestMapping("/api/play")
@@ -59,6 +64,11 @@
 	@Autowired
 	private IMediaService mediaService;
 
+	@ApiOperation("寮�濮嬬偣鎾�")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "channelId", value = "閫氶亾ID", dataTypeClass = String.class),
+	})
 	@GetMapping("/start/{deviceId}/{channelId}")
 	public DeferredResult<ResponseEntity<String>> play(@PathVariable String deviceId,
 													   @PathVariable String channelId) {
@@ -79,6 +89,10 @@
 		return playResult.getResult();
 	}
 
+	@ApiOperation("鍋滄鐐规挱")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "streamId", value = "瑙嗛娴両D", dataTypeClass = String.class),
+	})
 	@PostMapping("/stop/{streamId}")
 	public DeferredResult<ResponseEntity<String>> playStop(@PathVariable String streamId) {
 
@@ -139,6 +153,10 @@
 	 * @param streamId 娴両D
 	 * @return
 	 */
+	@ApiOperation("灏嗕笉鏄痟264鐨勮棰戦�氳繃ffmpeg 杞爜涓篽264 + aac")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "streamId", value = "瑙嗛娴両D", dataTypeClass = String.class),
+	})
 	@PostMapping("/convert/{streamId}")
 	public ResponseEntity<String> playConvert(@PathVariable String streamId) {
 		StreamInfo streamInfo = redisCatchStorage.queryPlayByStreamId(streamId);
@@ -179,6 +197,10 @@
 	 * @param key
 	 * @return
 	 */
+	@ApiOperation("缁撴潫杞爜")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "key", value = "瑙嗛娴乲ey", dataTypeClass = String.class),
+	})
 	@PostMapping("/convertStop/{key}")
 	public ResponseEntity<String> playConvertStop(@PathVariable String key) {
 
@@ -201,11 +223,10 @@
 		return new ResponseEntity<String>( result.toJSONString(), HttpStatus.OK);
 	}
 
-	/**
-     * 璇煶骞挎挱鍛戒护API鎺ュ彛
-     * 
-     * @param deviceId
-     */
+	@ApiOperation("璇煶骞挎挱鍛戒护")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "deviceId", value = "璁惧Id", dataTypeClass = String.class),
+	})
     @GetMapping("/broadcast/{deviceId}")
     @PostMapping("/broadcast/{deviceId}")
     public DeferredResult<ResponseEntity<String>> broadcastApi(@PathVariable String deviceId) {
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/play/bean/PlayResult.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/bean/PlayResult.java
similarity index 92%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/play/bean/PlayResult.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/bean/PlayResult.java
index 3d21349..42a6e8b 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/play/bean/PlayResult.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/bean/PlayResult.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.vmanager.play.bean;
+package com.genersoft.iot.vmp.vmanager.gb28181.play.bean;
 
 import com.genersoft.iot.vmp.gb28181.bean.Device;
 import org.springframework.http.ResponseEntity;
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/playback/PlaybackController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java
similarity index 80%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/playback/PlaybackController.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java
index e816562..f55083e 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/playback/PlaybackController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java
@@ -1,4 +1,4 @@
-package com.genersoft.iot.vmp.vmanager.playback;
+package com.genersoft.iot.vmp.vmanager.gb28181.playback;
 
 import com.genersoft.iot.vmp.common.StreamInfo;
 import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
@@ -6,6 +6,10 @@
 //import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.service.IPlayService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +30,7 @@
 import javax.sip.message.Response;
 import java.util.UUID;
 
+@Api(tags = "瑙嗛鍥炴斁")
 @CrossOrigin
 @RestController
 @RequestMapping("/api/playback")
@@ -51,9 +56,16 @@
 	@Autowired
 	private DeferredResultHolder resultHolder;
 
+	@ApiOperation("寮�濮嬭棰戝洖鏀�")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "channelId", value = "閫氶亾ID", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "startTime", value = "寮�濮嬫椂闂�", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "endTime", value = "缁撴潫鏃堕棿", dataTypeClass = String.class),
+	})
 	@GetMapping("/start/{deviceId}/{channelId}")
-	public DeferredResult<ResponseEntity<String>> play(@PathVariable String deviceId, @PathVariable String channelId, String startTime,
-													   String endTime) {
+	public DeferredResult<ResponseEntity<String>> play(@PathVariable String deviceId, @PathVariable String channelId,
+													   String startTime,String endTime) {
 
 		if (logger.isDebugEnabled()) {
 			logger.debug(String.format("璁惧鍥炴斁 API璋冪敤锛宒eviceId锛�%s 锛宑hannelId锛�%s", deviceId, channelId));
@@ -89,6 +101,10 @@
 		return result;
 	}
 
+	@ApiOperation("鍋滄瑙嗛鍥炴斁")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "ssrc", value = "瑙嗛娴佹爣璇�", dataTypeClass = String.class),
+	})
 	@RequestMapping("/stop/{ssrc}")
 	public ResponseEntity<String> playStop(@PathVariable String ssrc) {
 
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/ptz/PtzController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java
similarity index 66%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/ptz/PtzController.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java
index 1efdd3d..7e57e0d 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/ptz/PtzController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java
@@ -1,5 +1,9 @@
-package com.genersoft.iot.vmp.vmanager.ptz;
+package com.genersoft.iot.vmp.vmanager.gb28181.ptz;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,22 +21,23 @@
 import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 
+@Api(tags = "浜戝彴鎺у埗")
 @CrossOrigin
 @RestController
-@RequestMapping("/api")
+@RequestMapping("/api/ptz")
 public class PtzController {
-	
+
 	private final static Logger logger = LoggerFactory.getLogger(PtzController.class);
-	
+
 	@Autowired
 	private SIPCommander cmder;
-	
+
 	@Autowired
 	private IVideoManagerStorager storager;
 
 	@Autowired
 	private DeferredResultHolder resultHolder;
-	
+
 	/***
 	 * 浜戝彴鎺у埗
 	 * @param deviceId 璁惧id
@@ -43,49 +48,54 @@
 	 * @param zoomSpeed	    缂╂斁閫熷害
 	 * @return String 鎺у埗缁撴灉
 	 */
-	@PostMapping("/ptz/{deviceId}/{channelId}")
+	@ApiOperation("浜戝彴鎺у埗")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "channelId", value = "閫氶亾ID", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "cmdCode", value = "鎸囦护鐮�", dataTypeClass = Integer.class),
+			@ApiImplicitParam(name = "horizonSpeed", value = "姘村钩閫熷害", dataTypeClass = Integer.class),
+			@ApiImplicitParam(name = "verticalSpeed", value = "鍨傜洿閫熷害", dataTypeClass = Integer.class),
+			@ApiImplicitParam(name = "zoomSpeed", value = "缂╂斁閫熷害", dataTypeClass = Integer.class),
+	})
+	@PostMapping("/control/{deviceId}/{channelId}")
 	public ResponseEntity<String> ptz(@PathVariable String deviceId,@PathVariable String channelId,int cmdCode, int horizonSpeed, int verticalSpeed, int zoomSpeed){
-		
+
 		if (logger.isDebugEnabled()) {
 			logger.debug(String.format("璁惧浜戝彴鎺у埗 API璋冪敤锛宒eviceId锛�%s 锛宑hannelId锛�%s 锛宑mdCode锛�%d 锛宧orizonSpeed锛�%d 锛寁erticalSpeed锛�%d 锛寊oomSpeed锛�%d",deviceId, channelId, cmdCode, horizonSpeed, verticalSpeed, zoomSpeed));
 		}
 		Device device = storager.queryVideoDevice(deviceId);
-		
+
 		cmder.frontEndCmd(device, channelId, cmdCode, horizonSpeed, verticalSpeed, zoomSpeed);
 		return new ResponseEntity<String>("success",HttpStatus.OK);
 	}
 
-	/**
-	 * 閫氱敤鍓嶇鎺у埗鍛戒护API鎺ュ彛
-	 * 
-	 * @param deviceId
-	 * @param channelId
-	 * @param cmdCode
-	 * @param parameter1
-	 * @param parameter2
-	 * @param combindCode2
-	 * @return
-	 */
-	@PostMapping("/frontEndCommand/{deviceId}/{channelId}")
+	@ApiOperation("閫氱敤鍓嶇鎺у埗鍛戒护")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "channelId", value = "閫氶亾ID", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "cmdCode", value = "鎸囦护鐮�", dataTypeClass = Integer.class),
+			@ApiImplicitParam(name = "parameter1", value = "鏁版嵁涓�", dataTypeClass = Integer.class),
+			@ApiImplicitParam(name = "parameter2", value = "鏁版嵁浜�", dataTypeClass = Integer.class),
+			@ApiImplicitParam(name = "combindCode2", value = "缁勫悎鐮佷簩", dataTypeClass = Integer.class),
+	})
+	@PostMapping("/front_end_command/{deviceId}/{channelId}")
 	public ResponseEntity<String> frontEndCommand(@PathVariable String deviceId,@PathVariable String channelId,int cmdCode, int parameter1, int parameter2, int combindCode2){
-		
+
 		if (logger.isDebugEnabled()) {
 			logger.debug(String.format("璁惧浜戝彴鎺у埗 API璋冪敤锛宒eviceId锛�%s 锛宑hannelId锛�%s 锛宑mdCode锛�%d parameter1锛�%d parameter2锛�%d",deviceId, channelId, cmdCode, parameter1, parameter2));
 		}
 		Device device = storager.queryVideoDevice(deviceId);
-		
+
 		cmder.frontEndCmd(device, channelId, cmdCode, parameter1, parameter2, combindCode2);
 		return new ResponseEntity<String>("success",HttpStatus.OK);
 	}
 
-	/**
-	 * 棰勭疆浣嶆煡璇㈠懡浠PI鎺ュ彛
-	 * 
-	 * @param deviceId
-	 * @param channelId
-	 * @return
-	 */
-	@GetMapping("/presetQuery/{deviceId}/{channelId}")
+	@ApiOperation("棰勭疆浣嶆煡璇�")
+	@ApiImplicitParams({
+            @ApiImplicitParam(name = "deviceId", value = "璁惧ID", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "channelId", value = "閫氶亾ID", dataTypeClass = String.class),
+	})
+	@GetMapping("/preset/query/{deviceId}/{channelId}")
 	public DeferredResult<ResponseEntity<String>> presetQueryApi(@PathVariable String deviceId, @PathVariable String channelId) {
 		if (logger.isDebugEnabled()) {
 			logger.debug("璁惧棰勭疆浣嶆煡璇PI璋冪敤");
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecordController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/RecordController.java
similarity index 74%
rename from src/main/java/com/genersoft/iot/vmp/vmanager/record/RecordController.java
rename to src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/RecordController.java
index 519d299..18c687f 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/record/RecordController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/record/RecordController.java
@@ -1,6 +1,10 @@
-package com.genersoft.iot.vmp.vmanager.record;
+package com.genersoft.iot.vmp.vmanager.gb28181.record;
 
 import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,29 +22,37 @@
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 
+@Api(tags = "鍥芥爣褰曞儚")
 @CrossOrigin
 @RestController
-@RequestMapping("/api")
+@RequestMapping("/api/gb_record")
 public class RecordController {
-	
+
 	private final static Logger logger = LoggerFactory.getLogger(RecordController.class);
-	
+
 	@Autowired
 	private SIPCommander cmder;
-	
+
 	@Autowired
 	private IVideoManagerStorager storager;
-	
+
 	@Autowired
 	private DeferredResultHolder resultHolder;
 
-	@GetMapping("/record/{deviceId}/{channelId}")
+	@ApiOperation("褰曞儚鏌ヨ")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "deviceId", value = "璁惧ID", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "channelId", value = "閫氶亾ID", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "startTime", value = "寮�濮嬫椂闂�", dataTypeClass = String.class),
+			@ApiImplicitParam(name = "endTime", value = "缁撴潫鏃堕棿", dataTypeClass = String.class),
+	})
+	@GetMapping("/query/{deviceId}/{channelId}")
 	public DeferredResult<ResponseEntity<RecordInfo>> recordinfo(@PathVariable String deviceId,@PathVariable String channelId, String startTime,  String endTime){
-		
+
 		if (logger.isDebugEnabled()) {
 			logger.debug(String.format("褰曞儚淇℃伅鏌ヨ API璋冪敤锛宒eviceId锛�%s 锛宻tartTime锛�%s锛� startTime锛�%s",deviceId, startTime, endTime));
 		}
-		
+
 		Device device = storager.queryVideoDevice(deviceId);
 		cmder.recordInfoQuery(device, channelId, startTime, endTime);
 		// 鎸囧畾瓒呮椂鏃堕棿 1鍒嗛挓30绉�
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
index 675fc01..84d246f 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java
@@ -2,8 +2,9 @@
 
 import com.genersoft.iot.vmp.VManageBootstrap;
 import com.genersoft.iot.vmp.utils.SpringBeanFactory;
-import com.genersoft.iot.vmp.vmanager.gbStream.bean.GbStreamParam;
 import gov.nist.javax.sip.SipStackImpl;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.web.bind.annotation.*;
@@ -13,6 +14,7 @@
 import javax.sip.SipProvider;
 import java.util.Iterator;
 
+@Api(tags = "鏈嶅姟鎺у埗")
 @CrossOrigin
 @RestController
 @RequestMapping("/api/server")
@@ -22,6 +24,7 @@
     private ConfigurableApplicationContext context;
 
 
+    @ApiOperation("閲嶅惎鏈嶅姟")
     @RequestMapping(value = "/restart")
     @ResponseBody
     public Object restart(){
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java
index 6fc3bee..d7e6201 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/streamProxy/StreamProxyController.java
@@ -5,6 +5,11 @@
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.service.IStreamProxyService;
 import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.models.auth.In;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,6 +19,7 @@
 /**
  * 鎷夋祦浠g悊鎺ュ彛
  */
+@Api(tags = "鎷夋祦浠g悊")
 @Controller
 @CrossOrigin
 @RequestMapping(value = "/api/proxy")
@@ -28,16 +34,27 @@
     private IStreamProxyService streamProxyService;
 
 
+    @ApiOperation("鍒嗛〉鏌ヨ娴佷唬鐞�")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="page", value = "褰撳墠椤�", required = true, dataTypeClass = Integer.class),
+            @ApiImplicitParam(name="count", value = "姣忛〉鏌ヨ鏁伴噺", required = true, dataTypeClass = Integer.class),
+            @ApiImplicitParam(name="query", value = "鏌ヨ鍐呭", dataTypeClass = String.class),
+            @ApiImplicitParam(name="online", value = "鏄惁鍦ㄧ嚎", dataTypeClass = Boolean.class),
+    })
     @RequestMapping(value = "/list")
     @ResponseBody
     public PageInfo<StreamProxyItem> list(@RequestParam(required = false)Integer page,
                                           @RequestParam(required = false)Integer count,
-                                          @RequestParam(required = false)String q,
+                                          @RequestParam(required = false)String query,
                                           @RequestParam(required = false)Boolean online ){
 
         return streamProxyService.getAll(page, count);
     }
 
+    @ApiOperation("淇濆瓨浠g悊")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "param", value = "浠g悊鍙傛暟", dataTypeClass = StreamProxyItem.class),
+    })
     @RequestMapping(value = "/save")
     @ResponseBody
     public Object save(@RequestBody StreamProxyItem param){
@@ -46,6 +63,11 @@
         return "success";
     }
 
+    @ApiOperation("绉婚櫎浠g悊")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "app", value = "搴旂敤鍚�", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "stream", value = "娴両D", dataTypeClass = String.class),
+    })
     @RequestMapping(value = "/del")
     @ResponseBody
     public Object del(String app, String stream){
@@ -54,6 +76,11 @@
         return "success";
     }
 
+    @ApiOperation("鍚敤浠g悊")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "app", value = "搴旂敤鍚�", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "stream", value = "娴両D", dataTypeClass = String.class),
+    })
     @RequestMapping(value = "/start")
     @ResponseBody
     public Object start(String app, String stream){
@@ -62,6 +89,11 @@
         return "success";
     }
 
+    @ApiOperation("鍋滅敤浠g悊")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "app", value = "搴旂敤鍚�", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "stream", value = "娴両D", dataTypeClass = String.class),
+    })
     @RequestMapping(value = "/stop")
     @ResponseBody
     public Object stop(String app, String stream){
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java
index 1dd9036..6396b10 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/streamPush/StreamPushController.java
@@ -1,19 +1,20 @@
 package com.genersoft.iot.vmp.vmanager.streamPush;
 
-import com.alibaba.fastjson.JSONObject;
 import com.genersoft.iot.vmp.gb28181.bean.GbStream;
-import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
 import com.genersoft.iot.vmp.service.IStreamPushService;
-import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
-import com.genersoft.iot.vmp.vmanager.media.MediaController;
 import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
+@Api(tags = "鎺ㄦ祦淇℃伅绠$悊")
 @Controller
 @CrossOrigin
 @RequestMapping(value = "/api/push")
@@ -24,18 +25,29 @@
     @Autowired
     private IStreamPushService streamPushService;
 
+    @ApiOperation("鎺ㄦ祦鍒楄〃鏌ヨ")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="page", value = "褰撳墠椤�", required = true, dataTypeClass = Integer.class),
+            @ApiImplicitParam(name="count", value = "姣忛〉鏌ヨ鏁伴噺", required = true, dataTypeClass = Integer.class),
+            @ApiImplicitParam(name="query", value = "鏌ヨ鍐呭", dataTypeClass = String.class),
+            @ApiImplicitParam(name="online", value = "鏄惁鍦ㄧ嚎", dataTypeClass = Boolean.class),
+    })
     @RequestMapping(value = "/list")
     @ResponseBody
     public PageInfo<StreamPushItem> list(@RequestParam(required = false)Integer page,
                                          @RequestParam(required = false)Integer count,
-                                         @RequestParam(required = false)String q,
+                                         @RequestParam(required = false)String query,
                                          @RequestParam(required = false)Boolean online ){
 
         PageInfo<StreamPushItem> pushList = streamPushService.getPushList(page - 1, page - 1 + count);
         return pushList;
     }
 
-    @RequestMapping(value = "/saveToGB")
+    @ApiOperation("灏嗘帹娴佹坊鍔犲埌鍥芥爣")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "stream", value = "鐩存挱娴佸叧鑱斿浗鏍囧钩鍙�", dataTypeClass = GbStream.class),
+    })
+    @RequestMapping(value = "/save_to_gb")
     @ResponseBody
     public Object saveToGB(@RequestBody GbStream stream){
         if (streamPushService.saveToGB(stream)){
@@ -45,7 +57,12 @@
         }
     }
 
-    @RequestMapping(value = "/removeFormGB")
+
+    @ApiOperation("灏嗘帹娴佺Щ鍑哄埌鍥芥爣")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "stream", value = "鐩存挱娴佸叧鑱斿浗鏍囧钩鍙�", dataTypeClass = GbStream.class),
+    })
+    @RequestMapping(value = "/remove_form_gb")
     @ResponseBody
     public Object removeFormGB(@RequestBody GbStream stream){
         if (streamPushService.removeFromGB(stream)){
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java
index 5ebfd2d..c3f8b3f 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java
@@ -1,14 +1,20 @@
 package com.genersoft.iot.vmp.vmanager.user;
 
+import com.genersoft.iot.vmp.gb28181.bean.GbStream;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+@Api(tags = "鐢ㄦ埛绠$悊")
 @CrossOrigin
 @RestController
-@RequestMapping("/api")
+@RequestMapping("/api/user")
 public class UserController {
 
     @Value("${auth.username}")
@@ -17,7 +23,12 @@
     @Value("${auth.password}")
     private String passwordConfig;
 
-    @RequestMapping("/user/login")
+    @ApiOperation("鐧诲綍")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "username", value = "鐢ㄦ埛鍚�", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "password", value = "瀵嗙爜锛�32鏈猰d5鍔犲瘑锛�", dataTypeClass = String.class),
+    })
+    @RequestMapping("/login")
     public String login(String username, String password){
         if (!StringUtils.isEmpty(username) && username.equals(usernameConfig)
                 && !StringUtils.isEmpty(password) && password.equals(passwordConfig)) {
diff --git a/src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java b/src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java
index 5a56bef..9627cdd 100644
--- a/src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java
+++ b/src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java
@@ -9,7 +9,7 @@
 // import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
-import com.genersoft.iot.vmp.vmanager.play.PlayController;
+import com.genersoft.iot.vmp.vmanager.gb28181.play.PlayController;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/web_src/index.html b/web_src/index.html
index 9cdf57e..8b59cb9 100644
--- a/web_src/index.html
+++ b/web_src/index.html
@@ -6,7 +6,7 @@
     <title>鍥芥爣28181</title>
   </head>
   <body>
-    <!-- <script type="text/javascript" src="./js/EasyWasmPlayer.js"></script> -->
+    <script type="text/javascript" src="./js/EasyWasmPlayer.js"></script>
     <script type="text/javascript" src="/static/js/ZLMRTCClient.js"></script>
     <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=rk73w8dv1rkE4UdZsataG68VarhYQzrx&s=1"></script>
     <div id="app"></div>
diff --git a/web_src/src/components/PushVideoList.vue b/web_src/src/components/PushVideoList.vue
index 1199a39..3e155c2 100644
--- a/web_src/src/components/PushVideoList.vue
+++ b/web_src/src/components/PushVideoList.vue
@@ -155,7 +155,7 @@
 			},
 			removeFromGB: function(row){
 				var that = this;
-				that.$axios.post(`/api/push/removeFormGB`, row)
+				that.$axios.post(`/api/push/remove_form_gb`, row)
 					.then(function (res) {
 						console.log(res);
 						console.log(res.data == "success");
diff --git a/web_src/src/components/dialog/addStreamTOGB.vue b/web_src/src/components/dialog/addStreamTOGB.vue
index d5373fb..7dc8a87 100644
--- a/web_src/src/components/dialog/addStreamTOGB.vue
+++ b/web_src/src/components/dialog/addStreamTOGB.vue
@@ -90,7 +90,7 @@
       console.log("onSubmit");
       var that = this;
       that.$axios
-        .post(`/api/push/saveToGB`, that.proxyParam)
+        .post(`/api/push/save_to_gb`, that.proxyParam)
         .then(function (res) {
           console.log(res);
           console.log(res.data == "success");
diff --git a/web_src/src/components/dialog/devicePlayer.vue b/web_src/src/components/dialog/devicePlayer.vue
index 30de142..82bce09 100644
--- a/web_src/src/components/dialog/devicePlayer.vue
+++ b/web_src/src/components/dialog/devicePlayer.vue
@@ -26,7 +26,7 @@
                     </div>
                 </el-tab-pane>
                 <!--{"code":0,"data":{"paths":["22-29-30.mp4"],"rootPath":"/home/kkkkk/Documents/ZLMediaKit/release/linux/Debug/www/record/hls/kkkkk/2020-05-11/"}}-->
-                <el-tab-pane label="褰曞儚鏌ヨ" name="record" v-if="showRrecord"> 
+                <el-tab-pane label="褰曞儚鏌ヨ" name="record" v-if="showRrecord">
                     <el-date-picker size="mini" v-model="videoHistory.date" type="date" value-format="yyyy-MM-dd" placeholder="鏃ユ湡" @change="queryRecords()"></el-date-picker>
                     <el-table :data="videoHistory.searchHistoryResult" height="150" v-loading="recordsLoading">
                         <el-table-column label="鍚嶇О" prop="name"></el-table-column>
@@ -70,7 +70,7 @@
                                  <el-slider v-model="controSpeed" :max="255"></el-slider>
                              </div>
                         </div>
-                       
+
                         <div class="control-panel">
                             <el-button-group>
                                 <el-tag style="position :absolute; left: 0rem; top: 0rem; width: 5rem; text-align: center" size="medium" type="info">棰勭疆浣嶇紪鍙�</el-tag>
@@ -136,7 +136,8 @@
 </template>
 
 <script>
-import player from '../dialog/rtcPlayer.vue'
+// import player from '../dialog/rtcPlayer.vue'
+import player from '../dialog/easyPlayer.vue'
 export default {
     name: 'devicePlayer',
     props: {},
@@ -250,7 +251,8 @@
 
             this.hasaudio = hasAudio;
             this.isLoging = false;
-            this.videoUrl = streamInfo.rtc;
+            // this.videoUrl = streamInfo.rtc;
+            this.videoUrl = streamInfo.ws_flv;
             this.streamId = streamInfo.streamId;
             this.app = streamInfo.app;
             this.playFromStreamInfo(false, streamInfo)
@@ -369,7 +371,7 @@
             var endTime = this.videoHistory.date + " 23:59:59";
             this.$axios({
                 method: 'get',
-                url: '/api/record/' + this.deviceId + '/' + this.channelId + '?startTime=' + startTime + '&endTime=' + endTime
+                url: '/api/gb_record/query/' + this.deviceId + '/' + this.channelId + '?startTime=' + startTime + '&endTime=' + endTime
             }).then(function (res) {
                 // 澶勭悊鏃堕棿淇℃伅
                 that.videoHistory.searchHistoryResult = res.data.recordList;
@@ -420,7 +422,7 @@
                 method: 'post',
                 // url: '/api/ptz/' + this.deviceId + '/' + this.channelId + '?leftRight=' + leftRight + '&upDown=' + upDown +
                 //     '&inOut=' + zoom + '&moveSpeed=50&zoomSpeed=50'
-                url: '/api/ptz/' + this.deviceId + '/' + this.channelId + '?cmdCode=' + (zoom * 16 + upDown * 4 + leftRight) + '&horizonSpeed=' + this.controSpeed + '&verticalSpeed=' + this.controSpeed + '&zoomSpeed=' + this.controSpeed
+                url: '/api/ptz/control/' + this.deviceId + '/' + this.channelId + '?cmdCode=' + (zoom * 16 + upDown * 4 + leftRight) + '&horizonSpeed=' + this.controSpeed + '&verticalSpeed=' + this.controSpeed + '&zoomSpeed=' + this.controSpeed
             }).then(function (res) {});
         },
         //////////////////////鎾斁鍣ㄤ簨浠跺鐞�//////////////////////////
@@ -432,7 +434,7 @@
             let that = this;
             this.$axios({
                 method: 'post',
-                url: '/api/frontEndCommand/' + this.deviceId + '/' + this.channelId + '?cmdCode=' + cmdCode + '&parameter1=0&parameter2=' + presetPos + '&combindCode2=0'
+                url: '/api/ptz/front_end_command/' + this.deviceId + '/' + this.channelId + '?cmdCode=' + cmdCode + '&parameter1=0&parameter2=' + presetPos + '&combindCode2=0'
             }).then(function (res) {});
         },
         setSpeedOrTime: function (cmdCode, groupNum, parameter) {
@@ -442,7 +444,7 @@
             console.log('鍓嶇鎺у埗锛�0x' + cmdCode.toString(16) + ' 0x' + groupNum.toString(16) + ' 0x' + parameter2.toString(16) + ' 0x' + combindCode2.toString(16));
             this.$axios({
                 method: 'post',
-                url: '/api/frontEndCommand/' + this.deviceId + '/' + this.channelId + '?cmdCode=' + cmdCode + '&parameter1=' + groupNum + '&parameter2=' + parameter2 + '&combindCode2=' + combindCode2
+                url: '/api/ptz/front_end_command/' + this.deviceId + '/' + this.channelId + '?cmdCode=' + cmdCode + '&parameter1=' + groupNum + '&parameter2=' + parameter2 + '&combindCode2=' + combindCode2
             }).then(function (res) {});
         },
         setCommand: function (cmdCode, groupNum, parameter) {
@@ -450,7 +452,7 @@
             console.log('鍓嶇鎺у埗锛�0x' + cmdCode.toString(16) + ' 0x' + groupNum.toString(16) + ' 0x' + parameter.toString(16) + ' 0x0');
             this.$axios({
                 method: 'post',
-                url: '/api/frontEndCommand/' + this.deviceId + '/' + this.channelId + '?cmdCode=' + cmdCode + '&parameter1=' + groupNum + '&parameter2=' + parameter + '&combindCode2=0'
+                url: '/api/ptz/front_end_command/' + this.deviceId + '/' + this.channelId + '?cmdCode=' + cmdCode + '&parameter1=' + groupNum + '&parameter2=' + parameter + '&combindCode2=0'
             }).then(function (res) {});
         },
         formatTooltip: function (val) {
diff --git a/web_src/src/components/dialog/player.vue b/web_src/src/components/dialog/player.vue
deleted file mode 100644
index 0abf5c0..0000000
--- a/web_src/src/components/dialog/player.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-<template>
-    <div id="player">
-        <div id="easyplayer"></div>   
-    </div>
-</template>
-
-<script>
-export default {
-    name: 'player',
-    data() {
-        return {
-            easyPlayer: null
-        };
-    },
-    props: ['videoUrl', 'error', 'hasaudio'],
-    mounted () {
-       this.$nextTick(() =>{
-           console.log("鍒濆鍖栨椂鐨勫湴鍧�涓�: " + this.videoUrl)
-            this.easyPlayer = new WasmPlayer(null, 'easyplayer', this.eventcallbacK)
-            this.easyPlayer.play(this.videoUrl, 1)
-        })
-    },
-    watch:{
-        videoUrl(newData, oldData){
-            this.easyPlayer.destroy()
-            this.easyPlayer = new WasmPlayer(null, 'easyplayer', this.eventcallbacK)
-            this.easyPlayer.play(newData, 1)
-        },
-        immediate:true
-    },
-    methods: {
-        play: function (url) {
-            this.easyPlayer = new WasmPlayer(null, 'easyplayer', this.eventcallbacK)
-            this.easyPlayer.play(url, 1)
-        },
-        pause: function () {
-            this.easyPlayer.destroy();
-        },
-        eventcallbacK: function(type, message) {
-            console.log("player 浜嬩欢鍥炶皟")
-            console.log(type)
-            console.log(message)
-        }
-    },
-}
-</script>
-
-<style>
-    .LodingTitle {
-        min-width: 70px;
-    }
-    /* 闅愯棌logo */
-    /* .iconqingxiLOGO {
-        display: none !important;
-    } */
-    
-</style>
\ No newline at end of file

--
Gitblit v1.8.0