Commit 9a9f1f03 by gdj

oss增加workspaceId。

parent 5be1bd6a
...@@ -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());
......
...@@ -28,9 +28,11 @@ import com.dji.sdk.mqtt.state.TopicStateRequest; ...@@ -28,9 +28,11 @@ import com.dji.sdk.mqtt.state.TopicStateRequest;
import com.dji.sdk.mqtt.status.TopicStatusRequest; import com.dji.sdk.mqtt.status.TopicStatusRequest;
import com.dji.sdk.mqtt.status.TopicStatusResponse; import com.dji.sdk.mqtt.status.TopicStatusResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils;
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 org.springframework.util.StringUtils;
import java.math.RoundingMode; import java.math.RoundingMode;
...@@ -295,7 +297,7 @@ public class SDKDeviceService extends AbstractDeviceService { ...@@ -295,7 +297,7 @@ public class SDKDeviceService extends AbstractDeviceService {
DeviceDTO device = DeviceDTO.builder() DeviceDTO device = DeviceDTO.builder()
.deviceSn(request.getFrom()) .deviceSn(request.getFrom())
.firmwareVersion(request.getData().getFirmwareVersion()) .firmwareVersion(request.getData().getFirmwareVersion())
.firmwareStatus(request.getData().getNeedCompatibleStatus() ? .firmwareStatus(BooleanUtils.isTrue(request.getData().getNeedCompatibleStatus()) ?
DeviceFirmwareStatusEnum.UNKNOWN : DeviceFirmwareStatusEnum.CONSISTENT_UPGRADE) DeviceFirmwareStatusEnum.UNKNOWN : DeviceFirmwareStatusEnum.CONSISTENT_UPGRADE)
.build(); .build();
boolean isUpd = deviceService.updateDevice(device); boolean isUpd = deviceService.updateDevice(device);
......
...@@ -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)
......
...@@ -155,10 +155,11 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ ...@@ -155,10 +155,11 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ
file.getExt().setSn(device.getChildDeviceSn()); file.getExt().setSn(device.getChildDeviceSn());
// set path // set path
// todo? 是否需要修改?
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()))
......
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