From cf8a1261b5a27b0e3270da2bd57fbe936b4e809b Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 19 一月 2024 17:44:31 +0800
Subject: [PATCH] 支持合并录像使用https

---
 src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java        |   17 ++---------------
 src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java |   21 ++++++++++++++++++++-
 src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java                |    2 +-
 src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java               |   13 +++++++++----
 4 files changed, 32 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
index 9fda53e..a86aa0e 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
@@ -2,7 +2,9 @@
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
+import com.genersoft.iot.vmp.conf.exception.ControllerException;
 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
+import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
 import okhttp3.*;
 import okhttp3.logging.HttpLoggingInterceptor;
 import org.jetbrains.annotations.NotNull;
@@ -13,7 +15,9 @@
 
 import java.io.IOException;
 import java.net.ConnectException;
+import java.net.MalformedURLException;
 import java.net.SocketTimeoutException;
+import java.net.URL;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -148,13 +152,14 @@
         return responseJSON;
     }
 
-    public JSONObject sendPost(MediaServerItem mediaServerItem, String api, JSONObject param, ZLMRESTfulUtils.RequestCallback callback, Integer readTimeOut) {
+    public JSONObject sendPost(MediaServerItem mediaServerItem, String url,
+                               JSONObject param, ZLMRESTfulUtils.RequestCallback callback,
+                               Integer readTimeOut) {
         OkHttpClient client = getClient(readTimeOut);
 
         if (mediaServerItem == null) {
             return null;
         }
-        String url = String.format("http://%s:%s/%s",  mediaServerItem.getIp(), mediaServerItem.getRecordAssistPort(), api);
         JSONObject responseJSON = new JSONObject();
         //-2鑷畾涔夋祦濯掍綋 璋冪敤閿欒鐮�
         responseJSON.put("code",-2);
@@ -253,8 +258,8 @@
         if (!ObjectUtils.isEmpty(remoteHost)) {
             videoTaskInfoJSON.put("remoteHost", remoteHost);
         }
-
-        return sendPost(mediaServerItem, "api/record/file/download/task/add", videoTaskInfoJSON, null, 30);
+        String urlStr = String.format("%s/api/record/file/download/task/add",  remoteHost);;
+        return sendPost(mediaServerItem, urlStr, videoTaskInfoJSON, null, 30);
     }
 
     public JSONObject queryTaskList(MediaServerItem mediaServerItem, String app, String stream, String callId,  String taskId, Boolean isEnd) {
diff --git a/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java b/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java
index 87798a0..ce6395c 100755
--- a/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java
@@ -32,7 +32,7 @@
     /**
      * 娣诲姞鍚堝苟浠诲姟
      */
-    String addTask(String app, String stream, String mediaServerId, String startTime, String endTime, String callId, String remoteHost);
+    String addTask(String app, String stream, MediaServerItem mediaServerItem, String startTime, String endTime, String callId, String remoteHost);
 
 
     /**
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
index 828d858..0a75a25 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
@@ -107,23 +107,10 @@
     }
 
     @Override
-    public String addTask(String app, String stream, String mediaServerId, String startTime, String endTime, String callId, String remoteHost) {
+    public String addTask(String app, String stream, MediaServerItem mediaServerItem, String startTime, String endTime, String callId, String remoteHost) {
         // 鍙傛暟鏍¢獙
         assert app != null;
         assert stream != null;
-        MediaServerItem mediaServerItem = null;
-        if (mediaServerId == null) {
-            mediaServerItem = mediaServerService.getDefaultMediaServer();
-        }else {
-            mediaServerItem = mediaServerService.getOne(mediaServerId);
-        }
-        if (mediaServerItem == null) {
-            throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒板彲鐢ㄧ殑娴佸獟浣�");
-        }else {
-            if (remoteHost == null) {
-                remoteHost = "http://" + mediaServerItem.getStreamIp() + ":" + mediaServerItem.getRecordAssistPort();
-            }
-        }
         if (mediaServerItem.getRecordAssistPort() == 0) {
             throw new ControllerException(ErrorCode.ERROR100.getCode(), "涓洪厤缃瓵ssist鏈嶅姟");
         }
@@ -163,7 +150,7 @@
         }
         JSONObject result =  assistRESTfulUtils.queryTaskList(mediaServerItem, app, stream, callId, taskId, isEnd);
         if (result == null || result.getInteger("code") != 0) {
-            throw new ControllerException(ErrorCode.ERROR100.getCode(), result.getString("msg"));
+            throw new ControllerException(ErrorCode.ERROR100.getCode(), result == null ? "鏌ヨ浠诲姟鍒楄〃澶辫触" : result.getString("msg"));
         }
         return result.getJSONArray("data");
     }
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java
index 41633cf..15fe089 100755
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java
@@ -22,6 +22,7 @@
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
@@ -154,6 +155,7 @@
     @Parameter(name = "callId", description = "閴存潈ID", required = false)
     @Parameter(name = "remoteHost", description = "杩斿洖鍦板潃鏃剁殑杩滅▼鍦板潃", required = false)
     public String addTask(
+            HttpServletRequest request,
             @RequestParam(required = false) String app,
             @RequestParam(required = false) String stream,
             @RequestParam(required = false) String mediaServerId,
@@ -162,7 +164,24 @@
             @RequestParam(required = false) String callId,
             @RequestParam(required = false) String remoteHost
     ){
-        return cloudRecordService.addTask(app, stream, mediaServerId, startTime, endTime, callId, remoteHost);
+        System.out.println(request.getScheme());
+        System.out.println(request.getLocalAddr());
+        System.out.println(request.getRemoteAddr());
+        System.out.println(request.getRequestURI());
+        MediaServerItem mediaServerItem;
+        if (mediaServerId == null) {
+            mediaServerItem = mediaServerService.getDefaultMediaServer();
+        }else {
+            mediaServerItem = mediaServerService.getOne(mediaServerId);
+        }
+        if (mediaServerItem == null) {
+            throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒板彲鐢ㄧ殑娴佸獟浣�");
+        }else {
+            if (remoteHost == null) {
+                remoteHost = request.getScheme() + "://" + request.getLocalAddr() + ":" + mediaServerItem.getRecordAssistPort();
+            }
+        }
+        return cloudRecordService.addTask(app, stream, mediaServerItem, startTime, endTime, callId, remoteHost);
     }
 
     @ResponseBody

--
Gitblit v1.8.0