diff --git a/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java b/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java new file mode 100644 index 0000000..319e9cd --- /dev/null +++ b/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java @@ -0,0 +1,37 @@ +package cn.axzo.oss.common.utils; + +import org.apache.commons.lang3.StringUtils; + +/** + * @Author xudawei + * @Date 2024/4/8 + * @Description url处理 + **/ +public class UrlUtil { + + + public static String HTTP = "http:"; + public static String HTTPS = "https:"; + + /** + * http的url替换成https + */ + public static String httpToHttps(String str) { + if (StringUtils.isBlank(str)) { + return str; + } + if (str.startsWith(HTTP)) { + return HTTPS + str.substring(str.indexOf(HTTP) + HTTP.length()); + } + return str; + } + + + public static void main(String[] args) { + String str = "http://axzo-test.oss-cn-chengdu.aliyuncs.com/reportCenter/reportCenter_test"; + String str1 = "https://baidu.com"; + System.out.println(httpToHttps(str)); + System.out.println(httpToHttps(str1)); + } + +} diff --git a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/AppChannelBucketDao.java b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/AppChannelBucketDao.java index f6d864b..6878bc1 100644 --- a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/AppChannelBucketDao.java +++ b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/AppChannelBucketDao.java @@ -3,6 +3,7 @@ package cn.axzo.oss.dal.repository; import cn.axzo.oss.dal.entity.AppChannelBucket; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Set; /** *

@@ -32,5 +33,5 @@ public interface AppChannelBucketDao extends IService { /** * 通过appChannelBucketNo集合,获取文件渠道桶信息 */ - List getByAppChannelBucketNos(List appChannelBucketNos); + List getByAppChannelBucketNos(Set appChannelBucketNos); } diff --git a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/FileBusinessSceneDao.java b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/FileBusinessSceneDao.java index 92d478a..293be8e 100644 --- a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/FileBusinessSceneDao.java +++ b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/FileBusinessSceneDao.java @@ -4,6 +4,7 @@ import cn.axzo.oss.dal.entity.FileBusinessScene; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Set; /** *

@@ -28,5 +29,5 @@ public interface FileBusinessSceneDao extends IService { /** * 根据bucketNo与场景,获取批量FileBusinessScene对象 */ - List queryByBucketNoAndScene(List bucketNoList, String bizScen); + List queryByBucketNoAndScene(Set bucketNoList, String bizScen); } diff --git a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/AppChannelBucketDaoImpl.java b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/AppChannelBucketDaoImpl.java index 7a57f68..36fadf0 100644 --- a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/AppChannelBucketDaoImpl.java +++ b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/AppChannelBucketDaoImpl.java @@ -8,6 +8,7 @@ import cn.axzo.oss.dal.repository.AppChannelBucketDao; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.util.List; import java.util.Objects; +import java.util.Set; import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; @@ -57,7 +58,7 @@ public class AppChannelBucketDaoImpl extends * 通过appChannelBucketNo集合,获取文件渠道桶信息 */ @Override - public List getByAppChannelBucketNos(List appChannelBucketNos) { + public List getByAppChannelBucketNos(Set appChannelBucketNos) { if (CollectionUtils.isEmpty(appChannelBucketNos)) { return Lists.newArrayList(); } diff --git a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/FileBusinessSceneDaoImpl.java b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/FileBusinessSceneDaoImpl.java index 659e406..92b5279 100644 --- a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/FileBusinessSceneDaoImpl.java +++ b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/FileBusinessSceneDaoImpl.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Repository; import org.springframework.util.CollectionUtils; import java.util.List; +import java.util.Set; /** *

@@ -41,12 +42,12 @@ public class FileBusinessSceneDaoImpl extends * 根据bucketNo与场景,获取批量FileBusinessScene对象 */ @Override - public List queryByBucketNoAndScene(List bucketNoList, String bizScene) { - if (CollectionUtils.isEmpty(bucketNoList) || StringUtils.isBlank(bizScene)) { + public List queryByBucketNoAndScene(Set bucketNoList, String bizScene) { + if (CollectionUtils.isEmpty(bucketNoList)) { return Lists.newArrayList(); } return lambdaQuery().in(FileBusinessScene::getAppChannelBucketNo, bucketNoList) - .eq(FileBusinessScene::getBusinessScene,bizScene) + .eq(StringUtils.isNotBlank(bizScene), FileBusinessScene::getBusinessScene, StringUtils.isNotBlank(bizScene) ? bizScene : StringUtils.EMPTY) .eq(FileBusinessScene::getIsDelete, IsDeleteEnum.NO.getCode()).list(); } } diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/AppChannelBucketManager.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/AppChannelBucketManager.java index 559e471..fa90331 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/AppChannelBucketManager.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/AppChannelBucketManager.java @@ -2,6 +2,7 @@ package cn.axzo.oss.manager.api; import cn.axzo.oss.dal.entity.AppChannelBucket; import java.util.List; +import java.util.Set; /** * @author: zhangran @@ -27,5 +28,5 @@ public interface AppChannelBucketManager { /** * 通过appChannelBucketNo集合,获取文件渠道桶信息 */ - List getByAppChannelBucketNos(List appChannelBucketNos); + List getByAppChannelBucketNos(Set appChannelBucketNos); } diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileBusinessSceneManager.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileBusinessSceneManager.java index 2ab776e..4eb53ff 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileBusinessSceneManager.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileBusinessSceneManager.java @@ -3,6 +3,7 @@ package cn.axzo.oss.manager.api; import cn.axzo.oss.dal.entity.FileBusinessScene; import java.util.List; +import java.util.Set; /** * @author: zhangran @@ -23,5 +24,5 @@ public interface FileBusinessSceneManager { /** * 指定appcode文件业务场景 */ - List queryByBucketNoAndScene(List bucketNoList, String bizScene); + List queryByBucketNoAndScene(Set bucketNoList, String bizScene); } diff --git a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/AppChannelBucketManagerImpl.java b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/AppChannelBucketManagerImpl.java index 0e385ff..24b5fea 100644 --- a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/AppChannelBucketManagerImpl.java +++ b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/AppChannelBucketManagerImpl.java @@ -9,6 +9,7 @@ import cn.axzo.oss.dal.repository.AppChannelBucketDao; import cn.axzo.oss.manager.api.AppChannelBucketManager; import cn.axzo.oss.manager.api.FileChannelManager; import java.util.List; +import java.util.Set; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; @@ -66,7 +67,7 @@ public class AppChannelBucketManagerImpl implements AppChannelBucketManager { * 通过appChannelBucketNo集合,获取文件渠道桶信息 */ @Override - public List getByAppChannelBucketNos(List appChannelBucketNos) { + public List getByAppChannelBucketNos(Set appChannelBucketNos) { if (CollectionUtils.isEmpty(appChannelBucketNos)) { return Lists.newArrayList(); } diff --git a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileBusinessSceneManagerImpl.java b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileBusinessSceneManagerImpl.java index 5a110b3..9746d2c 100644 --- a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileBusinessSceneManagerImpl.java +++ b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileBusinessSceneManagerImpl.java @@ -13,6 +13,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; +import java.util.Set; /** * @author: zhangran @@ -45,8 +46,8 @@ public class FileBusinessSceneManagerImpl implements FileBusinessSceneManager { * 根据bucketNo与场景,获取批量FileBusinessScene对象 */ @Override - public List queryByBucketNoAndScene(List bucketNoList, String bizScene) { - if (CollectionUtils.isEmpty(bucketNoList) || StringUtils.isBlank(bizScene)) { + public List queryByBucketNoAndScene(Set bucketNoList, String bizScene) { + if (CollectionUtils.isEmpty(bucketNoList)) { return Lists.newArrayList(); } return fileBusinessSceneDao diff --git a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java index b04cfcb..7cacd2b 100644 --- a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java +++ b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java @@ -7,6 +7,7 @@ import cn.axzo.oss.common.enums.FileUploadTypeEnum; import cn.axzo.oss.common.enums.StorageUnitEnum; import cn.axzo.oss.common.exception.BizException; import cn.axzo.oss.common.utils.BeanConvertUtil; +import cn.axzo.oss.common.utils.UrlUtil; import cn.axzo.oss.integration.s3.AliOssService; import cn.axzo.oss.integration.s3.HuaWeiCloudService; import cn.axzo.oss.manager.api.FileManager; @@ -171,17 +172,17 @@ public class FileManagerImpl implements FileManager { TemporarySignatureResponse response = huaWeiCloudService.uploadSignUrl(bucketName, key, expireSecond, contentType); return SignUrlUploadVo.builder() - .signUrl(response.getSignedUrl()) + .signUrl(UrlUtil.httpToHttps(response.getSignedUrl())) .host(response.getActualSignedRequestHeaders().get(HUAWEI_CLOUD_SIGNURL_UPLOAD_HOST_KEY)) .contentType(response.getActualSignedRequestHeaders().get(HUAWEI_CLOUD_SIGNURL_UPLOAD_CONTENT_TYPE_KEY)) .channelCode(channelCode) - .downloadSignUrl(this.downloadHuaweiSignUrl(bucketName, key, expireSecond, bucketType, fileName)) + .downloadSignUrl(UrlUtil.httpToHttps(this.downloadHuaweiSignUrl(bucketName, key, expireSecond, bucketType, fileName))) .build(); case OSS:// 阿里云 return SignUrlUploadVo.builder() - .signUrl(aliOssService.uploadSignUrl(bucketName, key, fileName,expireSecond)) + .signUrl(UrlUtil.httpToHttps(aliOssService.uploadSignUrl(bucketName, key, fileName,expireSecond))) .channelCode(channelCode) - .downloadSignUrl(this.downloadAliyunSignUrl(bucketName, key, expireSecond, bucketType, fileName)) + .downloadSignUrl(UrlUtil.httpToHttps(this.downloadAliyunSignUrl(bucketName, key, expireSecond, bucketType, fileName))) .build(); default: BizException.error(CodeEnum.CHANNEL_TYPE_NOT_EXIST); diff --git a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java index d164560..850b12a 100644 --- a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java +++ b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java @@ -15,6 +15,7 @@ import cn.axzo.oss.common.enums.FileStatusEnum; import cn.axzo.oss.common.enums.FileUploadTypeEnum; import cn.axzo.oss.common.exception.BizException; import cn.axzo.oss.common.utils.JsonUtil; +import cn.axzo.oss.common.utils.UrlUtil; import cn.axzo.oss.common.utils.Utility; import cn.axzo.oss.dal.entity.AppChannelBucket; import cn.axzo.oss.dal.entity.File; @@ -464,7 +465,7 @@ public class FileServiceImpl implements FileService { private Map buildBucketTypeMap(List fileList) { Map bucketTypeMap = Maps.newHashMap(); if (!CollectionUtils.isEmpty(fileList)) { - List appChannelBucketList = this.appChannelBucketManager.getByAppChannelBucketNos(fileList.stream().map(File::getAppChannelBucketNo).collect(Collectors.toList())); + List appChannelBucketList = this.appChannelBucketManager.getByAppChannelBucketNos(fileList.stream().map(File::getAppChannelBucketNo).collect(Collectors.toSet())); if (!CollectionUtils.isEmpty(appChannelBucketList)) { bucketTypeMap = appChannelBucketList.stream().collect(Collectors.toMap(AppChannelBucket::getAppChannelBucketNo, AppChannelBucket::getBucketType)); } @@ -837,17 +838,18 @@ public class FileServiceImpl implements FileService { } //通过appChannelBucketNo集合,获取文件渠道桶信息 - List appChannelBucketList = appChannelBucketManager.getByAppChannelBucketNos(fileList.stream().map(File::getAppChannelBucketNo).collect(Collectors.toList())); + List appChannelBucketList = appChannelBucketManager.getByAppChannelBucketNos(fileList.stream().map(File::getAppChannelBucketNo).collect(Collectors.toSet())); Map bucketTypeMap = appChannelBucketList.stream().collect(Collectors.toMap(AppChannelBucket::getAppChannelBucketNo, AppChannelBucket::getBucketType, (x, y) -> y)); - List fileBusinessSceneList = fileBusinessSceneManager.queryByBucketNoAndScene(fileList.stream().map(File::getAppChannelBucketNo).collect(Collectors.toList()), dto.getBizScene()); + List fileBusinessSceneList = fileBusinessSceneManager.queryByBucketNoAndScene(fileList.stream().map(File::getAppChannelBucketNo).collect(Collectors.toSet()), dto.getBizScene()); Map bizSceneExpireMap = fileBusinessSceneList.stream().collect(Collectors.toMap(FileBusinessScene::getAppChannelBucketNo, FileBusinessScene::getDownloadExpiration, (x, y) -> y)); List responseList = fileList.stream().map(item -> { Long expire = bizSceneExpireMap.get(item.getAppChannelBucketNo()); // bucket下的key String tgtFileKey = Utility.generateFileKey(item.getDirectory(), item.getFileUuid(), item.getFileFormat()); - switch (BucketTypeEnum.getByCode(bucketTypeMap.get(item.getAppChannelBucketNo()))) { + String bucketType = StringUtils.isNotBlank(bucketTypeMap.get(item.getAppChannelBucketNo())) ? bucketTypeMap.get(item.getAppChannelBucketNo()) : BucketTypeEnum.PRIVATE_BUCKET.getCode(); + switch (BucketTypeEnum.getByCode(bucketType)) { case PUBLIC_BUCKET: String url = this.fileManager.fetchDownloadUrl(item.getBucketName(), tgtFileKey, item.getChannelCode()); return SignUrlDownloadResponse.builder() @@ -857,7 +859,7 @@ public class FileServiceImpl implements FileService { case PRIVATE_BUCKET: String signUrl = this.fileManager.signUrlDownload(item.getBucketName(), tgtFileKey, Objects.nonNull(expire) ? expire : SIGN_URL_DOWNLOAD_EXPIRE_SECOND , item.getChannelCode(), item.getFileName()); return SignUrlDownloadResponse.builder() - .signUrl(signUrl) + .signUrl(UrlUtil.httpToHttps(signUrl)) .fileKey(item.getFileUuid()) .build(); default: @@ -945,12 +947,12 @@ public class FileServiceImpl implements FileService { this.saveOssFile(fileUploadConfig, dto.getFileName(), fileFormat, uuid, signUrlUpload.getDownloadSignUrl(), Utility.getMd5(signUrlUpload.getDownloadSignUrl()), expiration); return SignUrlUploadResponse.builder() - .signUrl(signUrlUpload.getSignUrl()) + .signUrl(UrlUtil.httpToHttps(signUrlUpload.getSignUrl())) .fileKey(uuid) .contentType(signUrlUpload.getContentType()) .host(signUrlUpload.getHost()) .channelCode(signUrlUpload.getChannelCode()) - .downloadSignUrl(signUrlUpload.getDownloadSignUrl()) + .downloadSignUrl(UrlUtil.httpToHttps(signUrlUpload.getDownloadSignUrl())) .build(); }