zhanghua
2025-04-14 1cad14bca191807e18705c3a5526eda8151be439
ycl-platform/src/test/java/com/ycl/sccgplatform/Test1.java
@@ -1,97 +1,182 @@
package com.ycl.sccgplatform;
import com.alibaba.fastjson.JSONObject;
import com.ycl.dto.video.Camera;
import com.ycl.dto.video.HttpResponseResult;
import com.ycl.dto.video.PageResult;
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.extension.plugins.pagination.Page;
import com.dahua.netsdk.lib.callback.impl.AnalyzerDataCB;
import com.ycl.common.util.UtilNumber;
import com.ycl.entity.dingding.DingUserInfo;
import com.ycl.entity.user.UmsAdmin;
import com.ycl.mapper.unlawful.UnlawfulMapper;
import com.ycl.service.caseHandler.IBaseCaseService;
import com.ycl.service.caseHandler.IViolationsService;
import com.ycl.service.oss.OssService;
import com.ycl.service.resources.IImageResourcesService;
import com.ycl.utils.ConstantPropertiesUtils;
import com.ycl.vo.casePool.BaseCaseVO;
import net.coobird.thumbnailator.Thumbnails;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.ComponentScan;
import javax.annotation.Resource;
import javax.xml.bind.DatatypeConverter;
import java.io.*;
import java.util.List;
import java.util.UUID;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@ComponentScan("com.dahua.netsdk")
@SpringBootTest
public class Test1 {
    @Autowired
    private IBaseCaseService baseCaseService;
    @Autowired
    private OssService ossService;
    @Autowired
    private IViolationsService violationsService;
    @Autowired
    private IImageResourcesService imageService;
    @Resource
    private UnlawfulMapper unlawfuldao;
    @Autowired
    UtilNumber utilNumber;
    @Test
    void test() {
        String fileUrl = "https://xshlivelesson.oss-cn-shenzhen.aliyuncs.com/2.pptx?Expires=1738857178&OSSAccessKeyId=LTAIxtcfDe3fgfcf&Signature=wTwx6JA6VWbPB0skVySy9MCexog=";
        // http://zhzfptoss.oss-cn-zjls-lszwy-d01-a.ops.zjlscloud.com/sczf/2023062950465224.jpg?Expires=2634106907&OSSAccessKeyId=Tkf72Q1gdzETsZf6&Signature=ttME%2BeFhss8wPbkRCxAsV%2FPNWGQ%3D
        OSS ossClient = null;
        try {
            String endpoint = "https://oss-cn-beijing.aliyuncs.com";
            String accessKeyId = "LTAIxtcfDe3fgfcf";
            String accessKeySecret = "xHxLVU5dm7USdJuQaCfp1hpcUU1u8v";
            String bucketName = "huachuang-resource";
            String[] urlArray = fileUrl.split("Expires=");
            String objectName = urlArray[0].replace(ConstantPropertiesUtils.PREFIX_URL, "");
            objectName = objectName.replace("?", "");
            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 设置签名URL过期时间,单位为毫秒。本示例以设置过期时间为1小时为例。
            Date expiration = new Date(new Date().getTime() + 3600 * 1000L);
            // 生成以GET方法访问的签名URL。本示例没有额外请求头,其他人可以直接通过浏览器访问相关内容。
            URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
            System.out.println(url);
//
//        // http://zhzfptoss.oss-cn-zjls-lszwy-d01-a.ops.zjlscloud.com/sczf/2025020620664017jpg?v=2684887407&OSSAccessKeyId=Tkf72Q1gdzETsZf6&Signature=88dn7R/gDdqxWUCqZdCi/NgSXg8=
//        OSS ossClient = null;
//        try {
//            // 以华东1(杭州)的外网Endpoint为例,其它Region请按实际情况填写。
//            String endpoint = "https://oss-cn-beijing.aliyuncs.com";
//            // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
////            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
//            // 填写Bucket名称,例如examplebucket。
//            String bucketName = "huachuang-resource";
//            // 填写Object完整路径,例如exampleobject.txt。Object完整路径中不能包含Bucket名称。
//            String objectName = "家庭教育/中国陶行知协会家庭教育专委会.doc";
//            // 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou。
//            String region = "cn-beijing";
//            String accessKeyId = "LTAIxtcfDe3fgfcf";
//            String accessKeySecret = "xHxLVU5dm7USdJuQaCfp1hpcUU1u8v";
//            // 创建OSSClient实例。
//            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
//            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
//
//            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//
//
//            // 设置签名URL过期时间,单位为毫秒。本示例以设置过期时间为1小时为例。
//            Date expiration = new Date(new Date().getTime() + 3600 * 1000L);
//            // 生成以GET方法访问的签名URL。本示例没有额外请求头,其他人可以直接通过浏览器访问相关内容。
//            URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
//
//
//            try {
//                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//                conn.setRequestMethod("GET");
//                conn.setConnectTimeout(10 * 1000);
//                conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//
//                InputStream input = conn.getInputStream();// 通过输入流获取图片数据
//
//                FileOutputStream downloadFile = new FileOutputStream("D://1.doc");
//
//                int index;
//                byte[] bytes = new byte[1024];
//
//                while ((index = input.read(bytes)) != -1) {
//                    downloadFile.write(bytes, 0, index);
//                    downloadFile.flush();
//                }
//                downloadFile.close();
//                input.close();
//
//                    ByteArrayOutputStream outs = new ByteArrayOutputStream();
//                    Thumbnails.of(in).scale(0.6).outputQuality(1).toOutputStream(outs);
//                    InputStream ins = new ByteArrayInputStream(outs.toByteArray());
//                    String picData = ossService.uploadImages(ins, ".png", 0);
//                    System.out.println(picData);
        } 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();
            }
        }
    }
