【feat】调整文件上传下载,将上传下载链接配置在数据库

This commit is contained in:
Kris 2025-06-17 15:41:28 +08:00
parent 4697cd95a1
commit e532b21465
6 changed files with 93 additions and 27 deletions

View File

@ -1,8 +1,13 @@
# 程序配置 # 程序配置
# xxl job数据库链接 # xxl job数据库链接
#cook
#dbUrl="jdbc:mysql://127.0.0.1:3306/data-dump-xxl-job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai"
#dbUsername="root"
#dbPassword="celnet@2025.bln"
#携科
dbUrl="jdbc:mysql://127.0.0.1:3306/data-dump-xxl-job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai" dbUrl="jdbc:mysql://127.0.0.1:3306/data-dump-xxl-job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai"
dbUsername="root" dbUsername="root"
dbPassword="celnet@2025.bln" dbPassword="Celnet2025.QY"
#dbUrl="jdbc:mysql://127.0.0.113306/data-dump-xxl-job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai" #dbUrl="jdbc:mysql://127.0.0.113306/data-dump-xxl-job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai"
#dbUsername="msg" #dbUsername="msg"
#dbPassword="msg@2021" #dbPassword="msg@2021"

View File

@ -51,11 +51,6 @@ public class FileManagerServiceImpl implements FileManagerService {
@Autowired @Autowired
private SalesforceExecutor salesforceExecutor; private SalesforceExecutor salesforceExecutor;
@Value(value = "${sf.file-download-url}")
private String downloadUrl;
@Value(value = "${sf.file-upload-url}")
private String uploadUrl;
@ -169,6 +164,16 @@ public class FileManagerServiceImpl implements FileManagerService {
Map<String, String> headers = Maps.newHashMap(); Map<String, String> headers = Maps.newHashMap();
headers.put("Authorization", "Bearer " + token); headers.put("Authorization", "Bearer " + token);
headers.put("connection", "keep-alive"); headers.put("connection", "keep-alive");
String downloadUrl = null;
List<Map<String, Object>> poll = customMapper.list("code,value","org_config",null);
for (Map<String, Object> map1 : poll) {
if ("FILE_DOWNLOAD_URL".equals(map1.get("code"))) {
downloadUrl = (String) map1.get("value");
}else {
EmailUtil.send("DumpFile ERROR", "文件下载失败!下载地址未配置");
return;
}
}
String url = downloadUrl + String.format(Const.SF_RICH_TEXT_FILE_URL, objectApi, recordId, fieldApi, fieldId); String url = downloadUrl + String.format(Const.SF_RICH_TEXT_FILE_URL, objectApi, recordId, fieldApi, fieldId);
try { try {
@ -297,6 +302,17 @@ public class FileManagerServiceImpl implements FileManagerService {
} }
ids.add(id); ids.add(id);
} }
String uploadUrl = null;
List<Map<String, Object>> poll = customMapper.list("code,value","org_config",null);
for (Map<String, Object> map1 : poll) {
if ("FILE_UPLOAD_URL".equals(map1.get("code"))) {
uploadUrl = (String) map1.get("value");
}else {
EmailUtil.send("UploadFile ERROR", "文件上传失败!上传地址未配置");
return;
}
}
// 拼接url // 拼接url
String url = uploadUrl + String.format(Const.SF_UPLOAD_RICH_TEXT_FILE_URL, objectApi, recordId); String url = uploadUrl + String.format(Const.SF_UPLOAD_RICH_TEXT_FILE_URL, objectApi, recordId);

View File

@ -1,5 +1,6 @@
package com.celnet.datadump.service.impl; package com.celnet.datadump.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -10,10 +11,12 @@ import com.celnet.datadump.config.SalesforceTargetConnect;
import com.celnet.datadump.entity.DataObject; import com.celnet.datadump.entity.DataObject;
import com.celnet.datadump.enums.FileType; import com.celnet.datadump.enums.FileType;
import com.celnet.datadump.global.Const; import com.celnet.datadump.global.Const;
import com.celnet.datadump.param.DataDumpParam;
import com.celnet.datadump.param.FileTransformParam; import com.celnet.datadump.param.FileTransformParam;
import com.celnet.datadump.global.SystemConfigCode; import com.celnet.datadump.global.SystemConfigCode;
import com.celnet.datadump.mapper.CustomMapper; import com.celnet.datadump.mapper.CustomMapper;
import com.celnet.datadump.service.*; import com.celnet.datadump.service.*;
import com.celnet.datadump.util.EmailUtil;
import com.celnet.datadump.util.HttpUtil; import com.celnet.datadump.util.HttpUtil;
import com.celnet.datadump.util.OssUtil; import com.celnet.datadump.util.OssUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@ -75,12 +78,6 @@ public class FileServiceImpl implements FileService {
@Autowired @Autowired
private CommonService commonService; private CommonService commonService;
@Value(value = "${sf.file-download-url}")
private String downloadUrl;
@Value(value = "${sf.file-upload-url}")
private String uploadUrl;
@Override @Override
public void verifyFile(String api, String field) { public void verifyFile(String api, String field) {
log.info("verify file api:{}, field:{}", api, field); log.info("verify file api:{}, field:{}", api, field);
@ -137,6 +134,16 @@ public class FileServiceImpl implements FileService {
@Override @Override
public void dumpFile(String api, String field, Boolean singleThread) { public void dumpFile(String api, String field, Boolean singleThread) {
String downloadUrl = null;
List<Map<String, Object>> poll = customMapper.list("code,value","org_config",null);
for (Map<String, Object> map1 : poll) {
if ("FILE_DOWNLOAD_URL".equals(map1.get("code"))) {
downloadUrl = (String) map1.get("value");
}else {
EmailUtil.send("DumpFile ERROR", "文件下载失败!下载地址未配置");
return;
}
}
log.info("dump file api:{}, field:{}", api, field); log.info("dump file api:{}, field:{}", api, field);
PartnerConnection connect = salesforceConnect.createConnect(); PartnerConnection connect = salesforceConnect.createConnect();
String token = connect.getSessionHeader().getSessionId(); String token = connect.getSessionHeader().getSessionId();
@ -167,6 +174,7 @@ public class FileServiceImpl implements FileService {
} }
String finalName = name; String finalName = name;
for (Map<String, Object> map : list) { for (Map<String, Object> map : list) {
String finalDownloadUrl = downloadUrl;
Future<?> future = salesforceExecutor.execute(() -> { Future<?> future = salesforceExecutor.execute(() -> {
String id = null; String id = null;
// 上传完毕 更新附件信息 // 上传完毕 更新附件信息
@ -182,7 +190,7 @@ public class FileServiceImpl implements FileService {
if (StringUtils.isNotBlank(fileName)) { if (StringUtils.isNotBlank(fileName)) {
String filePath = api + "/" + id + "_" + fileName; String filePath = api + "/" + id + "_" + fileName;
// 拼接url // 拼接url
String url = downloadUrl + String.format(Const.SF_FILE_URL, api, id, field); String url = finalDownloadUrl + String.format(Const.SF_FILE_URL, api, id, field);
Response response = HttpUtil.doGet(url, null, headers); Response response = HttpUtil.doGet(url, null, headers);
if (response.body() != null) { if (response.body() != null) {
InputStream inputStream = response.body().byteStream(); InputStream inputStream = response.body().byteStream();
@ -423,6 +431,18 @@ public class FileServiceImpl implements FileService {
@Override @Override
public void uploadFile(String api, String field, Boolean singleThread) { public void uploadFile(String api, String field, Boolean singleThread) {
String uploadUrl = null;
List<Map<String, Object>> poll = customMapper.list("code,value","org_config",null);
for (Map<String, Object> map1 : poll) {
if ("FILE_UPLOAD_URL".equals(map1.get("code"))) {
uploadUrl = (String) map1.get("value");
}else {
EmailUtil.send("UploadFile ERROR", "文件上传失败!上传地址未配置");
return;
}
}
log.info("upload file api:{}, field:{}", api, field); log.info("upload file api:{}, field:{}", api, field);
PartnerConnection connect = salesforceTargetConnect.createConnect(); PartnerConnection connect = salesforceTargetConnect.createConnect();
String token = connect.getSessionHeader().getSessionId(); String token = connect.getSessionHeader().getSessionId();
@ -449,6 +469,7 @@ public class FileServiceImpl implements FileService {
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
continue; continue;
} }
String finalUploadUrl = uploadUrl;
Future<?> future = salesforceExecutor.execute(() -> { Future<?> future = salesforceExecutor.execute(() -> {
String newDocumentId = null; String newDocumentId = null;
for (Map<String, Object> map : list) { for (Map<String, Object> map : list) {
@ -477,7 +498,7 @@ public class FileServiceImpl implements FileService {
break; break;
} }
// 拼接url // 拼接url
String url = uploadUrl + String.format(Const.SF_UPLOAD_FILE_URL, api); String url = finalUploadUrl + String.format(Const.SF_UPLOAD_FILE_URL, api);
HttpPost httpPost = new HttpPost(url); HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Authorization", "Bearer " + token); httpPost.setHeader("Authorization", "Bearer " + token);
httpPost.setHeader("connection", "keep-alive"); httpPost.setHeader("connection", "keep-alive");
@ -592,6 +613,17 @@ public class FileServiceImpl implements FileService {
@Override @Override
public void uploadFileToAttachment(String api, String field, Boolean singleThread) { public void uploadFileToAttachment(String api, String field, Boolean singleThread) {
String uploadUrl = null;
List<Map<String, Object>> poll = customMapper.list("code,value","org_config",null);
for (Map<String, Object> map1 : poll) {
if ("FILE_UPLOAD_URL".equals(map1.get("code"))) {
uploadUrl = (String) map1.get("value");
}else {
EmailUtil.send("UploadFile ERROR", "文件上传失败!上传地址未配置");
return;
}
}
log.info("upload file api:{}, field:{}", api, field); log.info("upload file api:{}, field:{}", api, field);
PartnerConnection connect = salesforceTargetConnect.createConnect(); PartnerConnection connect = salesforceTargetConnect.createConnect();
String token = connect.getSessionHeader().getSessionId(); String token = connect.getSessionHeader().getSessionId();
@ -612,6 +644,7 @@ public class FileServiceImpl implements FileService {
// 获取未存储的附件id // 获取未存储的附件id
List<Map<String, Object>> list = customMapper.list("Id, ParentId, Name, url, Description, Parent_type", api, "is_upload = 0"); List<Map<String, Object>> list = customMapper.list("Id, ParentId, Name, url, Description, Parent_type", api, "is_upload = 0");
for (Map<String, Object> map : list) { for (Map<String, Object> map : list) {
String finalUploadUrl = uploadUrl;
Future<?> future = salesforceExecutor.execute(() -> { Future<?> future = salesforceExecutor.execute(() -> {
String id = null; String id = null;
// 上传完毕 更新附件信息 // 上传完毕 更新附件信息
@ -649,7 +682,7 @@ public class FileServiceImpl implements FileService {
Map<String, Object> lMap = customMapper.getById("new_id",parentType, parentId); Map<String, Object> lMap = customMapper.getById("new_id",parentType, parentId);
// 拼接url // 拼接url
String url = uploadUrl + String.format(Const.SF_UPLOAD_FILE_URL, api); String url = finalUploadUrl + String.format(Const.SF_UPLOAD_FILE_URL, api);
HttpPost httpPost = new HttpPost(url); HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Authorization", "Bearer " + token); httpPost.setHeader("Authorization", "Bearer " + token);
httpPost.setHeader("connection", "keep-alive"); httpPost.setHeader("connection", "keep-alive");

View File

@ -2,12 +2,15 @@ spring:
datasource: datasource:
type: com.zaxxer.hikari.HikariDataSource type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/cook?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai # 携科
url: jdbc:mysql://127.0.0.1:3306/xieke?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root username: root
password: celnet@2025.bln password: Celnet2025.QY
# url: jdbc:mysql://183.6.105.131:13306/zhonghe_test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai # cook
# url: jdbc:mysql://127.0.0.1:3306/cook?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
# username: root # username: root
# password: Celnet@2022 # password: celnet@2025.bln
mail: mail:
host: smtp.163.com host: smtp.163.com
port: 465 port: 465

View File

@ -2,11 +2,14 @@ spring:
datasource: datasource:
type: com.zaxxer.hikari.HikariDataSource type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/cook?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true # 携科
url: jdbc:mysql://127.0.0.1:3306/xieke?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root username: root
password: Celnet2025.QY
# cook
# url: jdbc:mysql://127.0.0.1:3306/cook?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
# username: root
# password: celnet@2025.bln # password: celnet@2025.bln
password: root
mail: mail:
host: smtp.mxhichina.com host: smtp.mxhichina.com
port: 465 port: 465
@ -18,8 +21,8 @@ spring:
#sf webservice配置 #sf webservice配置
sf: sf:
# 附件下载url # 附件下载url
file-download-url: https://cookmedicalasia.my.salesforce.com file-download-url: https://d2000000079c7eaa.lightning.force.com
file-upload-url: https://cookchina--sandbox.sandbox.my.sfcrmproducts.cn file-upload-url: https://steco-process.lightning.sfcrmapps.cn
#线程数 #线程数
executor-size: 5 executor-size: 5
list: list:

View File

@ -2,9 +2,15 @@ spring:
datasource: datasource:
type: com.zaxxer.hikari.HikariDataSource type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/cook?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true # 携科
url: jdbc:mysql://127.0.0.1:3306/xieke?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root username: root
password: celnet@2025.bln password: Celnet2025.QY
# cook
# url: jdbc:mysql://127.0.0.1:3306/cook?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
# username: root
# password: celnet@2025.bln
mail: mail:
host: smtp.163.com host: smtp.163.com
port: 465 port: 465