zhanghua
2023-04-21 cfe431f7938d40cbf2478119baa8a0eab9b746d6
ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java
@@ -1,6 +1,7 @@
package com.ycl.controller.platformApi;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.ycl.annotation.LogSave;
import com.ycl.api.CommonResult;
import com.ycl.dto.video.AlarmParam;
import com.ycl.enums.common.ResultCode;
@@ -14,6 +15,7 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -21,6 +23,8 @@
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
import java.util.Dictionary;
import java.util.Hashtable;
/**
 * @author admin
@@ -31,7 +35,7 @@
public class AlarmController {
    private IVideoAlarmReportService videoAlarmReportService;
    private static Integer index = 0;
    private static Dictionary<String, Integer> sessionDic = new Hashtable<>();
    @Autowired
    private VideoUtil videoUtil;
@@ -43,6 +47,7 @@
    @ApiOperation("视频报警推送API")
    @PostMapping("/AlarmReport")
    @LogSave(operationType = "报警管理", contain = "视频报警推送")
    public CommonResult alarmReport(@RequestBody @Validated AlarmParam alarmParam) {
        videoAlarmReportService.save(alarmParam);
        return new CommonResult(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage());
@@ -68,17 +73,21 @@
    @GetMapping(value = "/img", produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE})
//    @GetMapping(value = "/img")
    @ResponseBody
    public byte[] getImages(HttpServletResponse response, @RequestParam String fileUrl, @RequestParam String OSSAccessKeyId, @RequestParam String Signature) {
        index = 0;
        return getBytes(fileUrl, OSSAccessKeyId, Signature);
    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);
    }
    private byte[] getBytes(String fileUrl, String OSSAccessKeyId, String Signature) {
    private byte[] getBytes(String fileUrl, String OSSAccessKeyId, String Signature, String sessionId) {
        int index = sessionDic.get(sessionId);
        try {
            if (index < 10) {
                index++;
            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);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
@@ -94,9 +103,12 @@
                return data;
            }
        } catch (Exception e) {
            System.out.println(index + "getImages获取图片失败:" + e.getMessage());
            getBytes(fileUrl, OSSAccessKeyId, Signature);
            // e.printStackTrace();
            index++;
            sessionDic.put(sessionId, index);
            System.out.println(index + "-getImages获取图片失败:" + e.getMessage());
            e.printStackTrace();
            getBytes(fileUrl, OSSAccessKeyId, Signature, sessionId);
        }
        return null;
    }