From b35dd737c03ee80d45753939ade49a59f556197f Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Wed, 22 May 2024 16:45:41 +0800
Subject: [PATCH] 航线问题修复,水印格式修改,图斑图片加水印

---
 src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java |   97 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 80 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
index 6092fb5..24b347e 100644
--- a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
+++ b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
@@ -1,9 +1,11 @@
 package com.dji.sample.media.service.impl;
 
-import com.alibaba.fastjson.JSONObject;
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.model.PutObjectRequest;
+import com.aliyun.oss.model.PutObjectResult;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dji.sample.common.model.Pagination;
@@ -14,16 +16,18 @@
 import com.dji.sample.manage.model.enums.DeviceDomainEnum;
 import com.dji.sample.manage.service.IDeviceDictionaryService;
 import com.dji.sample.media.dao.IFileMapper;
-import com.dji.sample.media.model.FileUploadDTO;
-import com.dji.sample.media.model.MediaFileDTO;
-import com.dji.sample.media.model.MediaFileEntity;
-import com.dji.sample.media.model.MediaFileQueryParam;
+import com.dji.sample.media.dao.IMarkMapper;
+import com.dji.sample.media.model.*;
 import com.dji.sample.media.service.IFileService;
-import com.dji.sample.wayline.model.entity.WaylineJobEntity;
+import com.dji.sample.territory.service.impl.TbFjServiceImpl;
+import com.dji.sample.territory.utils.WaterMarkUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.awt.*;
+import java.io.File;
+import java.io.IOException;
 import java.net.URL;
 import java.time.Instant;
 import java.time.LocalDateTime;
@@ -45,7 +49,8 @@
 
     @Autowired
     private IFileMapper mapper;
-
+    @Autowired
+    private IMarkMapper markMapper;
     @Autowired
     private IDeviceDictionaryService deviceDictionaryService;
 
@@ -78,7 +83,21 @@
         fileEntity.setFileId(UUID.randomUUID().toString());
         return mapper.insert(fileEntity);
     }
-
+        public Integer saveMarkFile(String workspaceId, FileUploadDTO file) throws IOException, FontFormatException {
+            MediaFileMarkEntity mediaFileMarkEntity =this.fileUploadConvertToMarkEntity(file);
+            String url =  "http://dev.jxpskj.com:9000/cloud-bucket" + file.getObjectKey();
+            File file1=TbFjServiceImpl.downloadFile(url);
+            File file2= new File(WaterMarkUtil.addWatermark(file1, Long.valueOf(file.getMetadata().getCreatedTime().toString()),file.getMetadata().getPhotoedPosition().getLat(),
+                    file.getMetadata().getPhotoedPosition().getLng(),file.getMetadata().getGimbalYawDegree()).toURI());
+            mediaFileMarkEntity.setObjectKey(file.getPath());
+            mediaFileMarkEntity.setWorkspaceId(workspaceId);
+            mediaFileMarkEntity.setFileId(UUID.randomUUID().toString());
+            mediaFileMarkEntity.setObjectKey("/mark"+file.getPath()+"/"+file.getName());
+            mediaFileMarkEntity.setFileName("mark"+file.getName());
+            mediaFileMarkEntity.setFilePath("mark"+file.getPath());
+            uploadFile(String.valueOf(file2), mediaFileMarkEntity.getObjectKey());
+            return markMapper.insert(mediaFileMarkEntity);
+        }
     @Override
     public List<MediaFileDTO> getAllFilesByWorkspaceId(String workspaceId) {
         return mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>()
@@ -95,23 +114,27 @@
     }
 
     @Override