//        List<CategoryDto> data = unlawfuldao.getDataByType(0, 5,"2022-12-14 17:19:01", "2022-12-14 17:19:03");
//        System.out.println(data);
        String msg = "{\n" +
                "    \"code\": \"0\",\n" +
                "    \"msg\": \"success\",\n" +
                "    \"data\": {\n" +
                "        \"total\": 1,\n" +
                "        \"pageSize\": 20,\n" +
                "        \"pageNo\": 1,\n" +
                "        \"list\": [\n" +
                "            {\n" +
                "                \"cameraIndexCode\": \"90ad77d8057c43dab140b77361606927\",\n" +
                "                \"gbIndexCode\": \"12000000051210000000\",\n" +
                "                \"name\": \"Camera_01\",\n" +
                "                \"deviceIndexCode\": \"f5da3e320bcb483da6bef4b3f86de779\",\n" +
                "                \"longitude\": \"120.216123284763\",\n" +
                "                \"latitude\": \"30.21168569675452\",\n" +
                "                \"altitude\": \"88\",\n" +
                "                \"pixel\": 1,\n" +
                "                \"cameraType\": 1,\n" +
                "                \"cameraTypeName\": \"半球\",\n" +
                "                \"installPlace\": \"街道\",\n" +
                "                \"matrixCode\": \"2076c586b0a94a6ba639b44eda9e76e9\",\n" +
                "                \"chanNum\": 1,\n" +
                "                \"viewshed\": \"{\\\"horizontalValue\\\":\\\"13.80000\\\",\\\"azimuth\\\":\\\"109.23000\\\",\\\"visibleRadius\\\":\\\"48.00000\\\"}\",\n" +
                "                \"capabilitySet\": \"@event_face@\",\n" +
                "                \"capabilitySetName\": \"人脸采集能力\",\n" +
                "                \"intelligentSet\": \"@face@\",\n" +
                "                \"intelligentSetName\": \"人脸结构化能力\",\n" +
                "                \"recordLocation\": \"0\",\n" +
                "                \"recordLocationName\": \"中心存储\",\n" +
                "                \"ptzController\": 1,\n" +
                "                \"ptzControllerName\": \"DVR\",\n" +
                "                \"deviceResourceType\": \"ENCODE_DEVICE\",\n" +
                "                \"deviceResourceTypeName\": \"编码设备\",\n" +
                "                \"channelType\": \"digital\",\n" +
                "                \"channelTypeName\": \"数字通道\",\n" +
                "                \"transType\": 0,\n" +
                "                \"transTypeName\": \"UDP\",\n" +
                "                \"updateTime\": \"2021-06-15T00:00:00.000+08:00\",\n" +
                "                \"unitIndexCode\": \"083b2031c1db4f368f015fe2562e0012\",\n" +
                "                \"treatyType\": \"20005\",\n" +
                "                \"treatyTypeName\": \"ONVIF\",\n" +
                "                \"createTime\": \"2021-06-15T00:00:00.000+08:00\",\n" +
                "                \"status\": 0,\n" +
                "                \"statusName\": \"不在线\"\n" +
                "            }\n" +
                "        ]\n" +
                "    }\n" +
                "}\n";
        HttpResponseResult responseResult = com.alibaba.fastjson.JSONObject.parseObject(msg, HttpResponseResult.class);
        if ("0".equals(responseResult.getCode())) {
            JSONObject jsonObject = responseResult.getData();
            String strList = jsonObject.getString("list");
            Integer total = Integer.parseInt(jsonObject.getString("total"));
            Integer pageSize = Integer.parseInt(jsonObject.getString("pageSize"));
            Integer pageNo = Integer.parseInt(jsonObject.getString("pageNo"));
            List<Camera> ls = JSONObject.parseArray(strList, Camera.class);
            PageResult<Camera> pageResult = new PageResult<>(total, pageSize, pageNo, ls);
            System.out.println(ls.size());
        }
    }
