From a7aaeabc7873a0eafb4a7ecad7f65b018b7a9bc9 Mon Sep 17 00:00:00 2001
From: sean.zhou <sean.zhou@dji.com>
Date: Fri, 24 Feb 2023 19:31:23 +0800
Subject: [PATCH] What's new? 1. Add license for dock. 2. Modify the logic corresponding to the firmware file and device type. 3. Add multiple mqtt clients options. 4. Modify the structure of the interface for obtaining the device list. 5. Fixed some issues.

---
 src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java |   77 +++++++++++++++++++++++++++++++++++---
 1 files changed, 71 insertions(+), 6 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 744d9d7..6d73a24 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,7 +1,13 @@
 package com.dji.sample.media.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dji.sample.common.model.Pagination;
+import com.dji.sample.common.model.PaginationData;
+import com.dji.sample.component.oss.model.OssConfiguration;
+import com.dji.sample.component.oss.service.impl.OssServiceContext;
 import com.dji.sample.manage.model.dto.DeviceDictionaryDTO;
+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;
@@ -12,9 +18,14 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.net.URL;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 import java.util.stream.Collectors;
 
 /**
@@ -26,25 +37,39 @@
 @Transactional
 public class FileServiceImpl implements IFileService {
 
-
     @Autowired
     private IFileMapper mapper;
 
     @Autowired
     private IDeviceDictionaryService deviceDictionaryService;
 
-    @Override
-    public Boolean checkExist(String workspaceId, String fingerprint) {
+    @Autowired
+    private OssServiceContext ossService;
+
+    private Optional<MediaFileEntity> getMediaByFingerprint(String workspaceId, String fingerprint) {
         MediaFileEntity fileEntity = mapper.selectOne(new LambdaQueryWrapper<MediaFileEntity>()
                 .eq(MediaFileEntity::getWorkspaceId, workspaceId)
                 .eq(MediaFileEntity::getFingerprint, fingerprint));
-        return fileEntity != null;
+        return Optional.ofNullable(fileEntity);
+    }
+
+    private Optional<MediaFileEntity> getMediaByFileId(String workspaceId, String fileId) {
+        MediaFileEntity fileEntity = mapper.selectOne(new LambdaQueryWrapper<MediaFileEntity>()
+                .eq(MediaFileEntity::getWorkspaceId, workspaceId)
+                .eq(MediaFileEntity::getFileId, fileId));
+        return Optional.ofNullable(fileEntity);
+    }
+
+    @Override
+    public Boolean checkExist(String workspaceId, String fingerprint) {
+        return this.getMediaByFingerprint(workspaceId, fingerprint).isPresent();
     }
 
     @Override
     public Integer saveFile(String workspaceId, FileUploadDTO file) {
         MediaFileEntity fileEntity = this.fileUploadConvertToEntity(file);
         fileEntity.setWorkspaceId(workspaceId);
+        fileEntity.setFileId(UUID.randomUUID().toString());
         return mapper.insert(fileEntity);
     }
 
@@ -55,6 +80,40 @@
                 .stream()
                 .map(this::entityConvertToDto)
                 .collect(Collectors.toList());
+    }
+
+    @Override
+    public PaginationData<MediaFileDTO> getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize) {
+        Page<MediaFileEntity> pageData = mapper.selectPage(
+                new Page<MediaFileEntity>(page, pageSize),
+                new LambdaQueryWrapper<MediaFileEntity>()
+                        .eq(MediaFileEntity::getWorkspaceId, workspaceId)
+                        .orderByDesc(MediaFileEntity::getId));
+        List<MediaFileDTO> records = pageData.getRecords()
+                .stream()
+                .map(this::entityConvertToDto)
+                .collect(Collectors.toList());
+
+        return new PaginationData<MediaFileDTO>(records, new Pagination(pageData));
+    }
+
+    @Override
+    public URL getObjectUrl(String workspaceId, String fileId) {
+        Optional<MediaFileEntity> mediaFileOpt = getMediaByFileId(workspaceId, fileId);
+        if (mediaFileOpt.isEmpty()) {
+            throw new IllegalArgumentException("{} doesn't exist.");
+        }
+
+        return ossService.getObjectUrl(OssConfiguration.bucket, mediaFileOpt.get().getObjectKey());
+    }
+
+    @Override
+    public List<MediaFileDTO> getFilesByWorkspaceAndJobId(String workspaceId, String jobId) {
+        return mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>()
+                .eq(MediaFileEntity::getWorkspaceId, workspaceId)
+                .eq(MediaFileEntity::getJobId, jobId))
+                .stream()
+                .map(this::entityConvertToDto).collect(Collectors.toList());
     }
 
     /**
@@ -72,6 +131,7 @@
                     .objectKey(file.getObjectKey())
                     .subFileType(file.getSubFileType())
                     .isOriginal(file.getExt().getIsOriginal())
+                    .jobId(file.getExt().getFlightId())
                     .drone(file.getExt().getSn())
                     .tinnyFingerprint(file.getExt().getTinnyFingerprint());
 
@@ -81,7 +141,7 @@
                     .mapToInt(Integer::intValue)
                     .toArray();
             Optional<DeviceDictionaryDTO> payloadDict = deviceDictionaryService
-                    .getOneDictionaryInfoByDomainTypeSubType(payloadModel[0], payloadModel[1], payloadModel[2]);
+                    .getOneDictionaryInfoByTypeSubType(DeviceDomainEnum.PAYLOAD.getVal(), payloadModel[1], payloadModel[2]);
             payloadDict.ifPresent(payload -> builder.payload(payload.getDeviceName()));
         }
         return builder.build();
@@ -97,12 +157,17 @@
 
         if (entity != null) {
             builder.fileName(entity.getFileName())
+                    .fileId(entity.getFileId())
                     .filePath(entity.getFilePath())
                     .isOriginal(entity.getIsOriginal())
+                    .fingerprint(entity.getFingerprint())
                     .objectKey(entity.getObjectKey())
                     .tinnyFingerprint(entity.getTinnyFingerprint())
                     .payload(entity.getPayload())
-                    .drone(entity.getDrone());
+                    .createTime(LocalDateTime.ofInstant(
+                            Instant.ofEpochMilli(entity.getCreateTime()), ZoneId.systemDefault()))
+                    .drone(entity.getDrone())
+                    .jobId(entity.getJobId());
 
         }
 

--
Gitblit v1.9.3