Commit 2ab0c8ab by 陶光胜

init

parents
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--<parent>-->
<!--<artifactId>gic-cloud</artifactId>-->
<!--<groupId>com.gic</groupId>-->
<!--<version>1.0</version>-->
<!--</parent>-->
<groupId>com.gic</groupId>
<modelVersion>4.0.0</modelVersion>
<artifactId>gic-cloud-data-hook-api</artifactId>
<packaging>jar</packaging>
<version>${dataHookVersion}</version>
<name>${project.artifactId}</name>
<properties>
<dataHookVersion>1.0-SNAPSHOT</dataHookVersion>
<cloudCommonsVersion>3.0-SNAPSHOT</cloudCommonsVersion>
<cloudServiceVersion>3.0-SNAPSHOT</cloudServiceVersion>
<serviceVersion>3.0-SNAPSHOT</serviceVersion>
<commonsVersion>3.0-SNAPSHOT</commonsVersion>
<memcachedVersion>3.0-SNAPSHOT</memcachedVersion>
<esVersion>3.0-SNAPSHOT</esVersion>
<mongoVersion>3.0-SNAPSHOT</mongoVersion>
<proTradeVersion>3.0-SNAPSHOT</proTradeVersion>
<platformConfigVersion>3.0-SNAPSHOT</platformConfigVersion>
</properties>
<distributionManagement>
<snapshotRepository>
<!-- 和 Maven setting 保持一致 -->
<id>nexus-snapshots</id>
<name>nexus distribution snapshot repository</name>
<!-- 这里使用 /content/repositories/snapshots/ -->
<url>http://182.254.134.223:8081/nexus/content/repositories/Snapshots-1/</url>
<!--<url>http://stream.banli.mobi:8081/content/repositories/Snapshots-1/</url>-->
<!--<url>http://182.254.134.223:8081/nexus/content/repositories/snapshots/</url>-->
</snapshotRepository>
<repository>
<!-- 和 Maven setting 保持一致 -->
<id>nexus-snapshots</id>
<name>nexus distribution snapshot repository</name>
<!-- 这里使用 /content/repositories/snapshots/ -->
<url>http://182.254.134.223:8081/nexus/content/repositories/snapshots/</url>
<!--<url>http://stream.banli.mobi:8081/content/repositories/snapshots/</url>-->
</repository>
</distributionManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-cloud-web-service-api</artifactId>
<version>${cloudServiceVersion}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-dict-api</artifactId>
<version>${serviceVersion}</version>
</dependency>-->
<!--<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-cloud-communicate-api</artifactId>
<version>${cloudServiceVersion}</version>
</dependency>-->
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-cloud-commons</artifactId>
<version>${cloudServiceVersion}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-platform-config</artifactId>
<version>${platformConfigVersion}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<verbose/>
<bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.gic.cloud.data.hook.api.dto;
/** 脱敏处理方式定义
*/
public class DataDesensiType {
/** 仅手机号 */
public static final Integer PHONE_ONLY = 1;
/** 手机号和卡号 */
public static final Integer PHONE_AND_CARD = 2;
}
package com.gic.cloud.data.hook.api.dto;
import java.io.Serializable;
import java.util.Date;
/** 下载日志
* @author Sam
*/
public class DownloadRecord implements Serializable {
private static final long serialVersionUID = -8380833222540400780L;
/** 日志编号 */
protected String id = "";
/** 日志编号
* @return
*/
public String getId() {
return id;
}
/** 日志编号
* @param id
*/
public void setId(String id) {
this.id = id;
}
/** 关联的下载任务编号 */
protected String taskId = "";
/** 关联的下载任务编号
* @return
*/
public String getTaskId() {
return taskId;
}
/** 关联的下载任务编号
* @param taskId
*/
public void setTaskId(String taskId) {
this.taskId = taskId;
}
/** 下载时间 */
protected Date downloadTime = new Date();
/** 下载时间
* @return
*/
public Date getDownloadTime() {
return downloadTime;
}
/** 下载时间
* @param downloadTime
*/
public void setDownloadTime(Date downloadTime) {
this.downloadTime = downloadTime;
}
/** 用户编号 */
protected String userId = "";
/** 用户编号
* @return
*/
public String getUserId() {
return userId;
}
/** 用户编号
* @param userId
*/
public void setUserId(String userId) {
this.userId = userId;
}
/** 企业编号 */
protected String enterpriseId = "";
/** 企业编号
* @return
*/
public String getEnterpriseId() {
return enterpriseId;
}
/** 企业编号
* @param enterpriseId
*/
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
/** 下载用户名称 */
protected String userName = "";
/** 下载用户名称
* @return
*/
public String getUserName() {
return userName;
}
/** 下载用户名称
* @param userName
*/
public void setUserName(String userName) {
this.userName = userName;
}
// 关联查询部分
/** 下载任务名称 */
protected String taskName = "";
/** 下载任务名称
* @return
*/
public String getTaskName() {
return taskName;
}
/** 下载任务名称
* @param taskName
*/
public void setTaskName(String taskName) {
this.taskName = taskName;
}
/** 所属数据模块名称 */
protected String moduleName = "";
/** 所属数据模块名称
* @return
*/
public String getModuleName() {
return moduleName;
}
/** 所属数据模块名称
* @param moduleName
*/
public void setModuleName(String moduleName) {
this.moduleName = moduleName;
}
/** 数据量大小 */
protected Integer amount = 0;
/** 数据量大小
* @return
*/
public Integer getAmount() {
return amount;
}
/** 数据量大小
* @param amount
*/
public void setAmount(Integer amount) {
this.amount = amount;
}
/** 数据类型 */
protected Integer queryDataType = QueryDataType.SAFE;
/** 数据类型
* @return
*/
public Integer getQueryDataType() {
return queryDataType;
}
/** 数据类型
* @param queryDataType
*/
public void setQueryDataType(Integer queryDataType) {
this.queryDataType = queryDataType;
}
/** 关联查询语句 */
protected String realSql = "";
/** 关联查询语句
* @return
*/
public String getRealSql() {
return realSql;
}
/** 关联查询语句
* @param realSql
*/
public void setRealSql(String realSql) {
this.realSql = realSql;
}
/** 数据报告编号 */
protected String reportId = "";
/** 数据报告编号
* @return
*/
public String getReportId() {
return reportId;
}
/** 数据报告编号
* @param reportId
*/
public void setReportId(String reportId) {
this.reportId = reportId;
}
}
package com.gic.cloud.data.hook.api.dto;
import com.gic.cloud.data.hook.api.entity.DownloadApplyStatus;
import com.gic.cloud.data.hook.api.entity.DownloadFileFormat;
import com.gic.cloud.data.hook.api.entity.DownloadTaskStatus;
import com.gic.cloud.data.hook.api.entity.Global;
import java.io.Serializable;
import java.util.Date;
/** 下载任务
* @author Sam
*/
public class DownloadTask implements Serializable {
/** 任务编号 */
protected String id = "";
/** 任务编号
* @return
*/
public String getId() {
return id;
}
/** 任务编号
* @param id
*/
public void setId(String id) {
this.id = id;
}
/** 所属用户编号 */
protected String userId = "";
/** 所属用户编号
* @return
*/
public String getUserId() {
return userId;
}
/** 所属用户编号
* @param userId
*/
public void setUserId(String userId) {
this.userId = userId;
}
/** 任务命名 */
protected String name = "";
/** 任务命名
* @return
*/
public String getName() {
return name;
}
/** 任务命名
* @param name
*/
public void setName(String name) {
this.name = name;
}
/** 所属模块名称 */
protected String moduleName = "";
/** 所属模块名称
* @return
*/
public String getModuleName() {
return moduleName;
}
/** 所属模块名称
* @param moduleName
*/
public void setModuleName(String moduleName) {
this.moduleName = moduleName;
}
/** 任务数据量 */
protected int amount = 0;
/** 任务数据量
* @return
*/
public int getAmount() {
return amount;
}
/** 任务数据量
* @param amount
*/
public void setAmount(int amount) {
this.amount = amount;
}
/** 任务状态(默认排队中)*/
protected String status = DownloadTaskStatus.WAITING;
/** 任务状态
* @return
*/
public String getStatus() {
return status;
}
/** 任务状态
* @param status
*/
public void setStatus(String status) {
this.status = status;
}
/** 任务开始时间 */
protected Date startTime = null;
/** 任务开始时间
* @return
*/
public Date getStartTime() {
return startTime;
}
/** 任务开始时间
* @param startTime
*/
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
/** 任务结束时间 */
protected Date overTime = null;
/** 任务结束时间
* @return
*/
public Date getOverTime() {
return overTime;
}
/** 任务结束时间
* @param overTime
*/
public void setOverTime(Date overTime) {
this.overTime = overTime;
}
/** 下载任务文件格式 */
protected String format = DownloadFileFormat.CSV;
/** 下载任务文件格式
* @return
*/
public String getFormat() {
return format;
}
/** 下载任务文件格式
* @param format
*/
public void setFormat(String format) {
this.format = format;
}
/** 是否采用压缩方式 */
protected String useCompress = Global.NO;
/** 是否采用压缩方式
* @return
*/
public String getUseCompress() {
return useCompress;
}
/** 是否采用压缩方式
* @param useCompress
*/
public void setUseCompress(String useCompress) {
this.useCompress = useCompress;
}
/** 请求数据模式,默认脱敏 */
protected Integer queryDataType = QueryDataType.SAFE;
/** 请求数据模式,默认脱敏
* @return
*/
public Integer getQueryDataType() {
return queryDataType;
}
/** 请求数据模式,默认脱敏
* @param queryDataType
*/
public void setQueryDataType(Integer queryDataType) {
this.queryDataType = queryDataType;
}
/** 数据来源 */
protected String queryDataSource = QueryDataSource.FLAT_QUERY;
/** 数据来源
* @return
*/
public String getQueryDataSource() {
return queryDataSource;
}
/** 数据来源
* @param queryDataSource
*/
public void setQueryDataSource(String queryDataSource) {
this.queryDataSource = queryDataSource;
}
/** 真实的查询 */
protected String realSql = "";
/** 真实的查询
* @return
*/
public String getRealSql() {
return realSql;
}
/** 真实的查询
* @param realSql
*/
public void setRealSql(String realSql) {
this.realSql = realSql;
}
/** 生成文件路径 */
protected String filePath = "";
/** 生成文件路径
* @return
*/
public String getFilePath() {
return filePath;
}
/** 生成文件路径
* @param filePath
*/
public void setFilePath(String filePath) {
this.filePath = filePath;
}
/** 所属企业编号 */
protected String enterpriseId = "";
/** 所属企业编号
* @return
*/
public String getEnterpriseId() {
return enterpriseId;
}
/** 所属企业编号
* @param enterpriseId
*/
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
/** 报告编号 */
protected String reportId = "";
/** 报告编号
* @return
*/
public String getReportId() {
return reportId;
}
/** 报告编号
* @param reportId
*/
public void setReportId(String reportId) {
this.reportId = reportId;
}
/** 关联查询相关 */
/** 关联申请编号 */
protected String applyId = "";
/** 关联申请编号
* @return
*/
public String getApplyId() {
return applyId;
}
/** 关联申请编号
* @param applyId
*/
public void setApplyId(String applyId) {
this.applyId = applyId;
}
/** 申请状态 */
protected Integer applyStatus = DownloadApplyStatus.WAITING;
/** 申请状态
* @return
*/
public Integer getApplyStatus() {
return applyStatus;
}
/** 申请状态
* @param applyStatus
*/
public void setApplyStatus(Integer applyStatus) {
this.applyStatus = applyStatus;
}
/** 申请通过 */
protected String applyPermitted = Global.NO;
/** 申请通过
* @return
*/
public String getApplyPermitted() {
// if (this.queryDataType == QueryDataType.SAFE) {
// return Global.YES;
// } else {
// if (this.applyStatus == DownloadApplyStatus.PERMITTED_BY_SELF || this.applyStatus == DownloadApplyStatus.PERMITTED_BY_OTHER) {
// return Global.YES;
// } else return Global.NO;
// } // IF ELSE OVER
return this.applyPermitted;
}
/** 申请通过
* @param applyPermitted
*/
public void setApplyPermitted(String applyPermitted) {
this.applyPermitted = applyPermitted;
}
}
package com.gic.cloud.data.hook.api.dto;
import com.gic.cloud.data.hook.api.entity.Global;
import java.io.Serializable;
/** 自助查询收藏 DTO
* @author Sam
*/
public class FlatQueryFavo implements Serializable {
private static final long serialVersionUID = 9117132221226221122L;
/** 主键(用户编号-表编号) */
protected String id = "";
/** 主键(用户编号-表编号)
* @return
*/
public String getId() {
return id;
}
/** 主键(用户编号-表编号)
* @param id
*/
public void setId(String id) {
this.id = id;
}
/** 用户主键 */
protected String userId = "";
/** 用户主键
* @return
*/
public String getUserId() {
return userId;
}
/** 用户主键
* @param userId
*/
public void setUserId(String userId) {
this.userId = userId;
}
/** 收藏的自助查询表编号 */
protected String tabId = "";
/** 收藏的自助查询表编号
* @return
*/
public String getTabId() {
return tabId;
}
/** 收藏的自助查询表编号
* @param tabId
*/
public void setTabId(String tabId) {
this.tabId = tabId;
}
/** 是否收藏 */
protected String isFavo = Global.YES;
/** 是否收藏
* @return
*/
public String getIsFavo() {
return isFavo;
}
/** 是否收藏
* @param isFavo
*/
public void setIsFavo(String isFavo) {
this.isFavo = isFavo;
}
}
package com.gic.cloud.data.hook.api.dto;
import com.gic.cloud.data.hook.api.entity.FlatQueryFieldType;
import java.io.Serializable;
/** 自助查询字段
* @author Sam
*/
public class FlatQueryField implements Serializable {
private static final long serialVersionUID = -6215551280538558401L;
/** 字段 ID(自增)*/
protected Integer id = 0;
/** 字段 ID(自增)
* @return
*/
public Integer getId() {
return id;
}
/** 字段 ID(自增)
* @param id
*/
public void setId(Integer id) {
this.id = id;
}
/** 表名 */
protected String tableId = "";
/** 表名
* @return
*/
public String getTableId() {
return tableId;
}
/** 表名
* @param tableId
*/
public void setTableId(String tableId) {
this.tableId = tableId;
}
/** 字段标示 */
protected String fieldMark = "";
/** 字段标示
* @return
*/
public String getFieldMark() {
return fieldMark;
}
/** 字段标示
* @param fieldMark
*/
public void setFieldMark(String fieldMark) {
this.fieldMark = fieldMark;
}
/** 字段名 */
protected String fieldName = "";
/** 字段名
* @return
*/
public String getFieldName() {
return fieldName;
}
/** 字段名
* @param fieldName
*/
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
/** 字段类型 */
protected String fieldType = FlatQueryFieldType.TEXT;
/** 字段类型
* @return
*/
public String getFieldType() {
return fieldType;
}
/** 字段类型
* @param fieldType
*/
public void setFieldType(String fieldType) {
this.fieldType = fieldType;
}
/** 允许过滤 */
protected Boolean enableFilter = false;
/** 允许过滤
* @return
*/
public Boolean getEnableFilter() {
return enableFilter;
}
/** 允许过滤
* @param enableFilter
*/
public void setEnableFilter(Boolean enableFilter) {
this.enableFilter = enableFilter;
}
/** 允许排序 */
protected Boolean enableOrder = false;
/** 允许排序
* @return
*/
public Boolean getEnableOrder() {
return enableOrder;
}
/** 允许排序
* @param enableOrder
*/
public void setEnableOrder(Boolean enableOrder) {
this.enableOrder = enableOrder;
}
/** 是否启用加密 */
private Boolean enableEncrypt = false;
/** 是否启用加密
* @return
*/
public Boolean getEnableEncrypt() {
return enableEncrypt;
}
/** 是否启用加密
* @param enableEncrypt
*/
public void setEnableEncrypt(Boolean enableEncrypt) {
this.enableEncrypt = enableEncrypt;
}
}
package com.gic.cloud.data.hook.api.dto;
import com.google.common.collect.Lists;
import java.util.HashMap;
import java.util.List;
/** 自助指标查询结果
*/
public class FlatQueryResult extends HashMap<String, List<Object>> {
private static final long serialVersionUID = 2146465963502082038L;
/** 添加一个维度的数据
* @param columnName 指定的列名
* @param value 值
*/
public void add(String columnName, Object value) {
if (!this.containsKey(columnName)) {
List<Object> list = Lists.newArrayList();
this.put(columnName, list);
} // IF OVER
this.get(columnName).add(value);
}
}
package com.gic.cloud.data.hook.api.dto;
import com.gic.cloud.data.hook.api.entity.Global;
import java.io.Serializable;
/** 自助查询表定义 DTO
* @author Sam.Z
*/
public class FlatQueryTable implements Serializable {
/** 表编号 */
protected int id = 0;
/** 表编号
* @return
*/
public int getId() {
return id;
}
/** 表编号
* @param id
*/
public void setId(int id) {
this.id = id;
}
/** 表名编号 */
protected String tableId = "";
/** 表名编号
* @return
*/
public String getTableId() {
return tableId;
}
/** 表名编号
* @param tableId
*/
public void setTableId(String tableId) {
this.tableId = tableId;
}
/** 表名称 */
protected String name = "";
/** 表名称
* @return
*/
public String getName() {
return name;
}
/** 表名称
* @param name
*/
public void setName(String name) {
this.name = name;
}
/** 表描述 */
protected String description = "";
/** 表描述
* @return
*/
public String getDescription() {
return description;
}
/** 表描述
* @param description
*/
public void setDescription(String description) {
this.description = description;
}
/** 点击量计数(所有用户) */
protected Integer clickCount = 0;
/** 点击量计数(所有用户)
* @return
*/
public Integer getClickCount() {
return clickCount;
}
/** 点击量计数(所有用户)
* @param clickCount
*/
public void setClickCount(Integer clickCount) {
this.clickCount = clickCount;
}
/** 生成的下载任务计数(所有用户)*/
protected Integer downloadCount = 0;
/** 生成的下载任务计数(所有用户)
* @return
*/
public Integer getDownloadCount() {
return downloadCount;
}
/** 生成的下载任务计数(所有用户)
* @param downloadCount
*/
public void setDownloadCount(Integer downloadCount) {
this.downloadCount = downloadCount;
}
/** 是否收藏 */
protected String isFavo = Global.NO;
/** 是否收藏
* @return
*/
public String getIsFavo() {
return isFavo;
}
/** 是否收藏
* @param isFavo
*/
public void setIsFavo(String isFavo) {
this.isFavo = isFavo;
}
}
package com.gic.cloud.data.hook.api.dto;
import com.google.common.collect.Lists;
import java.io.Serializable;
import java.util.List;
/** 自助查询表详细信息
* @author Sam
*/
public class FlatQueryTableDetail implements Serializable {
private static final long serialVersionUID = 3883923201879387199L;
/** 表名编号 */
protected String tableId = "";
/** 表名编号
* @return
*/
public String getTableId() {
return tableId;
}
/** 表名编号
* @param tableId
*/
public void setTableId(String tableId) {
this.tableId = tableId;
}
/** 表名称 */
protected String tableName = "";
/** 表名称
* @return
*/
public String getTableName() {
return tableName;
}
/** 表名称
* @param tableName
*/
public void setTableName(String tableName) {
this.tableName = tableName;
}
/** 字段定义 */
protected List<FlatQueryField> fieldDefines = Lists.newArrayList();
/** 字段定义
* @return
*/
public List<FlatQueryField> getFieldDefines() {
return fieldDefines;
}
/** 字段定义
* @param fieldDefines
*/
public void setFieldDefines(List<FlatQueryField> fieldDefines) {
this.fieldDefines = fieldDefines;
}
}
package com.gic.cloud.data.hook.api.dto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class FreeQueryColumn implements Serializable {
private static final long serialVersionUID = 2582627590770517387L;
/** 列名 */
protected String name = "";
/** 列名
* @return
*/
public String getName() {
return name;
}
/** 列名
* @param name
*/
public void setName(String name) {
this.name = name;
}
/** 列数据 */
protected List<Object> datas = new ArrayList<>();
/** 列数据
* @return
*/
public List<Object> getDatas() {
return datas;
}
/** 列数据
* @param datas
*/
public void setDatas(List<Object> datas) {
this.datas = datas;
}
}
package com.gic.cloud.data.hook.api.dto;
import java.io.Serializable;
import java.util.Date;
/** 自定义查询查询定义
* @author Sam
*/
public class FreeQueryRecord implements Serializable {
private static final long serialVersionUID = -9074771255861143332L;
/** 查询定义编号(timestamp) */
protected String id = "";
/** 查询定义编号(timestamp)
* @return
*/
public String getId() {
return id;
}
/** 查询定义编号(timestamp)
* @param id
*/
public void setId(String id) {
this.id = id;
}
/** 更新时间 */
protected Date updateTime = null;
/** 更新时间
* @return
*/
public Date getUpdateTime() {
return updateTime;
}
/** 更新时间
* @param updateTime
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/** 用户编号 */
protected String userId = "";
/** 用户编号
* @return
*/
public String getUserId() {
return userId;
}
/** 用户编号
* @param userId
*/
public void setUserId(String userId) {
this.userId = userId;
}
/** 查询定义名称 */
protected String name = "";
/** 查询定义名称
* @return
*/
public String getName() {
return name;
}
/** 查询定义名称
* @param name
*/
public void setName(String name) {
this.name = name;
}
/** 查询内容 */
protected String content = "";
/** 查询内容
* @return
*/
public String getContent() {
return content;
}
/** 查询内容
* @param content
*/
public void setContent(String content) {
this.content = content;
}
}
package com.gic.cloud.data.hook.api.dto;
import java.util.ArrayList;
/** 自定义查询结果
* @author Sam
*/
public class FreeQueryResult extends ArrayList<FreeQueryColumn> {
private static final long serialVersionUID = 4083824532924731368L;
/** 添加一个维度的数据
* @param columnName 指定的列名
* @param value 值
*/
public void add(String columnName, Object value) {
if (this.size() > 0) {
for (int i=0; i<this.size(); i++) {
if (this.get(i).getName().equals(columnName)) {
this.get(i).getDatas().add(value);
return ;
}
} // FOR OVER
} // IF OVER
// 如果没有添加到已有数列
FreeQueryColumn column = new FreeQueryColumn();
column.setName(columnName);
column.getDatas().add(value);
this.add(column);
}
}
package com.gic.cloud.data.hook.api.dto;
import java.io.Serializable;
/** 自定义查询 DTO
*
*/
public class FreeQuerySource implements Serializable {
private static final long serialVersionUID = 4719357186921421283L;
/** 自定义查询编号 */
protected String id = "";
/** 自定义查询编号
* @return
*/
public String getId() {
return id;
}
/** 自定义查询编号
* @param id
*/
public void setId(String id) {
this.id = id;
}
/** 商户编号 */
protected String enterpriseId = "";
/** 商户编号
* @return
*/
public String getEnterpriseId() {
return enterpriseId;
}
/** 商户编号
* @param enterpriseId
*/
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
/** 商户名称 */
protected String enterpriseName = "";
/** 商户名称
* @return
*/
public String getEnterpriseName() {
return enterpriseName;
}
/** 商户名称
* @param enterpriseName
*/
public void setEnterpriseName(String enterpriseName) {
this.enterpriseName = enterpriseName;
}
/** 链接字符串 */
protected String url = "";
/** 链接字符串
* @return
*/
public String getUrl() {
return url;
}
/** 链接字符串
* @param url
*/
public void setUrl(String url) {
this.url = url;
}
/** 用户名称 */
protected String username = "";
/** 用户名称
* @return
*/
public String getUsername() {
return username;
}
/** 用户名称
* @param username
*/
public void setUsername(String username) {
this.username = username;
}
/** 登陆密码 */
protected String password = "";
/** 登陆密码
* @return
*/
public String getPassword() {
return password;
}
/** 登陆密码
* @param password
*/
public void setPassword(String password) {
this.password = password;
}
}
package com.gic.cloud.data.hook.api.dto;
import java.io.Serializable;
/** 自定义查询表来源
* @author Sam
*/
public class FreeQueryTable implements Serializable {
private static final long serialVersionUID = -9158562824616542493L;
/** 表编号 */
protected String tableId = "";
/** 表编号
* @return
*/
public String getTableId() {
return tableId;
}
/** 表编号
* @param tableId
*/
public void setTableId(String tableId) {
this.tableId = tableId;
}
/** 表名称 */
protected String tableName = "";
/** 表名称
* @return
*/
public String getTableName() {
return tableName;
}
/** 表名称
* @param tableName
*/
public void setTableName(String tableName) {
this.tableName = tableName;
}
/** 表描述 */
protected String tableDescription = "";
/** 表描述
* @return
*/
public String getTableDescription() {
return tableDescription;
}
/** 表描述
* @param tableDescription
*/
public void setTableDescription(String tableDescription) {
this.tableDescription = tableDescription;
}
/** 表优先级 */
protected Integer rank = 0;
/** 表优先级
* @return
*/
public Integer getRank() {
return rank;
}
/** 表优先级
* @param rank
*/
public void setRank(Integer rank) {
this.rank = rank;
}
}
package com.gic.cloud.data.hook.api.dto;
import java.io.Serializable;
import java.util.Date;
/** 我的自定义保存
* @author Sam
*/
public class MyFlatQuery implements Serializable {
/** 自定义指标查询编号 */
protected String id = "";
/** 自定义指标查询编号
* @return
*/
public String getId() {
return id;
}
/** 自定义指标查询编号
* @param id
*/
public void setId(String id) {
this.id = id;
}
/** 自定义指标查询名称 */
protected String name = "";
/** 自定义指标查询名称
* @return
*/
public String getName() {
return name;
}
/** 自定义指标查询名称
* @param name
*/
public void setName(String name) {
this.name = name;
}
/** 查询说明 */
protected String description = "";
/** 查询说明
* @return
*/
public String getDescription() {
return description;
}
/** 查询说明
* @param description
*/
public void setDescription(String description) {
this.description = description;
}
/** 所属用户 ID */
protected String userId = "";
/** 所属用户 ID
* @return
*/
public String getUserId() {
return userId;
}
/** 所属用户 ID
* @param userId
*/
public void setUserId(String userId) {
this.userId = userId;
}
/** 自定义指标查询时间 */
protected Date updateTime = null;
/** 自定义指标查询时间
* @return
*/
public Date getUpdateTime() {
return updateTime;
}
/** 自定义指标查询时间
* @param updateTime
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/** 关联的自助指标查询表编号 */
protected String tableId = "";
/** 关联的自助指标查询表编号
* @return
*/
public String getTableId() {
return tableId;
}
/** 关联的自助指标查询表编号
* @param tableId
*/
public void setTableId(String tableId) {
this.tableId = tableId;
}
/** 关联的自定义指标查询名称 */
protected String tableName = "";
/** 关联的自定义指标查询名称
* @return
*/
public String getTableName() {
return tableName;
}
/** 关联的自定义指标查询名称
* @param tableName
*/
public void setTableName(String tableName) {
this.tableName = tableName;
}
/** 自定义指标查询条件 JSON 文本 */
protected String conditionsText = "";
/** 自定义指标查询条件 JSON 文本
* @return
*/
public String getConditionsText() {
return conditionsText;
}
/** 自定义指标查询条件 JSON 文本
* @param conditionsText
*/
public void setConditionsText(String conditionsText) {
this.conditionsText = conditionsText;
}
}
package com.gic.cloud.data.hook.api.dto;
public class QueryDataSource {
public static final String FREE_QUERY = "freeQuery";
public static final String FLAT_QUERY = "flatQuery";
}
package com.gic.cloud.data.hook.api.dto;
/** 请求数据类型
* @author Sam
*/
public class QueryDataType {
/** 完整数据模式 */
public static final Integer FULL = 1;
/** 脱敏数据模式 */
public static final Integer SAFE = 0;
}
package com.gic.cloud.data.hook.api.dto;
import java.io.Serializable;
import java.util.Date;
/** 安全模式切换日志
*
*/
public class RiskModeRecord implements Serializable {
private static final long serialVersionUID = -4592993332454644346L;
/** 申请编号 */
protected String applyId = "";
/** 申请编号 */
public String getApplyId() {
return applyId;
}
/** 申请编号 */
public void setApplyId(String applyId) {
this.applyId = applyId;
}
/** 创建时间 */
protected Date createTime = null;
/** 创建时间
* @return
*/
public Date getCreateTime() {
return createTime;
}
/** 创建时间
* @param createTime
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/** 所属企业编号 */
protected String enterpriseId = "";
/** 所属企业编号 */
public String getEnterpriseId() {
return enterpriseId;
}
/** 所属企业编号 */
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
/** 申请者编号 */
protected String userId = "";
/** 申请者编号
* @return
*/
public String getUserId() {
return userId;
}
/** 申请者编号
* @param userId
*/
public void setUserId(String userId) {
this.userId = userId;
}
/** 申请者姓名 */
protected String userName = "";
/** 申请者姓名 */
public String getUserName() {
return userName;
}
/** 申请者姓名 */
public void setUserName(String userName) {
this.userName = userName;
}
/** 申请人手机 */
protected String userPhone = "";
/** 申请人手机
* @return
*/
public String getUserPhone() {
return userPhone;
}
/** 申请人手机
* @param userPhone
*/
public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}
/** 审核者姓名 */
protected String auditName = "";
/** 审核者姓名
* @return
*/
public String getAuditName() {
return auditName;
}
/** 审核者姓名
* @param auditName
*/
public void setAuditName(String auditName) {
this.auditName = auditName;
}
/** 审核者手机 */
protected String auditPhone = "";
/** 审核者手机
* @return
*/
public String getAuditPhone() {
return auditPhone;
}
/** 审核者手机
* @param auditPhone
*/
public void setAuditPhone(String auditPhone) {
this.auditPhone = auditPhone;
}
/** 申请时长 */
protected Integer riskDuration = 1;
/** 申请时长
* @return
*/
public Integer getRiskDuration() {
return riskDuration;
}
/** 申请时长
* @param riskDuration
*/
public void setRiskDuration(Integer riskDuration) {
this.riskDuration = riskDuration;
}
}
package com.gic.cloud.data.hook.api.entity;
/** 数据查询类型
*
*/
public class DataHookType {
/** 自助指标查询 */
public static final String FLAT_QUERY = "flat_query";
/** 自定义查询 */
public static final String FREE_QUERY = "free_query";
}
package com.gic.cloud.data.hook.api.entity;
/** 下载申请状态
*
*/
public class DownloadApplyStatus {
/** 等待中 */
public static final Integer WAITING = 3;
/** 自审核通过 */
public static final Integer PERMITTED_BY_SELF = 0;
/** 审核被拒 */
public static final Integer TIMEOUT = 1;
/** 第三方审核通过 */
public static final Integer PERMITTED_BY_OTHER = 2;
}
package com.gic.cloud.data.hook.api.entity;
/** 下载任务文件格式
* @author Sam
*/
public class DownloadFileFormat {
/** CSV */
public static final String CSV = "csv";
/** ZIP */
//public static final String ZIP = "zip";
/** XLSX */
public static final String XLSX = "xlsx";
}
package com.gic.cloud.data.hook.api.entity;
/** 下载任务状态
* @author Sam
*/
public class DownloadTaskStatus {
/** 排队中 */
public static final String WAITING = "waiting";
/** 生成中 */
public static final String BUILDING = "building";
/** 生成错误 */
public static final String ERROR = "error";
/** 已完成 */
public static final String COMPLISHED = "complished";
}
package com.gic.cloud.data.hook.api.entity;
/** 过滤通道类型
* @author Sam
*/
public class FilterTunnelType {
/** 无 Filter 连接 */
public static final String NONE = "";
/** AND 连接 */
public static final String AND = "AND";
/** OR 连接 */
public static final String OR = "OR";
}
package com.gic.cloud.data.hook.api.entity;
import java.io.Serializable;
/** 自助指标查询条件
* @author Sam
*/
public class FlatQueryCondition implements Serializable {
private static final long serialVersionUID = -1902930719917654915L;
/** 字段名称 */
protected String fieldName = "";
/** 字段名称
* @return
*/
public String getFieldName() {
return fieldName;
}
/** 字段名称
* @param fieldName
*/
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
/** 字段修饰名 */
protected String fieldMark = "";
/** 字段修饰名
* @return
*/
public String getFieldMark() {
return fieldMark;
}
/** 字段修饰名
* @param fieldMark
*/
public void setFieldMark(String fieldMark) {
this.fieldMark = fieldMark;
}
/** 字段类型 */
protected String fieldType = "";
/** 字段类型
* @return
*/
public String getFieldType() {
return fieldType;
}
/** 字段类型
* @param fieldType
*/
public void setFieldType(String fieldType) {
this.fieldType = fieldType;
}
/** 主过滤器 */
protected String mainFilter = "";
/** 主过滤器
* @return
*/
public String getMainFilter() {
return mainFilter;
}
/** 主过滤器
* @param mainFilter
*/
public void setMainFilter(String mainFilter) {
this.mainFilter = mainFilter;
}
/** 过滤器管道 */
protected String filterTunnel = "";
/** 过滤器管道
* @return
*/
public String getFilterTunnel() {
return filterTunnel;
}
/** 过滤器管道
* @param filterTunnel
*/
public void setFilterTunnel(String filterTunnel) {
this.filterTunnel = filterTunnel;
}
/** 扩展过滤器 */
protected String extendFilter = "";
/** 扩展过滤器
* @return
*/
public String getExtendFilter() {
return extendFilter;
}
/** 扩展过滤器
* @param extendFilter
*/
public void setExtendFilter(String extendFilter) {
this.extendFilter = extendFilter;
}
/** 是否加密字段 */
protected Boolean enableEncrypt = false;
/** 是否加密字段
* @return
*/
public Boolean getEnableEncrypt() {
return enableEncrypt;
}
/** 是否加密字段
* @param enableEncrypt
*/
public void setEnableEncrypt(Boolean enableEncrypt) {
this.enableEncrypt = enableEncrypt;
}
}
package com.gic.cloud.data.hook.api.entity;
import com.gic.cloud.data.hook.api.dto.QueryDataType;
import com.google.common.collect.Lists;
import java.io.Serializable;
import java.util.List;
public class FlatQueryExecuteRequest implements Serializable {
private static final long serialVersionUID = 7365346885545557606L;
/** 用户编号(用于下载任务)*/
protected String userId = "";
/** 用户编号(用于下载任务)
* @return
*/
public String getUserId() {
return userId;
}
/** 用户编号(用于下载任务)
* @param userId
*/
public void setUserId(String userId) {
this.userId = userId;
}
/** 数据总量(用于下载任务)*/
protected Integer amount = 0;
/** 数据总量(用于下载任务)
* @return
*/
public Integer getAmount() {
return amount;
}
/** 数据总量(用于下载任务)
* @param amount
*/
public void setAmount(Integer amount) {
this.amount = amount;
}
/** 任务名称(用于下载任务)*/
protected String name = "";
/** 任务名称(用于下载任务)
* @return
*/
public String getName() {
return name;
}
/** 任务名称(用于下载任务)
* @param name
*/
public void setName(String name) {
this.name = name;
}
/** 所属模块名称 */
protected String moduleName = "";
/** 所属模块名称
* @return
*/
public String getModuleName() {
return moduleName;
}
/** 所属模块名称
* @param moduleName
*/
public void setModuleName(String moduleName) {
this.moduleName = moduleName;
}
/** 下载格式(用于下载任务)*/
protected String format = "";
/** 下载格式(用于下载任务)
* @return
*/
public String getFormat() {
return format;
}
/** 下载格式(用于下载任务)
* @param format
*/
public void setFormat(String format) {
this.format = format;
}
/** 查询的表名称 */
protected String tableId = "";
/** 查询的表名称
* @return
*/
public String getTableId() {
return tableId;
}
/** 查询的表名称
* @param tableId
*/
public void setTableId(String tableId) {
this.tableId = tableId;
}
/** 需要查询的企业编号集合 */
protected List<String> enterpriseIds = Lists.newArrayList();
/** 需要查询的企业编号集合
* @return
*/
public List<String> getEnterpriseIds() {
return enterpriseIds;
}
/** 需要查询的企业编号集合
* @param enterpriseIds
*/
public void setEnterpriseIds(List<String> enterpriseIds) {
this.enterpriseIds = enterpriseIds;
}
/** 查询条件集合 */
protected List<FlatQueryCondition> queryConditions = Lists.newArrayList();
/** 查询条件集合
* @return
*/
public List<FlatQueryCondition> getQueryConditions() {
return queryConditions;
}
/** 查询条件集合
* @param queryConditions
*/
public void setQueryConditions(List<FlatQueryCondition> queryConditions) {
this.queryConditions = queryConditions;
}
/** 排序字段 */
protected String orderField = "";
/** 排序字段
* @return
*/
public String getOrderField() {
return orderField;
}
/** 排序字段
* @param orderField
*/
public void setOrderField(String orderField) {
this.orderField = orderField;
}
/** 排序方向 */
protected String orderDir = "";
/** 排序方向
* @return
*/
public String getOrderDir() {
return orderDir;
}
/** 排序方向
* @param orderDir
*/
public void setOrderDir(String orderDir) {
this.orderDir = orderDir;
}
/** 执行 DISTINCT */
protected Boolean execDistinct = false;
/** 执行 DISTINCT
* @return
*/
public Boolean getExecDistinct() {
return execDistinct;
}
/** 执行 DISTINCT
* @param execDistinct
*/
public void setExecDistinct(Boolean execDistinct) {
this.execDistinct = execDistinct;
}
/** 是否使用压缩 */
protected Boolean useCompress = false;
/** 是否使用压缩
* @return
*/
public Boolean getUseCompress() {
return useCompress;
}
/** 是否使用压缩
* @param useCompress
*/
public void setUseCompress(Boolean useCompress) {
this.useCompress = useCompress;
}
/** 请求数据类型,默认脱敏数据 */
protected Integer queryDataType = QueryDataType.SAFE;
/** 请求数据类型,默认脱敏数据
* @return
*/
public Integer getQueryDataType() {
return queryDataType;
}
/** 请求数据类型,默认脱敏数据
* @param queryDataType
*/
public void setQueryDataType(Integer queryDataType) {
this.queryDataType = queryDataType;
}
/** 关联的申请编号 */
protected String applyId = "";
/** 关联的申请编号
* @return
*/
public String getApplyId() {
return applyId;
}
/** 关联的申请编号
* @param applyId
*/
public void setApplyId(String applyId) {
this.applyId = applyId;
}
/** 是否通过申请 */
protected String applyPermitted = Global.NO;
/** 是否通过申请
* @return
*/
public String getApplyPermitted() {
return applyPermitted;
}
/** 是否通过申请
* @param applyPermitted
*/
public void setApplyPermitted(String applyPermitted) {
this.applyPermitted = applyPermitted;
}
/** 真实关联的 SQL */
protected String realSql = "";
/** 真实关联的 SQL
* @return
*/
public String getRealSql() {
return realSql;
}
/** 真实关联的 SQL
* @param realSql
*/
public void setRealSql(String realSql) {
this.realSql = realSql;
}
}
package com.gic.cloud.data.hook.api.entity;
/** 自助指标查询字段类型
* @author Sam
*/
public class FlatQueryFieldType {
/** 通用字段 */
public final static String GENERAL = "general";
/** 文本字段 */
public final static String TEXT = "text";
/** 日期型字段 */
public static final String DATE = "date";
/** 数值型字段 */
public static final String NUMBER = "number";
}
package com.gic.cloud.data.hook.api.entity;
import com.gic.cloud.data.hook.api.dto.QueryDataType;
import com.google.common.collect.Lists;
import java.util.List;
/** 自助指标查询下载任务容器
* @author Sam
*/
public class FlatQueryTaskCondition {
/** 关联的下载任务编号 */
protected String taskId = "";
/** 关联的下载任务编号
* @return
*/
public String getTaskId() {
return taskId;
}
/** 关联的下载任务编号
* @param taskId
*/
public void setTaskId(String taskId) {
this.taskId = taskId;
}
/** 关联表名 */
protected String tableId = "";
/** 关联表名
* @return
*/
public String getTableId() {
return tableId;
}
/** 关联表名
* @param tableId
*/
public void setTableId(String tableId) {
this.tableId = tableId;
}
/** 请求数据类型 */
protected Integer queryDataType = QueryDataType.SAFE;
/** 请求数据类型
* @return
*/
public Integer getQueryDataType() {
return queryDataType;
}
/** 请求数据类型
* @param queryDataType
*/
public void setQueryDataType(Integer queryDataType) {
this.queryDataType = queryDataType;
}
/** 关联的企业编号集合 */
protected List<String> enterpriseIds = Lists.newArrayList();
/** 关联的企业编号集合
* @return
*/
public List<String> getEnterpriseIds() {
return enterpriseIds;
}
/** 关联的企业编号集合
* @param enterpriseIds
*/
public void setEnterpriseIds(List<String> enterpriseIds) {
this.enterpriseIds = enterpriseIds;
}
/** 关联查询条件 */
protected List<FlatQueryCondition> conditions = null;
/** 关联查询条件
* @return
*/
public List<FlatQueryCondition> getConditions() {
return conditions;
}
/** 关联查询条件
* @param conditions
*/
public void setConditions(List<FlatQueryCondition> conditions) {
this.conditions = conditions;
}
/** 获取解密过滤字段集合
* @return
*/
public List<String> getDecryptFilters() {
List<String> results = Lists.newArrayList();
if (this.conditions != null && this.conditions.size() > 0) {
for (FlatQueryCondition condition : this.conditions) {
if (condition.getEnableEncrypt()) results.add(condition.getFieldMark());
} // FOR OVER
} // IF OVER
return results;
}
/** 排序字段指定 */
protected String orderField = "";
/** 排序字段指定
* @return
*/
public String getOrderField() {
return orderField;
}
/** 排序字段指定
* @param orderField
*/
public void setOrderField(String orderField) {
this.orderField = orderField;
}
/** 排序方向指定 */
protected String orderDir = "";
/** 排序方向指定
* @return
*/
public String getOrderDir() {
return orderDir;
}
/** 排序方向指定
* @param orderDir
*/
public void setOrderDir(String orderDir) {
this.orderDir = orderDir;
}
/** 是否进行 DISTINCT */
protected Boolean execDistinct = false;
/** 是否进行 DISTINCT
* @return
*/
public Boolean getExecDistinct() {
return execDistinct;
}
/** 是否进行 DISTINCT
* @param execDistinct
*/
public void setExecDistinct(Boolean execDistinct) {
this.execDistinct = execDistinct;
}
/** 允许构建 */
protected String buildPermitted = Global.NO;
/** 允许构建
* @return
*/
public String getBuildPermitted() {
return buildPermitted;
}
/** 允许构建
* @param buildPermitted
*/
public void setBuildPermitted(String buildPermitted) {
this.buildPermitted = buildPermitted;
}
}
package com.gic.cloud.data.hook.api.entity;
import com.gic.cloud.data.hook.api.dto.DataDesensiType;
import com.gic.cloud.data.hook.api.dto.QueryDataType;
import java.io.Serializable;
/** 自定义查询条件
* @author Sam
*/
public class FreeQueryTaskCondition implements Serializable {
/** 关联的下载任务编号 */
protected String taskId = "";
/** 关联的下载任务编号
* @return
*/
public String getTaskId() {
return taskId;
}
/** 关联的下载任务编号
* @param taskId
*/
public void setTaskId(String taskId) {
this.taskId = taskId;
}
/** 关联查询语句 */
protected String sql = "";
/** 关联查询语句
* @return
*/
public String getSql() {
return sql;
}
/** 关联查询语句
* @param sql
*/
public void setSql(String sql) {
this.sql = sql;
}
/** 关联企业编号 */
protected String enterpriseId = "";
/** 关联企业编号
* @return
*/
public String getEnterpriseId() {
return enterpriseId;
}
/** 关联企业编号
* @param enterpriseId
*/
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
/** 请求数据类型 */
protected Integer queryDataType = QueryDataType.SAFE;
/** 请求数据类型
* @return
*/
public Integer getQueryDataType() {
return queryDataType;
}
/** 请求数据类型
* @param queryDataType
*/
public void setQueryDataType(Integer queryDataType) {
this.queryDataType = queryDataType;
}
/** 允许构建 */
protected String buildPermitted = Global.NO;
/** 允许构建
* @return
*/
public String getBuildPermitted() {
return buildPermitted;
}
/** 允许构建
* @param buildPermitted
*/
public void setBuildPermitted(String buildPermitted) {
this.buildPermitted = buildPermitted;
}
/** 脱敏模式 */
protected Integer desensiType = DataDesensiType.PHONE_ONLY;
/** 脱敏模式
* @return
*/
public Integer getDesensiType() {
return desensiType;
}
/** 脱敏模式
* @param desensiType
*/
public void setDesensiType(Integer desensiType) {
this.desensiType = desensiType;
}
}
package com.gic.cloud.data.hook.api.entity;
import java.io.Serializable;
/** 通用返回值
* @author Sam
*/
public class GeneralResult implements Serializable {
private static final long serialVersionUID = -8955298018524060725L;
/** 处理结果 */
protected Boolean result = false;
/** 处理结果
* @return
*/
public Boolean getResult() {
return result;
}
/** 处理结果
* @param result
*/
public void setResult(Boolean result) {
this.result = result;
}
/** 处理信息 */
protected String info = "";
/** 处理信息
* @return
*/
public String getInfo() {
return info;
}
/** 处理信息
* @param info
*/
public void setInfo(String info) {
this.info = info;
}
}
package com.gic.cloud.data.hook.api.entity;
/** 全局变量定义
* @author Sam
*/
public class Global {
/** 是 */
public static final String YES = "1";
/** 否 */
public static final String NO = "0";
}
package com.gic.cloud.data.hook.api.service;
import com.gic.cloud.common.api.base.Page;
import com.gic.cloud.data.hook.api.dto.DownloadRecord;
import com.gic.cloud.data.hook.api.dto.DownloadTask;
import com.gic.cloud.data.hook.api.dto.RiskModeRecord;
import java.util.Date;
import java.util.List;
/** 下载任务服务
* @author Sam
*/
public interface IDownloadTaskService {
/** 获取指定用户的所有下载任务
* @param userId
* @return
*/
public Page<DownloadTask> getDownloadTaskPage(String userId, String fuzzy, Integer pageNum, Integer pageSize);
/** 删除指定的下载任务
* @param taskId
* @return
*/
public Boolean deleteDownloadTask(String taskId);
/** 创建一个下载记录
* @param taskId
* @param userId
* @param userName
* @param enterpriseId
* @return
*/
public Integer createDownloadRecord(String taskId, String userId, String userName, String enterpriseId);
/** 创建下载记录分页
* @param userId
* @param enterpriseId
* @param fuzzy
* @param pageNum
* @param pageSize
* @return
*/
public Page<DownloadRecord> getDownloadRecordPage(String userId, String enterpriseId, Date startTime, Date endTime, Integer queryDataType, String fuzzyRange, String fuzzy, Integer pageNum, Integer pageSize);
/** 创建风险模式记录
* @param riskModeRecord
*/
public void createRiskModeRecord(RiskModeRecord riskModeRecord);
/** 获取风险模式记录分页
* @param enterpriseId
* @param startTime
* @param endTime
* @param riskDuration
* @param fuzzyRange
* @param fuzzy
* @param pageNum
* @param pageSize
* @return
*/
public Page<RiskModeRecord> getRiskModeRecordPage(String enterpriseId, Date startTime, Date endTime, Integer riskDuration, String fuzzyRange, String fuzzy, Integer pageNum, Integer pageSize);
}
package com.gic.cloud.data.hook.api.service;
import com.gic.cloud.data.hook.api.dto.DownloadTask;
import com.gic.cloud.data.hook.api.dto.FlatQueryResult;
import com.gic.cloud.data.hook.api.entity.FlatQueryCondition;
import java.util.List;
/** 自助指标查询结果服务
* @author Sam
*/
public interface IFlatQueryResultService {
/** 自助指标查询
* @param tableId 指定的表明
* @param enterpriseIds 要查询的企业编号集合
* @param queryConditions 指定的查询条件
* @param orderField 指定的排序字段名
* @param orderDir 排序方向
* @param execDistinct 是否去重
* @param limitRange 取值范围,无限制则为 0(导出情况下)
* @return
*/
public FlatQueryResult getFlatQueryResult(String tableId, List<String> enterpriseIds, List<FlatQueryCondition> queryConditions, String orderField, String orderDir,
Boolean execDistinct, Integer queryDataType, Integer limitRange);
/** 评估自助指标查询下载任务数据量
* @param tableId
* @param enterpriseIds 要查询的企业编号集合
* @param queryConditions
* @param orderField
* @param orderDir
* @param execDistinct
* @return
*/
public Integer estimateFlatQueryDownloadTask(String tableId, List<String> enterpriseIds, List<FlatQueryCondition> queryConditions,
String orderField, String orderDir, Boolean execDistinct);
/** 创建自助指标查询的下载任务
* @param userId
* @param name
* @param amount
* @param format
* @param tableId
* @param enterpriseIds 要查询的企业编号集合
* @param queryConditions
* @param orderField
* @param orderDir
* @param execDistinct
* @return
*/
public DownloadTask buildFlatQueryDownloadTask(String userId, String name, String moduleName, Integer amount, String format, String tableId, List<String> enterpriseIds, List<FlatQueryCondition> queryConditions,
String orderField, String orderDir, Boolean execDistinct,
String useCompress, Integer queryDataType, String applyId);
/** 获取自助指标字段过滤条件数据
* @param tableId
* @param enterpriseIds 要查询的企业编号集合
* @param fieldName
* @return
*/
public List<Object> getFlatQueryFilterData(String tableId, List<String>enterpriseIds, String fieldName);
}
package com.gic.cloud.data.hook.api.service;
import com.gic.cloud.common.api.base.Page;
import com.gic.cloud.data.hook.api.dto.FlatQueryFavo;
import com.gic.cloud.data.hook.api.dto.FlatQueryTable;
import com.gic.cloud.data.hook.api.dto.FlatQueryTableDetail;
/** 自助查询表对象服务
* @author Sam.Z
*/
public interface IFlatQueryTableService {
/** 获取指定编号的自助查询表信息
* @param userId 指定用户主键
* @param id 指定的自助查询表编号
* @return
*/
public FlatQueryTable queryFlatQueryTableById(String userId, String id);
/** 请求自助查询表数据分页
* @param userId 指定用户主键
* @param fuzzy 模糊查询条件
* @param pageNum 指定的页数
* @param pageSize 分页数据数量
* @return
*/
public Page<FlatQueryTable> queryFlatQueryTablePage(String userId, String fuzzy, int pageNum, int pageSize);
/** 获取指定自助查询表的详细信息
* @param userId 指定的用户主键
* @param tableId 指定的表主键
* @return
*/
public FlatQueryTableDetail queryFlatQueryTableDetailByTableId(String userId, String tableId);
/** 获取指定自助查询的收藏
* @param userId 所属用户编号
* @param tableId 指定的表
* @return
*/
public FlatQueryFavo queryFlatQueryFavo(String userId, String tableId);
/** 创建指定自助查询的收藏
* @param userId 所属用户编号
* @param tableId 指定的表
* @return
*/
public Integer createFlatQueryFavo(String userId, String tableId);
/** 移除指定自助查询的收藏
* @param userId 所属用户编号
* @param tableId 指定的表
* @return
*/
public Integer removeFlatQueryFavo(String userId, String tableId);
}
package com.gic.cloud.data.hook.api.service;
import com.gic.cloud.data.hook.api.dto.DownloadTask;
import com.gic.cloud.data.hook.api.dto.FreeQueryRecord;
import com.gic.cloud.data.hook.api.dto.FreeQueryResult;
import com.gic.cloud.data.hook.api.dto.FreeQueryTable;
import java.util.List;
/** 自定义查询服务
* @author Sam
*/
public interface IFreeQueryService {
/** 获取所有自定义查询表
* @return
*/
public List<FreeQueryTable> getFreeQueryTableList();
/** 创建新的自定义查询记录
* @param record
* @return
*/
public Integer createFreeQueryRecord(FreeQueryRecord record);
/** 更新原有的自定义查询记录
* @param record
* @return
*/
public Integer updateFreeQueryRecord(FreeQueryRecord record);
/** 删除一个自定义查询记录
* @param recordId
* @return
*/
public Integer deleteFreeQueryRecord(String recordId);
/** 获取指定用户和编号的自定义查询记录
* @param userId
* @param recordId
* @return
*/
public FreeQueryRecord getFreeQueryRecordByUserIdAndRecordId(String userId, String recordId);
/** 获取指定用户的所有自定义查询
* @param userId
* @param fuzzy
* @return
*/
public List<FreeQueryRecord> getFreeQueryRecordListByUserId(String userId, String fuzzy);
/** 获取自定义查询总数
* @param sql
* @return
*/
public Integer getFreeQueryCount(String sql, String enterpriseId);
/** 获取自定义查询结果
* @param sql
* @return
*/
public FreeQueryResult getFreeQueryResult(String sql, String enterpriseId, Integer queryDataType, Integer desensiType);
/** 生成下载任务
* @param userId
* @param name
* @param amount
* @param format
* @param sql
* @return
*/
public DownloadTask buildFreeQueryDownloadTask(String userId, String name, Integer amount, String format, String sql, String enterpriseId, Boolean useCompress, Integer queryDataType, String applyId, Integer desensiType);
/** 获取指定表的所有字段
* @param tableName
* @return
*/
public List<String> getColumnsByTable(String tableName);
}
package com.gic.cloud.data.hook.api.service;
import com.gic.cloud.common.api.base.Page;
import com.gic.cloud.data.hook.api.dto.MyFlatQuery;
/** 自定义指标查询服务
* @author Sam
*/
public interface IMyFlatQueryService {
/** 创建新的自定义指标查询
* @param myFlatQuery
* @return
*/
public Integer createMyFlatQuery(MyFlatQuery myFlatQuery);
/** 更新原有的自定义指标查询
* @param myFlatQuery
* @return
*/
public Integer updateMyFlatQuery(MyFlatQuery myFlatQuery);
/** 删除一个自定义指标查询
* @param id
* @return
*/
public Integer deleteMyFlatQuery(String id);
/** 获取指定编号的自定义指标查询
* @param id 指定的自助查询表编号
* @return
*/
public MyFlatQuery queryMyFlatQueryById(String id);
/** 请求自定义指标查询数据分页
* @param userId 指定用户主键
* @param fuzzy 模糊查询条件
* @param pageNum 指定的页数
* @param pageSize 分页数据数量
* @return
*/
public Page<MyFlatQuery> queryMyFlatQueryPage(String userId, String fuzzy, int pageNum, int pageSize);
}
dubbo.registry.file=gic-cloud-data-hook-service
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:apollo="http://www.ctrip.com/schema/apollo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.ctrip.com/schema/apollo
http://www.ctrip.com/schema/apollo.xsd">
<!--<import resource="classpath*:applicationContext-zipkin.xml"/>-->
<apollo:config/>
<apollo:config namespaces="COMMON.gic-properties" />
<bean id="proConfig" class="com.gic.commons.init.CustomizedPropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!--<value>classpath:gic.properties</value>-->
<!--<value>classpath:data-hook-dubbo.properties</value>
<value>classpath:gic.wx.properties</value>-->
<value>dubbo-project.properties</value>
</list>
</property>
</bean>
</beans>
\ No newline at end of file
dubbo.registry.file=gic-member
\ No newline at end of file
#MySql
wx.appId=wx6fae24d38744b977
wx.appSecret=91894e0e5b6a941c5ebd420828e14c49
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>com.gic</groupId>
<modelVersion>4.0.0</modelVersion>
<name>${project.artifactId}</name>
<artifactId>gic-cloud-data-hook-service</artifactId>
<version>${dataHookVersion}</version>
<properties>
<dataHookVersion>1.0-SNAPSHOT</dataHookVersion>
<hiveJdbcVersion>2.1.1</hiveJdbcVersion>
<hadoopCommonVersion>2.7.3</hadoopCommonVersion>
<cloudCommonsVersion>3.0-SNAPSHOT</cloudCommonsVersion>
<cloudServiceVersion>3.0-SNAPSHOT</cloudServiceVersion>
<serviceVersion>3.0-SNAPSHOT</serviceVersion>
<commonsVersion>3.0-SNAPSHOT</commonsVersion>
<memcachedVersion>3.0-SNAPSHOT</memcachedVersion>
<esVersion>3.0-SNAPSHOT</esVersion>
<mongoVersion>3.0-SNAPSHOT</mongoVersion>
<proTradeVersion>3.0-SNAPSHOT</proTradeVersion>
<platformConfigVersion>3.0-SNAPSHOT</platformConfigVersion>
</properties>
<dependencies>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>3.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-cloud-data-hook-api</artifactId>
<version>${dataHookVersion}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>data-shield-sdk</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--<dependency>
<groupId>data-shield</groupId>
<artifactId>gic-data-shield-sdk</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/data-shield-sdk-1.0-SNAPSHOT.jar</systemPath>
</dependency>
-->
<dependency>
<groupId>org.spark-project.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.2.1.spark</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoopCommonVersion}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<verbose/>
<!--<bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>-->
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>target/classes/</classesDirectory>
<archive>
<manifest>
<mainClass>com.alibaba.dubbo.container.Main</mainClass>
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<!-- 将指定的本地依赖(已 package 到 lib 目录下)jar 加入 -->
<!--<Class-Path>lib/gic-data-shield-sdk-1.0-SNAPSHOT.jar</Class-Path>-->
<!--<Class-Path>lib/gic-data-shield-sdk-1.0.jar</Class-Path>-->
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<type>jar</type>
<includeTypes>jar</includeTypes>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
<!--<includeScope>system</includeScope>-->
</configuration>
</execution>
</executions>
</plugin>
<!--<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<archive>
<manifest>
<mainClass>com.alibaba.dubbo.container.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>-->
</plugins>
</build>
</project>
\ No newline at end of file
Manifest-Version: 1.0
Main-Class: com.alibaba.dubbo.container.Main
package cn.medubi.client.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
/** 日志包
* @author Sam
* @version 1.0
* @since 2016.12.31
*/
public class LogPak {
/** 类名称 */
private String _className;
/** 毫秒级完整日期格式化类 */
private static SimpleDateFormat _fullFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS");
/** 构造函数
* @param refClass 指定适配的类
*/
public LogPak(Class<?> refClass) {
this._className = refClass.getName();
}
/** DEBUG
* @param refFuncName 方法名
* @param refCommet 说明
*/
public void debug(String refFuncName, String refCommet) {
System.out.println(_fullFormat.format(new Date()) + " [ " + this._className + " ] [ " + refFuncName + " ]:" + refCommet + "");
}
}
package com.gic.cloud.data.hook.service;
import com.gic.data.shield.SdkEnv;
import com.gic.data.shield.decrypt.DataDecryptionClient;
import com.gic.data.shield.exception.DecryptException;
import org.springframework.stereotype.Service;
public class DecryptUtils {
private static DataDecryptionClient decryptionClient = null;
private static DecryptUtils instance = null;
static {
DataDecryptionClient.setEnv(SdkEnv.DEV);
decryptionClient = new DataDecryptionClient();
}
private DecryptUtils() {
instance = this;
// DataDecryptionClient.setEnv(SdkEnv.DEV);
// decryptionClient = new DataDecryptionClient();
}
public static DecryptUtils getInstance() {
//DataDecryptionClient.setEnv(SdkEnv.DEV);
//DataDecryptionClient.setEnv(SdkEnv.DEV);
if (instance == null) instance = new DecryptUtils();
return instance;
}
public static String decrypt(String encryptString) {
try {
String result = decryptionClient.decrypt(encryptString);
return result;
} catch (DecryptException e) {
e.printStackTrace();
return "";
}
}
}
package com.gic.cloud.data.hook.service;
import cn.medubi.client.utils.LogPak;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/** Hive 辅助工具类
* @author Sam
*/
@Component
public class HiveHelper implements ApplicationContextAware {
/** 日志类 */
private static LogPak log = new LogPak(HiveHelper.class);
/** 内置数据源 */
private static DataSource source = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
log.debug("setApplicationContext", "准备初始化 Hive 连接池");
source = (DataSource)applicationContext.getBean("hiveSource");
}
/** 获取 Hive 数据源
* @return
*/
// public static DataSource getDataSource() {
// return source;
// }
/** 获取一个 Hive 的连接
* @return
*/
public static Connection getHiveConnection() {
Connection conn = null;
try {
// String url = "jdbc:hive2://115.159.205.44:10015/data_test";
// //String url = "jdbc:hive2://10.0.0.3:10015/data_test";
// Class.forName("org.apache.hive.jdbc.HiveDriver");
// conn = DriverManager.getConnection(url, "hadoop", "");
conn = source.getConnection();
return conn;
} catch (Exception ex) {
ex.printStackTrace();
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
} // TRY CATCH OVER
}
}
package com.gic.cloud.data.hook.service;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.security.GeneralSecurityException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.util.EntityUtils;
public class HttpUtils {
private static PoolingHttpClientConnectionManager connMgr;
private static RequestConfig requestConfig;
private static final int MAX_TIMEOUT = 120000; // 最大超时 120 秒
static {
// 设置连接池
connMgr = new PoolingHttpClientConnectionManager();
// 设置连接池大小
connMgr.setMaxTotal(100);
connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal());
// Validate connections after 1 sec of inactivity
connMgr.setValidateAfterInactivity(1000);
RequestConfig.Builder configBuilder = RequestConfig.custom();
// 设置连接超时
configBuilder.setConnectTimeout(MAX_TIMEOUT);
// 设置读取超时
configBuilder.setSocketTimeout(MAX_TIMEOUT);
// 设置从连接池获取连接实例的超时
configBuilder.setConnectionRequestTimeout(MAX_TIMEOUT);
requestConfig = configBuilder.build();
}
public static String doGet(String url) {
return doGet(url, new HashMap<String, Object>());
}
public static String doGet(String url, Map<String, Object> params) {
String apiUrl = url;
StringBuffer param = new StringBuffer();
int i = 0;
for (String key : params.keySet()) {
if (i == 0) {
param.append("?");
} else {
param.append("&");
param.append(key).append("=").append(params.get(key));
i++;
}
} // FOR OVER
apiUrl += param;
String result = null;
HttpClient httpClient = null;
if (apiUrl.startsWith("https")) {
httpClient = HttpClients.custom().setSSLSocketFactory(createSSLConnSocketFactory()).setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build();
} else {
httpClient = HttpClients.createDefault();
}
try {
HttpGet httpGet = new HttpGet(apiUrl);
HttpResponse response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
result = IOUtils.toString(instream, "UTF-8");
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/** POST 方式请求数据
* @param apiUrl
* @return
*/
public static String doPost(String apiUrl) {
return doPost(apiUrl, new HashMap<String, Object>());
}
/** POST 方式发送数据并获取请求
* @param apiUrl
* @param params
* @return
*/
public static String doPost(String apiUrl, Map<String, Object> params) {
CloseableHttpClient httpClient = null;
if (apiUrl.startsWith("https")) {
httpClient = HttpClients.custom().setSSLSocketFactory(createSSLConnSocketFactory()).setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build();
} else httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse response = null;
try {
httpPost.setConfig(requestConfig);
List<NameValuePair> pairList = new ArrayList<>(params.size());
for (Map.Entry<String, Object> entry : params.entrySet()) {
String entryKey = entry.getKey();
String entryVal = entry.getValue() != null ? entry.getValue().toString() : "";
NameValuePair pair = new BasicNameValuePair(entryKey, entryVal);
pairList.add(pair);
} // FOR OVER
httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName("UTF-8")));
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (response != null) {
try {
EntityUtils.consume(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return httpStr;
}
/** 获取 SSL 连接工厂
* @return
*/
private static SSLConnectionSocketFactory createSSLConnSocketFactory() {
SSLConnectionSocketFactory sslsf = null;
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
return true;
}
}).build();
sslsf = new SSLConnectionSocketFactory(sslContext, new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
return sslsf;
}
}
package com.gic.cloud.data.hook.service;
import cn.medubi.client.utils.LogPak;
import com.gic.cloud.data.hook.api.dto.FreeQuerySource;
import com.gic.cloud.data.hook.api.dto.FreeQueryTable;
import com.gic.cloud.data.hook.service.dao.FreeQuerySourceDao;
import com.gic.cloud.data.hook.service.entity.ConfigHelper;
import com.gic.cloud.data.hook.service.entity.MysqlSourceSwitch;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/** Mysql 辅助工具类
* @author Sam
*/
@Component
public class MysqlHelper implements ApplicationContextAware {
/** 日志类 */
private static LogPak log = new LogPak(MysqlHelper.class);
/** MySQL 数据源 */
private static DataSource source = null;
/** MySQL 内外网切换开关 */
private static MysqlSourceSwitch switcher = null;
/** 自定义查询数据源(已从系统库移除改为使用 db 团队指定库) */
//@Autowired
//private FreeQuerySourceDao freeQuerySourceDao;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
log.debug("setApplicationContext", "准备初始化 MySQL 数据源");
source = (DataSource)applicationContext.getBean("mysqlSource");
log.debug("setApplicationContext", "准备初始化 MySQL 内外网开关");
switcher = (MysqlSourceSwitch)applicationContext.getBean("mysqlSourceSwitch");
}
/** MysqlHelper 单例 */
private static MysqlHelper instance = null;
/** 构造函数 */
public MysqlHelper() {
instance = this;
}
/** 获取自定义查询数据源
* @param enterpriseId
* @return
*/
public FreeQuerySource getFreeQuerySource(String enterpriseId) {
try {
Connection conn = source.getConnection();
String sql = "select * from tab_enterprisebyid_target where `enterprise_id`=?";
PreparedStatement statment = conn.prepareStatement(sql);
statment.setString(1, enterpriseId);
ResultSet result = statment.executeQuery();
while (result.next()) {
FreeQuerySource source = new FreeQuerySource();
source.setId(enterpriseId);
source.setEnterpriseId(enterpriseId);
source.setEnterpriseName(result.getString("enterprise_name"));
String url = result.getString("url") + result.getString("options");
if (switcher.getIsRunningOutsite()) {
url = url.replace(switcher.getUrlReplaceTarget(), switcher.getUrlReplaceValue());
log.debug("getFreeQuerySource", "外网环境使用,替换数据源为 " + url);
} // IF OVER
source.setUrl(url);
source.setUsername(result.getString("usr"));
source.setPassword(result.getString("password"));
conn.close();
return source;
}
} catch (Exception e) {
e.printStackTrace();
log.debug("getFreeQuerySource", "获取编号为 " + enterpriseId + " 的商户自定义查询库连接失败");
} // TRY CATCH OVER
log.debug("getFreeQuerySource", "未能获取编号为 " + enterpriseId + " 的商户自定义查询库连接");
return null;
}
/** 获取所有的自定义查询表信息
* @return
*/
public static List<FreeQueryTable> getFreeQueryTableList() {
List<FreeQueryTable> tables = new ArrayList<FreeQueryTable>();
try {
Connection conn = source.getConnection();
if (conn != null) {
//String sql = "SELECT * FROM tab_enterprisebyid_extract_task WHERE `extract_type`=1 ORDER BY `priority_ranking`,`table_name`";
String sql = "SELECT * FROM tab_selfdata_metastore ORDER BY `priority_ranking`,`table_name`";
PreparedStatement statment = conn.prepareStatement(sql);
ResultSet result = statment.executeQuery();
while (result.next()) {
FreeQueryTable table = new FreeQueryTable();
Integer rank = result.getInt("priority_ranking");
table.setRank(rank != null ? rank : 0);
table.setTableId(result.getString("table_name"));
table.setTableName(result.getString("table_describe"));
tables.add(table);
} // WHILE OVER
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
log.debug("getFreeQuerySource", "获取自定义查询用数据表信息失败");
} // TRY CATCH OVER
return tables;
}
/** 获取一个 FreeQuery 数据库的连接
* @return
*/
public static Connection getFreeQueryConnection(String enterpriseId) {
Connection conn = null;
log.debug("getFreeQueryConnection", "目标连接的企业编号为 " + enterpriseId);
try {
// String url = "jdbc:mysql://56cbb9f62fac6.sh.cdb.myqcloud.com:6634/dmwl_test";
// Class.forName("com.mysql.jdbc.Driver");
// conn = DriverManager.getConnection(url, "data_test", "iP7LwQsezaWW");
// Properties prop = ConfigHelper.getPropertiesFile("data-hook-free-query-source");
// String url = prop.getProperty("url");
// String username = prop.getProperty("username");
// String password = prop.getProperty("password");
// conn = DriverManager.getConnection(url, username, password);
//conn = source.getConnection(); // Spring 方式,已取消
FreeQuerySource curSource = instance.getFreeQuerySource(enterpriseId); //instance.freeQuerySourceDao.getFreeQuerySourceByEnterpriseId(enterpriseId); // 已弃用从系统库取得自定义查询连接的方式
conn = DriverManager.getConnection(curSource.getUrl(), curSource.getUsername(), curSource.getPassword());
return conn;
} catch (Exception ex) {
ex.printStackTrace();
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
} // TRY CATCH OVER
}
}
package com.gic.cloud.data.hook.service;
import com.gic.cloud.data.hook.api.dto.QueryDataType;
public class ServiceUtils {
/** 构建新的报告编号
* @param queryDataType
* @param previousCount
* @return
*/
public static String buildReportId(Integer queryDataType, Integer previousCount) {
String prefix = queryDataType == QueryDataType.FULL ? "DHW" : "DHT";
Integer reportNumber = previousCount + 1;
if (reportNumber < 10) {
return prefix + "0000000" + reportNumber;
} else if (reportNumber < 100) {
return prefix + "000000" + reportNumber;
} else if (reportNumber < 1000) {
return prefix + "00000" + reportNumber;
} else if (reportNumber < 10000) {
return prefix + "0000" + reportNumber;
} else if (reportNumber < 100000) {
return prefix + "000" + reportNumber;
} else if (reportNumber < 1000000) {
return prefix + "00" + reportNumber;
} else if (reportNumber < 10000000) {
return prefix + "0" + reportNumber;
} else return prefix + reportNumber;
}
}
package com.gic.cloud.data.hook.service;
import com.gic.cloud.data.hook.api.service.IFlatQueryTableService;
import org.slf4j.LoggerFactory;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/** Hive 测试类
*/
public class TestHive {
private static org.slf4j.Logger logger= LoggerFactory.getLogger(IFlatQueryTableService.class);
public static void main(String[] args) {
String url = "jdbc:hive2://115.159.205.44:10015/data_test";
try {
System.out.println("准备连接");
Class.forName("org.apache.hive.jdbc.HiveDriver");
Connection conn = DriverManager.getConnection(url, "hadoop", "");
System.out.println("连接成功");
String sql = "show tables";
System.out.println("SQL: "+sql);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getString(1));
}
System.out.println("处理结束");
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.gic.cloud.data.hook.service.dao;
import com.gic.cloud.data.hook.api.dto.DownloadRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/** 下载日志 DAO
* @author Sam
*/
@Mapper
public interface DownloadRecordDao {
/** 创建下载日志
* @param record
* @return
*/
public Integer createDownloadRecord(DownloadRecord record);
/** 获取的下载日志
* @param userId
* @param enterpriseId
* @param fuzzy
* @return
*/
public List<DownloadRecord> getDownloadRecordList(@Param("userId") String userId, @Param("enterpriseId") String enterpriseId,
@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("queryDataType") Integer queryDataType,
@Param("fuzzyRange") String fuzzyRange, @Param("fuzzy") String fuzzy);
}
package com.gic.cloud.data.hook.service.dao;
import com.gic.cloud.data.hook.api.dto.DownloadTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/** 下载任务 DAO
* @author Sam
*/
@Mapper
public interface DownloadTaskDao {
/** 创建下载任务
* @param task
* @return
*/
public Integer createDownloadTask(DownloadTask task);
/** 更新下载任务
* @param task
* @return
*/
public Integer updateDownloadTask(DownloadTask task);
/** 删除下载任务
* @param taskId
* @return
*/
public Integer deleteDownloadTask(@Param("taskId") String taskId);
/** 获取指定编号的下载任务
* @param taskId
* @return
*/
public DownloadTask getDownloadTaskById(@Param("taskId") String taskId);
/** 获取指定用户的所有下载任务
* @param userId
* @param fuzzy
* @return
*/
public List<DownloadTask> getDownloadTaskListByUserId(@Param("userId")String userId, @Param("fuzzy") String fuzzy);
/** 获取过期的下载任务列表
* @param expireDate
* @return
*/
public List<DownloadTask> getExpiredDownloadTaskList(@Param("expireDate") Date expireDate);
/** 获取指定企业编号的所有下载任务统计
* @param enterpriseId
* @return
*/
public Integer countDownloadTaskByEnterpriseId(@Param("enterpriseId") String enterpriseId);
/** 获取等待申请通过状态的任务
* @return
*/
public List<DownloadTask> getDownloadTaskOfWaiting(@Param("queryDataSource") String queryDataSource);
}
package com.gic.cloud.data.hook.service.dao;
import com.gic.cloud.data.hook.api.dto.FlatQueryFavo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** 自助查询收藏 DAO
* @author Sam
*/
@Mapper
public interface FlatQueryFavoDao {
/** 获取自助查询收藏
* @param userId 指定的用户编号
* @param tableId 指定的表编号
* @return
*/
public FlatQueryFavo getFlatQueryFavo(@Param("userId") String userId, @Param("tableId") String tableId);
/** 添加自助查收收藏
* @param id timstamp
* @param userId 指定的用户编号
* @param tableId 指定的表编号
* @return
*/
public int addFlatQueryFavo(@Param("id") String id, @Param("userId") String userId, @Param("tableId") String tableId);
/** 取消自助查询收藏
* @param userId 指定的用户编号
* @param tableId 指定的表编号
* @return
*/
public int removeFlatQueryFavo(@Param("userId") String userId, @Param("tableId") String tableId);
}
package com.gic.cloud.data.hook.service.dao;
import com.gic.cloud.data.hook.api.dto.FlatQueryField;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** 自助查询字段 DAO
* @author Sam
*/
@Mapper
public interface FlatQueryFieldDao {
/** 获取指定表的所有查询字段 */
public List<FlatQueryField> getFlatQueryFieldByTableId(@Param("tableId") String tableId);
}
package com.gic.cloud.data.hook.service.dao;
import com.gic.cloud.data.hook.api.dto.FlatQueryTable;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** 自助查询表信息 Mapper
* @author Sam
*/
@Mapper
public interface FlatQueryTableDao {
/** 获取指定编号的自助查询表信息
* @param userId 用户主键
* @param tableId 表主键
* @return
*/
FlatQueryTable getFlatQueryTableById(@Param("userId") String userId, @Param("tableId") String tableId);
/** 获取所有的自助查询表信息
* @param userId 用户主键
* @param fuzzy 模糊查询条件
* @return 自助查询表信息列表
*/
List<FlatQueryTable> getFlatQueryTable(@Param("userId") String userId, @Param("fuzzy") String fuzzy);
/** 更新自助查询表信息
* @param table
* @return
*/
int updateFlatQueryTable(FlatQueryTable table);
}
package com.gic.cloud.data.hook.service.dao;
import com.gic.cloud.data.hook.api.dto.FreeQueryRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** 自定义查询记录 DAO
* @author Sam
*/
@Mapper
public interface FreeQueryRecordDao {
/** 创建新的自定义查询记录
* @param record
* @return
*/
public Integer createFreeQueryRecord(FreeQueryRecord record);
/** 更新原有的自定义查询记录
* @param record
* @return
*/
public Integer updateFreeQueryRecord(FreeQueryRecord record);
/** 删除一个自定义查询记录
* @param recordId
* @return
*/
public Integer deleteFreeQueryRecord(@Param("recordId") String recordId);
/** 获取指定用户和编号的自定义查询记录
* @param userId
* @param recordId
* @return
*/
public FreeQueryRecord getFreeQueryRecordByUserIdAndRecordId(@Param("userId") String userId, @Param("recordId") String recordId);
/** 获取指定用户的所有自定义查询
* @param userId
* @param fuzzy
* @return
*/
public List<FreeQueryRecord> getFreeQueryRecordListByUserId(@Param("userId") String userId, @Param("fuzzy") String fuzzy);
}
package com.gic.cloud.data.hook.service.dao;
import com.gic.cloud.data.hook.api.dto.FreeQuerySource;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** 自定义查询连接信息 DAO
*/
@Mapper
public interface FreeQuerySourceDao {
/** 获取指定商户编号的自定义查询连接信息
* @param enterpriseId
* @return
*/
public FreeQuerySource getFreeQuerySourceByEnterpriseId(@Param("enterpriseId") String enterpriseId);
/** 创建自定义查询数据源
* @param source
* @return
*/
public int createFreeQuerySource(FreeQuerySource source);
/** 更新自定义查询数据源
* @param source
* @return
*/
public int updateFreeQuerySource(FreeQuerySource source);
/** 删除自定义查询数据源
* @param sourceId 数据源编号
* @return
*/
public int deleteFreeQuerySource(@Param("sourceId") String sourceId);
}
package com.gic.cloud.data.hook.service.dao;
import com.gic.cloud.data.hook.api.dto.MyFlatQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** 自定义指标查询
* @author Sam
*/
@Mapper
public interface MyFlatQueryDao {
/** 创建自定义指标查询
* @param myFlatQuery
* @return
*/
public Integer createMyFlatQuery(MyFlatQuery myFlatQuery);
/** 更新自定义查询指标
* @param myFlatQuery
* @return
*/
public Integer updateMyFlatQuery(MyFlatQuery myFlatQuery);
/** 删除自定义查询指标
* @param id
* @return
*/
public Integer deleteMyFlatQuery(@Param("id") String id);
/** 获取指定编号的自定义指标查询
* @param id 自定义指标查询编号
* @return
*/
MyFlatQuery getMyFlatQueryById(@Param("id") String id);
/** 获取所有的自定义指标查询
* @param userId 用户主键
* @param fuzzy 模糊查询条件
* @return 自助查询表信息列表
*/
List<MyFlatQuery> getMyFlatQueryList(@Param("userId") String userId, @Param("fuzzy") String fuzzy);
}
package com.gic.cloud.data.hook.service.dao;
import com.gic.cloud.data.hook.api.dto.DownloadRecord;
import com.gic.cloud.data.hook.api.dto.RiskModeRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/** 风险模式日志 DAO
* @author Sam
*/
@Mapper
public interface RiskModeRecordDao {
/** 获取指定的风险模式记录
* @param applyId
* @return
*/
public RiskModeRecord getRiskModeRecordByApplyId(@Param("applyId") String applyId);
/** 创建风险模式日志
* @param record
* @return
*/
public Integer createRiskModeRecord(RiskModeRecord record);
/** 更新风险模式日志
* @param record
* @return
*/
public Integer updateRiskModeRecord(RiskModeRecord record);
/** 获取的风险模式日志
* @return
*/
public List<RiskModeRecord> getRiskModeRecordList(@Param("enterpriseId") String enterpriseId,
@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("riskDuration") Integer riskDuration,
@Param("fuzzyRange") String fuzzyRange, @Param("fuzzy") String fuzzy);
}
package com.gic.cloud.data.hook.service.entity;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/** 配置文件辅助类
*
*/
public class ConfigHelper {
/** 获取指定名称的配置文件
* @param fileName
* @return
*/
public static Properties getPropertiesFile(String fileName) {
InputStream stream = getPropertiesStream(fileName);
Properties p = new Properties();
try {
p.load(stream);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/** 获取指定名称的配置文件 InputStream
* @param fileName
* @return
*/
public static InputStream getPropertiesStream(String fileName) {
String jarPath = (new ConfigHelper()).getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); // 获取 Jar 包位置
int firstIndex = jarPath.lastIndexOf(System.getProperty("path.separator")) + 1;
int lastIndex = jarPath.lastIndexOf(File.separator) + 1;
jarPath = jarPath.substring(firstIndex, lastIndex);
System.out.println("当前 Jar 包位于 " + jarPath);
String outpropPath = fileName.endsWith(".properties") ? jarPath + "conf/" + fileName : jarPath + "conf/" + fileName + ".properties";
System.out.println("尝试读取外部配置文件 " + outpropPath);
if ( (new File(outpropPath)).exists() ) { // 如果找到外部配置文件
InputStream outstream = ClassLoader.getSystemResourceAsStream(jarPath);
return outstream;
} else { // 如果未发现外部配置文件
System.out.println("读取外部配置文件 " + outpropPath + " 失败,尝试读取 jar 内部配置文件");
InputStream instream = ConfigHelper.class.getResourceAsStream(fileName.endsWith(".properties") ? "/" + fileName : "/" + fileName + ".properties");
return instream;
} // IF ELSE OVER
}
}
package com.gic.cloud.data.hook.service.entity;
/** 数据过滤模式
*/
public class CsvDataFilterMode {
/** 不进行任何过滤处理 */
public static final String NONE = "none";
/** 脱敏处理 */
public static final String DESENSI = "desensi";
/** 解密处理 */
public static final String DECRYPT = "decrypt";
}
package com.gic.cloud.data.hook.service.entity;
import com.gic.cloud.data.hook.service.DecryptUtils;
import com.opencsv.ResultSetHelper;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
public class CsvResultSetHelper implements ResultSetHelper {
/** 数据过滤模式 */
private String filterMode = CsvDataFilterMode.NONE;
/** 数据过滤用关键字集合 */
private List<String> filters = null;
public CsvResultSetHelper(String filterMode, List<String> filters) {
this.filterMode = filterMode;
this.filters = filters;
}
@Override
public String[] getColumnNames(ResultSet resultSet) throws SQLException {
String[] result = new String[0];
int columnCount = resultSet.getMetaData().getColumnCount();
if (columnCount > 0) {
result = new String[columnCount];
for (int i=0; i<columnCount; i++) {
String rsColumnName = resultSet.getMetaData().getColumnLabel(i + 1);
result[i] = rsColumnName;
} // FOR OVER
} // IF OVER
return result;
}
@Override
public String[] getColumnValues(ResultSet resultSet) throws SQLException, IOException {
return this.getColumnValues(resultSet, false);
}
@Override
public String[] getColumnValues(ResultSet resultSet, boolean b) throws SQLException, IOException {
return this.getColumnValues(resultSet, false, "yyyy-MM-dd HH:mm:ss", "HH:mm:ss");
}
private static SimpleDateFormat datetimeFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
private static SimpleDateFormat timeFormatter = new SimpleDateFormat("hh:mm:ss");
@Override
public String[] getColumnValues(ResultSet resultSet, boolean b, String s, String s1) throws SQLException, IOException {
String[] result = new String[0];
int columnCount = resultSet.getMetaData().getColumnCount();
if (columnCount > 0) {
result = new String[columnCount];
for (int i=0; i<columnCount; i++) {
String columnName = resultSet.getMetaData().getColumnLabel(i + 1);
// 数据处理判断
boolean doDesensi = false; // 是否进行脱敏
boolean doDecrypt = false; // 是否进行解密
if (this.filterMode.equals(CsvDataFilterMode.DESENSI)) { // 如果需要脱敏
if (this.filters != null && this.filters.size() > 0) {
for (String filter : this.filters) {
if (columnName.contains(filter)) {
doDesensi = true;
break;
} // IF OVER
} // FOR OVER
} // IF OVER
} else if (this.filterMode.equals(CsvDataFilterMode.DECRYPT)) { // 如果需要解密
if (this.filters != null && this.filters.size() > 0) {
for (String filter : this.filters) {
if (columnName.equals(filter)) {
doDecrypt = true;
break;
} // IF OVER
} // FOR OVER
} // IF OVER
}
// 数据处理
if (doDesensi) { // 如果需要脱敏处理
result[i] = "******";
} else if (doDecrypt) { // 如果需要解密处理
//System.out.println("CSV 解密字段名 " + columnName);
String tmpResult = resultSet.getString(columnName);
if (tmpResult != null && tmpResult.length() > 0) {
//tmpResult = DecryptUtils.getInstance().decrypt(tmpResult);
tmpResult = DecryptUtils.getInstance().decrypt(tmpResult);
} // IF OVER
result[i] = tmpResult;
} else {
int columnType = resultSet.getMetaData().getColumnType(i + 1);
switch (columnType) {
case Types.TIMESTAMP:
result[i] = resultSet.getTimestamp(columnName) != null ? datetimeFormatter.format(resultSet.getTimestamp(columnName)) : "";
break;
case Types.DATE:
//result[i] = resultSet.getTimestamp(columnName) != null ? dateFormatter.format(resultSet.getTimestamp(columnName)) : "";
result[i] = resultSet.getDate(columnName) != null ? dateFormatter.format(resultSet.getDate(columnName)) : "";
break;
case Types.TIME:
result[i] = resultSet.getTimestamp(columnName) != null ? timeFormatter.format(resultSet.getTimestamp(columnName)) : "";
break;
default:
result[i] = String.valueOf(resultSet.getObject(columnName));
break;
} // SWITCH OVER
} // IF ELSE OVER
} // FOR OVER
} // IF OVER
return result;
}
}
package com.gic.cloud.data.hook.service.entity;
/** Mysql 数据源切换开关
*
*/
public class MysqlSourceSwitch {
/** 是否运行于外网环境 */
protected Boolean isRunningOutsite = true;
/** 是否运行于外网环境
* @return
*/
public Boolean getIsRunningOutsite() {
return isRunningOutsite;
}
/** 是否运行于外网环境
* @param isRunningOutsite
*/
public void setIsRunningOutsite(Boolean isRunningOutsite) {
isRunningOutsite = isRunningOutsite;
}
/** 连接字符串替换目标 */
protected String urlReplaceTarget = "";
/** 连接字符串替换目标
* @return
*/
public String getUrlReplaceTarget() {
return urlReplaceTarget;
}
/** 连接字符串替换目标
* @param urlReplaceTarget
*/
public void setUrlReplaceTarget(String urlReplaceTarget) {
this.urlReplaceTarget = urlReplaceTarget;
}
/** 连接字符串替换值 */
protected String urlReplaceValue = "";
/** 连接字符串替换值
* @return
*/
public String getUrlReplaceValue() {
return urlReplaceValue;
}
/** 连接字符串替换值
* @param urlReplaceValue
*/
public void setUrlReplaceValue(String urlReplaceValue) {
this.urlReplaceValue = urlReplaceValue;
}
}
package com.gic.cloud.data.hook.service.impl;
import cn.medubi.client.utils.LogPak;
import com.alibaba.fastjson.JSON;
import com.gic.cloud.common.api.base.Page;
import com.gic.cloud.data.hook.api.dto.DownloadRecord;
import com.gic.cloud.data.hook.api.dto.DownloadTask;
import com.gic.cloud.data.hook.api.dto.FlatQueryTable;
import com.gic.cloud.data.hook.api.dto.RiskModeRecord;
import com.gic.cloud.data.hook.api.entity.DownloadTaskStatus;
import com.gic.cloud.data.hook.api.entity.FreeQueryTaskCondition;
import com.gic.cloud.data.hook.api.entity.Global;
import com.gic.cloud.data.hook.api.service.IDownloadTaskService;
import com.gic.cloud.data.hook.service.MysqlHelper;
import com.gic.cloud.data.hook.service.dao.DownloadRecordDao;
import com.gic.cloud.data.hook.service.dao.DownloadTaskDao;
import com.gic.cloud.data.hook.service.dao.RiskModeRecordDao;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.opencsv.CSVWriter;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.io.*;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/** 下载任务服务即成
* @author Sam
*/
@Component
public class DownloadTaskServiceImpl implements IDownloadTaskService {
/** 日志类 */
private static LogPak log = new LogPak(DownloadTaskServiceImpl.class);
/** 下载任务服务单例 */
private static DownloadTaskServiceImpl instance = null;
/** 获取下载任务服务单例
* @return
*/
public static synchronized DownloadTaskServiceImpl getInstance() {
if (instance == null) instance = new DownloadTaskServiceImpl();
return instance;
}
/** 构造函数 */
private DownloadTaskServiceImpl() {
log.debug("construct", "准备初始化 DownloadTask 查询服务");
instance = this;
this.runDownloadCleanTask(60); // 每分钟清理一次
}
@Autowired
private DownloadTaskDao downloadTaskDao;
@Autowired
private DownloadRecordDao downloadRecordDao;
@Autowired
private RiskModeRecordDao riskModeRecordDao;
/** 获取指定的下载任务
* @param taskId
* @return
*/
public DownloadTask getDownloadTaskById(String taskId) {
return this.downloadTaskDao.getDownloadTaskById(taskId);
}
/** 更新指定的下载任务
* @param task
* @return
*/
public Integer updateDownloadTask(DownloadTask task) {
return this.downloadTaskDao.updateDownloadTask(task);
}
@Override
public Page<DownloadTask> getDownloadTaskPage(String userId, String fuzzy, Integer pageNum, Integer pageSize) {
Page<DownloadTask> result = new Page<>();
PageHelper.startPage(pageNum, pageSize); // 设置分页参数
List<DownloadTask> query = downloadTaskDao.getDownloadTaskListByUserId(userId, fuzzy);
// 生成数据输出信息
PageInfo<DownloadTask> preResult = new PageInfo<>(query);
result.setList(preResult.getList()); // 设置数据集
result.setTotal(preResult.getTotal()); // 设置总数
result.setPageNum(preResult.getPageNum()); // 设置当前页数
return result;
}
/** 创建下载任务
* @param task
* @return
*/
public Integer createDownloadTask(DownloadTask task) {
return this.downloadTaskDao.createDownloadTask(task);
}
/** 删除指定的下载任务
* @param taskId
* @return
*/
public Boolean deleteDownloadTask(String taskId) {
DownloadTask task = this.downloadTaskDao.getDownloadTaskById(taskId);
if (task != null) {
if (task.getStatus().equals(DownloadTaskStatus.COMPLISHED) || task.getStatus().equals(DownloadTaskStatus.ERROR)) {
if (task.getFormat().equals("csv")) {
File csv = new File("/usr/local/data-hook-file/" + task.getId() + ".csv");
if (csv.exists()) csv.delete();
if (task.getUseCompress().equals(Global.YES)) {
File zip = new File("/usr/local/data-hook-file/" + task.getId() + ".zip");
if (zip.exists()) zip.delete();
}
} else {
File xlsx = new File("/usr/local/data-hook-file/" + task.getId() + ".xlsx");
if (xlsx.exists()) xlsx.delete();
if (task.getUseCompress().equals(Global.YES)) {
File zip = new File("/usr/local/data-hook-file/" + task.getId() + ".zip");
if (zip.exists()) zip.delete();
}
}
}
this.downloadTaskDao.deleteDownloadTask(task.getId());
return true;
} else return false;
}
/** 获取指定企业的所有下载任务编号
* @param enterpriseId
* @return
*/
public Integer getDownloadTaskCountByEnterpriseId(String enterpriseId) {
return this.downloadTaskDao.countDownloadTaskByEnterpriseId(enterpriseId);
}
/** 下载任务执行计时器 */
private Timer downloadTaskTimer = new Timer();
/** 启动自动清理下载任务服务 */
private void runDownloadCleanTask(Integer interval) {
this.downloadTaskTimer.schedule(new TimerTask() {
@Override
public void run() {
Calendar calc = Calendar.getInstance();
//calc.add(Calendar.DATE, -1);
calc.add(Calendar.HOUR, -12); // 从一天改为 12 小时
Date expireDate = calc.getTime();
List<DownloadTask> expiredTasks = downloadTaskDao.getExpiredDownloadTaskList(expireDate);
if (expiredTasks.size() > 0) {
for (DownloadTask task : expiredTasks) {
deleteDownloadTask(task.getId());
} // 遍历删除
} // IF OVER
} // run Define Over
}, interval * 1000, interval * 1000);// 配置中的值为毫秒
}
@Override
public Integer createDownloadRecord(String taskId, String userId, String userName, String enterpriseId) {
DownloadRecord record = new DownloadRecord();
record.setId(String.valueOf((new Date()).getTime()));
record.setDownloadTime(new Date());
record.setTaskId(taskId);
record.setUserId(userId);
record.setUserName(userName);
record.setEnterpriseId(enterpriseId);
return this.downloadRecordDao.createDownloadRecord(record);
}
@Override
public Page<DownloadRecord> getDownloadRecordPage(String userId, String enterpriseId, Date startTime, Date endTime, Integer queryDataType, String fuzzyRange, String fuzzy, Integer pageNum, Integer pageSize) {
Page<DownloadRecord> result = new Page<>();
PageHelper.startPage(pageNum, pageSize); // 设置分页参数
List<DownloadRecord> query = downloadRecordDao.getDownloadRecordList(userId, enterpriseId, startTime, endTime, queryDataType, fuzzyRange, fuzzy);
// 生成数据输出信息
PageInfo<DownloadRecord> preResult = new PageInfo<>(query);
result.setList(preResult.getList()); // 设置数据集
result.setTotal(preResult.getTotal()); // 设置总数
result.setPageNum(preResult.getPageNum()); // 设置当前页数
return result;
}
/** 获取在审核申请等待状态中的任务
* @return
*/
public List<DownloadTask> getDownloadTaskOfWaiting(String queryDataSource) {
return downloadTaskDao.getDownloadTaskOfWaiting(queryDataSource);
}
/** 获取指定申请编号的风险模式记录
* @param applyId
* @return
*/
public RiskModeRecord getRiskModeRecordByApplyId(String applyId) {
if (StringUtils.isNotBlank(applyId)) {
return this.riskModeRecordDao.getRiskModeRecordByApplyId(applyId);
} else return null;
}
/** 创建风险模式记录
* @param riskModeRecord
*/
@Override
public void createRiskModeRecord(RiskModeRecord riskModeRecord) {
String applyId = riskModeRecord.getApplyId();
if (StringUtils.isNotBlank(applyId)) {
RiskModeRecord preRecord = this.getRiskModeRecordByApplyId(applyId);
if (preRecord == null) {
riskModeRecord.setCreateTime(new Date());
this.riskModeRecordDao.createRiskModeRecord(riskModeRecord);
} else log.debug("createRiskModeRecord", "指定编号为 " + applyId + " 的风险模式记录已存在,无法创建");
} else log.debug("createRiskModeRecord", "指定的风险模式编号不能为空");
}
/** 更新风险模式切换日志
* @param riskModeRecord
*/
public void updateRiskModeRecord(RiskModeRecord riskModeRecord) {
this.riskModeRecordDao.updateRiskModeRecord(riskModeRecord);
}
@Override
public Page<RiskModeRecord> getRiskModeRecordPage(String enterpriseId, Date startTime, Date endTime, Integer riskDuration, String fuzzyRange, String fuzzy, Integer pageNum, Integer pageSize) {
Page<RiskModeRecord> result = new Page<>();
PageHelper.startPage(pageNum, pageSize); // 设置分页参数
List<RiskModeRecord> query = riskModeRecordDao.getRiskModeRecordList(enterpriseId, startTime, endTime, riskDuration, fuzzyRange, fuzzy);
// 生成数据输出信息
PageInfo<RiskModeRecord> preResult = new PageInfo<>(query);
result.setList(preResult.getList()); // 设置数据集
result.setTotal(preResult.getTotal()); // 设置总数
result.setPageNum(preResult.getPageNum()); // 设置当前页数
return result;
}
}
package com.gic.cloud.data.hook.service.impl;
import com.alibaba.fastjson.JSON;
import com.gic.cloud.common.api.base.Page;
import com.gic.cloud.data.hook.api.dto.FlatQueryFavo;
import com.gic.cloud.data.hook.api.dto.FlatQueryField;
import com.gic.cloud.data.hook.api.dto.FlatQueryTable;
import com.gic.cloud.data.hook.api.dto.FlatQueryTableDetail;
import com.gic.cloud.data.hook.api.service.IFlatQueryTableService;
import com.gic.cloud.data.hook.service.dao.FlatQueryFavoDao;
import com.gic.cloud.data.hook.service.dao.FlatQueryFieldDao;
import com.gic.cloud.data.hook.service.dao.FlatQueryTableDao;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/** 自助取数表服务接口实现类
* @author Sam.Z
*/
@Service
public class FlatQueryTableServiceImpl implements IFlatQueryTableService {
private org.slf4j.Logger logger= LoggerFactory.getLogger(IFlatQueryTableService.class);
/** 自助查询表信息 Dao */
@Autowired
private FlatQueryTableDao flatQueryTableDao;
/** 自助查询收藏 Dao */
@Autowired
private FlatQueryFavoDao flatQueryFavoDao;
/** 自助查询字段 DAO */
@Autowired
private FlatQueryFieldDao flatQueryFieldDao;
@Override
public FlatQueryTable queryFlatQueryTableById(String userId, String id) {
FlatQueryTable table = this.flatQueryTableDao.getFlatQueryTableById(userId, id);
logger.debug("json 格式为 " + JSON.toJSONString(table));
return table;
}
@Override
public Page<FlatQueryTable> queryFlatQueryTablePage(String userId, String fuzzy, int pageNum, int pageSize) {
Page<FlatQueryTable> result = new Page<>();
PageHelper.startPage(pageNum, pageSize); // 设置分页参数
List<FlatQueryTable> query = flatQueryTableDao.getFlatQueryTable(userId, fuzzy);
// 生成数据输出信息
PageInfo<FlatQueryTable> preResult = new PageInfo<>(query);
result.setList(preResult.getList()); // 设置数据集
result.setTotal(preResult.getTotal()); // 设置总数
result.setPageNum(preResult.getPageNum()); // 设置当前页数
logger.debug("json 格式为 " + JSON.toJSONString(result));
return result;
}
@Override
public FlatQueryTableDetail queryFlatQueryTableDetailByTableId(String userId, String tableId) {
FlatQueryTableDetail result = new FlatQueryTableDetail();
FlatQueryTable table = this.flatQueryTableDao.getFlatQueryTableById(userId, tableId);
if (table != null) {
// 增加表格查询量
table.setClickCount(table.getClickCount() + 1);
this.flatQueryTableDao.updateFlatQueryTable(table);
// 返回结果集
result.setTableId(table.getTableId());
result.setTableName(table.getName());
List<FlatQueryField> fields = this.flatQueryFieldDao.getFlatQueryFieldByTableId(tableId);
result.setFieldDefines(fields);
} // IF OVER
return result;
}
/** 获取指定自助查询的收藏
* @param userId 所属用户编号
* @param tableId 指定的表
* @return
*/
public FlatQueryFavo queryFlatQueryFavo(String userId, String tableId) {
return this.flatQueryFavoDao.getFlatQueryFavo(userId, tableId);
}
/** 创建指定自助查询的收藏
* @param userId 所属用户编号
* @param tableId 指定的表
* @return
*/
public Integer createFlatQueryFavo(String userId, String tableId) {
return this.flatQueryFavoDao.addFlatQueryFavo(userId + tableId, userId, tableId);
}
/** 移除指定自助查询的收藏
* @param userId 所属用户编号
* @param tableId 指定的表
* @return
*/
public Integer removeFlatQueryFavo(String userId, String tableId) {
return this.flatQueryFavoDao.removeFlatQueryFavo(userId, tableId);
}
}
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
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