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
c5866e47
Commit
c5866e47
authored
Mar 18, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into prod
parents
a26c6db3
35a8bfc3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
42 changed files
with
874 additions
and
52 deletions
+874
-52
oss_sync.sh
+21
-0
yd-oss-api/Dockerfile
+2
-1
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/controller/ApiOssFileController.java
+2
-2
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiOssStsController.java
+46
-0
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiOssFileService.java
+1
-1
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/ApiOssStsService.java
+12
-0
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiExcelServiceImpl.java
+19
-5
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssFileServiceImpl.java
+13
-4
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssServiceImpl.java
+3
-6
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssStsServiceImpl.java
+236
-0
yd-oss-api/yd-oss-api.iml
+13
-9
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/ApiOssFileFeignClient.java
+2
-1
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssStsFeignClient.java
+35
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/dto/ApiOssFileDto.java
+23
-0
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/fallback/ApiOssFileFeignFallbackFactory.java
+1
-1
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiOssStsFeignFallbackFactory.java
+33
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiBatchSaveFilesRequest.java
+57
-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/ApiBatchSaveFilesResponse.java
+11
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiGetStsTokenResponse.java
+26
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiOssFileResponse.java
+27
-0
yd-oss-service/pom.xml
+12
-0
yd-oss-service/src/main/java/com/yd/oss/service/config/DynamicOssClientProxy.java
+32
-0
yd-oss-service/src/main/java/com/yd/oss/service/config/OssClientFactory.java
+55
-0
yd-oss-service/src/main/java/com/yd/oss/service/config/OssConfig.java
+7
-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/model/OssFile.java
+12
-0
yd-oss-service/src/main/java/com/yd/oss/service/model/OssProvider.java
+12
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/AppointmentExcelService.java
+2
-1
yd-oss-service/src/main/java/com/yd/oss/service/service/IOssProviderService.java
+4
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/OssService.java
+9
-2
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
+0
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AppointmentExcelServiceImpl.java
+4
-3
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/ExcelExportServiceImpl.java
+2
-1
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/OssProviderServiceImpl.java
+30
-0
yd-oss-service/src/main/java/com/yd/oss/service/utils/OssUtils.java
+74
-0
yd-oss-service/yd-oss-service.iml
+13
-9
No files found.
oss_sync.sh
0 → 100644
View file @
c5866e47
#!/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/Dockerfile
View file @
c5866e47
...
...
@@ -36,5 +36,5 @@ FROM base-builder
COPY
target/yd-oss-api-1.0-SNAPSHOT-exec.jar /home/app/yd-oss-api.jar
# 执行命令启动jar,并设置JVM内存参数
ENTRYPOINT
["java", "-Xmx
256m", "-Xms128
m", "-jar", "/home/app/yd-oss-api.jar"]
ENTRYPOINT
["java", "-Xmx
1024m", "-Xms512
m", "-jar", "/home/app/yd-oss-api.jar"]
EXPOSE
9106
\ No newline at end of file
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiOssController.java
View file @
c5866e47
...
...
@@ -35,8 +35,8 @@ public class ApiOssController implements ApiOssFeignClient {
* @return
*/
@Override
public
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
)
{
return
apiOssService
.
uploadFile
(
file
,
""
,
""
,
""
);
public
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
,
String
projectBizId
)
{
return
apiOssService
.
uploadFile
(
file
,
""
,
""
,
""
,
projectBizId
);
}
/**
...
...
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiOssFileController.java
View file @
c5866e47
...
...
@@ -43,7 +43,7 @@ public class ApiOssFileController implements ApiOssFileFeignClient {
* @return
*/
@Override
public
Result
del
(
String
fileBizId
)
{
return
apiOssFileService
.
del
(
fileBizId
);
public
Result
del
(
String
fileBizId
,
String
projectBizId
)
{
return
apiOssFileService
.
del
(
fileBizId
,
projectBizId
);
}
}
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiOssStsController.java
0 → 100644
View file @
c5866e47
package
com
.
yd
.
oss
.
api
.
controller
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiOssStsService
;
import
com.yd.oss.feign.client.ApiOssStsFeignClient
;
import
com.yd.oss.feign.request.ApiBatchSaveFilesRequest
;
import
com.yd.oss.feign.response.ApiBatchSaveFilesResponse
;
import
com.yd.oss.feign.response.ApiGetStsTokenResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* OSS-分片接口信息
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping
(
"/sts"
)
@Validated
public
class
ApiOssStsController
implements
ApiOssStsFeignClient
{
@Autowired
private
ApiOssStsService
apiOssStsService
;
/**
* 获取STS凭证
* @return
*/
public
Result
<
ApiGetStsTokenResponse
>
getStsToken
(
String
projectBizId
){
return
apiOssStsService
.
getStsToken
(
projectBizId
);
}
/**
* 批量保存文件列表
* @return
*/
@Override
public
Result
<
ApiBatchSaveFilesResponse
>
batchSaveFiles
(
ApiBatchSaveFilesRequest
request
)
{
return
apiOssStsService
.
batchSaveFiles
(
request
);
}
}
\ No newline at end of file
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiOssFileService.java
View file @
c5866e47
...
...
@@ -11,7 +11,7 @@ import java.util.List;
public
interface
ApiOssFileService
{
Result
<
List
<
ApiOssFileListResponse
>>
list
(
ApiOssFileListRequest
request
);
Result
del
(
String
fileBizId
);
Result
del
(
String
fileBizId
,
String
projectBizId
);
Result
updateByMaterial
(
List
<
RelObjectMaterial
>
relObjectMaterialList
,
List
<
ApiRelMaterialDto
>
materialDtoList
);
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiOssService.java
View file @
c5866e47
...
...
@@ -11,7 +11,7 @@ import javax.servlet.http.HttpServletResponse;
import
java.util.List
;
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
);
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/ApiOssStsService.java
0 → 100644
View file @
c5866e47
package
com
.
yd
.
oss
.
api
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.request.ApiBatchSaveFilesRequest
;
import
com.yd.oss.feign.response.ApiBatchSaveFilesResponse
;
import
com.yd.oss.feign.response.ApiGetStsTokenResponse
;
public
interface
ApiOssStsService
{
Result
<
ApiGetStsTokenResponse
>
getStsToken
(
String
projectBizId
);
Result
<
ApiBatchSaveFilesResponse
>
batchSaveFiles
(
ApiBatchSaveFilesRequest
request
);
}
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiExcelServiceImpl.java
View file @
c5866e47
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
import
com.aliyun.oss.OSS
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiExcelService
;
...
...
@@ -10,10 +11,9 @@ import com.yd.oss.feign.response.ApiOssExportAppointmentExcelResponse;
import
com.yd.oss.feign.dto.ExportParam
;
import
com.yd.oss.feign.dto.ExportResult
;
import
com.yd.oss.feign.result.ImportResult
;
import
com.yd.oss.service.service.AppointmentExcelService
;
import
com.yd.oss.service.service.ExcelExportService
;
import
com.yd.oss.service.service.ExcelImportService
;
import
com.yd.oss.service.service.ExcelParserService
;
import
com.yd.oss.service.config.OssClientFactory
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.service.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -41,6 +41,12 @@ public class ApiExcelServiceImpl implements ApiExcelService {
@Autowired
private
ExcelImportService
excelImportService
;
@Autowired
private
OssClientFactory
ossClientFactory
;
@Autowired
private
IOssProviderService
ossProviderService
;
/**
* 导出excel-预约信息
* @param request
...
...
@@ -49,9 +55,17 @@ public class ApiExcelServiceImpl implements ApiExcelService {
@Override
public
Result
<
ApiOssExportAppointmentExcelResponse
>
exportAppointment
(
ApiOssExportAppointmentExcelRequest
request
)
{
ApiOssExportAppointmentExcelResponse
response
=
new
ApiOssExportAppointmentExcelResponse
();
// 根据项目ID获取服务商信息
OssProvider
provider
=
ossProviderService
.
getProviderByProjectId
(
request
.
getProjectBizId
());
if
(
provider
==
null
)
{
log
.
error
(
"未找到项目对应的OSS服务商,projectBizId={}"
,
request
.
getProjectBizId
());
return
Result
.
fail
(
"未找到对应的OSS服务商配置"
);
}
OSS
tempClient
=
ossClientFactory
.
createOssClient
(
provider
);
String
url
=
appointmentExcelService
.
exportAppointment
(
request
.
getData
(),
request
.
getTemplateType
(),
request
.
getAppointmentBizId
());
request
.
getAppointmentBizId
(),
request
.
getProjectBizId
());
response
.
setUrl
(
url
);
return
Result
.
success
(
response
);
}
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssFileServiceImpl.java
View file @
c5866e47
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.auth.core.utils.SecurityUtil
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.exception.BusinessException
;
...
...
@@ -12,6 +14,7 @@ import com.yd.oss.service.dto.OssFileDto;
import
com.yd.oss.service.model.OssFile
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.yd.oss.service.service.IOssFileService
;
import
com.yd.oss.service.service.OssService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -28,6 +31,9 @@ public class ApiOssFileServiceImpl implements ApiOssFileService {
@Autowired
private
IOssFileService
iOssFileService
;
@Autowired
private
OssService
ossService
;
/**
* 列表查询-文件元数据信息
* @param request
...
...
@@ -45,10 +51,13 @@ public class ApiOssFileServiceImpl implements ApiOssFileService {
* @return
*/
@Override
public
Result
del
(
String
fileBizId
)
{
Result
<
OssFile
>
result
=
checkOssFileIsExist
(
fileBizId
);
OssFile
ossFile
=
result
.
getData
();
iOssFileService
.
removeById
(
ossFile
.
getId
());
public
Result
del
(
String
fileBizId
,
String
projectBizId
)
{
// 获取当前操作人
AuthUserDto
authUser
=
SecurityUtil
.
getCurrentLoginUser
();
String
operator
=
authUser
!=
null
?
authUser
.
getUsername
()
:
"system"
;
// 调用OSS服务删除文件(包含OSS删除和数据库物理删除)
ossService
.
deleteFileByBizId
(
fileBizId
,
operator
);
return
Result
.
success
();
}
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssServiceImpl.java
View file @
c5866e47
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
import
com.alibaba.cloud.commons.lang.StringUtils
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiOssService
;
import
com.yd.oss.feign.request.ApiUploadFileRequest
;
...
...
@@ -42,17 +43,13 @@ public class ApiOssServiceImpl implements ApiOssService {
* @return
*/
@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
)
{
ApiUploadResponse
response
=
new
ApiUploadResponse
();
try
{
// 如果指定了提供商,则切换
if
(
StringUtils
.
isNotBlank
(
provider
))
{
ossService
.
switchProvider
(
provider
);
}
// 上传文件
OssUploadFileResDto
ossUploadFileDto
=
ossService
.
uploadFile
(
file
.
getInputStream
(),
file
.
getOriginalFilename
(),
bucket
,
uploadUser
,
FileUtil
.
getFileType
(
file
.
getOriginalFilename
()));
bucket
,
uploadUser
,
FileUtil
.
getFileType
(
file
.
getOriginalFilename
())
,
projectBizId
);
// 获取上传结果(包含文件信息和访问URL)
UploadResult
result
=
ossService
.
getUploadResult
(
ossUploadFileDto
.
getFileKey
(),
Duration
.
ofHours
(
1
));
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiOssStsServiceImpl.java
0 → 100644
View file @
c5866e47
This diff is collapsed.
Click to expand it.
yd-oss-api/yd-oss-api.iml
View file @
c5866e47
...
...
@@ -84,7 +84,6 @@
<orderEntry
type=
"library"
name=
"Maven: org.springframework.cloud:spring-cloud-starter:3.1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.security:spring-security-rsa:1.0.10.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.bouncycastle:bcpkix-jdk15on:1.68"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.bouncycastle:bcprov-jdk15on:1.69"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-databind:2.13.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-core:2.13.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.2"
level=
"project"
/>
...
...
@@ -135,8 +134,6 @@
<orderEntry
type=
"library"
name=
"Maven: org.springdoc:springdoc-openapi-webmvc-core:1.7.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springdoc:springdoc-openapi-common:1.7.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.swagger.core.v3:swagger-core:2.2.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: jakarta.activation:jakarta.activation-api:1.2.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.swagger.core.v3:swagger-annotations:2.2.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.swagger.core.v3:swagger-models:2.2.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.webjars:swagger-ui:4.18.2"
level=
"project"
/>
...
...
@@ -196,22 +193,30 @@
<orderEntry
type=
"library"
name=
"Maven: io.github.openfeign:feign-slf4j:11.8"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun.oss:aliyun-sdk-oss:3.15.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.httpcomponents:httpclient:4.5.13"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.httpcomponents:httpcore:4.4.15"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jdom:jdom2:2.0.6.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.codehaus.jettison:jettison:1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: stax:stax-api:1.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-core:4.5.10"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-ram:3.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-kms:2.11.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-sts:3.0.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-core:4.6.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.google.code.gson:gson:2.8.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.httpcomponents:httpcore:4.4.15"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-logging:commons-logging:1.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.commons:commons-lang3:3.14.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.xml.bind:jaxb-api:2.3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.activation:javax.activation-api:1.2.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jacoco:org.jacoco.agent:runtime:0.8.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.glassfish.jaxb:jaxb-runtime:2.3.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.glassfish.jaxb:txw2:2.3.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.sun.istack:istack-commons-runtime:3.0.12"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: com.sun.activation:jakarta.activation:1.2.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.bouncycastle:bcprov-jdk15on:1.69"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jacoco:org.jacoco.agent:runtime:0.8.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.ini4j:ini4j:0.5.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.opentracing:opentracing-api:0.33.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.opentracing:opentracing-util:0.33.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.opentracing:opentracing-noop:0.33.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-ram:3.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-kms:2.11.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.60"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.tomcat:tomcat-annotations-api:9.0.60"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-local:1.1.12"
level=
"project"
/>
...
...
@@ -237,7 +242,6 @@
<orderEntry
type=
"library"
name=
"Maven: org.apache.xmlbeans:xmlbeans:5.1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: cn.afterturn:easypoi-base:4.4.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.poi:poi-ooxml-schemas:4.1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.commons:commons-lang3:3.14.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: ognl:ognl:3.2.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.javassist:javassist:3.20.0-GA"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.validation:validation-api:2.0.1.Final"
level=
"project"
/>
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssFeignClient.java
View file @
c5866e47
...
...
@@ -11,6 +11,7 @@ import org.springframework.http.MediaType;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.validation.constraints.NotBlank
;
import
java.util.List
;
/**
...
...
@@ -24,8 +25,9 @@ public interface ApiOssFeignClient {
* @param file 上传的文件
* @return
*/
@PostMapping
(
"/upload"
)
Result
<
ApiUploadResponse
>
uploadFile
(
@RequestParam
(
"file"
)
MultipartFile
file
);
@PostMapping
(
value
=
"/upload"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
Result
<
ApiUploadResponse
>
uploadFile
(
@RequestPart
(
"file"
)
MultipartFile
file
,
@RequestParam
(
value
=
"projectBizId"
,
required
=
false
)
String
projectBizId
);
/**
* 上传文件 - body入参方式(新,推荐)
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssFileFeignClient.java
View file @
c5866e47
...
...
@@ -33,6 +33,7 @@ public interface ApiOssFileFeignClient {
* @return
*/
@DeleteMapping
(
"/del"
)
Result
del
(
@NotBlank
(
message
=
"文件元数据表唯一业务ID不能为空"
)
@RequestParam
(
value
=
"fileBizId"
)
String
fileBizId
);
Result
del
(
@NotBlank
(
message
=
"文件元数据表唯一业务ID不能为空"
)
@RequestParam
(
value
=
"fileBizId"
)
String
fileBizId
,
@RequestParam
(
"projectBizId"
)
String
projectBizId
);
}
yd-oss-feign/src/main/java/com/yd/oss/feign/client/ApiOssStsFeignClient.java
0 → 100644
View file @
c5866e47
package
com
.
yd
.
oss
.
feign
.
client
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.fallback.ApiOssStsFeignFallbackFactory
;
import
com.yd.oss.feign.request.ApiBatchSaveFilesRequest
;
import
com.yd.oss.feign.response.ApiBatchSaveFilesResponse
;
import
com.yd.oss.feign.response.ApiGetStsTokenResponse
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
/**
* OSS-分片服务信息Feign客户端
*/
@FeignClient
(
name
=
"yd-oss-api"
,
fallbackFactory
=
ApiOssStsFeignFallbackFactory
.
class
)
public
interface
ApiOssStsFeignClient
{
/**
* 获取STS凭证
* @param projectBizId
* @return
*/
@GetMapping
(
"/sts-token"
)
Result
<
ApiGetStsTokenResponse
>
getStsToken
(
@RequestParam
(
value
=
"projectBizId"
)
String
projectBizId
);
/**
* 批量保存文件列表
* @return
*/
@PostMapping
(
"/batch/save/files"
)
Result
<
ApiBatchSaveFilesResponse
>
batchSaveFiles
(
@Validated
@RequestBody
ApiBatchSaveFilesRequest
request
);
}
yd-oss-feign/src/main/java/com/yd/oss/feign/dto/ApiOssFileDto.java
0 → 100644
View file @
c5866e47
package
com
.
yd
.
oss
.
feign
.
dto
;
import
lombok.Data
;
@Data
public
class
ApiOssFileDto
{
/**
* 文件名(原始文件名)
*/
private
String
fileName
;
/**
* 文件大小
*/
private
Long
fileSize
;
/**
* 上传文件路径(完整路径)
*/
private
String
fileUrl
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiOssFeignFallbackFactory.java
View file @
c5866e47
...
...
@@ -23,7 +23,7 @@ public class ApiOssFeignFallbackFactory implements FallbackFactory<ApiOssFeignCl
public
ApiOssFeignClient
create
(
Throwable
cause
)
{
return
new
ApiOssFeignClient
()
{
@Override
public
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
)
{
public
Result
<
ApiUploadResponse
>
uploadFile
(
MultipartFile
file
,
String
projectBizId
)
{
return
null
;
}
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiOssFileFeignFallbackFactory.java
View file @
c5866e47
...
...
@@ -24,7 +24,7 @@ public class ApiOssFileFeignFallbackFactory implements FallbackFactory<ApiOssFil
}
@Override
public
Result
del
(
String
fileBizId
)
{
public
Result
del
(
String
fileBizId
,
String
projectBizId
)
{
return
null
;
}
};
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/fallback/ApiOssStsFeignFallbackFactory.java
0 → 100644
View file @
c5866e47
package
com
.
yd
.
oss
.
feign
.
fallback
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.client.ApiOssStsFeignClient
;
import
com.yd.oss.feign.request.ApiBatchSaveFilesRequest
;
import
com.yd.oss.feign.response.ApiBatchSaveFilesResponse
;
import
com.yd.oss.feign.response.ApiGetStsTokenResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cloud.openfeign.FallbackFactory
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.bind.annotation.RequestParam
;
/**
* OSS服务信息Feign降级处理
*/
@Slf4j
@Component
public
class
ApiOssStsFeignFallbackFactory
implements
FallbackFactory
<
ApiOssStsFeignClient
>
{
@Override
public
ApiOssStsFeignClient
create
(
Throwable
cause
)
{
return
new
ApiOssStsFeignClient
()
{
@Override
public
Result
<
ApiGetStsTokenResponse
>
getStsToken
(
String
projectBizId
)
{
return
null
;
}
@Override
public
Result
<
ApiBatchSaveFilesResponse
>
batchSaveFiles
(
ApiBatchSaveFilesRequest
request
)
{
return
null
;
}
};
}
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiBatchSaveFilesRequest.java
0 → 100644
View file @
c5866e47
package
com
.
yd
.
oss
.
feign
.
request
;
import
com.yd.oss.feign.dto.ApiOssFileDto
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
java.util.List
;
@Data
public
class
ApiBatchSaveFilesRequest
{
/**
* 所属租户ID(业务id)
*/
@NotBlank
(
message
=
"所属租户ID不能为空"
)
private
String
tenantBizId
;
/**
* 所属项目ID(业务id)
*/
@NotBlank
(
message
=
"所属项目ID不能为空"
)
private
String
projectBizId
;
/**
* 项目类型类型(默认pc)
*/
private
String
projectType
=
"pc"
;
/**
* 对象类型
*/
private
String
objectType
;
/**
* 对象所属表名(预约表、新单跟进表等)
*/
private
String
objectTableName
;
/**
* 对象名
*/
private
String
objectName
;
/**
* 对象业务ID
*/
@NotBlank
(
message
=
"对象业务ID不能为空"
)
private
String
objectBizId
;
/**
* 上传的文件对象列表
*/
@NotEmpty
(
message
=
"上传的文件对象列表不能为空"
)
private
List
<
ApiOssFileDto
>
apiOssFileDtoList
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiOssExportAppointmentExcelRequest.java
View file @
c5866e47
...
...
@@ -23,4 +23,9 @@ public class ApiOssExportAppointmentExcelRequest {
* 预约信息主表唯一业务ID
*/
private
String
appointmentBizId
;
/**
* 项目ID
*/
private
String
projectBizId
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiUploadFileRequest.java
View file @
c5866e47
...
...
@@ -8,6 +8,11 @@ import javax.validation.constraints.NotBlank;
public
class
ApiUploadFileRequest
{
/**
* 项目ID
*/
private
String
projectBizId
;
/**
* 对象类型
*/
private
String
objectType
;
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiBatchSaveFilesResponse.java
0 → 100644
View file @
c5866e47
package
com
.
yd
.
oss
.
feign
.
response
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
ApiBatchSaveFilesResponse
{
private
List
<
ApiOssFileResponse
>
fileResponses
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiGetStsTokenResponse.java
0 → 100644
View file @
c5866e47
package
com
.
yd
.
oss
.
feign
.
response
;
import
lombok.Data
;
@Data
public
class
ApiGetStsTokenResponse
{
private
String
accessKeyId
;
private
String
accessKeySecret
;
private
String
stsToken
;
private
String
region
;
private
String
bucket
;
private
String
endpoint
;
private
Long
maxSize
;
/**
* 文件前缀
*/
private
String
filePrefix
;
}
yd-oss-feign/src/main/java/com/yd/oss/feign/response/ApiOssFileResponse.java
0 → 100644
View file @
c5866e47
package
com
.
yd
.
oss
.
feign
.
response
;
import
lombok.Data
;
@Data
public
class
ApiOssFileResponse
{
/**
* 文件元数据表唯一业务ID(不传值)
*/
private
String
fileBizId
;
/**
* 文件名(原始文件名)
*/
private
String
fileName
;
/**
* 文件大小
*/
private
Long
fileSize
;
/**
* 上传文件路径(完整路径)
*/
private
String
fileUrl
;
}
yd-oss-service/pom.xml
View file @
c5866e47
...
...
@@ -80,6 +80,18 @@
<groupId>
com.aliyun.oss
</groupId>
<artifactId>
aliyun-sdk-oss
</artifactId>
</dependency>
<!-- 阿里云 STS SDK -->
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
aliyun-java-sdk-sts
</artifactId>
<version>
3.0.0
</version>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
aliyun-java-sdk-core
</artifactId>
<version>
4.6.0
</version>
</dependency>
<dependency>
<groupId>
org.apache.tomcat.embed
</groupId>
<artifactId>
tomcat-embed-core
</artifactId>
...
...
yd-oss-service/src/main/java/com/yd/oss/service/config/DynamicOssClientProxy.java
0 → 100644
View file @
c5866e47
//package com.yd.oss.service.config;
//
//import com.aliyun.oss.OSS;
//import com.yd.oss.service.service.OssService;
//
//import java.lang.reflect.InvocationHandler;
//import java.lang.reflect.Method;
//import java.lang.reflect.Proxy;
//
//public class DynamicOssClientProxy implements InvocationHandler {
// private final OssService ossService;
//
// public DynamicOssClientProxy(OssService ossService) {
// this.ossService = ossService;
// }
//
// public static OSS createProxy(OssService ossService) {
// return (OSS) Proxy.newProxyInstance(
// DynamicOssClientProxy.class.getClassLoader(),
// new Class[]{OSS.class},
// new DynamicOssClientProxy(ossService)
// );
// }
//
// @Override
// public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// // 每次方法调用都从 OssService 获取当前客户端
// OSS currentClient = ossService.getOssClient();
// return method.invoke(currentClient, args);
// }
//}
\ No newline at end of file
yd-oss-service/src/main/java/com/yd/oss/service/config/OssClientFactory.java
0 → 100644
View file @
c5866e47
package
com
.
yd
.
oss
.
service
.
config
;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.OSSClientBuilder
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.service.IOssProviderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
public
class
OssClientFactory
{
@Autowired
private
IOssProviderService
ossProviderService
;
/**
* 根据服务商业务ID创建临时OSS客户端
* @param providerBizId 服务商业务ID
* @return OSS客户端(使用后必须调用shutdown())
*/
public
OSS
createOssClient
(
String
providerBizId
)
{
OssProvider
provider
=
ossProviderService
.
getProviderByBizId
(
providerBizId
);
return
new
OSSClientBuilder
().
build
(
provider
.
getEndpoint
(),
provider
.
getAccessKey
(),
provider
.
getSecretKey
()
);
}
/**
* 根据项目ID创建临时OSS客户端
* @param projectBizId 项目业务ID
* @return OSS客户端(使用后必须调用shutdown())
*/
public
OSS
createOssClientByProject
(
String
projectBizId
)
{
OssProvider
provider
=
ossProviderService
.
getProviderByProjectId
(
projectBizId
);
return
new
OSSClientBuilder
().
build
(
provider
.
getEndpoint
(),
provider
.
getAccessKey
(),
provider
.
getSecretKey
()
);
}
/**
* 直接根据OssProvider对象创建客户端(如果调用者已持有provider)
*/
public
OSS
createOssClient
(
OssProvider
provider
)
{
return
new
OSSClientBuilder
().
build
(
provider
.
getEndpoint
(),
provider
.
getAccessKey
(),
provider
.
getSecretKey
()
);
}
}
\ No newline at end of file
yd-oss-service/src/main/java/com/yd/oss/service/config/OssConfig.java
View file @
c5866e47
...
...
@@ -4,6 +4,7 @@ import com.aliyun.oss.OSS;
import
com.aliyun.oss.OSSClientBuilder
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.service.IOssProviderService
;
import
com.yd.oss.service.service.OssService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
...
...
@@ -48,6 +49,12 @@ public class OssConfig {
);
}
// @Bean
// public OSS ossClient(OssService ossService) {
// // 返回动态代理,每次调用都委托给 ossService.getOssClient()
// return DynamicOssClientProxy.createProxy(ossService);
// }
@Bean
public
String
defaultBucket
()
{
return
defaultBucket
;
...
...
yd-oss-service/src/main/java/com/yd/oss/service/dto/OssUploadFileReqDto.java
View file @
c5866e47
...
...
@@ -15,6 +15,11 @@ import lombok.NoArgsConstructor;
public
class
OssUploadFileReqDto
{
/**
* 项目ID
*/
private
String
projectBizId
;
/**
* 对象类型
*/
private
String
objectType
;
...
...
yd-oss-service/src/main/java/com/yd/oss/service/model/OssFile.java
View file @
c5866e47
...
...
@@ -28,6 +28,18 @@ public class OssFile implements Serializable {
private
Long
id
;
/**
* 所属租户ID(业务id)
*/
@TableField
(
"tenant_biz_id"
)
private
String
tenantBizId
;
/**
* 所属项目ID(业务id)
*/
@TableField
(
"project_biz_id"
)
private
String
projectBizId
;
/**
* 对象类型
*/
@TableField
(
"object_type"
)
...
...
yd-oss-service/src/main/java/com/yd/oss/service/model/OssProvider.java
View file @
c5866e47
...
...
@@ -34,6 +34,18 @@ public class OssProvider implements Serializable {
private
String
providerBizId
;
/**
* 所属租户ID(业务id)
*/
@TableField
(
"tenant_biz_id"
)
private
String
tenantBizId
;
/**
* 所属项目ID(业务id)
*/
@TableField
(
"project_biz_id"
)
private
String
projectBizId
;
/**
* 服务商编码(业务编码)
*/
@TableField
(
"code"
)
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/AppointmentExcelService.java
View file @
c5866e47
...
...
@@ -6,5 +6,6 @@ public interface AppointmentExcelService {
String
exportAppointment
(
Map
<
String
,
Object
>
data
,
String
templateType
,
String
appointmentBizId
);
String
appointmentBizId
,
String
projectBizId
);
}
yd-oss-service/src/main/java/com/yd/oss/service/service/IOssProviderService.java
View file @
c5866e47
...
...
@@ -21,9 +21,13 @@ public interface IOssProviderService extends IService<OssProvider> {
OssProvider
getProviderById
(
Long
id
);
OssProvider
getProviderByBizId
(
String
providerBizId
);
List
<
OssProvider
>
getActiveProviders
();
boolean
saveProvider
(
OssProvider
provider
);
boolean
deleteProvider
(
Long
id
);
OssProvider
getProviderByProjectId
(
String
projectBizId
);
}
yd-oss-service/src/main/java/com/yd/oss/service/service/OssService.java
View file @
c5866e47
package
com
.
yd
.
oss
.
service
.
service
;
import
com.
yd.oss.feign.request.ApiUploadFileRequest
;
import
com.
aliyun.oss.OSS
;
import
com.yd.oss.service.dto.FileMetadata
;
import
com.yd.oss.service.dto.OssUploadFileReqDto
;
import
com.yd.oss.service.dto.OssUploadFileResDto
;
...
...
@@ -16,7 +16,7 @@ import java.time.Duration;
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
);
...
...
@@ -32,6 +32,8 @@ public interface OssService {
// 删除文件
boolean
deleteFile
(
String
fileKey
,
String
bucketName
,
String
operator
);
boolean
deleteFileByBizId
(
String
fileBizId
,
String
operator
);
// 删除文件(使用默认存储桶)
boolean
deleteFile
(
String
fileKey
,
String
operator
);
...
...
@@ -53,12 +55,17 @@ public interface OssService {
// 获取文件元数据(使用默认存储桶)
FileMetadata
getFileMetadata
(
String
fileKey
);
void
switchProviderByProjectId
(
String
projectBizId
);
// 切换OSS提供商
void
switchProvider
(
String
providerName
);
// 切换OSS提供商(通过ID)
void
switchProvider
(
Long
providerId
);
//获取当前使用的 OSS 客户端
OSS
getOssClient
();
// 获取当前使用的提供商
OssProvider
getCurrentProvider
();
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
View file @
c5866e47
This diff is collapsed.
Click to expand it.
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AppointmentExcelServiceImpl.java
View file @
c5866e47
...
...
@@ -40,7 +40,7 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
* @param fileName
* @return
*/
public
String
exportAndUploadToOss
(
Map
<
String
,
Object
>
data
,
String
ossObjectKey
,
String
fileName
)
{
public
String
exportAndUploadToOss
(
Map
<
String
,
Object
>
data
,
String
ossObjectKey
,
String
fileName
,
String
projectBizId
)
{
File
tempFile
=
null
;
File
processedFile
=
null
;
...
...
@@ -301,12 +301,13 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
@Override
public
String
exportAppointment
(
Map
<
String
,
Object
>
data
,
String
templateType
,
String
appointmentBizId
)
{
String
appointmentBizId
,
String
projectBizId
)
{
// 获取模板信息
FileProdDto
fileProdDto
=
iFileTemplateService
.
getFileProd
(
""
,
templateType
);
// 生成文件名
String
fileName
=
"预约信息_"
+
appointmentBizId
+
"_"
+
System
.
currentTimeMillis
()
+
".xlsx"
;
// 导出并上传到OSS
return
exportAndUploadToOss
(
data
,
fileProdDto
.
getFileKey
(),
fileName
);
return
exportAndUploadToOss
(
data
,
fileProdDto
.
getFileKey
(),
fileName
,
projectBizId
);
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/ExcelExportServiceImpl.java
View file @
c5866e47
...
...
@@ -115,7 +115,8 @@ public class ExcelExportServiceImpl implements ExcelExportService {
fileName
,
// 生成的文件名
""
,
// 存储桶名称(空字符串表示使用默认存储桶)
""
,
// 上传用户标识(空字符串表示匿名或系统用户)
"excel"
// 文件分类类型,对应OSS文件夹目录
"excel"
,
// 文件分类类型,对应OSS文件夹目录
""
);
// 返回成功结果,包含文件URL和大小信息
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/OssProviderServiceImpl.java
View file @
c5866e47
package
com
.
yd
.
oss
.
service
.
service
.
impl
;
import
com.alibaba.cloud.commons.lang.StringUtils
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.dao.OssProviderMapper
;
...
...
@@ -75,6 +77,14 @@ public class OssProviderServiceImpl extends ServiceImpl<OssProviderMapper, OssPr
return
provider
;
}
@Override
public
OssProvider
getProviderByBizId
(
String
providerBizId
)
{
return
baseMapper
.
selectOne
(
new
LambdaQueryWrapper
<
OssProvider
>()
.
eq
(
OssProvider:
:
getProviderBizId
,
providerBizId
)
.
last
(
" limit 1 "
)
);
}
/**
* 获取所有激活的OSS提供商
* @return
...
...
@@ -113,4 +123,24 @@ public class OssProviderServiceImpl extends ServiceImpl<OssProviderMapper, OssPr
public
boolean
deleteProvider
(
Long
id
)
{
return
ossProviderMapper
.
deleteById
(
id
)
>
0
;
}
/**
* 根据项目ID查询对应OSS服务商
* @param projectBizId
* @return
*/
@Override
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
>()
.
eq
(
OssProvider:
:
getProjectBizId
,
projectBizId
)
.
last
(
" limit 1 "
)
);
}
}
yd-oss-service/src/main/java/com/yd/oss/service/utils/OssUtils.java
0 → 100644
View file @
c5866e47
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"
;
}
}
yd-oss-service/yd-oss-service.iml
View file @
c5866e47
...
...
@@ -77,8 +77,6 @@
<orderEntry
type=
"library"
name=
"Maven: org.springdoc:springdoc-openapi-webmvc-core:1.7.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springdoc:springdoc-openapi-common:1.7.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.swagger.core.v3:swagger-core:2.2.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: jakarta.activation:jakarta.activation-api:1.2.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.swagger.core.v3:swagger-annotations:2.2.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.swagger.core.v3:swagger-models:2.2.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.webjars:swagger-ui:4.18.2"
level=
"project"
/>
...
...
@@ -130,7 +128,6 @@
<orderEntry
type=
"library"
name=
"Maven: org.springframework.cloud:spring-cloud-starter:3.1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.security:spring-security-rsa:1.0.10.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.bouncycastle:bcpkix-jdk15on:1.68"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.bouncycastle:bcprov-jdk15on:1.69"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.cloud:spring-cloud-starter-loadbalancer:3.1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.cloud:spring-cloud-loadbalancer:3.1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.projectreactor.addons:reactor-extra:3.4.7"
level=
"project"
/>
...
...
@@ -178,22 +175,30 @@
<orderEntry
type=
"library"
name=
"Maven: io.github.openfeign:feign-slf4j:11.8"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun.oss:aliyun-sdk-oss:3.15.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.httpcomponents:httpclient:4.5.13"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.httpcomponents:httpcore:4.4.15"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jdom:jdom2:2.0.6.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.codehaus.jettison:jettison:1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: stax:stax-api:1.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-core:4.5.10"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-ram:3.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-kms:2.11.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-sts:3.0.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-core:4.6.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.google.code.gson:gson:2.8.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.httpcomponents:httpcore:4.4.15"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-logging:commons-logging:1.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.commons:commons-lang3:3.14.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.xml.bind:jaxb-api:2.3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.activation:javax.activation-api:1.2.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jacoco:org.jacoco.agent:runtime:0.8.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.glassfish.jaxb:jaxb-runtime:2.3.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.glassfish.jaxb:txw2:2.3.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.sun.istack:istack-commons-runtime:3.0.12"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: com.sun.activation:jakarta.activation:1.2.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.bouncycastle:bcprov-jdk15on:1.69"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jacoco:org.jacoco.agent:runtime:0.8.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.ini4j:ini4j:0.5.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.opentracing:opentracing-api:0.33.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.opentracing:opentracing-util:0.33.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: io.opentracing:opentracing-noop:0.33.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-ram:3.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.aliyun:aliyun-java-sdk-kms:2.11.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.60"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.tomcat:tomcat-annotations-api:9.0.60"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-local:1.1.12"
level=
"project"
/>
...
...
@@ -227,7 +232,6 @@
<orderEntry
type=
"library"
name=
"Maven: org.apache.xmlbeans:xmlbeans:5.1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: cn.afterturn:easypoi-base:4.4.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.poi:poi-ooxml-schemas:4.1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.commons:commons-lang3:3.14.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: ognl:ognl:3.2.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.javassist:javassist:3.20.0-GA"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.validation:validation-api:2.0.1.Final"
level=
"project"
/>
...
...
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