Commit 8330f895 by fudahua

Merge branch 'developer' into 'master'

Developer

See merge request !64
parents 54239afb bad3aeb9
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.gic</groupId> <groupId>com.gic</groupId>
<artifactId>gic-cloud-data-hook-api</artifactId> <artifactId>gic-cloud-data-hook-api</artifactId>
<version>2.40</version> <version>2.42</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.gic</groupId> <groupId>com.gic</groupId>
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<dependency> <dependency>
<groupId>com.gic</groupId> <groupId>com.gic</groupId>
<artifactId>gic-platform-config</artifactId> <artifactId>gic-platform-config</artifactId>
<version>2.26</version> <version>2.29</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -84,5 +84,7 @@ public interface IFreeQueryService { ...@@ -84,5 +84,7 @@ public interface IFreeQueryService {
List<String> listFilterPhoneAndCardNoField(); List<String> listFilterPhoneAndCardNoField();
List<String> listFilterPhoneAndCardNoCardNumField();
List<String> listFilterUserName(); List<String> listFilterUserName();
} }
...@@ -183,6 +183,11 @@ ...@@ -183,6 +183,11 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-enterprise-api</artifactId>
<version>${gic-enterprise-api}</version>
</dependency>
</dependencies> </dependencies>
......
...@@ -32,7 +32,10 @@ public class FilterFieldUtils { ...@@ -32,7 +32,10 @@ public class FilterFieldUtils {
/** 脱敏字段 */ /** 脱敏字段 */
public static List<String> FILTERS_PHONE_AND_CARD = Arrays.asList("card_num", "mobile", "phone", "enterprise_name", "phone_number", "receive_phone_number","receive_card_num","use_phone_number", "use_card_num","friend_card_num","from_card_num", "friend_phone_num","from_phone_num"); public static List<String> FILTERS_PHONE_AND_CARD = Arrays.asList("card_num", "mobile", "phone", "enterprise_name", "phone_number", "receive_phone_number","receive_card_num","use_phone_number", "use_card_num","friend_card_num","from_card_num", "friend_phone_num","from_phone_num");
public static List<String> FILETERS_USER_NAME = Arrays.asList("member_name","children_name","mbr_name","receive_member_name","use_member_name","name","bb_name","friend_mbr_name","from_mbr_name"); /** 脱敏字段 */
public static List<String> FILTERS_PHONE_AND_CARD_COUPON = Arrays.asList("card_num", "mobile", "phone", "enterprise_name", "phone_number", "receive_phone_number","receive_card_num","use_phone_number", "use_card_num","friend_card_num","from_card_num", "friend_phone_num","from_phone_num","card_code");
public static List<String> FILETERS_USER_NAME = Arrays.asList("member_name","children_name","mbr_name","receive_member_name","use_member_name","name","bb_name","friend_mbr_name","from_mbr_name","card_code");
ScheduledExecutorService timer = new ScheduledThreadPoolExecutor(1, ScheduledExecutorService timer = new ScheduledThreadPoolExecutor(1,
new BasicThreadFactory.Builder().namingPattern("loadFilterFieldTimer-%d").daemon(true).build()); new BasicThreadFactory.Builder().namingPattern("loadFilterFieldTimer-%d").daemon(true).build());
......
...@@ -2,6 +2,8 @@ package com.gic.cloud.data.hook.service.impl; ...@@ -2,6 +2,8 @@ package com.gic.cloud.data.hook.service.impl;
import cn.medubi.client.utils.LogPak; import cn.medubi.client.utils.LogPak;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;
import com.gic.cloud.common.api.base.Page; import com.gic.cloud.common.api.base.Page;
import com.gic.cloud.data.hook.api.dto.*; import com.gic.cloud.data.hook.api.dto.*;
import com.gic.cloud.data.hook.api.entity.DownloadTaskStatus; import com.gic.cloud.data.hook.api.entity.DownloadTaskStatus;
...@@ -99,9 +101,30 @@ public class DownloadTaskServiceImpl implements IDownloadTaskService { ...@@ -99,9 +101,30 @@ public class DownloadTaskServiceImpl implements IDownloadTaskService {
result.setList(preResult.getList()); // 设置数据集 result.setList(preResult.getList()); // 设置数据集
result.setTotal(preResult.getTotal()); // 设置总数 result.setTotal(preResult.getTotal()); // 设置总数
result.setPageNum(preResult.getPageNum()); // 设置当前页数 result.setPageNum(preResult.getPageNum()); // 设置当前页数
if (CollectionUtils.isNotEmpty(result.getList())) {
for (DownloadTask downloadTask : result.getList()) {
if (StringUtils.isBlank(downloadTask.getFilePath())) {
continue;
}
downloadTask.setFilePath(getDownloadUrl(downloadTask.getFilePath(),downloadTask.getName()));
}
}
return result; return result;
} }
private String getDownloadUrl(String url,String filename) {
Config config = ConfigService.getConfig("COMMON.cloud.file.setting");
String hostUrl = config.getProperty("gic.proxy.url", null);
if (org.apache.commons.lang.StringUtils.isBlank(hostUrl)) {
return url;
}else{
int pos = url.lastIndexOf(".");
String ext = url.substring(pos);
return hostUrl+"/"+filename+ext+"?url="+url;
}
}
/** 创建下载任务 /** 创建下载任务
* @param task * @param task
* @return * @return
......
...@@ -15,8 +15,15 @@ import com.gic.cloud.data.hook.service.dao.FlatQueryTableDao; ...@@ -15,8 +15,15 @@ import com.gic.cloud.data.hook.service.dao.FlatQueryTableDao;
import com.gic.cloud.data.hook.service.entity.CsvDataFilterMode; import com.gic.cloud.data.hook.service.entity.CsvDataFilterMode;
import com.gic.cloud.data.hook.service.entity.CsvResultSetHelper; import com.gic.cloud.data.hook.service.entity.CsvResultSetHelper;
import com.gic.dubbo.entity.ProviderLocalTag; import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.qcloud.BucketNameEnum; import com.gic.qcloud.BucketNameEnum;
import com.gic.qcloud.FileRecordLogUtil;
import com.gic.qcloud.FileUploadUtil; import com.gic.qcloud.FileUploadUtil;
import com.gic.thirdparty.cloudfile.CloudFileUtil;
import com.gic.thirdparty.cloudfile.enums.CloudFileBusinessOptEnum;
import com.gic.thirdparty.cloudfile.enums.CloudFileTypeEnum;
import com.gic.thirdparty.cloudfile.pojo.CloudFileInfo;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.opencsv.CSVWriter; import com.opencsv.CSVWriter;
import com.opencsv.ResultSetHelper; import com.opencsv.ResultSetHelper;
...@@ -85,6 +92,9 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService { ...@@ -85,6 +92,9 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
@Autowired @Autowired
DecryptKeyService decryptKeyService; DecryptKeyService decryptKeyService;
@Autowired
private EnterpriseService enterpriseService;
/** 自助指标查询关联的下载条件列表 */ /** 自助指标查询关联的下载条件列表 */
protected List<FlatQueryTaskCondition> taskConditions = Lists.newArrayList(); protected List<FlatQueryTaskCondition> taskConditions = Lists.newArrayList();
protected List<FlatQueryTaskCondition> bigTaskConditions = Lists.newArrayList(); protected List<FlatQueryTaskCondition> bigTaskConditions = Lists.newArrayList();
...@@ -99,6 +109,13 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService { ...@@ -99,6 +109,13 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
runApplyTask(5); // 每5秒钟进行任务状态检测 runApplyTask(5); // 每5秒钟进行任务状态检测
} }
private String cloudFileUpload(String enterpriseId,File file,String fileExt){
EnterpriseDTO enterprise = enterpriseService.getEnterpriseById(enterpriseId);
CloudFileInfo zip = CloudFileUtil.uploadFile(file, fileExt, CloudFileTypeEnum.FILE, enterprise.getFactoryCode(), CloudFileBusinessOptEnum.HOOK_COMMON);
FileRecordLogUtil.recordUseLog("FlatQueryResultServiceImpl#cloudFileUpload||"+fileExt);
return zip.getOrgFileUrl();
}
/** 生成自助指标查询最终 SQL /** 生成自助指标查询最终 SQL
* @param queryOrDownload 查询或下载用途 * @param queryOrDownload 查询或下载用途
* @param tableId * @param tableId
...@@ -328,6 +345,8 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService { ...@@ -328,6 +345,8 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
fieldResult = DecryptUtils.decrypt(enterpriseId,preResult); fieldResult = DecryptUtils.decrypt(enterpriseId,preResult);
} else if(dataPermission == 2 && FilterFieldUtils.FILTERS_PHONE_AND_CARD.contains(fieldName)){ } else if(dataPermission == 2 && FilterFieldUtils.FILTERS_PHONE_AND_CARD.contains(fieldName)){
fieldResult = DecryptUtils.decrypt(enterpriseId,preResult); fieldResult = DecryptUtils.decrypt(enterpriseId,preResult);
} else if(dataPermission == 3 && FilterFieldUtils.FILTERS_PHONE_AND_CARD_COUPON.contains(fieldName)){
fieldResult = DecryptUtils.decrypt(enterpriseId,preResult);
} else if (FilterFieldUtils.FILETERS_USER_NAME.contains(fieldName)){ } else if (FilterFieldUtils.FILETERS_USER_NAME.contains(fieldName)){
fieldResult = DecryptUtils.decrypt(enterpriseId,preResult); fieldResult = DecryptUtils.decrypt(enterpriseId,preResult);
} else fieldResult = rs.getObject(fieldColumnIndex); } else fieldResult = rs.getObject(fieldColumnIndex);
...@@ -336,6 +355,8 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService { ...@@ -336,6 +355,8 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
fieldResult = "******"; fieldResult = "******";
} else if(dataPermission == 2 && FilterFieldUtils.FILTERS_PHONE_AND_CARD.contains(fieldName)){ } else if(dataPermission == 2 && FilterFieldUtils.FILTERS_PHONE_AND_CARD.contains(fieldName)){
fieldResult = "******"; fieldResult = "******";
} else if(dataPermission == 3 && FilterFieldUtils.FILTERS_PHONE_AND_CARD_COUPON.contains(fieldName)){
fieldResult = "******";
} else if(FilterFieldUtils.FILETERS_USER_NAME.contains(fieldName)){ } else if(FilterFieldUtils.FILETERS_USER_NAME.contains(fieldName)){
fieldResult = DecryptUtils.dataSecurityProcessUserName(DecryptUtils.decrypt(enterpriseId,rs.getObject(fieldColumnIndex)+"")); fieldResult = DecryptUtils.dataSecurityProcessUserName(DecryptUtils.decrypt(enterpriseId,rs.getObject(fieldColumnIndex)+""));
} else fieldResult = rs.getObject(fieldColumnIndex); } else fieldResult = rs.getObject(fieldColumnIndex);
...@@ -927,10 +948,12 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService { ...@@ -927,10 +948,12 @@ public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
// zos.close(); // zos.close();
// } // }
logger.info("[ 开始上传压缩文件到腾讯云 ]: {}", task.getId()); logger.info("[ 开始上传压缩文件到腾讯云 ]: {}", task.getId());
cloudFileUrl += FileUploadUtil.simpleUploadFileFromLocal(zipFile, task.getName() + "-" + task.getId()+taskFileExt, BucketNameEnum.COMPRESS_60000.getName()); // cloudFileUrl += FileUploadUtil.simpleUploadFileFromLocal(zipFile, task.getName() + "-" + task.getId()+taskFileExt, BucketNameEnum.COMPRESS_60000.getName());
cloudFileUrl = cloudFileUpload(task.getEnterpriseId(),zipFile,taskFileExt.substring(1));
} else { } else {
logger.info("[ 开始上传文件到腾讯云 ]: {}", task.getId()); logger.info("[ 开始上传文件到腾讯云 ]: {}", task.getId());
cloudFileUrl += FileUploadUtil.simpleUploadFileFromLocal(new File(originalFilePath), task.getName() + "-" + task.getId()+taskFileExt, BucketNameEnum.REPORT_50000.getName()); // cloudFileUrl += FileUploadUtil.simpleUploadFileFromLocal(new File(originalFilePath), task.getName() + "-" + task.getId()+taskFileExt, BucketNameEnum.REPORT_50000.getName());
cloudFileUrl = cloudFileUpload(task.getEnterpriseId(),new File(originalFilePath),taskFileExt.substring(1));
} }
logger.info("[ 上传腾讯云 ]: {}", "地址为:"+cloudFileUrl); logger.info("[ 上传腾讯云 ]: {}", "地址为:"+cloudFileUrl);
......
...@@ -14,8 +14,15 @@ import com.gic.cloud.data.hook.service.dao.FreeQueryRecordDao; ...@@ -14,8 +14,15 @@ import com.gic.cloud.data.hook.service.dao.FreeQueryRecordDao;
import com.gic.cloud.data.hook.service.dao.FreeQuerySourceDao; import com.gic.cloud.data.hook.service.dao.FreeQuerySourceDao;
import com.gic.cloud.data.hook.service.entity.CsvDataFilterMode; import com.gic.cloud.data.hook.service.entity.CsvDataFilterMode;
import com.gic.cloud.data.hook.service.entity.CsvResultSetHelper; import com.gic.cloud.data.hook.service.entity.CsvResultSetHelper;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.qcloud.BucketNameEnum; import com.gic.qcloud.BucketNameEnum;
import com.gic.qcloud.FileRecordLogUtil;
import com.gic.qcloud.FileUploadUtil; import com.gic.qcloud.FileUploadUtil;
import com.gic.thirdparty.cloudfile.CloudFileUtil;
import com.gic.thirdparty.cloudfile.enums.CloudFileBusinessOptEnum;
import com.gic.thirdparty.cloudfile.enums.CloudFileTypeEnum;
import com.gic.thirdparty.cloudfile.pojo.CloudFileInfo;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.opencsv.CSVWriter; import com.opencsv.CSVWriter;
import com.opencsv.ResultSetHelper; import com.opencsv.ResultSetHelper;
...@@ -59,6 +66,9 @@ public class FreeQueryServiceImpl implements IFreeQueryService { ...@@ -59,6 +66,9 @@ public class FreeQueryServiceImpl implements IFreeQueryService {
@Autowired @Autowired
IDownloadTaskService downloadTaskService; IDownloadTaskService downloadTaskService;
@Autowired
private EnterpriseService enterpriseService;
/** 获取指定脱敏类型的过滤字段集合 /** 获取指定脱敏类型的过滤字段集合
* @param desensiType * @param desensiType
* @return * @return
...@@ -365,6 +375,11 @@ public class FreeQueryServiceImpl implements IFreeQueryService { ...@@ -365,6 +375,11 @@ public class FreeQueryServiceImpl implements IFreeQueryService {
} }
@Override @Override
public List<String> listFilterPhoneAndCardNoCardNumField() {
return FilterFieldUtils.FILTERS_PHONE_AND_CARD_COUPON;
}
@Override
public List<String> listFilterUserName() { public List<String> listFilterUserName() {
return FilterFieldUtils.FILETERS_USER_NAME; return FilterFieldUtils.FILETERS_USER_NAME;
} }
...@@ -555,10 +570,12 @@ public class FreeQueryServiceImpl implements IFreeQueryService { ...@@ -555,10 +570,12 @@ public class FreeQueryServiceImpl implements IFreeQueryService {
// zos.close(); // zos.close();
// } // }
// log.debug("开始上传压缩文件到腾讯云", task.getId()); // log.debug("开始上传压缩文件到腾讯云", task.getId());
cloudFileUrl += FileUploadUtil.simpleUploadFileFromLocal(zipFile, task.getName() + "-" + task.getId()+taskFileExt, BucketNameEnum.COMPRESS_60000.getName()); // cloudFileUrl += FileUploadUtil.simpleUploadFileFromLocal(zipFile, task.getName() + "-" + task.getId()+taskFileExt, BucketNameEnum.COMPRESS_60000.getName());
cloudFileUrl = cloudFileUpload(task.getEnterpriseId(), zipFile, taskFileExt.substring(1));
} else { } else {
log.debug("开始上传文件到腾讯云", task.getId()); log.debug("开始上传文件到腾讯云", task.getId());
cloudFileUrl += FileUploadUtil.simpleUploadFileFromLocal(new File(originalFilePath), task.getName() + "-" + task.getId()+taskFileExt, BucketNameEnum.REPORT_50000.getName()); // cloudFileUrl += FileUploadUtil.simpleUploadFileFromLocal(new File(originalFilePath), task.getName() + "-" + task.getId()+taskFileExt, BucketNameEnum.REPORT_50000.getName());
cloudFileUrl = cloudFileUpload(task.getEnterpriseId(), new File(originalFilePath), taskFileExt.substring(1));
} }
log.debug("上传腾讯云", "地址为:"+cloudFileUrl); log.debug("上传腾讯云", "地址为:"+cloudFileUrl);
task.setStatus(DownloadTaskStatus.COMPLISHED); task.setStatus(DownloadTaskStatus.COMPLISHED);
...@@ -591,6 +608,15 @@ public class FreeQueryServiceImpl implements IFreeQueryService { ...@@ -591,6 +608,15 @@ public class FreeQueryServiceImpl implements IFreeQueryService {
}, interval*1000, interval*1000, TimeUnit.MILLISECONDS); }, interval*1000, interval*1000, TimeUnit.MILLISECONDS);
} }
private String cloudFileUpload(String enterpriseId,File file,String fileExt){
EnterpriseDTO enterprise = enterpriseService.getEnterpriseById(enterpriseId);
CloudFileInfo zip = CloudFileUtil.uploadFile(file, fileExt, CloudFileTypeEnum.FILE, enterprise.getFactoryCode(), CloudFileBusinessOptEnum.HOOK_COMMON);
FileRecordLogUtil.recordUseLog("FreeQueryServiceImpl#cloudFileUpload||"+fileExt);
return zip.getOrgFileUrl();
}
private void saveXlsx(FreeQueryTaskCondition condition,String originalFilePath,ResultSet rs,DownloadTask task) throws Exception{ private void saveXlsx(FreeQueryTaskCondition condition,String originalFilePath,ResultSet rs,DownloadTask task) throws Exception{
Integer limitSize = FileUtil.getLimitSize(); Integer limitSize = FileUtil.getLimitSize();
// originalFilePath = SAVE_FOLDER + "/" + condition.getTaskId() + ".xlsx"; // originalFilePath = SAVE_FOLDER + "/" + condition.getTaskId() + ".xlsx";
......
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
<dubbo:service interface="com.gic.cloud.data.hook.api.service.TableSyncRecordService" ref="tableSyncRecordServiceImpl"/> <dubbo:service interface="com.gic.cloud.data.hook.api.service.TableSyncRecordService" ref="tableSyncRecordServiceImpl"/>
<dubbo:reference interface="com.gic.enterprise.api.service.EnterpriseService" id="enterpriseService" timeout="10000" />
<!-- 引用的 Dubbo 服务 --> <!-- 引用的 Dubbo 服务 -->
<!--<dubbo:reference interface="com.gic.dict.api.service.ManagerDictService" id="managerDictService" timeout="10000" /> <!--<dubbo:reference interface="com.gic.dict.api.service.ManagerDictService" id="managerDictService" timeout="10000" />
<dubbo:reference interface="com.gic.cloud.communicate.api.service.member.MemberTagFieldService" id="memberTagFieldService" timeout="10000" /> <dubbo:reference interface="com.gic.cloud.communicate.api.service.member.MemberTagFieldService" id="memberTagFieldService" timeout="10000" />
......
...@@ -297,6 +297,13 @@ public class FlatQueryController { ...@@ -297,6 +297,13 @@ public class FlatQueryController {
condition.setEnableEncrypt(false); condition.setEnableEncrypt(false);
} }
} }
if(dataPermission == 3){
if(freeQueryService.listFilterPhoneAndCardNoCardNumField().contains(condition.getFieldName())){
condition.setEnableEncrypt(true);
} else {
condition.setEnableEncrypt(false);
}
}
} }
} }
return this.flatQueryResultService.buildFlatQueryDownloadTask( return this.flatQueryResultService.buildFlatQueryDownloadTask(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment