Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-oss
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-oss
Commits
8f440bf8
Commit
8f440bf8
authored
Mar 17, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
49b4a5d1
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
165 additions
and
20 deletions
+165
-20
oss_sync.sh
+21
-0
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiOssController.java
+2
-2
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiOssService.java
+1
-1
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssServiceImpl.java
+8
-6
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssStsServiceImpl.java
+7
-2
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssFeignClient.java
+4
-2
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssStsFeignClient.java
+1
-2
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiOssFeignFallbackFactory.java
+1
-1
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiBatchSaveFilesRequest.java
+5
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiOssExportAppointmentExcelRequest.java
+5
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiUploadFileRequest.java
+5
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiGetStsTokenResponse.java
+5
-0
yd-oss-service/src/main/java/com/yd/oss/service/dto/OssUploadFileReqDto.java
+5
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/OssService.java
+1
-1
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
+12
-3
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/OssProviderServiceImpl.java
+8
-0
yd-oss-service/src/main/java/com/yd/oss/service/utils/OssUtils.java
+74
-0
No files found.
oss_sync.sh
0 → 100644
View file @
8f440bf8
#!/bin/bash
# 源端(使用默认配置,无需凭证)
SRC_BUCKET
=
"yd-ali-oss"
# 目标端(香港)
DST_BUCKET
=
"csf-hk"
DST_ENDPOINT
=
"oss-cn-hongkong.aliyuncs.com"
DST_ACCESS_KEY_ID
=
"LTAI5tHS7WBNxN7CwKcWC1Jh"
DST_ACCESS_KEY_SECRET
=
"GaJi5KHqcLOf2lBIFlPKBKDKCECUjo"
# 同步选项
UPDATE_FLAG
=
"--update"
# 只同步新增和修改过的文件
LOG_FILE
=
"/root/oss_sync.log"
echo
"
$(
date
'+%Y-%m-%d %H:%M:%S'
)
- Start sync"
>>
${
LOG_FILE
}
ossutil sync oss://
${
SRC_BUCKET
}
/jpg/ oss://
${
DST_BUCKET
}
/pc/prod/
\
-e
${
DST_ENDPOINT
}
-i
${
DST_ACCESS_KEY_ID
}
-k
${
DST_ACCESS_KEY_SECRET
}
\
${
UPDATE_FLAG
}
>>
${
LOG_FILE
}
2>&1
echo
"
$(
date
'+%Y-%m-%d %H:%M:%S'
)
- Sync finished"
>>
${
LOG_FILE
}
\ No newline at end of file
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiOssController.java
View file @
8f440bf8
...
@@ -35,8 +35,8 @@ public class ApiOssController implements ApiOssFeignClient {
...
@@ -35,8 +35,8 @@ public class ApiOssController implements ApiOssFeignClient {
* @return
* @return
*/
*/
@Override
@Override
public
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
)
{
public
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
,
String
projectBizId
)
{
return
apiOssService
.
uploadFile
(
file
,
""
,
""
,
""
);
return
apiOssService
.
uploadFile
(
file
,
""
,
""
,
""
,
projectBizId
);
}
}
/**
/**
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiOssService.java
View file @
8f440bf8
...
@@ -11,7 +11,7 @@ import javax.servlet.http.HttpServletResponse;
...
@@ -11,7 +11,7 @@ import javax.servlet.http.HttpServletResponse;
import
java.util.List
;
import
java.util.List
;
public
interface
ApiOssService
{
public
interface
ApiOssService
{
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
,
String
bucket
,
String
provider
,
String
uploadUser
);
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
,
String
bucket
,
String
provider
,
String
uploadUser
,
String
projectBizId
);
Result
<
ApiUploadResponse
>
uploadFileBody
(
MultipartFile
file
,
ApiUploadFileRequest
request
);
Result
<
ApiUploadResponse
>
uploadFileBody
(
MultipartFile
file
,
ApiUploadFileRequest
request
);
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssServiceImpl.java
View file @
8f440bf8
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
import
com.alibaba.cloud.commons.lang.StringUtils
;
import
com.alibaba.cloud.commons.lang.StringUtils
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiOssService
;
import
com.yd.oss.api.service.ApiOssService
;
import
com.yd.oss.feign.request.ApiUploadFileRequest
;
import
com.yd.oss.feign.request.ApiUploadFileRequest
;
...
@@ -42,17 +43,18 @@ public class ApiOssServiceImpl implements ApiOssService {
...
@@ -42,17 +43,18 @@ public class ApiOssServiceImpl implements ApiOssService {
* @return
* @return
*/
*/
@Override
@Override
public
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
,
String
bucket
,
String
provider
,
String
uploadUser
)
{
public
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
,
String
bucket
,
String
provider
,
String
uploadUser
,
String
projectBizId
)
{
if
(
StringUtils
.
isBlank
(
projectBizId
))
{
throw
new
BusinessException
(
"项目ID不能为空"
);
}
ApiUploadResponse
response
=
new
ApiUploadResponse
();
ApiUploadResponse
response
=
new
ApiUploadResponse
();
try
{
try
{
// 如果指定了提供商,则切换
// 切换服务商
if
(
StringUtils
.
isNotBlank
(
provider
))
{
ossService
.
switchProviderByProjectId
(
projectBizId
);
ossService
.
switchProvider
(
provider
);
}
// 上传文件
// 上传文件
OssUploadFileResDto
ossUploadFileDto
=
ossService
.
uploadFile
(
file
.
getInputStream
(),
file
.
getOriginalFilename
(),
OssUploadFileResDto
ossUploadFileDto
=
ossService
.
uploadFile
(
file
.
getInputStream
(),
file
.
getOriginalFilename
(),
bucket
,
uploadUser
,
FileUtil
.
getFileType
(
file
.
getOriginalFilename
()));
bucket
,
uploadUser
,
FileUtil
.
getFileType
(
file
.
getOriginalFilename
())
,
projectBizId
);
// 获取上传结果(包含文件信息和访问URL)
// 获取上传结果(包含文件信息和访问URL)
UploadResult
result
=
ossService
.
getUploadResult
(
ossUploadFileDto
.
getFileKey
(),
Duration
.
ofHours
(
1
));
UploadResult
result
=
ossService
.
getUploadResult
(
ossUploadFileDto
.
getFileKey
(),
Duration
.
ofHours
(
1
));
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssStsServiceImpl.java
View file @
8f440bf8
...
@@ -13,6 +13,7 @@ import com.yd.common.enums.CommonEnum;
...
@@ -13,6 +13,7 @@ import com.yd.common.enums.CommonEnum;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.oss.api.service.ApiOssStsService
;
import
com.yd.oss.api.service.ApiOssStsService
;
import
com.yd.oss.service.utils.OssUtils
;
import
com.yd.oss.feign.dto.ApiOssFileDto
;
import
com.yd.oss.feign.dto.ApiOssFileDto
;
import
com.yd.oss.feign.request.ApiBatchSaveFilesRequest
;
import
com.yd.oss.feign.request.ApiBatchSaveFilesRequest
;
import
com.yd.oss.feign.response.ApiBatchSaveFilesResponse
;
import
com.yd.oss.feign.response.ApiBatchSaveFilesResponse
;
...
@@ -26,7 +27,6 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -26,7 +27,6 @@ import lombok.extern.slf4j.Slf4j;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.io.FilenameUtils
;
import
org.apache.commons.io.FilenameUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -36,7 +36,6 @@ import java.net.URL;
...
@@ -36,7 +36,6 @@ import java.net.URL;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Slf4j
@Slf4j
@Service
@Service
...
@@ -74,6 +73,9 @@ public class ApiOssStsServiceImpl implements ApiOssStsService {
...
@@ -74,6 +73,9 @@ public class ApiOssStsServiceImpl implements ApiOssStsService {
@Autowired
@Autowired
private
IOssFileService
iOssFileService
;
private
IOssFileService
iOssFileService
;
@Autowired
private
OssUtils
ossUtils
;
/**
/**
* getStsToken如何根据传入的projectBizId查询对应服务商然后切换对应OSS服务商
* getStsToken如何根据传入的projectBizId查询对应服务商然后切换对应OSS服务商
* @param projectBizId
* @param projectBizId
...
@@ -127,6 +129,9 @@ public class ApiOssStsServiceImpl implements ApiOssStsService {
...
@@ -127,6 +129,9 @@ public class ApiOssStsServiceImpl implements ApiOssStsService {
tokenResponse
.
setEndpoint
(
endpoint
);
tokenResponse
.
setEndpoint
(
endpoint
);
tokenResponse
.
setMaxSize
(
maxSize
);
tokenResponse
.
setMaxSize
(
maxSize
);
//获取分片文件路径的前缀
String
filePrefix
=
ossUtils
.
getShardFilePrefix
(
projectBizId
,
""
);
tokenResponse
.
setFilePrefix
(
filePrefix
);
return
Result
.
success
(
tokenResponse
);
return
Result
.
success
(
tokenResponse
);
}
catch
(
ClientException
e
)
{
}
catch
(
ClientException
e
)
{
log
.
error
(
"获取STS凭证失败"
,
e
);
log
.
error
(
"获取STS凭证失败"
,
e
);
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssFeignClient.java
View file @
8f440bf8
...
@@ -11,6 +11,7 @@ import org.springframework.http.MediaType;
...
@@ -11,6 +11,7 @@ import org.springframework.http.MediaType;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.validation.constraints.NotBlank
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -24,8 +25,9 @@ public interface ApiOssFeignClient {
...
@@ -24,8 +25,9 @@ public interface ApiOssFeignClient {
* @param file 上传的文件
* @param file 上传的文件
* @return
* @return
*/
*/
@PostMapping
(
"/upload"
)
@PostMapping
(
value
=
"/upload"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
Result
<
ApiUploadResponse
>
uploadFile
(
@RequestParam
(
"file"
)
MultipartFile
file
);
Result
<
ApiUploadResponse
>
uploadFile
(
@RequestPart
(
"file"
)
MultipartFile
file
,
@RequestParam
(
"projectBizId"
)
String
projectBizId
);
/**
/**
* 上传文件 - body入参方式(新,推荐)
* 上传文件 - body入参方式(新,推荐)
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssStsFeignClient.java
View file @
8f440bf8
...
@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping;
...
@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.GetMapping;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.validation.constraints.NotBlank
;
/**
/**
* OSS-分片服务信息Feign客户端
* OSS-分片服务信息Feign客户端
...
@@ -25,7 +24,7 @@ public interface ApiOssStsFeignClient {
...
@@ -25,7 +24,7 @@ public interface ApiOssStsFeignClient {
* @return
* @return
*/
*/
@GetMapping
(
"/sts-token"
)
@GetMapping
(
"/sts-token"
)
Result
<
ApiGetStsTokenResponse
>
getStsToken
(
@
NotBlank
(
message
=
"项目ID不能为空"
)
@
RequestParam
(
value
=
"projectBizId"
)
String
projectBizId
);
Result
<
ApiGetStsTokenResponse
>
getStsToken
(
@RequestParam
(
value
=
"projectBizId"
)
String
projectBizId
);
/**
/**
* 批量保存文件列表
* 批量保存文件列表
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiOssFeignFallbackFactory.java
View file @
8f440bf8
...
@@ -23,7 +23,7 @@ public class ApiOssFeignFallbackFactory implements FallbackFactory<ApiOssFeignCl
...
@@ -23,7 +23,7 @@ public class ApiOssFeignFallbackFactory implements FallbackFactory<ApiOssFeignCl
public
ApiOssFeignClient
create
(
Throwable
cause
)
{
public
ApiOssFeignClient
create
(
Throwable
cause
)
{
return
new
ApiOssFeignClient
()
{
return
new
ApiOssFeignClient
()
{
@Override
@Override
public
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
)
{
public
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
,
String
projectBizId
)
{
return
null
;
return
null
;
}
}
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiBatchSaveFilesRequest.java
View file @
8f440bf8
...
@@ -23,6 +23,11 @@ public class ApiBatchSaveFilesRequest {
...
@@ -23,6 +23,11 @@ public class ApiBatchSaveFilesRequest {
private
String
projectBizId
;
private
String
projectBizId
;
/**
/**
* 项目类型类型(默认pc)
*/
private
String
projectType
=
"pc"
;
/**
* 对象类型
* 对象类型
*/
*/
private
String
objectType
;
private
String
objectType
;
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiOssExportAppointmentExcelRequest.java
View file @
8f440bf8
...
@@ -23,4 +23,9 @@ public class ApiOssExportAppointmentExcelRequest {
...
@@ -23,4 +23,9 @@ public class ApiOssExportAppointmentExcelRequest {
* 预约信息主表唯一业务ID
* 预约信息主表唯一业务ID
*/
*/
private
String
appointmentBizId
;
private
String
appointmentBizId
;
/**
* 项目ID
*/
private
String
projectBizId
=
"project_nKULQBH1Gw9Ma8YM"
;
}
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiUploadFileRequest.java
View file @
8f440bf8
...
@@ -8,6 +8,11 @@ import javax.validation.constraints.NotBlank;
...
@@ -8,6 +8,11 @@ import javax.validation.constraints.NotBlank;
public
class
ApiUploadFileRequest
{
public
class
ApiUploadFileRequest
{
/**
/**
* 项目ID
*/
private
String
projectBizId
;
/**
* 对象类型
* 对象类型
*/
*/
private
String
objectType
;
private
String
objectType
;
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiGetStsTokenResponse.java
View file @
8f440bf8
...
@@ -18,4 +18,9 @@ public class ApiGetStsTokenResponse {
...
@@ -18,4 +18,9 @@ public class ApiGetStsTokenResponse {
private
String
endpoint
;
private
String
endpoint
;
private
Long
maxSize
;
private
Long
maxSize
;
/**
* 文件前缀
*/
private
String
filePrefix
;
}
}
yd-oss-service/src/main/java/com/yd/oss/service/dto/OssUploadFileReqDto.java
View file @
8f440bf8
...
@@ -15,6 +15,11 @@ import lombok.NoArgsConstructor;
...
@@ -15,6 +15,11 @@ import lombok.NoArgsConstructor;
public
class
OssUploadFileReqDto
{
public
class
OssUploadFileReqDto
{
/**
/**
* 项目ID
*/
private
String
projectBizId
;
/**
* 对象类型
* 对象类型
*/
*/
private
String
objectType
;
private
String
objectType
;
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/OssService.java
View file @
8f440bf8
...
@@ -16,7 +16,7 @@ import java.time.Duration;
...
@@ -16,7 +16,7 @@ import java.time.Duration;
public
interface
OssService
{
public
interface
OssService
{
// 上传文件
// 上传文件
OssUploadFileResDto
uploadFile
(
InputStream
inputStream
,
String
fileName
,
String
bucketName
,
String
uploadUser
,
String
type
);
OssUploadFileResDto
uploadFile
(
InputStream
inputStream
,
String
fileName
,
String
bucketName
,
String
uploadUser
,
String
type
,
String
projectBizId
);
OssUploadFileResDto
uploadFileBody
(
MultipartFile
file
,
OssUploadFileReqDto
reqDto
);
OssUploadFileResDto
uploadFileBody
(
MultipartFile
file
,
OssUploadFileReqDto
reqDto
);
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
View file @
8f440bf8
...
@@ -24,6 +24,7 @@ import com.yd.oss.service.service.IOssFileService;
...
@@ -24,6 +24,7 @@ import com.yd.oss.service.service.IOssFileService;
import
com.yd.oss.service.service.IOssProviderService
;
import
com.yd.oss.service.service.IOssProviderService
;
import
com.yd.oss.service.service.OssService
;
import
com.yd.oss.service.service.OssService
;
import
com.yd.oss.service.utils.FileUtil
;
import
com.yd.oss.service.utils.FileUtil
;
import
com.yd.oss.service.utils.OssUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -62,6 +63,9 @@ public class AliYunOssServiceImpl implements OssService {
...
@@ -62,6 +63,9 @@ public class AliYunOssServiceImpl implements OssService {
@Autowired
@Autowired
private
OssProvider
currentProvider
;
// 注入当前提供商
private
OssProvider
currentProvider
;
// 注入当前提供商
@Autowired
private
OssUtils
ossUtils
;
/**
/**
* 上传文件
* 上传文件
* @param inputStream 文件流
* @param inputStream 文件流
...
@@ -73,7 +77,7 @@ public class AliYunOssServiceImpl implements OssService {
...
@@ -73,7 +77,7 @@ public class AliYunOssServiceImpl implements OssService {
*/
*/
@Override
@Override
public
OssUploadFileResDto
uploadFile
(
InputStream
inputStream
,
String
fileName
,
public
OssUploadFileResDto
uploadFile
(
InputStream
inputStream
,
String
fileName
,
String
bucketName
,
String
uploadUser
,
String
type
)
{
String
bucketName
,
String
uploadUser
,
String
type
,
String
projectBizId
)
{
//获取Security上下文当前用户的登录信息
//获取Security上下文当前用户的登录信息
AuthUserDto
authUserDto
=
SecurityUtil
.
getCurrentLoginUser
();
AuthUserDto
authUserDto
=
SecurityUtil
.
getCurrentLoginUser
();
OssUploadFileResDto
ossUploadFileDto
=
new
OssUploadFileResDto
();
OssUploadFileResDto
ossUploadFileDto
=
new
OssUploadFileResDto
();
...
@@ -89,7 +93,8 @@ public class AliYunOssServiceImpl implements OssService {
...
@@ -89,7 +93,8 @@ public class AliYunOssServiceImpl implements OssService {
ByteArrayInputStream
byteArrayInputStream
=
new
ByteArrayInputStream
(
fileData
);
ByteArrayInputStream
byteArrayInputStream
=
new
ByteArrayInputStream
(
fileData
);
// 生成文件key
// 生成文件key
String
fileKey
=
FileUtil
.
generateFileKey
(
fileName
,
type
);
// String fileKey = FileUtil.generateFileKey(fileName,type);
String
fileKey
=
ossUtils
.
getFilePrefix
(
projectBizId
,
""
,
fileName
,
type
);
String
actualBucket
=
StringUtils
.
isNotBlank
(
bucketName
)
?
bucketName
:
defaultBucket
;
String
actualBucket
=
StringUtils
.
isNotBlank
(
bucketName
)
?
bucketName
:
defaultBucket
;
String
fileType
=
FileUtil
.
getFileType
(
fileName
);
String
fileType
=
FileUtil
.
getFileType
(
fileName
);
...
@@ -181,6 +186,9 @@ public class AliYunOssServiceImpl implements OssService {
...
@@ -181,6 +186,9 @@ public class AliYunOssServiceImpl implements OssService {
*/
*/
@Override
@Override
public
OssUploadFileResDto
uploadFileBody
(
MultipartFile
file
,
OssUploadFileReqDto
reqDto
)
{
public
OssUploadFileResDto
uploadFileBody
(
MultipartFile
file
,
OssUploadFileReqDto
reqDto
)
{
// 切换服务商
switchProviderByProjectId
(
reqDto
.
getProjectBizId
());
//获取Security上下文当前用户的登录信息
//获取Security上下文当前用户的登录信息
AuthUserDto
authUserDto
=
SecurityUtil
.
getCurrentLoginUser
();
AuthUserDto
authUserDto
=
SecurityUtil
.
getCurrentLoginUser
();
OssUploadFileResDto
ossUploadFileDto
=
new
OssUploadFileResDto
();
OssUploadFileResDto
ossUploadFileDto
=
new
OssUploadFileResDto
();
...
@@ -214,7 +222,8 @@ public class AliYunOssServiceImpl implements OssService {
...
@@ -214,7 +222,8 @@ public class AliYunOssServiceImpl implements OssService {
ByteArrayInputStream
byteArrayInputStream
=
new
ByteArrayInputStream
(
fileData
);
ByteArrayInputStream
byteArrayInputStream
=
new
ByteArrayInputStream
(
fileData
);
// 生成文件key
// 生成文件key
String
fileKey
=
FileUtil
.
generateFileKey
(
fileName
,
type
);
// String fileKey = FileUtil.generateFileKey(fileName,type);
String
fileKey
=
ossUtils
.
getFilePrefix
(
reqDto
.
getProjectBizId
(),
""
,
fileName
,
type
);
//默认阿里云的桶名
//默认阿里云的桶名
String
actualBucket
=
defaultBucket
;
String
actualBucket
=
defaultBucket
;
//获取文件扩展名
//获取文件扩展名
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/OssProviderServiceImpl.java
View file @
8f440bf8
package
com
.
yd
.
oss
.
service
.
service
.
impl
;
package
com
.
yd
.
oss
.
service
.
service
.
impl
;
import
com.alibaba.cloud.commons.lang.StringUtils
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.model.OssProvider
;
...
@@ -122,6 +123,13 @@ public class OssProviderServiceImpl extends ServiceImpl<OssProviderMapper, OssPr
...
@@ -122,6 +123,13 @@ public class OssProviderServiceImpl extends ServiceImpl<OssProviderMapper, OssPr
*/
*/
@Override
@Override
public
OssProvider
getProviderByProjectId
(
String
projectBizId
)
{
public
OssProvider
getProviderByProjectId
(
String
projectBizId
)
{
if
(
StringUtils
.
isBlank
(
projectBizId
))
{
//项目ID空值,查询默认的服务商
return
baseMapper
.
selectOne
(
new
LambdaQueryWrapper
<
OssProvider
>()
.
eq
(
OssProvider:
:
getIsDefault
,
1
)
.
last
(
" limit 1 "
)
);
}
return
baseMapper
.
selectOne
(
new
LambdaQueryWrapper
<
OssProvider
>()
return
baseMapper
.
selectOne
(
new
LambdaQueryWrapper
<
OssProvider
>()
.
eq
(
OssProvider:
:
getProjectBizId
,
projectBizId
)
.
eq
(
OssProvider:
:
getProjectBizId
,
projectBizId
)
.
last
(
" limit 1 "
)
.
last
(
" limit 1 "
)
...
...
yd-oss-service/src/main/java/com/yd/oss/service/utils/OssUtils.java
0 → 100644
View file @
8f440bf8
package
com
.
yd
.
oss
.
service
.
utils
;
import
com.yd.common.result.Result
;
import
com.yd.user.feign.client.sysproject.ApiSysProjectFeignClient
;
import
com.yd.user.feign.response.sysproject.ApiSysProjectDetailResponse
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.core.env.Environment
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
@Component
public
class
OssUtils
{
@Autowired
private
Environment
environment
;
@Autowired
private
ApiSysProjectFeignClient
apiSysProjectFeignClient
;
/**
* 获取通用文件路径的前缀
* @param projectBizId 项目ID
* @param env 环境变量(prod,test)如果不传系统获取
* @param originalFileName 原始文件名
* @param fileType(文件类型,文件扩展名)
* @return
*/
public
String
getFilePrefix
(
String
projectBizId
,
String
env
,
String
originalFileName
,
String
fileType
)
{
String
projectType
=
"pc"
;
if
(
StringUtils
.
isNotBlank
(
projectBizId
))
{
//通过项目ID查询项目类型
Result
<
ApiSysProjectDetailResponse
>
result
=
apiSysProjectFeignClient
.
detail
(
projectBizId
);
if
(
result
.
getData
()
!=
null
)
{
ApiSysProjectDetailResponse
response
=
result
.
getData
();
projectType
=
StringUtils
.
isNotBlank
(
response
.
getProjectType
())
?
response
.
getProjectType
()
:
"pc"
;
}
}
if
(
StringUtils
.
isBlank
(
env
))
{
env
=
getActiveEnv
();
}
return
projectType
+
"/"
+
env
+
"/"
+
FileUtil
.
generateFileKey
(
originalFileName
,
fileType
);
}
/**
* 获取分片文件路径的前缀
* @param projectBizId
* @param env
* @param env
* @return
*/
public
String
getShardFilePrefix
(
String
projectBizId
,
String
env
)
{
String
projectType
=
"pc"
;
if
(
StringUtils
.
isNotBlank
(
projectBizId
))
{
//通过项目ID查询项目类型
Result
<
ApiSysProjectDetailResponse
>
result
=
apiSysProjectFeignClient
.
detail
(
projectBizId
);
if
(
result
.
getData
()
!=
null
)
{
ApiSysProjectDetailResponse
response
=
result
.
getData
();
projectType
=
StringUtils
.
isNotBlank
(
response
.
getProjectType
())
?
response
.
getProjectType
()
:
"pc"
;
}
}
if
(
StringUtils
.
isBlank
(
env
))
{
env
=
getActiveEnv
();
}
return
projectType
+
"/"
+
env
+
"/large_file/uploads/"
+
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy/MM/dd/"
))
+
"/"
;
}
private
String
getActiveEnv
()
{
String
[]
activeProfiles
=
environment
.
getActiveProfiles
();
return
activeProfiles
.
length
>
0
?
activeProfiles
[
0
]
:
"prod"
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment