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
93314088
Commit
93314088
authored
Mar 19, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
2ae7be4d
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
114 additions
and
31 deletions
+114
-31
yd-oss-api/yd-oss-api.iml
+39
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/IFileTemplateService.java
+3
-1
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
+27
-19
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/CompressedFileServiceImpl.java
+8
-4
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/FileTemplateServiceImpl.java
+3
-3
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/PdfServiceImpl.java
+14
-3
yd-oss-service/src/main/java/com/yd/oss/service/utils/OssUtils.java
+19
-1
yd-oss-service/yd-oss-service.iml
+1
-0
No files found.
yd-oss-api/yd-oss-api.iml
View file @
93314088
...
...
@@ -26,6 +26,45 @@
</content>
<orderEntry
type=
"jdk"
jdkName=
"1.8"
jdkType=
"JavaSDK"
/>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
<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: org.glassfish.jaxb:jaxb-runtime:2.3.6"
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.jacoco:org.jacoco.agent:runtime:0.8.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-local:1.1.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-api:1.1.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-transformer:1.1.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-util-conversion:1.1.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.zeroturnaround:zt-exec:1.11"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-transformer-msoffice-word:1.1.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-transformer-msoffice-base:1.1.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-transformer-api:1.1.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-util-all:1.1.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.documents4j:documents4j-util-transformer-process:1.1.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.poi:poi:5.2.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.commons:commons-collections4:4.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.commons:commons-math3:3.6.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.zaxxer:SparseBitSet:1.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.poi:poi-ooxml:5.2.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.poi:poi-ooxml-lite:5.2.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.commons:commons-compress:1.21"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.github.virtuald:curvesapi:1.07"
level=
"project"
/>
<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: 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"
/>
<orderEntry
type=
"library"
name=
"Maven: cn.afterturn:easypoi-web:4.4.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: cn.afterturn:easypoi-annotation:4.4.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jxls:jxls:2.12.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.commons:commons-jexl3:3.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-beanutils:commons-beanutils:1.9.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-collections:commons-collections:3.2.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: org.slf4j:jcl-over-slf4j:1.7.36"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jxls:jxls-poi:2.12.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2021.0.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.alibaba.cloud:spring-cloud-alibaba-commons:2021.0.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.alibaba.nacos:nacos-client:1.4.2"
level=
"project"
/>
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/IFileTemplateService.java
View file @
93314088
package
com
.
yd
.
oss
.
service
.
service
;
import
com.aliyun.oss.OSS
;
import
com.yd.oss.service.dto.FileProdDto
;
import
com.yd.oss.service.model.FileTemplate
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yd.oss.service.model.OssProvider
;
import
java.io.InputStream
;
...
...
@@ -16,7 +18,7 @@ import java.io.InputStream;
*/
public
interface
IFileTemplateService
extends
IService
<
FileTemplate
>
{
InputStream
getTemplateInputStreamFromOSS
(
String
bucketName
,
String
objectKey
);
InputStream
getTemplateInputStreamFromOSS
(
String
bucketName
,
String
objectKey
,
OssProvider
provider
,
OSS
ossClient
);
FileProdDto
getFileProd
(
String
templateName
,
String
templateType
);
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
View file @
93314088
...
...
@@ -172,7 +172,7 @@ public class AliYunOssServiceImpl implements OssService {
ByteArrayInputStream
byteArrayInputStream
=
new
ByteArrayInputStream
(
fileData
);
// 生成文件key(这里使用ossUtils的方法,需要传入projectBizId,但此时provider已知,可根据需要调整)
String
fileKey
=
ossUtils
.
getFilePrefix
(
provider
.
getPro
vider
BizId
(),
""
,
fileName
,
type
);
String
fileKey
=
ossUtils
.
getFilePrefix
(
provider
.
getPro
ject
BizId
(),
""
,
fileName
,
type
);
String
actualBucket
=
StringUtils
.
isNotBlank
(
bucketName
)
?
bucketName
:
provider
.
getBucketName
();
String
fileType
=
FileUtil
.
getFileType
(
fileName
);
...
...
@@ -621,16 +621,20 @@ public class AliYunOssServiceImpl implements OssService {
* 上传字节数组并设置公共读
*/
public
String
upload
(
byte
[]
content
,
String
fileName
,
OSS
ossClient
,
OssProvider
provider
)
{
OssProvider
defaultProvider
=
getDefaultProvider
();
//
OssProvider defaultProvider = getDefaultProvider();
// OSS ossClient = null;
try
{
// ossClient = ossClientFactory.createOssClient(defaultProvider);
String
objectName
=
"appointment/excel/"
+
UUID
.
randomUUID
()
+
"/"
+
fileName
;
// String objectName = "appointment/excel/" + UUID.randomUUID() + "/" + fileName;
//扩展名
String
fileType
=
FileUtil
.
getFileType
(
fileName
);
//获取通用文件路径的前缀
String
filePrefix
=
ossUtils
.
getFilePrefix
(
provider
.
getProjectBizId
(),
""
,
fileName
,
fileType
);
PutObjectRequest
putObjectRequest
=
new
PutObjectRequest
(
defaultProvider
.
getBucketName
(),
objectName
,
new
ByteArrayInputStream
(
content
));
provider
.
getBucketName
(),
filePrefix
,
new
ByteArrayInputStream
(
content
));
ossClient
.
putObject
(
putObjectRequest
);
ossClient
.
setObjectAcl
(
defaultProvider
.
getBucketName
(),
objectName
,
CannedAccessControlList
.
PublicRead
);
return
"https://"
+
defaultProvider
.
getBucketName
()
+
"."
+
defaultProvider
.
getEndpoint
()
+
"/"
+
objectName
;
ossClient
.
setObjectAcl
(
provider
.
getBucketName
(),
filePrefix
,
CannedAccessControlList
.
PublicRead
);
return
"https://"
+
provider
.
getBucketName
()
+
"."
+
provider
.
getEndpoint
()
+
"/"
+
filePrefix
;
}
finally
{
if
(
ossClient
!=
null
)
{
ossClient
.
shutdown
();
...
...
@@ -641,23 +645,27 @@ public class AliYunOssServiceImpl implements OssService {
/**
* 上传输入流并设置公共读
*/
// public String upload(InputStream inputStream, String fileName
) {
public
String
upload
(
InputStream
inputStream
,
String
fileName
,
OSS
ossClient
,
OssProvider
provider
)
{
// OssProvider defaultProvider = getDefaultProvider();
// OSS ossClient = null;
//
try {
try
{
// ossClient = ossClientFactory.createOssClient(defaultProvider);
// String objectName = "appointment/excel/" + UUID.randomUUID() + "/" + fileName;
// PutObjectRequest putObjectRequest = new PutObjectRequest(
// defaultProvider.getBucketName(), objectName, inputStream);
// ossClient.putObject(putObjectRequest);
// ossClient.setObjectAcl(defaultProvider.getBucketName(), objectName, CannedAccessControlList.PublicRead);
// return "https://" + defaultProvider.getBucketName() + "." + defaultProvider.getEndpoint() + "/" + objectName;
// } finally {
// if (ossClient != null) {
// ossClient.shutdown();
// }
// }
// }
//扩展名
String
fileType
=
FileUtil
.
getFileType
(
fileName
);
//获取通用文件路径的前缀
String
filePrefix
=
ossUtils
.
getFilePrefix
(
provider
.
getProjectBizId
(),
""
,
fileName
,
fileType
);
PutObjectRequest
putObjectRequest
=
new
PutObjectRequest
(
provider
.
getBucketName
(),
filePrefix
,
inputStream
);
ossClient
.
putObject
(
putObjectRequest
);
ossClient
.
setObjectAcl
(
provider
.
getBucketName
(),
filePrefix
,
CannedAccessControlList
.
PublicRead
);
return
"https://"
+
provider
.
getBucketName
()
+
"."
+
provider
.
getEndpoint
()
+
"/"
+
filePrefix
;
}
finally
{
if
(
ossClient
!=
null
)
{
ossClient
.
shutdown
();
}
}
}
/**
* 批量上传文件
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/CompressedFileServiceImpl.java
View file @
93314088
...
...
@@ -8,6 +8,7 @@ import com.yd.oss.feign.response.ApiMaterialDownloadResponse;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.service.CompressedFileService
;
import
com.yd.oss.service.service.OssService
;
import
com.yd.oss.service.utils.OssUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -38,6 +39,9 @@ public class CompressedFileServiceImpl implements CompressedFileService {
// @Autowired
// private String defaultEndpoint; // 注入默认服务端点
@Autowired
private
OssUtils
ossUtils
;
/**
* 下载-材料列表压缩包
...
...
@@ -390,9 +394,9 @@ public class CompressedFileServiceImpl implements CompressedFileService {
try
{
// 方法1: 直接调用public方法
java
.
lang
.
reflect
.
Method
uploadMethod
=
AliYunOssServiceImpl
.
class
.
getMethod
(
"upload"
,
InputStream
.
class
,
String
.
class
);
.
getMethod
(
"upload"
,
InputStream
.
class
,
String
.
class
,
OSS
.
class
,
OssProvider
.
class
);
String
ossUrl
=
(
String
)
uploadMethod
.
invoke
(
aliYunOssService
,
fis
,
zipFileName
);
String
ossUrl
=
(
String
)
uploadMethod
.
invoke
(
aliYunOssService
,
fis
,
zipFileName
,
ossClient
,
provider
);
log
.
info
(
"压缩包上传成功,URL: {}"
,
ossUrl
);
return
ossUrl
;
...
...
@@ -404,9 +408,9 @@ public class CompressedFileServiceImpl implements CompressedFileService {
byte
[]
zipBytes
=
readFileToBytes
(
zipFile
);
try
{
java
.
lang
.
reflect
.
Method
uploadMethod2
=
AliYunOssServiceImpl
.
class
.
getMethod
(
"upload"
,
byte
[].
class
,
String
.
class
);
.
getMethod
(
"upload"
,
byte
[].
class
,
String
.
class
,
OSS
.
class
,
OssProvider
.
class
);
String
ossUrl
=
(
String
)
uploadMethod2
.
invoke
(
aliYunOssService
,
zipBytes
,
zipFileName
);
String
ossUrl
=
(
String
)
uploadMethod2
.
invoke
(
aliYunOssService
,
zipBytes
,
zipFileName
,
ossClient
,
provider
);
log
.
info
(
"压缩包上传成功,URL: {}"
,
ossUrl
);
return
ossUrl
;
}
catch
(
NoSuchMethodException
e2
)
{
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/FileTemplateServiceImpl.java
View file @
93314088
...
...
@@ -37,8 +37,8 @@ public class FileTemplateServiceImpl extends ServiceImpl<FileTemplateMapper, Fil
@Autowired
private
IOssProviderService
ossProviderService
;
@Autowired
private
OSS
ossClient
;
// 注入OSS客户端
//
@Autowired
//
private OSS ossClient; // 注入OSS客户端
/**
* 根据模板名称和模板类型获取云服务商和文件信息
...
...
@@ -56,7 +56,7 @@ public class FileTemplateServiceImpl extends ServiceImpl<FileTemplateMapper, Fil
* @param objectKey
* @return
*/
public
InputStream
getTemplateInputStreamFromOSS
(
String
bucketName
,
String
objectKey
)
{
public
InputStream
getTemplateInputStreamFromOSS
(
String
bucketName
,
String
objectKey
,
OssProvider
provider
,
OSS
ossClient
)
{
OSSObject
object
=
ossClient
.
getObject
(
bucketName
,
objectKey
);
return
object
.
getObjectContent
();
}
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/PdfServiceImpl.java
View file @
93314088
...
...
@@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import
com.yd.oss.service.dto.FileProdDto
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.service.*
;
import
com.yd.oss.service.utils.OssUtils
;
import
com.yd.oss.service.utils.PdfUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -39,6 +40,9 @@ public class PdfServiceImpl<T> implements PdfService<T> {
@Autowired
private
FieldValueProvider
<
T
>
fieldValueProvider
;
@Autowired
private
OssUtils
ossUtils
;
// @Autowired
// private OSS ossClient; // 注入OSS客户端
...
...
@@ -57,7 +61,7 @@ public class PdfServiceImpl<T> implements PdfService<T> {
// 从OSS获取模板
InputStream
templateStream
=
iFileTemplateService
.
getTemplateInputStreamFromOSS
(
fileProdDto
.
getBucketName
(),
fileProdDto
.
getFileKey
());
fileProdDto
.
getBucketName
(),
fileProdDto
.
getFileKey
()
,
provider
,
ossClient
);
// 创建临时文件
File
tempInputFile
=
File
.
createTempFile
(
"template"
,
".docx"
);
...
...
@@ -72,10 +76,17 @@ public class PdfServiceImpl<T> implements PdfService<T> {
// 上传到OSS
String
objectName
=
""
;
//项目类型
String
projectType
=
ossUtils
.
getProjectType
(
provider
.
getProjectBizId
());
projectType
=
StringUtils
.
isNotBlank
(
projectType
)
?
projectType
:
"pc"
;
//环境变量
String
env
=
ossUtils
.
getActiveEnv
();
env
=
StringUtils
.
isNotBlank
(
env
)
?
env
:
"prod"
;
String
prefix
=
projectType
+
"/"
+
env
+
"/"
;
if
(
StringUtils
.
isNotBlank
(
customFileName
))
{
objectName
=
"insurance_schedules/"
+
System
.
currentTimeMillis
()
+
"/"
+
customFileName
+
".pdf"
;
objectName
=
prefix
+
"insurance_schedules/"
+
System
.
currentTimeMillis
()
+
"/"
+
customFileName
+
".pdf"
;
}
else
{
objectName
=
"insurance_schedules/"
+
objectId
+
"_"
+
System
.
currentTimeMillis
()
+
".pdf"
;
objectName
=
prefix
+
"insurance_schedules/"
+
objectId
+
"_"
+
System
.
currentTimeMillis
()
+
".pdf"
;
}
uploadToOSS
(
tempPdfFile
,
fileProdDto
.
getBucketName
(),
objectName
,
provider
,
ossClient
);
...
...
yd-oss-service/src/main/java/com/yd/oss/service/utils/OssUtils.java
View file @
93314088
...
...
@@ -45,6 +45,24 @@ public class OssUtils {
}
/**
* 根据项目ID获取项目类型
* @param projectBizId
* @return
*/
public
String
getProjectType
(
String
projectBizId
)
{
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"
;
}
}
return
projectType
;
}
/**
* 获取分片文件路径的前缀
* @param projectBizId
* @param env
...
...
@@ -67,7 +85,7 @@ public class OssUtils {
return
projectType
+
"/"
+
env
+
"/large_file/uploads/"
+
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy/MM/dd/"
));
}
p
rivate
String
getActiveEnv
()
{
p
ublic
String
getActiveEnv
()
{
String
[]
activeProfiles
=
environment
.
getActiveProfiles
();
return
activeProfiles
.
length
>
0
?
activeProfiles
[
0
]
:
"prod"
;
}
...
...
yd-oss-service/yd-oss-service.iml
View file @
93314088
...
...
@@ -26,6 +26,7 @@
</content>
<orderEntry
type=
"jdk"
jdkName=
"1.8"
jdkType=
"JavaSDK"
/>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
<orderEntry
type=
"library"
name=
"Maven: com.google.guava:guava:30.0-jre"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.baomidou:mybatis-plus-boot-starter:3.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.baomidou:mybatis-plus:3.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.baomidou:mybatis-plus-annotation:3.5.5"
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