From 9b2eedb85d53ca32610c32c6e50b5230ab3b16cf Mon Sep 17 00:00:00 2001
From: sean.zhou <sean.zhou@dji.com>
Date: Fri, 22 Jul 2022 20:16:03 +0800
Subject: [PATCH] V1.1.0 for dock

---
 src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java b/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java
index f7758d8..0e92b0b 100644
--- a/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java
+++ b/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java
@@ -1,13 +1,22 @@
 package com.dji.sample.media.service.impl;
 
+import com.dji.sample.common.model.ResponseResult;
+import com.dji.sample.component.mqtt.model.*;
+import com.dji.sample.component.mqtt.service.IMessageSenderService;
+import com.dji.sample.media.model.FileUploadCallback;
 import com.dji.sample.media.model.FileUploadDTO;
 import com.dji.sample.media.model.MediaFileDTO;
 import com.dji.sample.media.service.IFileService;
 import com.dji.sample.media.service.IMediaService;
+import com.dji.sample.wayline.model.dto.WaylineJobDTO;
+import com.dji.sample.wayline.service.IWaylineJobService;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.integration.annotation.ServiceActivator;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -20,6 +29,15 @@
 
     @Autowired
     private IFileService fileService;
+
+    @Autowired
+    private IWaylineJobService waylineJobService;
+
+    @Autowired
+    private ObjectMapper objectMapper;
+
+    @Autowired
+    private IMessageSenderService messageSenderService;
 
     @Override
     public Boolean fastUpload(String workspaceId, String fingerprint) {
@@ -38,4 +56,42 @@
                 .map(MediaFileDTO::getTinnyFingerprint)
                 .collect(Collectors.toList());
     }
+
+    @Override
+    public List<String> getExistTinyFingerprints(String workspaceId, List<String> tinyFingerprints) {
+        List<String> tinyFingerprintList = this.getAllTinyFingerprintsByWorkspaceId(workspaceId);
+        return tinyFingerprints
+                .stream()
+                .filter(tinyFingerprintList::contains)
+                .collect(Collectors.toList());
+
+    }
+
+    @Override
+    @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_FILE_UPLOAD_CALLBACK, outputChannel = ChannelName.OUTBOUND)
+    public void handleFileUploadCallBack(CommonTopicReceiver receiver) {
+        FileUploadCallback callback = objectMapper.convertValue(receiver.getData(), FileUploadCallback.class);
+
+        String topic = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT + receiver.getGateway()
+                + TopicConst.EVENTS_SUF + TopicConst._REPLY_SUF;
+        CommonTopicResponse<Object> data = CommonTopicResponse.builder()
+                .timestamp(System.currentTimeMillis())
+                .method(EventsMethodEnum.FILE_UPLOAD_CALLBACK.getMethod())
+                .data(ResponseResult.success())
+                .tid(receiver.getTid())
+                .bid(receiver.getBid())
+                .build();
+        if (callback.getResult() == ResponseResult.CODE_SUCCESS) {
+            String jobId = callback.getFile().getExt().getFlightId();
+            Optional<WaylineJobDTO> jobOpt = waylineJobService.getJobByJobId(jobId);
+            if (jobOpt.isPresent()) {
+                int id = fileService.saveFile(jobOpt.get().getWorkspaceId(), callback.getFile());
+                if (id <= 0) {
+                    data.setData(ResponseResult.error());
+                }
+            }
+        }
+
+        messageSenderService.publish(topic, data);
+    }
 }

--
Gitblit v1.9.3