//        String url = "http://test.xshcs.com/10%E6%9C%88%E6%8E%92%E6%9C%9F.jpg";
//        try {
//            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
//            connection.setReadTimeout(5000);
//            connection.setConnectTimeout(5000);
//            connection.setRequestMethod("GET");
//            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
//                InputStream in = connection.getInputStream();
//                ByteArrayOutputStream outs = new ByteArrayOutputStream();
//                Thumbnails.of(in).scale(0.6).outputQuality(1).toOutputStream(outs);
//                InputStream ins = new ByteArrayInputStream(outs.toByteArray());
//                String picData = ossService.uploadImages(ins, ".png",0);
//                System.out.println(picData);
//            }
//        } catch (IOException e) {
//            System.out.println("获取网络图片出现异常,图片路径为:" + url);
//
//            e.printStackTrace();
//        }
//}
//    @Test
//    void test1(){
@@ -123,11 +208,60 @@
        String PicData = br.readLine();
        byte[] data = DatatypeConverter.parseBase64Binary(PicData);
        InputStream inputStream = new ByteArrayInputStream(data);
        String s = ossService.uploadImages(inputStream, extension);
        String s = ossService.uploadImages(inputStream, extension, 0);
        System.out.println(s);
        br.close();
        isr.close();
        fis.close();
    }
//    @Autowired
//    AnalyzerDataCB analyzerDataCB;
    @Test
    void alarmTest() throws UnsupportedEncodingException {
//        analyzerDataCB.invoke(null, 0, null, null, 0, null, 0, null);
//        AlarmDataCB cbMessage = new AlarmDataCB();
//        String m_strIp = "172.28.194.177";
//        int m_nPort = 37777;
//        String m_strUser = "admin";
//        String m_strPassword = "scdx@123";
//        LoginModule.login(m_strIp, m_nPort, m_strUser, m_strPassword);
//        AlarmListenModule.startListen(cbMessage);
//
//        System.out.println(cbMessage.data);
        //  https://xshlivelesson.oss-accelerate.aliyuncs.com/sczf/2025-02-28%2015%3A53%3A293732..JPG?Expires=2686809213&OSSAccessKeyId=LTAIDlTWjHW0IVyW&Signature=Q5WO2kQcWRpq0SQiYjBCo6rGyJE%3D"
//        ossService.deleteImages("https://xshlivelesson.oss-cn-shenzhen.aliyuncs.com/sczf/2025022845414037.JPG?Expires=2686811218&OSSAccessKeyId=LTAIDlTWjHW0IVyW&Signature=5SQ7PInLkbd62zJ1aurljeO0c%2Bw%3D");
//
        int i = 1;
        while (true) {
            String beginTime = "2025-01-01 00:00:00";
            String endTime = LocalDateTime.now().plusDays(-4).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            Page<BaseCaseVO> page = baseCaseService.selectVideoInspection(i, 10, null, null, beginTime, endTime, null);
            if (page.getRecords().size() > 0) {
                page.getRecords().forEach(baseCaseVO -> {
//                    String picData = baseCaseVO.getPicData();
//                    String[] urls = picData.split(",");
//                    for (String url : urls) {
//                        ossService.deleteImages(url);
//
//                    }
                    baseCaseService.removeById(baseCaseVO.getBaseId());
                    violationsService.removeById(baseCaseVO.getBaseId());
                    imageService.removeById(baseCaseVO.getImageId());
                });
            } else {
                break;
            }
            i++;
        }
    }
}