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
642f8f53
Commit
642f8f53
authored
Mar 20, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into prod
parents
c5866e47
93314088
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
243 additions
and
85 deletions
+243
-85
yd-oss-api/src/main/java/com/yd/oss/api/controller/ApiPdfController.java
+1
-1
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiExcelServiceImpl.java
+13
-4
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiMaterialServiceImpl.java
+26
-12
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiPdfServiceImpl.java
+27
-1
yd-oss-api/yd-oss-api.iml
+39
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiGeneratePdfRequest.java
+5
-0
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiMaterialDownloadRequest.java
+5
-0
yd-oss-service/src/main/java/com/yd/oss/service/service/AppointmentExcelService.java
+4
-1
yd-oss-service/src/main/java/com/yd/oss/service/service/CompressedFileService.java
+3
-1
yd-oss-service/src/main/java/com/yd/oss/service/service/ExcelService.java
+3
-1
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/OssService.java
+2
-2
yd-oss-service/src/main/java/com/yd/oss/service/service/PdfService.java
+4
-1
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
+26
-18
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AppointmentExcelServiceImpl.java
+7
-5
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/CompressedFileServiceImpl.java
+24
-18
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/ExcelServiceImpl.java
+7
-6
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
+21
-9
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/src/main/java/com/yd/oss/api/controller/ApiPdfController.java
View file @
642f8f53
...
@@ -25,7 +25,7 @@ public class ApiPdfController implements ApiPdfFeignClient {
...
@@ -25,7 +25,7 @@ public class ApiPdfController implements ApiPdfFeignClient {
private
ApiPdfService
apiPdfService
;
private
ApiPdfService
apiPdfService
;
/**
/**
* 根据文件模板填充数据生成PDF
* 根据文件模板填充数据生成PDF
****
* @param request
* @param request
* @return
* @return
*/
*/
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiExcelServiceImpl.java
View file @
642f8f53
...
@@ -58,16 +58,25 @@ public class ApiExcelServiceImpl implements ApiExcelService {
...
@@ -58,16 +58,25 @@ public class ApiExcelServiceImpl implements ApiExcelService {
// 根据项目ID获取服务商信息
// 根据项目ID获取服务商信息
OssProvider
provider
=
ossProviderService
.
getProviderByProjectId
(
request
.
getProjectBizId
());
OssProvider
provider
=
ossProviderService
.
getProviderByProjectId
(
request
.
getProjectBizId
());
if
(
provider
==
null
)
{
if
(
provider
==
null
)
{
log
.
error
(
"未找到项目对应的OSS服务商,projectBizId={}"
,
request
.
getProjectBizId
());
throw
new
BusinessException
(
"未找到项目对应的OSS提供商,projectBizId="
+
request
.
getProjectBizId
());
return
Result
.
fail
(
"未找到对应的OSS服务商配置"
);
}
}
OSS
tempClient
=
ossClientFactory
.
createOssClient
(
provider
);
OSS
ossClient
=
null
;
try
{
ossClient
=
ossClientFactory
.
createOssClient
(
provider
);
String
url
=
appointmentExcelService
.
exportAppointment
(
request
.
getData
(),
String
url
=
appointmentExcelService
.
exportAppointment
(
request
.
getData
(),
request
.
getTemplateType
(),
request
.
getTemplateType
(),
request
.
getAppointmentBizId
(),
request
.
getAppointmentBizId
(),
request
.
getProjectBizId
()
);
ossClient
,
provider
);
response
.
setUrl
(
url
);
response
.
setUrl
(
url
);
return
Result
.
success
(
response
);
return
Result
.
success
(
response
);
}
catch
(
Exception
e
)
{
log
.
error
(
"导出excel-预约信息异常:{}"
,
e
.
getMessage
());
throw
new
BusinessException
(
"导出excel-预约信息异常"
);
}
finally
{
if
(
ossClient
!=
null
)
{
ossClient
.
shutdown
();
}
}
}
}
/**
/**
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiMaterialServiceImpl.java
View file @
642f8f53
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
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.common.result.Result
;
import
com.yd.oss.api.service.ApiMaterialService
;
import
com.yd.oss.api.service.ApiMaterialService
;
import
com.yd.oss.feign.dto.ApiMaterialDto
;
import
com.yd.oss.feign.dto.ApiMaterialDto
;
...
@@ -7,11 +9,14 @@ import com.yd.oss.feign.request.ApiMaterialDownloadRequest;
...
@@ -7,11 +9,14 @@ import com.yd.oss.feign.request.ApiMaterialDownloadRequest;
import
com.yd.oss.feign.request.ApiMaterialListRequest
;
import
com.yd.oss.feign.request.ApiMaterialListRequest
;
import
com.yd.oss.feign.response.ApiMaterialDownloadResponse
;
import
com.yd.oss.feign.response.ApiMaterialDownloadResponse
;
import
com.yd.oss.feign.response.ApiMaterialListResponse
;
import
com.yd.oss.feign.response.ApiMaterialListResponse
;
import
com.yd.oss.service.config.OssClientFactory
;
import
com.yd.oss.service.dto.MaterialDto
;
import
com.yd.oss.service.dto.MaterialDto
;
import
com.yd.oss.service.model.Material
;
import
com.yd.oss.service.model.Material
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.yd.oss.service.model.RelObjectMaterial
;
import
com.yd.oss.service.service.CompressedFileService
;
import
com.yd.oss.service.service.CompressedFileService
;
import
com.yd.oss.service.service.IMaterialService
;
import
com.yd.oss.service.service.IMaterialService
;
import
com.yd.oss.service.service.IOssProviderService
;
import
com.yd.oss.service.service.IRelObjectMaterialService
;
import
com.yd.oss.service.service.IRelObjectMaterialService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -35,6 +40,12 @@ public class ApiMaterialServiceImpl implements ApiMaterialService {
...
@@ -35,6 +40,12 @@ public class ApiMaterialServiceImpl implements ApiMaterialService {
@Autowired
@Autowired
private
IRelObjectMaterialService
iRelObjectMaterialService
;
private
IRelObjectMaterialService
iRelObjectMaterialService
;
@Autowired
private
IOssProviderService
ossProviderService
;
@Autowired
private
OssClientFactory
ossClientFactory
;
/**
/**
* 列表查询-材料基础信息
* 列表查询-材料基础信息
* @param request
* @param request
...
@@ -61,18 +72,21 @@ public class ApiMaterialServiceImpl implements ApiMaterialService {
...
@@ -61,18 +72,21 @@ public class ApiMaterialServiceImpl implements ApiMaterialService {
*/
*/
@Override
@Override
public
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
)
{
public
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
)
{
// if (StringUtils.isNotBlank(request.getObjectBizId())) {
// 获取提供商
// List<ApiMaterialDto> apiMaterialDtoList = new ArrayList<>();
OssProvider
provider
=
ossProviderService
.
getProviderByProjectId
(
request
.
getProjectBizId
());
// List<RelObjectMaterial> relObjectMaterialList = iRelObjectMaterialService.queryList(request.getObjectBizId());
if
(
provider
==
null
)
{
// if (!CollectionUtils.isEmpty(relObjectMaterialList)) {
throw
new
BusinessException
(
"未找到项目对应的OSS提供商,projectBizId="
+
request
.
getProjectBizId
());
// List<String> materialBizIdList = relObjectMaterialList.stream().map(RelObjectMaterial::getMaterialBizId).collect(Collectors.toList());
}
//
// for (RelObjectMaterial relObjectMaterial : relObjectMaterialList) {
OSS
ossClient
=
null
;
//
try
{
// }
ossClient
=
ossClientFactory
.
createOssClient
(
provider
);
// }
return
compressedFileService
.
downloadCompressedFile
(
request
,
ossClient
,
provider
);
// }
}
finally
{
return
compressedFileService
.
downloadCompressedFile
(
request
);
if
(
ossClient
!=
null
)
{
ossClient
.
shutdown
();
}
}
}
}
...
...
yd-oss-api/src/main/java/com/yd/oss/api/service/impl/ApiPdfServiceImpl.java
View file @
642f8f53
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
package
com
.
yd
.
oss
.
api
.
service
.
impl
;
import
com.aliyun.oss.OSS
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.oss.api.service.ApiPdfService
;
import
com.yd.oss.api.service.ApiPdfService
;
import
com.yd.oss.feign.request.ApiGeneratePdfRequest
;
import
com.yd.oss.feign.request.ApiGeneratePdfRequest
;
import
com.yd.oss.feign.response.ApiGeneratePdfResponse
;
import
com.yd.oss.feign.response.ApiGeneratePdfResponse
;
import
com.yd.oss.service.config.OssClientFactory
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.service.IOssProviderService
;
import
com.yd.oss.service.service.PdfService
;
import
com.yd.oss.service.service.PdfService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -18,6 +22,12 @@ public class ApiPdfServiceImpl implements ApiPdfService {
...
@@ -18,6 +22,12 @@ public class ApiPdfServiceImpl implements ApiPdfService {
@Autowired
@Autowired
private
PdfService
pdfService
;
private
PdfService
pdfService
;
@Autowired
private
IOssProviderService
ossProviderService
;
@Autowired
private
OssClientFactory
ossClientFactory
;
/**
/**
* 根据文件模板填充数据生成PDF
* 根据文件模板填充数据生成PDF
* @param request
* @param request
...
@@ -26,13 +36,29 @@ public class ApiPdfServiceImpl implements ApiPdfService {
...
@@ -26,13 +36,29 @@ public class ApiPdfServiceImpl implements ApiPdfService {
@Override
@Override
public
Result
<
ApiGeneratePdfResponse
>
generatePDF
(
ApiGeneratePdfRequest
request
)
{
public
Result
<
ApiGeneratePdfResponse
>
generatePDF
(
ApiGeneratePdfRequest
request
)
{
ApiGeneratePdfResponse
response
=
new
ApiGeneratePdfResponse
();
ApiGeneratePdfResponse
response
=
new
ApiGeneratePdfResponse
();
// 根据项目ID获取OSS提供商
OssProvider
provider
=
ossProviderService
.
getProviderByProjectId
(
request
.
getProjectBizId
());
if
(
provider
==
null
)
{
throw
new
BusinessException
(
"未找到项目对应的OSS提供商,projectBizId="
+
request
.
getProjectBizId
());
}
OSS
ossClient
=
null
;
try
{
try
{
String
url
=
pdfService
.
generatePDF
(
request
.
getDataObject
(),
request
.
getObjectId
(),
request
.
getTemplateType
(),
request
.
getCustomFileName
());
//根据提供商创建OSS
ossClient
=
ossClientFactory
.
createOssClient
(
provider
);
String
url
=
pdfService
.
generatePDF
(
request
.
getDataObject
(),
request
.
getObjectId
(),
request
.
getTemplateType
(),
request
.
getCustomFileName
(),
provider
,
ossClient
);
response
.
setUrl
(
url
);
response
.
setUrl
(
url
);
return
Result
.
success
(
response
);
return
Result
.
success
(
response
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
throw
new
BusinessException
(
"生成PDF异常"
);
throw
new
BusinessException
(
"生成PDF异常"
);
}
finally
{
if
(
ossClient
!=
null
)
{
ossClient
.
shutdown
();
}
}
}
}
}
}
}
yd-oss-api/yd-oss-api.iml
View file @
642f8f53
...
@@ -26,6 +26,45 @@
...
@@ -26,6 +26,45 @@
</content>
</content>
<orderEntry
type=
"jdk"
jdkName=
"1.8"
jdkType=
"JavaSDK"
/>
<orderEntry
type=
"jdk"
jdkName=
"1.8"
jdkType=
"JavaSDK"
/>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
<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-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.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"
/>
<orderEntry
type=
"library"
name=
"Maven: com.alibaba.nacos:nacos-client:1.4.2"
level=
"project"
/>
...
...
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiGeneratePdfRequest.java
View file @
642f8f53
...
@@ -24,4 +24,9 @@ public class ApiGeneratePdfRequest<T> {
...
@@ -24,4 +24,9 @@ public class ApiGeneratePdfRequest<T> {
* 自定义文件名(有值用自定义文件名上传,无值用默认生成的规则文件名)
* 自定义文件名(有值用自定义文件名上传,无值用默认生成的规则文件名)
*/
*/
private
String
customFileName
;
private
String
customFileName
;
/**
* 项目ID
*/
private
String
projectBizId
;
}
}
yd-oss-feign/src/main/java/com/yd/oss/feign/request/ApiMaterialDownloadRequest.java
View file @
642f8f53
...
@@ -8,6 +8,11 @@ import java.util.List;
...
@@ -8,6 +8,11 @@ import java.util.List;
public
class
ApiMaterialDownloadRequest
{
public
class
ApiMaterialDownloadRequest
{
/**
/**
* 项目ID
*/
private
String
projectBizId
;
/**
* 对象名(包名)
* 对象名(包名)
*/
*/
private
String
objectName
;
private
String
objectName
;
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/AppointmentExcelService.java
View file @
642f8f53
package
com
.
yd
.
oss
.
service
.
service
;
package
com
.
yd
.
oss
.
service
.
service
;
import
com.aliyun.oss.OSS
;
import
com.yd.oss.service.model.OssProvider
;
import
java.util.Map
;
import
java.util.Map
;
public
interface
AppointmentExcelService
{
public
interface
AppointmentExcelService
{
...
@@ -7,5 +10,5 @@ public interface AppointmentExcelService {
...
@@ -7,5 +10,5 @@ public interface AppointmentExcelService {
String
exportAppointment
(
Map
<
String
,
Object
>
data
,
String
exportAppointment
(
Map
<
String
,
Object
>
data
,
String
templateType
,
String
templateType
,
String
appointmentBizId
,
String
appointmentBizId
,
String
projectBizId
);
OSS
ossClient
,
OssProvider
provider
);
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/CompressedFileService.java
View file @
642f8f53
package
com
.
yd
.
oss
.
service
.
service
;
package
com
.
yd
.
oss
.
service
.
service
;
import
com.aliyun.oss.OSS
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.request.ApiMaterialDownloadRequest
;
import
com.yd.oss.feign.request.ApiMaterialDownloadRequest
;
import
com.yd.oss.feign.response.ApiMaterialDownloadResponse
;
import
com.yd.oss.feign.response.ApiMaterialDownloadResponse
;
import
com.yd.oss.service.model.OssProvider
;
public
interface
CompressedFileService
{
public
interface
CompressedFileService
{
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
);
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
,
OSS
ossClient
,
OssProvider
provider
);
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/ExcelService.java
View file @
642f8f53
package
com
.
yd
.
oss
.
service
.
service
;
package
com
.
yd
.
oss
.
service
.
service
;
import
com.aliyun.oss.OSS
;
import
com.yd.oss.service.model.OssProvider
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
java.io.File
;
import
java.io.File
;
...
@@ -7,7 +9,7 @@ import java.io.IOException;
...
@@ -7,7 +9,7 @@ import java.io.IOException;
public
interface
ExcelService
{
public
interface
ExcelService
{
File
downloadTemplateToTempFile
(
String
ossObjectKey
)
throws
IOException
;
File
downloadTemplateToTempFile
(
String
ossObjectKey
,
OSS
ossClient
,
OssProvider
provider
)
throws
IOException
;
File
saveWorkbookToTempFile
(
Workbook
workbook
)
throws
IOException
;
File
saveWorkbookToTempFile
(
Workbook
workbook
)
throws
IOException
;
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/IFileTemplateService.java
View file @
642f8f53
package
com
.
yd
.
oss
.
service
.
service
;
package
com
.
yd
.
oss
.
service
.
service
;
import
com.aliyun.oss.OSS
;
import
com.yd.oss.service.dto.FileProdDto
;
import
com.yd.oss.service.dto.FileProdDto
;
import
com.yd.oss.service.model.FileTemplate
;
import
com.yd.oss.service.model.FileTemplate
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yd.oss.service.model.OssProvider
;
import
java.io.InputStream
;
import
java.io.InputStream
;
...
@@ -16,7 +18,7 @@ import java.io.InputStream;
...
@@ -16,7 +18,7 @@ import java.io.InputStream;
*/
*/
public
interface
IFileTemplateService
extends
IService
<
FileTemplate
>
{
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
);
FileProdDto
getFileProd
(
String
templateName
,
String
templateType
);
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/OssService.java
View file @
642f8f53
...
@@ -78,9 +78,9 @@ public interface OssService {
...
@@ -78,9 +78,9 @@ public interface OssService {
// 获取上传结果(包含文件信息和访问URL)
// 获取上传结果(包含文件信息和访问URL)
UploadResult
getUploadResult
(
String
fileKey
,
Duration
expiration
);
UploadResult
getUploadResult
(
String
fileKey
,
Duration
expiration
);
String
upload
(
byte
[]
content
,
String
fileName
);
String
upload
(
byte
[]
content
,
String
fileName
,
OSS
ossClient
,
OssProvider
provider
);
String
upload
(
InputStream
inputStream
,
String
fileName
);
//
String upload(InputStream inputStream, String fileName);
// 批量上传文件
// 批量上传文件
com
.
yd
.
oss
.
feign
.
response
.
ApiBatchUploadResponse
batchUploadFiles
(
com
.
yd
.
oss
.
feign
.
response
.
ApiBatchUploadResponse
batchUploadFiles
(
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/PdfService.java
View file @
642f8f53
package
com
.
yd
.
oss
.
service
.
service
;
package
com
.
yd
.
oss
.
service
.
service
;
import
com.aliyun.oss.OSS
;
import
com.yd.oss.service.model.OssProvider
;
import
java.io.IOException
;
import
java.io.IOException
;
public
interface
PdfService
<
T
>
{
public
interface
PdfService
<
T
>
{
String
generatePDF
(
T
dataObject
,
String
objectId
,
String
templateType
,
String
customFileName
)
throws
IOException
;
String
generatePDF
(
T
dataObject
,
String
objectId
,
String
templateType
,
String
customFileName
,
OssProvider
provider
,
OSS
ossClient
)
throws
IOException
;
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
View file @
642f8f53
...
@@ -172,7 +172,7 @@ public class AliYunOssServiceImpl implements OssService {
...
@@ -172,7 +172,7 @@ public class AliYunOssServiceImpl implements OssService {
ByteArrayInputStream
byteArrayInputStream
=
new
ByteArrayInputStream
(
fileData
);
ByteArrayInputStream
byteArrayInputStream
=
new
ByteArrayInputStream
(
fileData
);
// 生成文件key(这里使用ossUtils的方法,需要传入projectBizId,但此时provider已知,可根据需要调整)
// 生成文件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
actualBucket
=
StringUtils
.
isNotBlank
(
bucketName
)
?
bucketName
:
provider
.
getBucketName
();
String
fileType
=
FileUtil
.
getFileType
(
fileName
);
String
fileType
=
FileUtil
.
getFileType
(
fileName
);
...
@@ -618,19 +618,23 @@ public class AliYunOssServiceImpl implements OssService {
...
@@ -618,19 +618,23 @@ public class AliYunOssServiceImpl implements OssService {
}
}
/**
/**
* 上传字节数组并设置公共读
(示例方法)
* 上传字节数组并设置公共读
*/
*/
public
String
upload
(
byte
[]
content
,
String
fileName
)
{
public
String
upload
(
byte
[]
content
,
String
fileName
,
OSS
ossClient
,
OssProvider
provider
)
{
OssProvider
defaultProvider
=
getDefaultProvider
();
//
OssProvider defaultProvider = getDefaultProvider();
OSS
ossClient
=
null
;
//
OSS ossClient = null;
try
{
try
{
ossClient
=
ossClientFactory
.
createOssClient
(
defaultProvider
);
// 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
(
PutObjectRequest
putObjectRequest
=
new
PutObjectRequest
(
defaultProvider
.
getBucketName
(),
objectName
,
new
ByteArrayInputStream
(
content
));
provider
.
getBucketName
(),
filePrefix
,
new
ByteArrayInputStream
(
content
));
ossClient
.
putObject
(
putObjectRequest
);
ossClient
.
putObject
(
putObjectRequest
);
ossClient
.
setObjectAcl
(
defaultProvider
.
getBucketName
(),
objectName
,
CannedAccessControlList
.
PublicRead
);
ossClient
.
setObjectAcl
(
provider
.
getBucketName
(),
filePrefix
,
CannedAccessControlList
.
PublicRead
);
return
"https://"
+
defaultProvider
.
getBucketName
()
+
"."
+
defaultProvider
.
getEndpoint
()
+
"/"
+
objectName
;
return
"https://"
+
provider
.
getBucketName
()
+
"."
+
provider
.
getEndpoint
()
+
"/"
+
filePrefix
;
}
finally
{
}
finally
{
if
(
ossClient
!=
null
)
{
if
(
ossClient
!=
null
)
{
ossClient
.
shutdown
();
ossClient
.
shutdown
();
...
@@ -641,17 +645,21 @@ public class AliYunOssServiceImpl implements OssService {
...
@@ -641,17 +645,21 @@ 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
();
//
OssProvider defaultProvider = getDefaultProvider();
OSS
ossClient
=
null
;
//
OSS ossClient = null;
try
{
try
{
ossClient
=
ossClientFactory
.
createOssClient
(
defaultProvider
);
// 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
(
PutObjectRequest
putObjectRequest
=
new
PutObjectRequest
(
defaultProvider
.
getBucketName
(),
objectName
,
inputStream
);
provider
.
getBucketName
(),
filePrefix
,
inputStream
);
ossClient
.
putObject
(
putObjectRequest
);
ossClient
.
putObject
(
putObjectRequest
);
ossClient
.
setObjectAcl
(
defaultProvider
.
getBucketName
(),
objectName
,
CannedAccessControlList
.
PublicRead
);
ossClient
.
setObjectAcl
(
provider
.
getBucketName
(),
filePrefix
,
CannedAccessControlList
.
PublicRead
);
return
"https://"
+
defaultProvider
.
getBucketName
()
+
"."
+
defaultProvider
.
getEndpoint
()
+
"/"
+
objectName
;
return
"https://"
+
provider
.
getBucketName
()
+
"."
+
provider
.
getEndpoint
()
+
"/"
+
filePrefix
;
}
finally
{
}
finally
{
if
(
ossClient
!=
null
)
{
if
(
ossClient
!=
null
)
{
ossClient
.
shutdown
();
ossClient
.
shutdown
();
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AppointmentExcelServiceImpl.java
View file @
642f8f53
...
@@ -2,9 +2,11 @@ package com.yd.oss.service.service.impl;
...
@@ -2,9 +2,11 @@ package com.yd.oss.service.service.impl;
import
cn.afterturn.easypoi.excel.ExcelExportUtil
;
import
cn.afterturn.easypoi.excel.ExcelExportUtil
;
import
cn.afterturn.easypoi.excel.entity.TemplateExportParams
;
import
cn.afterturn.easypoi.excel.entity.TemplateExportParams
;
import
com.aliyun.oss.OSS
;
import
com.yd.common.utils.CommonUtil
;
import
com.yd.common.utils.CommonUtil
;
import
com.yd.common.utils.DateUtil
;
import
com.yd.common.utils.DateUtil
;
import
com.yd.oss.service.dto.FileProdDto
;
import
com.yd.oss.service.dto.FileProdDto
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.service.AppointmentExcelService
;
import
com.yd.oss.service.service.AppointmentExcelService
;
import
com.yd.oss.service.service.ExcelService
;
import
com.yd.oss.service.service.ExcelService
;
import
com.yd.oss.service.service.IFileTemplateService
;
import
com.yd.oss.service.service.IFileTemplateService
;
...
@@ -40,13 +42,13 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
...
@@ -40,13 +42,13 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
* @param fileName
* @param fileName
* @return
* @return
*/
*/
public
String
exportAndUploadToOss
(
Map
<
String
,
Object
>
data
,
String
ossObjectKey
,
String
fileName
,
String
projectBizId
)
{
public
String
exportAndUploadToOss
(
Map
<
String
,
Object
>
data
,
String
ossObjectKey
,
String
fileName
,
OSS
ossClient
,
OssProvider
provider
)
{
File
tempFile
=
null
;
File
tempFile
=
null
;
File
processedFile
=
null
;
File
processedFile
=
null
;
try
{
try
{
// 1. 从OSS下载模板到临时文件
// 1. 从OSS下载模板到临时文件
tempFile
=
excelService
.
downloadTemplateToTempFile
(
ossObjectKey
);
tempFile
=
excelService
.
downloadTemplateToTempFile
(
ossObjectKey
,
ossClient
,
provider
);
// 2. 使用临时文件路径创建TemplateExportParams
// 2. 使用临时文件路径创建TemplateExportParams
TemplateExportParams
params
=
new
TemplateExportParams
(
tempFile
.
getAbsolutePath
());
TemplateExportParams
params
=
new
TemplateExportParams
(
tempFile
.
getAbsolutePath
());
...
@@ -69,7 +71,7 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
...
@@ -69,7 +71,7 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
byte
[]
excelBytes
=
outputStream
.
toByteArray
();
byte
[]
excelBytes
=
outputStream
.
toByteArray
();
// 7. 上传到OSS
// 7. 上传到OSS
String
ossUrl
=
ossService
.
upload
(
excelBytes
,
fileName
);
String
ossUrl
=
ossService
.
upload
(
excelBytes
,
fileName
,
ossClient
,
provider
);
// 8. 关闭资源
// 8. 关闭资源
outputStream
.
close
();
outputStream
.
close
();
...
@@ -302,12 +304,12 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
...
@@ -302,12 +304,12 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
public
String
exportAppointment
(
Map
<
String
,
Object
>
data
,
public
String
exportAppointment
(
Map
<
String
,
Object
>
data
,
String
templateType
,
String
templateType
,
String
appointmentBizId
,
String
appointmentBizId
,
String
projectBizId
)
{
OSS
ossClient
,
OssProvider
provider
)
{
// 获取模板信息
// 获取模板信息
FileProdDto
fileProdDto
=
iFileTemplateService
.
getFileProd
(
""
,
templateType
);
FileProdDto
fileProdDto
=
iFileTemplateService
.
getFileProd
(
""
,
templateType
);
// 生成文件名
// 生成文件名
String
fileName
=
"预约信息_"
+
appointmentBizId
+
"_"
+
System
.
currentTimeMillis
()
+
".xlsx"
;
String
fileName
=
"预约信息_"
+
appointmentBizId
+
"_"
+
System
.
currentTimeMillis
()
+
".xlsx"
;
// 导出并上传到OSS
// 导出并上传到OSS
return
exportAndUploadToOss
(
data
,
fileProdDto
.
getFileKey
(),
fileName
,
projectBizId
);
return
exportAndUploadToOss
(
data
,
fileProdDto
.
getFileKey
(),
fileName
,
ossClient
,
provider
);
}
}
}
}
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/CompressedFileServiceImpl.java
View file @
642f8f53
package
com
.
yd
.
oss
.
service
.
service
.
impl
;
package
com
.
yd
.
oss
.
service
.
service
.
impl
;
import
com.aliyun.oss.OSS
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.oss.feign.dto.ApiMaterialDto
;
import
com.yd.oss.feign.dto.ApiMaterialDto
;
import
com.yd.oss.feign.request.ApiMaterialDownloadRequest
;
import
com.yd.oss.feign.request.ApiMaterialDownloadRequest
;
import
com.yd.oss.feign.response.ApiMaterialDownloadResponse
;
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.CompressedFileService
;
import
com.yd.oss.service.service.OssService
;
import
com.yd.oss.service.service.OssService
;
import
com.yd.oss.service.utils.OssUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -30,11 +33,14 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -30,11 +33,14 @@ public class CompressedFileServiceImpl implements CompressedFileService {
@Autowired
@Autowired
private
OssService
ossService
;
private
OssService
ossService
;
@Autowired
// @Autowired
private
String
defaultBucket
;
// 注入默认存储桶
// private String defaultBucket; // 注入默认存储桶
//
// @Autowired
// private String defaultEndpoint; // 注入默认服务端点
@Autowired
@Autowired
private
String
defaultEndpoint
;
// 注入默认服务端点
private
OssUtils
ossUtils
;
/**
/**
...
@@ -43,7 +49,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -43,7 +49,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
* @return
* @return
*/
*/
@Override
@Override
public
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
)
{
public
Result
<
ApiMaterialDownloadResponse
>
downloadCompressedFile
(
ApiMaterialDownloadRequest
request
,
OSS
ossClient
,
OssProvider
provider
)
{
try
{
try
{
// 验证请求参数
// 验证请求参数
if
(
request
==
null
||
CollectionUtils
.
isEmpty
(
request
.
getApiMaterialDtoList
()))
{
if
(
request
==
null
||
CollectionUtils
.
isEmpty
(
request
.
getApiMaterialDtoList
()))
{
...
@@ -71,7 +77,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -71,7 +77,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
String
fileUrl
=
materialDto
.
getFileUrlList
().
get
(
i
);
String
fileUrl
=
materialDto
.
getFileUrlList
().
get
(
i
);
try
{
try
{
// 下载文件并添加到压缩包
// 下载文件并添加到压缩包
boolean
success
=
addFileToZip
(
zos
,
fileUrl
,
folderName
,
i
+
1
);
boolean
success
=
addFileToZip
(
zos
,
fileUrl
,
folderName
,
i
+
1
,
ossClient
,
provider
);
if
(
success
)
{
if
(
success
)
{
successFileCount
++;
successFileCount
++;
}
}
...
@@ -96,7 +102,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -96,7 +102,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
successFileCount
,
tempZipFile
.
length
());
successFileCount
,
tempZipFile
.
length
());
// 上传压缩包到OSS
// 上传压缩包到OSS
String
ossUrl
=
uploadZipToOss
(
tempZipFile
,
request
.
getObjectName
());
String
ossUrl
=
uploadZipToOss
(
tempZipFile
,
request
.
getObjectName
()
,
ossClient
,
provider
);
// 构建响应
// 构建响应
ApiMaterialDownloadResponse
response
=
new
ApiMaterialDownloadResponse
();
ApiMaterialDownloadResponse
response
=
new
ApiMaterialDownloadResponse
();
...
@@ -153,7 +159,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -153,7 +159,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
/**
/**
* 下载文件并添加到压缩包
* 下载文件并添加到压缩包
*/
*/
private
boolean
addFileToZip
(
ZipOutputStream
zos
,
String
fileUrl
,
String
folderName
,
int
fileIndex
)
throws
Exception
{
private
boolean
addFileToZip
(
ZipOutputStream
zos
,
String
fileUrl
,
String
folderName
,
int
fileIndex
,
OSS
ossClient
,
OssProvider
provider
)
throws
Exception
{
// 从URL中提取文件名
// 从URL中提取文件名
String
fileName
=
extractFileNameFromUrl
(
fileUrl
,
fileIndex
);
String
fileName
=
extractFileNameFromUrl
(
fileUrl
,
fileIndex
);
...
@@ -161,7 +167,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -161,7 +167,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
String
zipEntryName
=
folderName
+
"/"
+
fileName
;
String
zipEntryName
=
folderName
+
"/"
+
fileName
;
// 从OSS下载文件
// 从OSS下载文件
InputStream
fileInputStream
=
downloadFileFromUrl
(
fileUrl
);
InputStream
fileInputStream
=
downloadFileFromUrl
(
fileUrl
,
ossClient
,
provider
);
if
(
fileInputStream
==
null
)
{
if
(
fileInputStream
==
null
)
{
throw
new
IOException
(
"无法下载文件: "
+
fileUrl
);
throw
new
IOException
(
"无法下载文件: "
+
fileUrl
);
}
}
...
@@ -258,10 +264,10 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -258,10 +264,10 @@ public class CompressedFileServiceImpl implements CompressedFileService {
/**
/**
* 从URL下载文件
* 从URL下载文件
*/
*/
private
InputStream
downloadFileFromUrl
(
String
fileUrl
)
{
private
InputStream
downloadFileFromUrl
(
String
fileUrl
,
OSS
ossClient
,
OssProvider
provider
)
{
try
{
try
{
// 方法1: 尝试从OSS下载(如果URL是我们OSS的)
// 方法1: 尝试从OSS下载(如果URL是我们OSS的)
String
fileKey
=
extractFileKeyFromUrl
(
fileUrl
);
String
fileKey
=
extractFileKeyFromUrl
(
fileUrl
,
ossClient
,
provider
);
if
(
StringUtils
.
hasText
(
fileKey
))
{
if
(
StringUtils
.
hasText
(
fileKey
))
{
log
.
debug
(
"从OSS下载文件,fileKey: {}"
,
fileKey
);
log
.
debug
(
"从OSS下载文件,fileKey: {}"
,
fileKey
);
return
ossService
.
downloadFile
(
fileKey
);
return
ossService
.
downloadFile
(
fileKey
);
...
@@ -280,7 +286,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -280,7 +286,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
/**
/**
* 从完整URL中提取OSS文件key
* 从完整URL中提取OSS文件key
*/
*/
private
String
extractFileKeyFromUrl
(
String
fileUrl
)
{
private
String
extractFileKeyFromUrl
(
String
fileUrl
,
OSS
ossClient
,
OssProvider
provider
)
{
if
(!
StringUtils
.
hasText
(
fileUrl
))
{
if
(!
StringUtils
.
hasText
(
fileUrl
))
{
return
null
;
return
null
;
}
}
...
@@ -297,10 +303,10 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -297,10 +303,10 @@ public class CompressedFileServiceImpl implements CompressedFileService {
}
}
// 从配置获取endpoint
// 从配置获取endpoint
String
endpoint
=
defaultEndpoint
;
String
endpoint
=
provider
.
getEndpoint
()
;
// 查找bucket.endpoint组合
// 查找bucket.endpoint组合
String
bucketEndpoint
=
defaultBucket
+
"."
+
endpoint
;
String
bucketEndpoint
=
provider
.
getBucketName
()
+
"."
+
endpoint
;
int
bucketEndpointIndex
=
url
.
indexOf
(
bucketEndpoint
);
int
bucketEndpointIndex
=
url
.
indexOf
(
bucketEndpoint
);
if
(
bucketEndpointIndex
>=
0
)
{
if
(
bucketEndpointIndex
>=
0
)
{
...
@@ -368,7 +374,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -368,7 +374,7 @@ public class CompressedFileServiceImpl implements CompressedFileService {
/**
/**
* 上传压缩包到OSS
* 上传压缩包到OSS
*/
*/
private
String
uploadZipToOss
(
File
zipFile
,
String
objectName
)
throws
Exception
{
private
String
uploadZipToOss
(
File
zipFile
,
String
objectName
,
OSS
ossClient
,
OssProvider
provider
)
throws
Exception
{
if
(!
zipFile
.
exists
()
||
zipFile
.
length
()
==
0
)
{
if
(!
zipFile
.
exists
()
||
zipFile
.
length
()
==
0
)
{
throw
new
IOException
(
"压缩文件不存在或为空"
);
throw
new
IOException
(
"压缩文件不存在或为空"
);
}
}
...
@@ -388,9 +394,9 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -388,9 +394,9 @@ public class CompressedFileServiceImpl implements CompressedFileService {
try
{
try
{
// 方法1: 直接调用public方法
// 方法1: 直接调用public方法
java
.
lang
.
reflect
.
Method
uploadMethod
=
AliYunOssServiceImpl
.
class
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
);
log
.
info
(
"压缩包上传成功,URL: {}"
,
ossUrl
);
return
ossUrl
;
return
ossUrl
;
...
@@ -402,9 +408,9 @@ public class CompressedFileServiceImpl implements CompressedFileService {
...
@@ -402,9 +408,9 @@ public class CompressedFileServiceImpl implements CompressedFileService {
byte
[]
zipBytes
=
readFileToBytes
(
zipFile
);
byte
[]
zipBytes
=
readFileToBytes
(
zipFile
);
try
{
try
{
java
.
lang
.
reflect
.
Method
uploadMethod2
=
AliYunOssServiceImpl
.
class
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
);
log
.
info
(
"压缩包上传成功,URL: {}"
,
ossUrl
);
return
ossUrl
;
return
ossUrl
;
}
catch
(
NoSuchMethodException
e2
)
{
}
catch
(
NoSuchMethodException
e2
)
{
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/ExcelServiceImpl.java
View file @
642f8f53
...
@@ -2,6 +2,7 @@ package com.yd.oss.service.service.impl;
...
@@ -2,6 +2,7 @@ package com.yd.oss.service.service.impl;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.model.OSSObject
;
import
com.aliyun.oss.model.OSSObject
;
import
com.yd.oss.service.model.OssProvider
;
import
com.yd.oss.service.service.ExcelService
;
import
com.yd.oss.service.service.ExcelService
;
import
com.yd.oss.service.service.OssService
;
import
com.yd.oss.service.service.OssService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -27,11 +28,11 @@ public class ExcelServiceImpl implements ExcelService {
...
@@ -27,11 +28,11 @@ public class ExcelServiceImpl implements ExcelService {
@Resource
@Resource
private
OssService
ossService
;
private
OssService
ossService
;
@Autowired
//
@Autowired
private
OSS
ossClient
;
// 注入OSS客户端
//
private OSS ossClient; // 注入OSS客户端
@Autowired
//
@Autowired
private
String
defaultBucket
;
// 注入默认存储桶
//
private String defaultBucket; // 注入默认存储桶
/**
/**
* 从OSS下载模板到临时文件
* 从OSS下载模板到临时文件
...
@@ -40,13 +41,13 @@ public class ExcelServiceImpl implements ExcelService {
...
@@ -40,13 +41,13 @@ public class ExcelServiceImpl implements ExcelService {
* @throws IOException
* @throws IOException
*/
*/
@Override
@Override
public
File
downloadTemplateToTempFile
(
String
ossObjectKey
)
throws
IOException
{
public
File
downloadTemplateToTempFile
(
String
ossObjectKey
,
OSS
ossClient
,
OssProvider
provider
)
throws
IOException
{
// 创建临时文件
// 创建临时文件
Path
tempPath
=
Files
.
createTempFile
(
"template"
,
".xlsx"
);
Path
tempPath
=
Files
.
createTempFile
(
"template"
,
".xlsx"
);
File
tempFile
=
tempPath
.
toFile
();
File
tempFile
=
tempPath
.
toFile
();
tempFile
.
deleteOnExit
();
// JVM退出时删除
tempFile
.
deleteOnExit
();
// JVM退出时删除
try
(
OSSObject
ossObject
=
ossClient
.
getObject
(
defaultBucket
,
ossObjectKey
);
try
(
OSSObject
ossObject
=
ossClient
.
getObject
(
provider
.
getBucketName
()
,
ossObjectKey
);
InputStream
inputStream
=
ossObject
.
getObjectContent
();
InputStream
inputStream
=
ossObject
.
getObjectContent
();
FileOutputStream
outputStream
=
new
FileOutputStream
(
tempFile
))
{
FileOutputStream
outputStream
=
new
FileOutputStream
(
tempFile
))
{
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/FileTemplateServiceImpl.java
View file @
642f8f53
...
@@ -37,8 +37,8 @@ public class FileTemplateServiceImpl extends ServiceImpl<FileTemplateMapper, Fil
...
@@ -37,8 +37,8 @@ public class FileTemplateServiceImpl extends ServiceImpl<FileTemplateMapper, Fil
@Autowired
@Autowired
private
IOssProviderService
ossProviderService
;
private
IOssProviderService
ossProviderService
;
@Autowired
//
@Autowired
private
OSS
ossClient
;
// 注入OSS客户端
//
private OSS ossClient; // 注入OSS客户端
/**
/**
* 根据模板名称和模板类型获取云服务商和文件信息
* 根据模板名称和模板类型获取云服务商和文件信息
...
@@ -56,7 +56,7 @@ public class FileTemplateServiceImpl extends ServiceImpl<FileTemplateMapper, Fil
...
@@ -56,7 +56,7 @@ public class FileTemplateServiceImpl extends ServiceImpl<FileTemplateMapper, Fil
* @param objectKey
* @param objectKey
* @return
* @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
);
OSSObject
object
=
ossClient
.
getObject
(
bucketName
,
objectKey
);
return
object
.
getObjectContent
();
return
object
.
getObjectContent
();
}
}
...
...
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/PdfServiceImpl.java
View file @
642f8f53
...
@@ -6,7 +6,9 @@ import com.aliyun.oss.model.GeneratePresignedUrlRequest;
...
@@ -6,7 +6,9 @@ import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.yd.oss.service.dto.FileProdDto
;
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.service.*
;
import
com.yd.oss.service.utils.OssUtils
;
import
com.yd.oss.service.utils.PdfUtil
;
import
com.yd.oss.service.utils.PdfUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -39,7 +41,10 @@ public class PdfServiceImpl<T> implements PdfService<T> {
...
@@ -39,7 +41,10 @@ public class PdfServiceImpl<T> implements PdfService<T> {
private
FieldValueProvider
<
T
>
fieldValueProvider
;
private
FieldValueProvider
<
T
>
fieldValueProvider
;
@Autowired
@Autowired
private
OSS
ossClient
;
// 注入OSS客户端
private
OssUtils
ossUtils
;
// @Autowired
// private OSS ossClient; // 注入OSS客户端
/**
/**
* 根据入参的数据和文件模板的JSON字段映射构建生成PDF
* 根据入参的数据和文件模板的JSON字段映射构建生成PDF
...
@@ -50,13 +55,13 @@ public class PdfServiceImpl<T> implements PdfService<T> {
...
@@ -50,13 +55,13 @@ public class PdfServiceImpl<T> implements PdfService<T> {
* @return
* @return
* @throws IOException
* @throws IOException
*/
*/
public
String
generatePDF
(
T
dataObject
,
String
objectId
,
String
templateType
,
String
customFileName
)
throws
IOException
{
public
String
generatePDF
(
T
dataObject
,
String
objectId
,
String
templateType
,
String
customFileName
,
OssProvider
provider
,
OSS
ossClient
)
throws
IOException
{
// 获取模板信息
// 获取模板信息
FileProdDto
fileProdDto
=
iFileTemplateService
.
getFileProd
(
""
,
templateType
);
FileProdDto
fileProdDto
=
iFileTemplateService
.
getFileProd
(
""
,
templateType
);
// 从OSS获取模板
// 从OSS获取模板
InputStream
templateStream
=
iFileTemplateService
.
getTemplateInputStreamFromOSS
(
InputStream
templateStream
=
iFileTemplateService
.
getTemplateInputStreamFromOSS
(
fileProdDto
.
getBucketName
(),
fileProdDto
.
getFileKey
());
fileProdDto
.
getBucketName
(),
fileProdDto
.
getFileKey
()
,
provider
,
ossClient
);
// 创建临时文件
// 创建临时文件
File
tempInputFile
=
File
.
createTempFile
(
"template"
,
".docx"
);
File
tempInputFile
=
File
.
createTempFile
(
"template"
,
".docx"
);
...
@@ -71,16 +76,23 @@ public class PdfServiceImpl<T> implements PdfService<T> {
...
@@ -71,16 +76,23 @@ public class PdfServiceImpl<T> implements PdfService<T> {
// 上传到OSS
// 上传到OSS
String
objectName
=
""
;
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
))
{
if
(
StringUtils
.
isNotBlank
(
customFileName
))
{
objectName
=
"insurance_schedules/"
+
System
.
currentTimeMillis
()
+
"/"
+
customFileName
+
".pdf"
;
objectName
=
prefix
+
"insurance_schedules/"
+
System
.
currentTimeMillis
()
+
"/"
+
customFileName
+
".pdf"
;
}
else
{
}
else
{
objectName
=
"insurance_schedules/"
+
objectId
+
"_"
+
System
.
currentTimeMillis
()
+
".pdf"
;
objectName
=
prefix
+
"insurance_schedules/"
+
objectId
+
"_"
+
System
.
currentTimeMillis
()
+
".pdf"
;
}
}
uploadToOSS
(
tempPdfFile
,
fileProdDto
.
getBucketName
(),
objectName
);
uploadToOSS
(
tempPdfFile
,
fileProdDto
.
getBucketName
(),
objectName
,
provider
,
ossClient
);
// 生成访问URL
// 生成访问URL
return
generatePresignedUrl
(
fileProdDto
.
getBucketName
(),
objectName
);
return
generatePresignedUrl
(
fileProdDto
.
getBucketName
(),
objectName
,
provider
,
ossClient
);
}
finally
{
}
finally
{
// 清理临时文件
// 清理临时文件
...
@@ -328,7 +340,7 @@ public class PdfServiceImpl<T> implements PdfService<T> {
...
@@ -328,7 +340,7 @@ public class PdfServiceImpl<T> implements PdfService<T> {
* @param objectName
* @param objectName
* @throws IOException
* @throws IOException
*/
*/
private
void
uploadToOSS
(
File
file
,
String
bucketName
,
String
objectName
)
throws
IOException
{
private
void
uploadToOSS
(
File
file
,
String
bucketName
,
String
objectName
,
OssProvider
provider
,
OSS
ossClient
)
throws
IOException
{
ossClient
.
putObject
(
bucketName
,
objectName
,
new
FileInputStream
(
file
));
ossClient
.
putObject
(
bucketName
,
objectName
,
new
FileInputStream
(
file
));
}
}
...
@@ -338,7 +350,7 @@ public class PdfServiceImpl<T> implements PdfService<T> {
...
@@ -338,7 +350,7 @@ public class PdfServiceImpl<T> implements PdfService<T> {
* @param objectName
* @param objectName
* @return
* @return
*/
*/
private
String
generatePresignedUrl
(
String
bucketName
,
String
objectName
)
{
private
String
generatePresignedUrl
(
String
bucketName
,
String
objectName
,
OssProvider
provider
,
OSS
ossClient
)
{
Date
expiration
=
new
Date
(
System
.
currentTimeMillis
()
+
3600
*
1000
);
Date
expiration
=
new
Date
(
System
.
currentTimeMillis
()
+
3600
*
1000
);
GeneratePresignedUrlRequest
request
=
new
GeneratePresignedUrlRequest
(
bucketName
,
objectName
,
HttpMethod
.
GET
);
GeneratePresignedUrlRequest
request
=
new
GeneratePresignedUrlRequest
(
bucketName
,
objectName
,
HttpMethod
.
GET
);
request
.
setExpiration
(
expiration
);
request
.
setExpiration
(
expiration
);
...
...
yd-oss-service/src/main/java/com/yd/oss/service/utils/OssUtils.java
View file @
642f8f53
...
@@ -45,6 +45,24 @@ public class OssUtils {
...
@@ -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 projectBizId
* @param env
* @param env
...
@@ -67,7 +85,7 @@ public class OssUtils {
...
@@ -67,7 +85,7 @@ public class OssUtils {
return
projectType
+
"/"
+
env
+
"/large_file/uploads/"
+
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy/MM/dd/"
));
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
();
String
[]
activeProfiles
=
environment
.
getActiveProfiles
();
return
activeProfiles
.
length
>
0
?
activeProfiles
[
0
]
:
"prod"
;
return
activeProfiles
.
length
>
0
?
activeProfiles
[
0
]
:
"prod"
;
}
}
...
...
yd-oss-service/yd-oss-service.iml
View file @
642f8f53
...
@@ -26,6 +26,7 @@
...
@@ -26,6 +26,7 @@
</content>
</content>
<orderEntry
type=
"jdk"
jdkName=
"1.8"
jdkType=
"JavaSDK"
/>
<orderEntry
type=
"jdk"
jdkName=
"1.8"
jdkType=
"JavaSDK"
/>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
<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-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:3.5.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.baomidou:mybatis-plus-annotation: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