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/wayline/service/impl/WaylineFileServiceImpl.java | 112 ++++++++++++++++++++++++++++++++-----------------------
1 files changed, 65 insertions(+), 47 deletions(-)
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
index 3d25fb6..f12979a 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
@@ -5,25 +5,24 @@
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.AliyunOSSConfiguration;
-import com.dji.sample.component.oss.model.MinIOConfiguration;
-import com.dji.sample.component.oss.service.IOssService;
-import com.dji.sample.component.oss.service.impl.AliyunOssServiceImpl;
-import com.dji.sample.component.oss.service.impl.MinIOServiceImpl;
+import com.dji.sample.component.oss.model.OssConfiguration;
+import com.dji.sample.component.oss.service.impl.OssServiceContext;
import com.dji.sample.wayline.dao.IWaylineFileMapper;
-import com.dji.sample.wayline.model.WaylineFileDTO;
-import com.dji.sample.wayline.model.WaylineFileEntity;
-import com.dji.sample.wayline.model.WaylineQueryParam;
+import com.dji.sample.wayline.model.dto.WaylineFileDTO;
+import com.dji.sample.wayline.model.entity.WaylineFileEntity;
+import com.dji.sample.wayline.model.param.WaylineQueryParam;
import com.dji.sample.wayline.service.IWaylineFileService;
-import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;
import java.net.URL;
+import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -34,27 +33,16 @@
*/
@Service
@Transactional
-@Slf4j
public class WaylineFileServiceImpl implements IWaylineFileService {
@Autowired
private IWaylineFileMapper mapper;
- private IOssService ossService;
+ @Autowired
+ private OssServiceContext ossService;
@Autowired
- private void setOssService(@Autowired(required = false) AliyunOssServiceImpl aliyunOssService,
- @Autowired(required = false) MinIOServiceImpl minIOService) {
- if (AliyunOSSConfiguration.enable) {
- this.ossService = aliyunOssService;
- return;
- }
- if (MinIOConfiguration.enable) {
- this.ossService = minIOService;
- return;
- }
- log.error("ossService is null.");
- }
+ private OssConfiguration configuration;
@Override
public PaginationData<WaylineFileDTO> getWaylinesByParam(String workspaceId, WaylineQueryParam param) {
@@ -82,17 +70,22 @@
}
@Override
- public WaylineFileDTO getWaylineByWaylineId(String workspaceId, String waylineId) {
- return this.entityConvertToDTO(
- mapper.selectOne(
- new LambdaQueryWrapper<WaylineFileEntity>()
- .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
- .eq(WaylineFileEntity::getWaylineId, waylineId)));
+ public Optional<WaylineFileDTO> getWaylineByWaylineId(String workspaceId, String waylineId) {
+ return Optional.ofNullable(
+ this.entityConvertToDTO(
+ mapper.selectOne(
+ new LambdaQueryWrapper<WaylineFileEntity>()
+ .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+ .eq(WaylineFileEntity::getWaylineId, waylineId))));
}
@Override
- public URL getObjectUrl(String bucket, String objectKey) {
- return ossService.getObjectUrl(bucket, objectKey);
+ public URL getObjectUrl(String workspaceId, String waylineId) throws SQLException {
+ Optional<WaylineFileDTO> waylineOpt = this.getWaylineByWaylineId(workspaceId, waylineId);
+ if (waylineOpt.isEmpty()) {
+ throw new SQLException(waylineId + " does not exist.");
+ }
+ return ossService.getObjectUrl(configuration.getBucket(), waylineOpt.get().getObjectKey());
}
@Override
@@ -101,6 +94,13 @@
file.setWaylineId(UUID.randomUUID().toString());
file.setWorkspaceId(workspaceId);
+ byte[] object = ossService.getObject(configuration.getBucket(), metadata.getObjectKey());
+ if (object.length == 0) {
+ throw new RuntimeException("The file " + metadata.getObjectKey() +
+ " does not exist in the bucket[" + configuration.getBucket() + "].");
+ }
+
+ file.setSign(DigestUtils.md5DigestAsHex(object));
int insertId = mapper.insert(file);
return insertId > 0 ? file.getId() : insertId;
}
@@ -129,30 +129,48 @@
.collect(Collectors.toList());
}
+ @Override
+ public Boolean deleteByWaylineId(String workspaceId, String waylineId) {
+ Optional<WaylineFileDTO> waylineOpt = this.getWaylineByWaylineId(workspaceId, waylineId);
+ if (waylineOpt.isEmpty()) {
+ return true;
+ }
+ WaylineFileDTO wayline = waylineOpt.get();
+ boolean isDel = mapper.delete(new LambdaUpdateWrapper<WaylineFileEntity>()
+ .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+ .eq(WaylineFileEntity::getWaylineId, waylineId))
+ > 0;
+ if (!isDel) {
+ return false;
+ }
+ return ossService.deleteObject(configuration.getBucket(), wayline.getObjectKey());
+ }
+
/**
* Convert database entity objects into wayline data transfer object.
* @param entity
* @return
*/
private WaylineFileDTO entityConvertToDTO(WaylineFileEntity entity) {
- WaylineFileDTO.WaylineFileDTOBuilder builder = WaylineFileDTO.builder();
-
- if (entity != null) {
- builder.droneModelKey(entity.getDroneModelKey())
- .favorited(entity.getFavorited())
- .name(entity.getName())
- .payloadModelKeys(entity.getPayloadModelKeys() != null ?
- Arrays.asList(entity.getPayloadModelKeys().split(",")) : null)
- .templateTypes(Arrays.stream(entity.getTemplateTypes().split(","))
- .map(Integer::parseInt)
- .collect(Collectors.toList()))
- .username(entity.getUsername())
- .objectKey(entity.getObjectKey())
- .updateTime(entity.getUpdateTime())
- .waylineId(entity.getWaylineId());
+ if (entity == null) {
+ return null;
}
+ return WaylineFileDTO.builder()
+ .droneModelKey(entity.getDroneModelKey())
+ .favorited(entity.getFavorited())
+ .name(entity.getName())
+ .payloadModelKeys(entity.getPayloadModelKeys() != null ?
+ Arrays.asList(entity.getPayloadModelKeys().split(",")) : null)
+ .templateTypes(Arrays.stream(entity.getTemplateTypes().split(","))
+ .map(Integer::parseInt)
+ .collect(Collectors.toList()))
+ .username(entity.getUsername())
+ .objectKey(entity.getObjectKey())
+ .sign(entity.getSign())
+ .updateTime(entity.getUpdateTime())
+ .waylineId(entity.getWaylineId())
+ .build();
- return builder.build();
}
/**
--
Gitblit v1.9.3