From b8d8733ad9eeeb170a71897d1078acdbea7680f2 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期二, 04 三月 2025 15:23:38 +0800 Subject: [PATCH] 优化 --- ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java | 96 +++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 83 insertions(+), 13 deletions(-) diff --git a/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java b/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java index ce3d44c..d5a1603 100644 --- a/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java +++ b/ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java @@ -2,6 +2,14 @@ import cn.hutool.json.JSONConverter; import com.alibaba.fastjson.JSONObject; +import com.aliyun.oss.ClientBuilderConfiguration; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.OSSException; +import com.aliyun.oss.common.auth.CredentialsProviderFactory; +import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider; +import com.aliyun.oss.common.comm.SignVersion; +import com.aliyuncs.exceptions.ClientException; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.ycl.annotation.LogSave; @@ -13,6 +21,7 @@ import com.ycl.service.video.IVideoAlarmReportService; import com.ycl.service.video.impl.IVideoPointService; import com.ycl.util.VideoUtil; +import com.ycl.utils.ConstantPropertiesUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.SneakyThrows; @@ -23,15 +32,13 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.xml.bind.DatatypeConverter; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; -import java.util.Base64; -import java.util.Dictionary; -import java.util.Hashtable; -import java.util.List; +import java.util.*; /** * @author admin @@ -71,7 +78,7 @@ @PostMapping("/HK/alarmReport") @LogSave(operationType = "鎶ヨ绠$悊", contain = "娴峰悍瑙嗛鎶ヨ鎺ㄩ��") public CommonResult hkAlarmReport(@RequestBody @Validated HKAlarmParam alarmParam) { -// System.out.println("淇濆瓨鎶ヨ鏁版嵁锛�" + JSONObject.toJSONString(alarmParam)); +// System.out.println("娴峰悍瑙嗛鎶ヨ鎺ㄩ�丄PI锛�" + JSONObject.toJSONString(alarmParam)); videoAlarmReportService.saveFromHK(alarmParam); return new CommonResult(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage()); } @@ -120,12 +127,28 @@ public byte[] getImages(HttpServletRequest request, HttpServletResponse response, @RequestParam String fileUrl, @RequestParam(required = false) String OSSAccessKeyId, @RequestParam(required = false) String Signature) { - String sessionId = request.getSession().getId(); - sessionDic.put(sessionId, 0); - return getBytes(fileUrl, OSSAccessKeyId, Signature, sessionId); - + if (StringUtils.isNotBlank(fileUrl)) { + String sessionId = request.getSession().getId(); + sessionDic.put(sessionId, 0); + return getBytes(fileUrl, OSSAccessKeyId, Signature, sessionId); + } else { + return null; + } } + @ApiOperation(value = "鑾峰彇鍥剧墖") + @GetMapping(value = "/img/base64") +// @GetMapping(value = "/img") + @ResponseBody + public String getImagesBase64(HttpServletRequest request, HttpServletResponse response, + @RequestParam String fileUrl, @RequestParam(required = false) String OSSAccessKeyId, + @RequestParam(required = false) String Signature) { + String sessionId = request.getSession().getId(); + sessionDic.put(sessionId, 0); + byte[] bytes = getBytes(fileUrl, OSSAccessKeyId, Signature, sessionId); + String base64 = DatatypeConverter.printBase64Binary(bytes); + return base64; + } @GetMapping(value = "/index") @ResponseBody @@ -134,14 +157,61 @@ } + private URL translateOSSUrl(String fileUrl) { + OSS ossClient = null; + try { + String endpoint = ConstantPropertiesUtils.END_POINT; + String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID; + String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET; + String bucketName = ConstantPropertiesUtils.BUCKET_NAME; + + String[] urlArray = fileUrl.split("Expires="); + +// System.out.println("-------urlArray[0]:" + urlArray[0]); + +// System.out.println("-------PREFIX_URL:" + ConstantPropertiesUtils.PREFIX_URL); + String objectName = urlArray[0].replace(ConstantPropertiesUtils.PREFIX_URL, ""); + + objectName = objectName.replace("?", ""); +// System.out.println("-------objectName:" + objectName); + ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + + // 璁剧疆绛惧悕URL杩囨湡鏃堕棿锛屽崟浣嶄负姣銆傛湰绀轰緥浠ヨ缃繃鏈熸椂闂翠负1灏忔椂涓轰緥銆� + Date expiration = new Date(new Date().getTime() + 3600 * 1000L); + // 鐢熸垚浠ET鏂规硶璁块棶鐨勭鍚峌RL銆傛湰绀轰緥娌℃湁棰濆璇锋眰澶达紝鍏朵粬浜哄彲浠ョ洿鎺ラ�氳繃娴忚鍣ㄨ闂浉鍏冲唴瀹广�� + URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration); + + return url; + } catch (OSSException oe) { + System.out.println("Caught an OSSException, which means your request made it to OSS, " + + "but was rejected with an error response for some reason."); + System.out.println("Error Message:" + oe.getErrorMessage()); + System.out.println("Error Code:" + oe.getErrorCode()); + System.out.println("Request ID:" + oe.getRequestId()); + System.out.println("Host ID:" + oe.getHostId()); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + return null; + } + private byte[] getBytes(String fileUrl, String OSSAccessKeyId, String Signature, String sessionId) { int index = sessionDic.get(sessionId); try { if (sessionDic.get(sessionId) < 10) { sessionDic.remove(sessionId); - fileUrl = fileUrl.replace("Expires", "v"); - System.out.println("getImages鑾峰彇鍥剧墖鍦板潃锛�" + fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature); - URL url = new URL(fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature); + URL url = translateOSSUrl(fileUrl); +// fileUrl = fileUrl.replace("Expires", "v"); +//// System.out.println("getImages鑾峰彇鍥剧墖鍦板潃锛�" + fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature); +// URL url = null; +// if (StringUtils.isNotBlank(OSSAccessKeyId) && StringUtils.isNotBlank(Signature)) { +// url = new URL(fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature); +// } else { +// url = new URL(fileUrl); +// } + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(10 * 1000); @@ -150,7 +220,7 @@ InputStream inputStream = conn.getInputStream();// 閫氳繃杈撳叆娴佽幏鍙栧浘鐗囨暟鎹� byte[] data = readInputStream(inputStream); - System.out.println("getImages鑾峰彇鍥剧墖鎴愬姛"); +// System.out.println("getImages鑾峰彇鍥剧墖鎴愬姛"); return data; } -- Gitblit v1.8.0