-    public PaginationData<MediaFileDTO> getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize, MediaFileQueryParam mediaFileQueryParam) {
+    public PaginationData<MediaFileEntity> getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize, MediaFileQueryParam mediaFileQueryParam) {
 //        Page<MediaFileEntity> pageData = mapper.selectPage(
 //                new Page<MediaFileEntity>(page, pageSize),
 //                new LambdaQueryWrapper<MediaFileEntity>()
 //                        .eq(MediaFileEntity::getWorkspaceId, workspaceId)
 //                        .orderByDesc(MediaFileEntity::getId));
+        Page<MediaFileEntity> pageData = mapper.selectPage(new Page<MediaFileEntity>(page, pageSize), new LambdaQueryWrapper<MediaFileEntity>()
+                .eq(MediaFileEntity::getWorkspaceId,workspaceId)
+                .orderByDesc(MediaFileEntity::getCreateTime));
 
-        Page<MediaFileEntity> pageData = mapper.getPage(new Page<MediaFileEntity>(page, pageSize),workspaceId,mediaFileQueryParam);
-
-        List<MediaFileDTO> records = pageData.getRecords()
+        List<MediaFileEntity> records = pageData.getRecords()
                 .stream()
-                .map(this::entityConvertToDto)
                 .collect(Collectors.toList());
-
-        return new PaginationData<MediaFileDTO>(records, new Pagination(pageData));
+        return new PaginationData<MediaFileEntity>(records, new Pagination(pageData));
     }
 
+    public int  deleteMedia(String workspaceId, String fileId) {
+    int count=mapper.delete(new LambdaUpdateWrapper<MediaFileEntity>().eq(MediaFileEntity::getFileId, fileId)
+                .eq(MediaFileEntity::getWorkspaceId, workspaceId));
+    return count;
+    }
     @Override
     public URL getObjectUrl(String workspaceId, String fileId) {
         Optional<MediaFileEntity> mediaFileOpt = getMediaByFileId(workspaceId, fileId);
@@ -157,6 +180,33 @@
         if (file != null) {
             builder.fileName(file.getName())
                     .filePath(file.getPath())
+                    .isadd(0)
+                    .fingerprint(file.getFingerprint())
+                    .objectKey(file.getObjectKey())
+                    .subFileType(file.getSubFileType())
+                    .isOriginal(file.getExt().getIsOriginal())
+                    .jobId(file.getExt().getFlightId())
+                    .drone(file.getExt().getSn()).metadata(file.getMetadata())
+                    .tinnyFingerprint(file.getExt().getTinnyFingerprint());
+
+            // domain-type-subType
+            int[] payloadModel = Arrays.stream(file.getExt().getPayloadModelKey().split("-"))
+                    .map(Integer::valueOf)
+                    .mapToInt(Integer::intValue)
+                    .toArray();
+            Optional<DeviceDictionaryDTO> payloadDict = deviceDictionaryService
+                    .getOneDictionaryInfoByTypeSubType(DeviceDomainEnum.PAYLOAD.getVal(), payloadModel[1], payloadModel[2]);
+            payloadDict.ifPresent(payload -> builder.payload(payload.getDeviceName()));
+        }
+        return builder.build();
+    }
+    private MediaFileMarkEntity fileUploadConvertToMarkEntity(FileUploadDTO file) {
+        MediaFileMarkEntity.MediaFileMarkEntityBuilder builder = MediaFileMarkEntity.builder();
+
+        if (file != null) {
+            builder.fileName(file.getName())
+                    .filePath(file.getPath())
+                    .isadd(0)
                     .fingerprint(file.getFingerprint())
                     .objectKey(file.getObjectKey())
                     .subFileType(file.getSubFileType())
@@ -177,6 +227,7 @@
         return builder.build();
     }
 
+
     /**
      * Convert database entity objects into file data transfer object.
      * @param entity
@@ -194,6 +245,7 @@
                     .objectKey(entity.getObjectKey())
                     .tinnyFingerprint(entity.getTinnyFingerprint())
                     .payload(entity.getPayload())
+                    .metadata(entity.getMetadata())
                     .createTime(LocalDateTime.ofInstant(
                             Instant.ofEpochMilli(entity.getCreateTime()), ZoneId.systemDefault()))
                     .drone(entity.getDrone())
@@ -203,5 +255,16 @@
 
         return builder.build();
     }
-
+    public void uploadFile(String filePath, String key) {
+        OSS ossClient = new OSSClientBuilder().build(OssConfiguration.endpoint, OssConfiguration.accessKey, OssConfiguration.secretKey);
+        try {
+            File file = new File(filePath);
+            PutObjectRequest putObjectRequest = new PutObjectRequest(OssConfiguration.bucket, key, file);
+            PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            ossClient.shutdown();
+        }
+    }
 }

--
Gitblit v1.9.3