Commit 9a9f1f03 by gdj

oss增加workspaceId。

parent 5be1bd6a
......@@ -212,7 +212,8 @@ public class DeviceFirmwareServiceImpl extends AbstractFirmwareService implement
}
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());
log.info("upload success. {}", file.getOriginalFilename());
......
......@@ -28,9 +28,11 @@ import com.dji.sdk.mqtt.state.TopicStateRequest;
import com.dji.sdk.mqtt.status.TopicStatusRequest;
import com.dji.sdk.mqtt.status.TopicStatusResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.MessageHeaders;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.RoundingMode;
......@@ -295,7 +297,7 @@ public class SDKDeviceService extends AbstractDeviceService {
DeviceDTO device = DeviceDTO.builder()
.deviceSn(request.getFrom())
.firmwareVersion(request.getData().getFirmwareVersion())
.firmwareStatus(request.getData().getNeedCompatibleStatus() ?
.firmwareStatus(BooleanUtils.isTrue(request.getData().getNeedCompatibleStatus()) ?
DeviceFirmwareStatusEnum.UNKNOWN : DeviceFirmwareStatusEnum.CONSISTENT_UPGRADE)
.build();
boolean isUpd = deviceService.updateDevice(device);
......
......@@ -115,7 +115,7 @@ public class FlightAreaFileServiceImpl implements IFlightAreaFileService {
try (ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray())) {
String name = String.format("geofence_%s.json", org.springframework.util.DigestUtils.md5DigestAsHex(is));
is.reset();
String objectKey = OssConfiguration.objectDirPrefix + "/" + name;
String objectKey = OssConfiguration.objectDirPrefix + "/" + workspaceId + "/" + name;
ossServiceContext.putObject(OssConfiguration.bucket, objectKey, is);
return FlightAreaFileDTO.builder()
.name(name)
......
......@@ -155,10 +155,11 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ
file.getExt().setSn(device.getChildDeviceSn());
// set path
// todo? 是否需要修改?
String objectKey = file.getObjectKey();
file.setPath(objectKey.substring(Optional.of(objectKey.indexOf(OssConfiguration.objectDirPrefix))
.filter(index -> index > 0).map(index -> index++).orElse(0),
objectKey.lastIndexOf("/")));
objectKey.lastIndexOf("/")) + "/" + device.getWorkspaceId());
return fileService.saveFile(device.getWorkspaceId(), file) > 0;
}
......
......@@ -28,7 +28,7 @@ public class StorageController implements IHttpStorageService {
*/
@Override
public HttpResultResponse<StsCredentialsResponse> getTemporaryCredential(String workspaceId, HttpServletRequest req, HttpServletResponse rsp) {
StsCredentialsResponse stsCredentials = storageService.getSTSCredentials();
StsCredentialsResponse stsCredentials = storageService.getSTSCredentials(workspaceId);
return HttpResultResponse.success(stsCredentials);
}
}
......@@ -14,5 +14,6 @@ public interface IStorageService {
* @return temporary credentials object
*/
StsCredentialsResponse getSTSCredentials();
StsCredentialsResponse getSTSCredentials(String workspaceId);
}
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.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.sdk.cloudapi.media.StorageConfigGet;
import com.dji.sdk.cloudapi.media.api.AbstractMediaService;
......@@ -12,6 +17,11 @@ import com.dji.sdk.mqtt.requests.TopicRequestsResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.MessageHeaders;
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
......@@ -24,6 +34,12 @@ public class StorageServiceImpl extends AbstractMediaService implements IStorage
@Autowired
private OssServiceContext ossService;
@Autowired
private IDeviceRedisService deviceRedisService;
@Autowired
private IDeviceService deviceService;
@Override
public StsCredentialsResponse getSTSCredentials() {
return new StsCredentialsResponse()
......@@ -36,7 +52,37 @@ public class StorageServiceImpl extends AbstractMediaService implements IStorage
}
@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) {
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
@Override
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()) {
throw new RuntimeException("The file format is incorrect.");
}
......@@ -354,7 +354,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
return roots;
}
private Optional<WaylineFileDTO> validKmzFile(MultipartFile file) {
private Optional<WaylineFileDTO> validKmzFile(MultipartFile file, String workspaceId) {
String filename = file.getOriginalFilename();
if (Objects.nonNull(filename) && !filename.endsWith(WAYLINE_FILE_SUFFIX)) {
throw new RuntimeException("The file format is incorrect.");
......@@ -390,7 +390,7 @@ public class WaylineFileServiceImpl extends ServiceImpl<IWaylineFileMapper, Wayl
.droneModelKey(DeviceEnum.find(DeviceDomainEnum.DRONE, type, subType).getDevice())
.payloadModelKeys(List.of(DeviceEnum.find(DeviceDomainEnum.PAYLOAD, payloadType, payloadSubType).getDevice()))
// .objectKey(OssConfiguration.objectDirPrefix + File.separator + filename)
.objectKey(OssConfiguration.objectDirPrefix + "/" + filename)
.objectKey(OssConfiguration.objectDirPrefix + "/" + workspaceId + "/" + filename)
.name(filename.substring(0, filename.lastIndexOf(WAYLINE_FILE_SUFFIX)))
.sign(DigestUtils.md5DigestAsHex(file.getInputStream()))
.templateTypes(List.of(WaylineTypeEnum.find(templateType).getValue()))
......
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