|
|
@@ -4,15 +4,16 @@ import cn.hutool.core.io.FileUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.tr.core.exception.TRExcCode;
|
|
|
-import cn.tr.core.strategy.LoginUserStrategy;
|
|
|
import cn.tr.core.utils.JsonUtils;
|
|
|
import cn.tr.core.utils.ValidationUtils;
|
|
|
import cn.tr.module.airway.annotation.Cipher;
|
|
|
import cn.tr.module.airway.controller.vo.BizVideoVO;
|
|
|
+import cn.tr.core.pojo.InitiateMultipartUploadBO;
|
|
|
import cn.tr.module.airway.dto.AliOSSInitiateMultipartUploadDTO;
|
|
|
import cn.tr.module.airway.dto.OssCallbackDTO;
|
|
|
import cn.tr.module.airway.enums.VideoStatus;
|
|
|
import cn.tr.core.utils.AESUtil;
|
|
|
+import cn.tr.module.airway.repository.BizDeviceRepository;
|
|
|
import cn.tr.module.airway.utils.ByteFormatUtils;
|
|
|
import cn.tr.module.api.sys.storage.SysStorageApi;
|
|
|
import cn.tr.module.api.sys.tenant.SysTenantApi;
|
|
|
@@ -51,6 +52,9 @@ public class BizVideoServiceImpl implements IBizVideoService {
|
|
|
@Autowired
|
|
|
private SysStorageApi storageApi;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private BizDeviceRepository deviceRepository;
|
|
|
+
|
|
|
@Override
|
|
|
public List<BizVideoVO> stdSelectBizVideoList(BizVideoQueryDTO query) {
|
|
|
return baseRepository.stdSelectBizVideoList(query);
|
|
|
@@ -152,25 +156,26 @@ public class BizVideoServiceImpl implements IBizVideoService {
|
|
|
videoPo = BizVideoMapper.INSTANCE.convertPO(parseBean);
|
|
|
videoPo.setTenantId(tenant.getTenantId());
|
|
|
String storagePathName=source.getHospitalCode()+"/"+parseBean.getDeviceCode()+"/"+parseBean.getFileName();
|
|
|
-
|
|
|
- String uploadId = storageApi.generationInitiateMultipartUploadAesEncrypt(storagePathName,password);
|
|
|
+ InitiateMultipartUploadBO uploadResult = storageApi.generationInitiateMultipartUploadAesEncrypt(storagePathName,password);
|
|
|
videoPo.setFileName(parseBean.getFileName());
|
|
|
videoPo.setStoragePathName(storagePathName);
|
|
|
- videoPo.setUploadId(uploadId);
|
|
|
+ videoPo.setUploadId(uploadResult.getAbsolutePath());
|
|
|
videoPo.setSuffix(FileUtil.getSuffix(parseBean.getFileName()));
|
|
|
+ videoPo.setAbsolutePath(uploadResult.getAbsolutePath());
|
|
|
videoPo.setStartTime(new Date());
|
|
|
videoPo.setStatus(VideoStatus.PENDING);
|
|
|
baseRepository.insert(videoPo);
|
|
|
String result = JsonUtils.toJsonString(
|
|
|
MapUtil.builder()
|
|
|
.put("callBackUrl", "https://airway.tuoren.com/api/ali/oss/callback")
|
|
|
- .put("uploadId", uploadId)
|
|
|
+ .put("uploadId", uploadResult.getUploadId())
|
|
|
.build()
|
|
|
);
|
|
|
return AESUtil.encryptData(result, password.getBytes());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void handleFileUploadCompletion(OssCallbackDTO callBack) {
|
|
|
BizVideoPO video = baseRepository.selectOne(new LambdaQueryWrapper<BizVideoPO>()
|
|
|
.eq(BizVideoPO::getUploadId, callBack.getUploadId())
|
|
|
@@ -180,6 +185,8 @@ public class BizVideoServiceImpl implements IBizVideoService {
|
|
|
}
|
|
|
video.setEndTime(new Date());
|
|
|
video.setStatus(VideoStatus.FINISHED);
|
|
|
+ video.setCoverImage(video.getAbsolutePath()+"?x-oss-process=video/snapshot,t_1000,f_png,w_720,h_1280,m_fast,ar_auto");
|
|
|
baseRepository.updateById(video);
|
|
|
+ deviceRepository.updateDeviceCount(callBack.getDeviceCode());
|
|
|
}
|
|
|
}
|