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/manage/service/impl/WorkspaceServiceImpl.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 53 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/dji/sample/manage/service/impl/WorkspaceServiceImpl.java b/src/main/java/com/dji/sample/manage/service/impl/WorkspaceServiceImpl.java
index d6ed3ab..b90d262 100644
--- a/src/main/java/com/dji/sample/manage/service/impl/WorkspaceServiceImpl.java
+++ b/src/main/java/com/dji/sample/manage/service/impl/WorkspaceServiceImpl.java
@@ -1,14 +1,24 @@
 package com.dji.sample.manage.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.dji.sample.common.error.CommonErrorEnum;
+import com.dji.sample.component.mqtt.model.*;
+import com.dji.sample.component.mqtt.service.IMessageSenderService;
 import com.dji.sample.manage.dao.IWorkspaceMapper;
 import com.dji.sample.manage.model.dto.WorkspaceDTO;
 import com.dji.sample.manage.model.entity.WorkspaceEntity;
+import com.dji.sample.manage.model.receiver.OrganizationGetReceiver;
 import com.dji.sample.manage.service.IWorkspaceService;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.integration.annotation.ServiceActivator;
+import org.springframework.integration.mqtt.support.MqttHeaders;
+import org.springframework.messaging.MessageHeaders;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 
+import java.util.Map;
 import java.util.Optional;
 
 @Service
@@ -18,10 +28,11 @@
     @Autowired
     private IWorkspaceMapper mapper;
 
-    @Override
-    public Optional<WorkspaceDTO> getWorkspaceById(int id) {
-        return Optional.ofNullable(entityConvertToDto(mapper.selectById(id)));
-    }
+    @Autowired
+    private ObjectMapper objectMapper;
+
+    @Autowired
+    private IMessageSenderService messageSenderService;
 
     @Override
     public Optional<WorkspaceDTO> getWorkspaceByWorkspaceId(String workspaceId) {
@@ -31,22 +42,57 @@
                                 .eq(WorkspaceEntity::getWorkspaceId, workspaceId))));
     }
 
+    @Override
+    public Optional<WorkspaceDTO> getWorkspaceNameByBindCode(String bindCode) {
+        return Optional.ofNullable(entityConvertToDto(
+                mapper.selectOne(new LambdaQueryWrapper<WorkspaceEntity>().eq(WorkspaceEntity::getBindCode, bindCode))));
+    }
+
+    @Override
+    @ServiceActivator(inputChannel = ChannelName.INBOUND_REQUESTS_AIRPORT_ORGANIZATION_GET, outputChannel = ChannelName.OUTBOUND)
+    public void replyOrganizationGet(CommonTopicReceiver receiver, MessageHeaders headers) {
+        OrganizationGetReceiver organizationGet = objectMapper.convertValue(receiver.getData(), OrganizationGetReceiver.class);
+        CommonTopicResponse.CommonTopicResponseBuilder<RequestsReply> builder = CommonTopicResponse.<RequestsReply>builder()
+                .tid(receiver.getTid())
+                .bid(receiver.getBid())
+                .method(RequestsMethodEnum.AIRPORT_ORGANIZATION_GET.getMethod())
+                .timestamp(System.currentTimeMillis());
+
+        String topic = headers.get(MqttHeaders.RECEIVED_TOPIC).toString() + TopicConst._REPLY_SUF;
+
+        if (!StringUtils.hasText(organizationGet.getDeviceBindingCode())) {
+            builder.data(RequestsReply.error(CommonErrorEnum.ILLEGAL_ARGUMENT));
+            messageSenderService.publish(topic, builder.build());
+            return;
+        }
+
+        Optional<WorkspaceDTO> workspace = this.getWorkspaceNameByBindCode(organizationGet.getDeviceBindingCode());
+        if (workspace.isEmpty()) {
+            builder.data(RequestsReply.error(CommonErrorEnum.GET_ORGANIZATION_FAILED));
+            messageSenderService.publish(topic, builder.build());
+            return;
+        }
+
+        builder.data(RequestsReply.success(Map.of(MapKeyConst.ORGANIZATION_NAME, workspace.get().getWorkspaceName())));
+        messageSenderService.publish(topic, builder.build());
+    }
+
     /**
      * Convert database entity objects into workspace data transfer object.
      * @param entity
      * @return
      */
     private WorkspaceDTO entityConvertToDto(WorkspaceEntity entity) {
-        WorkspaceDTO.WorkspaceDTOBuilder builder = WorkspaceDTO.builder();
         if (entity == null) {
-            return builder.build();
+            return null;
         }
-        return builder
+        return WorkspaceDTO.builder()
                 .id(entity.getId())
                 .workspaceId(entity.getWorkspaceId())
                 .platformName(entity.getPlatformName())
                 .workspaceDesc(entity.getWorkspaceDesc())
                 .workspaceName(entity.getWorkspaceName())
+                .bindCode(entity.getBindCode())
                 .build();
     }
 }

--
Gitblit v1.9.3