Commit 3a2670ba by gdj

1.调整oss保存路径增加workspaceId。

2.修改航飞任务id为任务名称+时间。
parent c70a8def
...@@ -212,7 +212,8 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement ...@@ -212,7 +212,8 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement
} }
String firmwareId = UUID.randomUUID().toString(); String firmwareId = UUID.randomUUID().toString();
String objectKey = OssConfiguration.objectDirPrefix + File.separator + firmwareId + FirmwareFileProperties.FIRMWARE_FILE_SUFFIX; // String objectKey = OssConfiguration.objectDirPrefix + File.separator + firmwareId + FirmwareFileProperties.FIRMWARE_FILE_SUFFIX;
String objectKey = OssConfiguration.objectDirPrefix + "/" + workspaceId + "/" + firmwareId + FirmwareFileProperties.FIRMWARE_FILE_SUFFIX;
ossServiceContext.putObject(OssConfiguration.bucket, objectKey, file.getInputStream()); ossServiceContext.putObject(OssConfiguration.bucket, objectKey, file.getInputStream());
log.info("upload success. {}", file.getOriginalFilename()); log.info("upload success. {}", file.getOriginalFilename());
......
...@@ -115,7 +115,7 @@ public class FlightAreaFileServiceImpl implements IFlightAreaFileService { ...@@ -115,7 +115,7 @@ public class FlightAreaFileServiceImpl implements IFlightAreaFileService {
try (ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray())) { try (ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray())) {
String name = String.format("geofence_%s.json", org.springframework.util.DigestUtils.md5DigestAsHex(is)); String name = String.format("geofence_%s.json", org.springframework.util.DigestUtils.md5DigestAsHex(is));
is.reset(); is.reset();
String objectKey = OssConfiguration.objectDirPrefix + "/" + name; String objectKey = OssConfiguration.objectDirPrefix + "/" + workspaceId + "/" + name;
ossServiceContext.putObject(OssConfiguration.bucket, objectKey, is); ossServiceContext.putObject(OssConfiguration.bucket, objectKey, is);
return FlightAreaFileDTO.builder() return FlightAreaFileDTO.builder()
.name(name) .name(name)
......
...@@ -158,7 +158,7 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ ...@@ -158,7 +158,7 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ
String objectKey = file.getObjectKey(); String objectKey = file.getObjectKey();
file.setPath(objectKey.substring(Optional.of(objectKey.indexOf(OssConfiguration.objectDirPrefix)) file.setPath(objectKey.substring(Optional.of(objectKey.indexOf(OssConfiguration.objectDirPrefix))
.filter(index -> index > 0).map(index -> index++).orElse(0), .filter(index -> index > 0).map(index -> index++).orElse(0),
objectKey.lastIndexOf("/"))); objectKey.lastIndexOf("/")) + "/" + device.getWorkspaceId());
return fileService.saveFile(device.getWorkspaceId(), file) > 0; return fileService.saveFile(device.getWorkspaceId(), file) > 0;
} }
......
...@@ -28,7 +28,7 @@ public class StorageController implements IHttpStorageService { ...@@ -28,7 +28,7 @@ public class StorageController implements IHttpStorageService {
*/ */
@Override @Override
public HttpResultResponse<StsCredentialsResponse> getTemporaryCredential(String workspaceId, HttpServletRequest req, HttpServletResponse rsp) { public HttpResultResponse<StsCredentialsResponse> getTemporaryCredential(String workspaceId, HttpServletRequest req, HttpServletResponse rsp) {
StsCredentialsResponse stsCredentials = storageService.getSTSCredentials(); StsCredentialsResponse stsCredentials = storageService.getSTSCredentials(workspaceId);
return HttpResultResponse.success(stsCredentials); return HttpResultResponse.success(stsCredentials);
} }
} }
...@@ -14,5 +14,6 @@ public interface IStorageService { ...@@ -14,5 +14,6 @@ public interface IStorageService {
* @return temporary credentials object * @return temporary credentials object
*/ */
StsCredentialsResponse getSTSCredentials(); StsCredentialsResponse getSTSCredentials();
StsCredentialsResponse getSTSCredentials(String workspaceId);
} }
package com.dji.sample.storage.service.impl; package com.dji.sample.storage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dji.sample.component.oss.model.OssConfiguration; import com.dji.sample.component.oss.model.OssConfiguration;
import com.dji.sample.component.oss.service.impl.OssServiceContext; import com.dji.sample.component.oss.service.impl.OssServiceContext;
import com.dji.sample.manage.model.dto.DeviceDTO;
import com.dji.sample.manage.model.entity.DeviceEntity;
import com.dji.sample.manage.service.IDeviceRedisService;
import com.dji.sample.manage.service.IDeviceService;
import com.dji.sample.storage.service.IStorageService; import com.dji.sample.storage.service.IStorageService;
import com.dji.sdk.cloudapi.media.StorageConfigGet; import com.dji.sdk.cloudapi.media.StorageConfigGet;
import com.dji.sdk.cloudapi.media.api.AbstractMediaService; import com.dji.sdk.cloudapi.media.api.AbstractMediaService;
...@@ -12,6 +17,11 @@ import com.dji.sdk.mqtt.requests.TopicRequestsResponse; ...@@ -12,6 +17,11 @@ import com.dji.sdk.mqtt.requests.TopicRequestsResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.MessageHeaders;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Optional;
/** /**
* @author sean * @author sean
...@@ -24,6 +34,12 @@ public class StorageServiceImpl extends AbstractMediaService implements IStorage ...@@ -24,6 +34,12 @@ public class StorageServiceImpl extends AbstractMediaService implements IStorage
@Autowired @Autowired
private OssServiceContext ossService; private OssServiceContext ossService;
@Autowired
private IDeviceRedisService deviceRedisService;
@Autowired
private IDeviceService deviceService;
@Override @Override
public StsCredentialsResponse getSTSCredentials() { public StsCredentialsResponse getSTSCredentials() {
return new StsCredentialsResponse() return new StsCredentialsResponse()
...@@ -36,7 +52,37 @@ public class StorageServiceImpl extends AbstractMediaService implements IStorage ...@@ -36,7 +52,37 @@ public class StorageServiceImpl extends AbstractMediaService implements IStorage
} }
@Override @Override
public StsCredentialsResponse getSTSCredentials(String workspaceId) {
return new StsCredentialsResponse()
.setEndpoint(OssConfiguration.endpoint)
.setBucket(OssConfiguration.bucket)
.setCredentials(ossService.getCredentials())
.setProvider(OssConfiguration.provider)
.setObjectKeyPrefix(OssConfiguration.objectDirPrefix + "/" + workspaceId)
.setRegion(OssConfiguration.region);
}
@Override
public TopicRequestsResponse<MqttReply<StsCredentialsResponse>> storageConfigGet(TopicRequestsRequest<StorageConfigGet> response, MessageHeaders headers) { public TopicRequestsResponse<MqttReply<StsCredentialsResponse>> storageConfigGet(TopicRequestsRequest<StorageConfigGet> response, MessageHeaders headers) {
return new TopicRequestsResponse<MqttReply<StsCredentialsResponse>>().setData(MqttReply.success(getSTSCredentials()));
String gateWay = response.getGateway();
Optional<DeviceDTO> deviceOnline = deviceRedisService.getDeviceOnline(gateWay);
String workspaceId = null;
if (deviceOnline.isPresent()) {
workspaceId = deviceOnline.get().getWorkspaceId();
} else {
List<DeviceEntity> deviceEntities = deviceService.list(new LambdaQueryWrapper<DeviceEntity>().eq(DeviceEntity::getDeviceSn, gateWay));
if (!CollectionUtils.isEmpty(deviceEntities)) {
workspaceId = deviceEntities.get(0).getWorkspaceId();
}
}
StsCredentialsResponse stsCredentials;
if (StringUtils.hasText(workspaceId)) {
stsCredentials = getSTSCredentials(workspaceId);
} else {
stsCredentials = getSTSCredentials();
}
return new TopicRequestsResponse<MqttReply<StsCredentialsResponse>>().setData(MqttReply.success(stsCredentials));
} }
} }
...@@ -208,7 +208,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl ...@@ -208,7 +208,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
@Override @Override
public void importKmzFile(MultipartFile file, String workspaceId, String creator, String fileParentId) { public void importKmzFile(MultipartFile file, String workspaceId, String creator, String fileParentId) {
Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file); Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file, workspaceId);
if (waylineFileOpt.isEmpty()) { if (waylineFileOpt.isEmpty()) {
throw new RuntimeException("The file format is incorrect."); throw new RuntimeException("The file format is incorrect.");
} }
...@@ -354,7 +354,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl ...@@ -354,7 +354,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
return roots; return roots;
} }
private Optional<WaylineFileDTO> validKmzFile(MultipartFile file) { private Optional<WaylineFileDTO> validKmzFile(MultipartFile file, String workspaceId) {
String filename = file.getOriginalFilename(); String filename = file.getOriginalFilename();
if (Objects.nonNull(filename) && !filename.endsWith(WAYLINE_FILE_SUFFIX)) { if (Objects.nonNull(filename) && !filename.endsWith(WAYLINE_FILE_SUFFIX)) {
throw new RuntimeException("The file format is incorrect."); throw new RuntimeException("The file format is incorrect.");
...@@ -390,7 +390,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl ...@@ -390,7 +390,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
.droneModelKey(DeviceEnum.find(DeviceDomainEnum.DRONE, type, subType).getDevice()) .droneModelKey(DeviceEnum.find(DeviceDomainEnum.DRONE, type, subType).getDevice())
.payloadModelKeys(List.of(DeviceEnum.find(DeviceDomainEnum.PAYLOAD, payloadType, payloadSubType).getDevice())) .payloadModelKeys(List.of(DeviceEnum.find(DeviceDomainEnum.PAYLOAD, payloadType, payloadSubType).getDevice()))
// .objectKey(OssConfiguration.objectDirPrefix + File.separator + filename) // .objectKey(OssConfiguration.objectDirPrefix + File.separator + filename)
.objectKey(OssConfiguration.objectDirPrefix + "/" + filename) .objectKey(OssConfiguration.objectDirPrefix + "/" + workspaceId + "/" + filename)
.name(filename.substring(0, filename.lastIndexOf(WAYLINE_FILE_SUFFIX))) .name(filename.substring(0, filename.lastIndexOf(WAYLINE_FILE_SUFFIX)))
.sign(DigestUtils.md5DigestAsHex(file.getInputStream())) .sign(DigestUtils.md5DigestAsHex(file.getInputStream()))
.templateTypes(List.of(WaylineTypeEnum.find(templateType).getValue())) .templateTypes(List.of(WaylineTypeEnum.find(templateType).getValue()))
......
...@@ -94,13 +94,18 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin ...@@ -94,13 +94,18 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin
return Optional.empty(); return Optional.empty();
} }
// Immediate tasks, allocating time on the backend. // Immediate tasks, allocating time on the backend.
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = now.format(formatter);
String jobId = param.getName() + "-" + formattedDateTime+ "-" + UUID.randomUUID().toString().substring(0, 4);
WaylineJobEntity jobEntity = WaylineJobEntity.builder() WaylineJobEntity jobEntity = WaylineJobEntity.builder()
.name(param.getName()) .name(param.getName())
.dockSn(param.getDockSn()) .dockSn(param.getDockSn())
.fileId(param.getFileId()) .fileId(param.getFileId())
.username(username) .username(username)
.workspaceId(workspaceId) .workspaceId(workspaceId)
.jobId(UUID.randomUUID().toString()) .jobId(jobId)
.beginTime(beginTime) .beginTime(beginTime)
.endTime(endTime) .endTime(endTime)
.status(WaylineJobStatusEnum.PENDING.getVal()) .status(WaylineJobStatusEnum.PENDING.getVal())
...@@ -121,7 +126,10 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin ...@@ -121,7 +126,10 @@ public class WaylineJobServiceImpl extends ServiceImpl<IWaylineJobMapper, Waylin
return Optional.empty(); return Optional.empty();
} }
WaylineJobEntity jobEntity = this.dto2Entity(parentJobOpt.get()); WaylineJobEntity jobEntity = this.dto2Entity(parentJobOpt.get());
jobEntity.setJobId(UUID.randomUUID().toString()); LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = now.format(formatter);
jobEntity.setJobId(jobEntity.getName() + "-" + formattedDateTime+ "-" + UUID.randomUUID().toString().substring(0, 4));
jobEntity.setErrorCode(null); jobEntity.setErrorCode(null);
jobEntity.setCompletedTime(null); jobEntity.setCompletedTime(null);
jobEntity.setExecuteTime(null); jobEntity.setExecuteTime(null);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment