Commit 2ab0c8ab by 陶光胜

init

parents
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="ExternalSystem" externalSystem="Maven" />
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="jdk" jdkName="1.7" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-cloud-web-service-api:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-cloud-common-api:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.7.9" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.7.9.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.7.0" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-cloud-commons:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-orm:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.0" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.3" level="project" />
<orderEntry type="module-library">
<library name="Maven: com.alibaba:jconsole:1.8.0">
<CLASSES>
<root url="jar:///Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/jconsole.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="Maven: com.alibaba:tools:1.8.0">
<CLASSES>
<root url="jar:///Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/tools.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="Maven: com.alibaba:dubbo:2.8.5" level="project" />
<orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty:3.7.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.15.0-GA" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.2.1" level="project" />
<orderEntry type="library" name="Maven: commons-pool:commons-pool:1.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-framework:2.5.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-client:2.5.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.6" level="project" />
<orderEntry type="library" name="Maven: jline:jline:0.9.94" level="project" />
<orderEntry type="library" name="Maven: com.github.sgroschupf:zkclient:0.1" level="project" />
<orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.1" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
<orderEntry type="library" name="Maven: jstl:jstl:1.2" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:4.0.0" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.1.41" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.8.0" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: xom:xom:1.2.5" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis:1.3.03" level="project" />
<orderEntry type="library" name="Maven: xerces:xercesImpl:2.8.0" level="project" />
<orderEntry type="library" name="Maven: xalan:xalan:2.7.0" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.7.3" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-commons:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-dubbo-extension:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.influxdb:influxdb-java:2.14" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:retrofit:2.4.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:converter-moshi:2.4.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.moshi:moshi:1.5.0" level="project" />
<orderEntry type="library" name="Maven: org.msgpack:msgpack-core:0.8.16" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.11.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.10.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.14.0" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-apollo-sdk:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-mq-sdk:1.0.28" level="project" />
<orderEntry type="library" name="Maven: com.101tec:zkclient:0.10" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-redis-sdk:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.redisson:redisson:2.12.5" level="project" />
<orderEntry type="library" name="Maven: javax.cache:cache-api:1.0.0" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-stream:2.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:2.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.0" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.8.11" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-bean:3.7.1" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-core:3.7.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.7.9" level="project" />
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.15" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-all:4.1.17.Final" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-lgpl:1.9.13" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-1.2-api:2.7" level="project" />
<orderEntry type="library" name="Maven: org.hibernate:hibernate-core:4.0.0.Final" level="project" />
<orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:1.0.0.Final" level="project" />
<orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:0.5.4" level="project" />
<orderEntry type="library" name="Maven: org.jboss:jandex:1.0.3.Final" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:4.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.21" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.3.5" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:core:3.1.0" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:javase:3.1.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.10-FINAL" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.10-FINAL" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.10-FINAL" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.3.0" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: quartz:quartz:1.5.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.3.2" level="project" />
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.10" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:2.0.1" level="project" />
<orderEntry type="library" name="Maven: org.jxls:jxls-poi:1.0.9" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-jexl:2.1.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.12" level="project" />
<orderEntry type="library" name="Maven: org.jxls:jxls:2.3.0" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.3" level="project" />
<orderEntry type="library" name="Maven: com.gic:task-allocation-sdk:0.6" level="project" />
<orderEntry type="library" name="Maven: com.dexcoder:dexcoder-dal-spring:2.3.5" level="project" />
<orderEntry type="library" name="Maven: com.dexcoder:dexcoder-commons:2.3.5" level="project" />
<orderEntry type="library" name="Maven: com.dexcoder:dexcoder-dal:2.3.5" level="project" />
<orderEntry type="library" name="Maven: com.whalin:Memcached-Java-Client:3.0.2" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-base-api:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-web:2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j-impl:2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-jcl:2.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.10" level="project" />
<orderEntry type="library" name="Maven: ma.glasnost.orika:orika-core:1.5.4" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.paranamer:paranamer:2.8" level="project" />
<orderEntry type="library" name="Maven: com.carrotsearch:java-sizeof:0.0.5" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.janino:janino:3.0.8" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.janino:commons-compiler:3.0.8" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-platform-config:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.ctrip.framework.apollo:apollo-client:1.0.0" level="project" />
<orderEntry type="library" name="Maven: com.ctrip.framework.apollo:apollo-core:1.0.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
<orderEntry type="library" name="Maven: com.google.inject:guice:4.1.0" level="project" />
<orderEntry type="library" name="Maven: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
</component>
</module>
\ 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">
<!--<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"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/lib" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="jdk" jdkName="1.7" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/lib" />
</CLASSES>
<JAVADOC />
<SOURCES />
<jarDirectory url="file://$MODULE_DIR$/lib" recursive="false" />
</library>
</orderEntry>
<orderEntry type="library" name="Maven: com.opencsv:opencsv:3.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.3.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.10-FINAL" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.5" level="project" />
<orderEntry type="module" module-name="gic-cloud-data-hook-api" />
<orderEntry type="library" name="Maven: com.gic:gic-cloud-web-service-api:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-cloud-common-api:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.7.9" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.7.9.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.7.0" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-cloud-commons:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-orm:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.0" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:dubbo:2.8.5" level="project" />
<orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.15.0-GA" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
<orderEntry type="library" name="Maven: com.github.sgroschupf:zkclient:0.1" level="project" />
<orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.1" level="project" />
<orderEntry type="library" name="Maven: jstl:jstl:1.2" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:4.0.0" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:0.9.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.8.0" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: xom:xom:1.2.5" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis:1.3.03" level="project" />
<orderEntry type="library" name="Maven: xerces:xercesImpl:2.8.0" level="project" />
<orderEntry type="library" name="Maven: xalan:xalan:2.7.0" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.7.3" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-commons:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-dubbo-extension:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.influxdb:influxdb-java:2.14" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:retrofit:2.4.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:converter-moshi:2.4.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.moshi:moshi:1.5.0" level="project" />
<orderEntry type="library" name="Maven: org.msgpack:msgpack-core:0.8.16" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.11.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.10.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.14.0" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-apollo-sdk:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-mq-sdk:1.0.28" level="project" />
<orderEntry type="library" name="Maven: com.101tec:zkclient:0.10" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-redis-sdk:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.redisson:redisson:2.12.5" level="project" />
<orderEntry type="library" name="Maven: javax.cache:cache-api:1.0.0" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-stream:2.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:2.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.0" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.8.11" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-bean:3.7.1" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-core:3.7.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.7.9" level="project" />
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.15" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-all:4.1.17.Final" level="project" />
<orderEntry type="library" name="Maven: junit:junit:4.11" level="project" />
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-lgpl:1.9.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-1.2-api:2.7" level="project" />
<orderEntry type="library" name="Maven: org.hibernate:hibernate-core:4.0.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:1.0.0.Final" level="project" />
<orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:0.5.4" level="project" />
<orderEntry type="library" name="Maven: org.jboss:jandex:1.0.3.Final" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:4.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.3.5" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:core:3.1.0" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:javase:3.1.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.10-FINAL" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.10-FINAL" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.3.0" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: quartz:quartz:1.5.2" level="project" />
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.10" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:2.0.1" level="project" />
<orderEntry type="library" name="Maven: org.jxls:jxls-poi:1.0.9" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-jexl:2.1.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.12" level="project" />
<orderEntry type="library" name="Maven: org.jxls:jxls:2.3.0" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.3" level="project" />
<orderEntry type="library" name="Maven: com.gic:task-allocation-sdk:0.6" level="project" />
<orderEntry type="library" name="Maven: com.dexcoder:dexcoder-dal-spring:2.3.5" level="project" />
<orderEntry type="library" name="Maven: com.dexcoder:dexcoder-commons:2.3.5" level="project" />
<orderEntry type="library" name="Maven: com.dexcoder:dexcoder-dal:2.3.5" level="project" />
<orderEntry type="library" name="Maven: com.whalin:Memcached-Java-Client:3.0.2" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-base-api:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-web:2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j-impl:2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-jcl:2.2" level="project" />
<orderEntry type="library" name="Maven: ma.glasnost.orika:orika-core:1.5.4" level="project" />
<orderEntry type="library" name="Maven: com.carrotsearch:java-sizeof:0.0.5" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.janino:janino:3.0.8" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.janino:commons-compiler:3.0.8" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-platform-config:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.ctrip.framework.apollo:apollo-client:1.0.0" level="project" />
<orderEntry type="library" name="Maven: com.ctrip.framework.apollo:apollo-core:1.0.0" level="project" />
<orderEntry type="library" name="Maven: com.google.inject:guice:4.1.0" level="project" />
<orderEntry type="library" name="Maven: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
<orderEntry type="library" name="Maven: com.gic:data-shield-sdk:1.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.apache.thrift:libthrift:0.9.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.1.41" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.0.28" level="project" />
<orderEntry type="module-library">
<library name="Maven: com.alibaba:jconsole:1.8.0">
<CLASSES>
<root url="jar:///Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/jconsole.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="Maven: com.alibaba:tools:1.8.0">
<CLASSES>
<root url="jar:///Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/tools.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.40" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.hive:hive-jdbc:1.2.1.spark" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.hive:hive-common:1.2.1.spark" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.5" level="project" />
<orderEntry type="library" name="Maven: log4j:apache-log4j-extras:1.2.17" level="project" />
<orderEntry type="library" name="Maven: org.apache.ant:ant:1.9.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.ant:ant-launcher:1.9.1" level="project" />
<orderEntry type="library" name="Maven: org.json:json:20090211" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.hive:hive-service:1.2.1.spark" level="project" />
<orderEntry type="library" name="Maven: net.sf.jpam:jpam:1.1" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty.aggregate:jetty-all:7.6.0.v20120127" level="project" />
<orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1" level="project" />
<orderEntry type="library" name="Maven: javax.mail:mail:1.4.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-jaspic_1.0_spec:1.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-annotation_1.0_spec:1.1.1" level="project" />
<orderEntry type="library" name="Maven: asm:asm-commons:3.1" level="project" />
<orderEntry type="library" name="Maven: asm:asm-tree:3.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.thrift:libfb303:0.9.2" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.hive:hive-serde:1.2.1.spark" level="project" />
<orderEntry type="library" name="Maven: net.sf.opencsv:opencsv:2.3" level="project" />
<orderEntry type="library" name="Maven: com.twitter:parquet-hadoop-bundle:1.6.0" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.hive:hive-metastore:1.2.1.spark" level="project" />
<orderEntry type="library" name="Maven: com.jolbox:bonecp:0.8.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.derby:derby:10.10.2.0" level="project" />
<orderEntry type="library" name="Maven: org.datanucleus:datanucleus-api-jdo:3.2.6" level="project" />
<orderEntry type="library" name="Maven: org.datanucleus:datanucleus-core:3.2.10" level="project" />
<orderEntry type="library" name="Maven: org.datanucleus:datanucleus-rdbms:3.2.9" level="project" />
<orderEntry type="library" name="Maven: commons-pool:commons-pool:1.5.4" level="project" />
<orderEntry type="library" name="Maven: commons-dbcp:commons-dbcp:1.4" level="project" />
<orderEntry type="library" name="Maven: javax.jdo:jdo-api:3.0.1" level="project" />
<orderEntry type="library" name="Maven: javax.transaction:jta:1.1" level="project" />
<orderEntry type="library" name="Maven: org.antlr:antlr-runtime:3.4" level="project" />
<orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
<orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.hive:hive-shims:1.2.1.spark" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.hive.shims:hive-shims-common:1.2.1.spark" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.spark-project.hive.shims:hive-shims-0.20S:1.2.1.spark" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.spark-project.hive.shims:hive-shims-0.23:1.2.1.spark" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.hadoop:hadoop-yarn-server-resourcemanager:2.6.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.google.inject.extensions:guice-servlet:3.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey.contribs:jersey-guice:1.9" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.hadoop:hadoop-yarn-common:2.6.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.hadoop:hadoop-yarn-api:2.6.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-client:1.9" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.hadoop:hadoop-yarn-server-common:2.6.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.fusesource.leveldbjni:leveldbjni-all:1.8" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:2.6.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.hadoop:hadoop-yarn-server-web-proxy:2.6.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.spark-project.hive.shims:hive-shims-scheduler:1.2.1.spark" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.6" level="project" />
<orderEntry type="library" name="Maven: jline:jline:0.9.94" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty:3.7.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-framework:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-common:2.7.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-annotations:2.7.3" level="project" />
<orderEntry type="module-library">
<library name="Maven: jdk.tools:jdk.tools:1.8">
<CLASSES>
<root url="jar:///Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/tools.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="Maven: commons-cli:commons-cli:1.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.1.1" level="project" />
<orderEntry type="library" name="Maven: xmlenc:xmlenc:0.52" level="project" />
<orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
<orderEntry type="library" name="Maven: commons-net:commons-net:3.1" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:servlet-api:2.5" level="project" />
<orderEntry type="library" name="Maven: org.mortbay.jetty:jetty:6.1.26" level="project" />
<orderEntry type="library" name="Maven: org.mortbay.jetty:jetty-util:6.1.26" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: javax.servlet.jsp:jsp-api:2.1" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-core:1.9" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-json:1.9" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.3-1" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.2.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-jaxrs:1.8.3" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-xc:1.8.3" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-server:1.9" level="project" />
<orderEntry type="library" name="Maven: asm:asm:3.1" level="project" />
<orderEntry type="library" name="Maven: net.java.dev.jets3t:jets3t:0.9.0" level="project" />
<orderEntry type="library" name="Maven: com.jamesmurty.utils:java-xmlbuilder:0.4" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.6" level="project" />
<orderEntry type="library" name="Maven: commons-digester:commons-digester:1.8" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils-core:1.8.0" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.avro:avro:1.7.4" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.paranamer:paranamer:2.3" level="project" />
<orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.0.4.1" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.5.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-auth:2.7.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.directory.server:apacheds-kerberos-codec:2.0.0-M15" level="project" />
<orderEntry type="library" name="Maven: org.apache.directory.server:apacheds-i18n:2.0.0-M15" level="project" />
<orderEntry type="library" name="Maven: org.apache.directory.api:api-asn1-api:1.0.0-M20" level="project" />
<orderEntry type="library" name="Maven: org.apache.directory.api:api-util:1.0.0-M20" level="project" />
<orderEntry type="library" name="Maven: com.jcraft:jsch:0.1.42" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-client:2.7.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-recipes:2.7.1" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.htrace:htrace-core:3.1.0-incubating" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.tukaani:xz:1.0" level="project" />
</component>
</module>
\ 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 cn.medubi.client.utils.LogPak;
import com.gic.cloud.common.api.base.Page;
import com.gic.cloud.data.hook.api.dto.*;
import com.gic.cloud.data.hook.api.entity.*;
import com.gic.cloud.data.hook.api.service.IFlatQueryResultService;
import com.gic.cloud.data.hook.service.DecryptUtils;
import com.gic.cloud.data.hook.service.HiveHelper;
import com.gic.cloud.data.hook.service.HttpUtils;
import com.gic.cloud.data.hook.service.ServiceUtils;
import com.gic.cloud.data.hook.service.dao.FlatQueryTableDao;
import com.gic.cloud.data.hook.service.entity.CsvDataFilterMode;
import com.gic.cloud.data.hook.service.entity.CsvResultSetHelper;
import com.google.common.collect.Lists;
import com.opencsv.CSVWriter;
import com.opencsv.ResultSetHelper;
import io.netty.handler.codec.http.HttpUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.sql.DataSource;
import java.io.*;
import java.math.BigDecimal;
import java.nio.charset.Charset;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/** 自助指标查询服务实现
* @author Sam
*/
public class FlatQueryResultServiceImpl implements IFlatQueryResultService {
/** 日志类 */
private static LogPak log = new LogPak(FlatQueryResultServiceImpl.class);
/** csv / xls 下载目录 */
public static final String SAVE_FOLDER = "/usr/local/data-hook-file";
@Autowired
FlatQueryTableDao flatQueryTableDao;
/** 自助指标查询关联的下载条件列表 */
protected List<FlatQueryTaskCondition> taskConditions = Lists.newArrayList();
private FlatQueryResultServiceImpl() {
log.debug("construct", "准备初始化 FlatQuery 查询服务");
runDownloadTask(3);
runApplyTask(5); // 每5秒钟进行任务状态检测
}
/** 生成自助指标查询最终 SQL
* @param queryOrDownload 查询或下载用途
* @param tableId
* @param enterpriseIds
* @param queryConditions
* @param orderField
* @param orderDir
* @param execDistinct
* @param limitRange
* @return
*/
public String buildFlatQuerySQL(Boolean queryOrDownload, String tableId, List<String> enterpriseIds, List<FlatQueryCondition> queryConditions, String orderField, String orderDir,
Boolean execDistinct, Integer limitRange) {
log.debug("buildFlatQuerySQL", "自助指标查询来自 " + enterpriseIds.get(0));
// 查询处理开始
String queryDistinct = execDistinct ? " DISTINCT " : "";
//String queryOrder = StringUtils.isNotBlank(orderField) ? " ORDER BY \"" + orderField + "\" " : "";
String queryOrder = StringUtils.isNotBlank(orderField) ? " ORDER BY " + orderField + " " : "";
String queryDir = StringUtils.isNotBlank(orderDir) ? " " + orderDir + " " : "";
String queryColumns = "";
String queryFilters = "";
if (enterpriseIds.size() == 1) { // 如果是单个企业
queryFilters = " WHERE enterprise_id = '" + enterpriseIds.get(0) + "' ";
} else { // 如果是多个企业
for (int i=0; i<enterpriseIds.size(); i++) {
queryFilters += queryFilters.equals("") ? " '" + enterpriseIds.get(i) + "' " : ", '" + enterpriseIds.get(i) + "' ";
} // FOR OVER
queryFilters = " WHERE enterprise_id IN ( " + queryFilters + " ) ";
} // IF ELSE OVER
for (FlatQueryCondition queryCondition : queryConditions) {
//queryColumns += queryColumns.equals("") ? " \"" + queryCondition.getFieldName() + "\" " : ", \"" + queryCondition.getFieldName() + "\" ";
if (queryOrDownload) { // 如果是查询
queryColumns += queryColumns.equals("") ? " " + queryCondition.getFieldName() + " " : ", " + queryCondition.getFieldName() + " ";
} else { // 如果是下载
queryColumns += queryColumns.equals("")
? " " + queryCondition.getFieldName() + " AS `" + queryCondition.getFieldMark().trim() + "` "
: ", " + queryCondition.getFieldName() + " AS `" + queryCondition.getFieldMark().trim() + "` ";
} // IF ELSE OVER
// 如果存在主过滤器的值,视为过滤器生效
if (StringUtils.isNotBlank(queryCondition.getMainFilter())) {
String curFilterText = "";
// 文本型字段处理
// 文本型字段暂时只使用 mainFilter,以 | 分割关键字绑定
if (queryCondition.getFieldType().equals(FlatQueryFieldType.TEXT)) {
log.debug("buildFlatQuerySQL", "文本型字段:" + queryCondition.getFieldName());
String[] equalValues = queryCondition.getMainFilter().split("\\|");
if (equalValues.length > 0) { // 如果有过滤值
//curFilterText = "\"" + queryCondition.getFieldName() + "\" in (";
curFilterText = " " + queryCondition.getFieldName() + " in (";
for (int i = 0; i < equalValues.length; i++) {
curFilterText += i == 0 ? "'" + equalValues[i] + "'" : ",'" + equalValues[i] + "'";
}
curFilterText += ") ";
} // IF OVER
}
// 数值型字段处理
else if (queryCondition.getFieldType().equals(FlatQueryFieldType.NUMBER)) {
log.debug("buildFlatQuerySQL", "数值型字段:" + queryCondition.getFieldName());
curFilterText += " (";
//curFilterText += "\"" + queryCondition.getFieldName() + "\"" + queryCondition.getMainFilter() + " ";
curFilterText += " " + queryCondition.getFieldName() + " " + queryCondition.getMainFilter() + " ";
if (!queryCondition.getFilterTunnel().equals(FilterTunnelType.NONE)) {
//curFilterText += " " + queryCondition.getFilterTunnel() + " \"" + queryCondition.getFieldName() + "\"" + queryCondition.getMainFilter() + " ";
curFilterText += " " + queryCondition.getFilterTunnel() + " " + queryCondition.getFieldName() + " " + queryCondition.getExtendFilter() + " ";
} // IF OVER
curFilterText += ") ";
}
// 时间型字段处理
// 时间型字段无需处理前后日期差别
else if (queryCondition.getFieldType().equals(FlatQueryFieldType.DATE)) {
log.debug("buildFlatQuerySQL", "日期型字段:" + queryCondition.getFieldName());
//String startDate = queryCondition.getMainFilter() + " 00:00:00";
//String overDate = queryCondition.getExtendFilter().equals("") ? queryCondition.getMainFilter() + " 59:59:59" : queryCondition.getExtendFilter() + " 59:59:59";
String startDate = queryCondition.getMainFilter() + "";
String overDate = queryCondition.getExtendFilter() + "";
//curFilterText = "\"" + queryCondition.getFieldName() + "\" >= '" + startDate + "' AND \"" + queryCondition.getFieldName() + "\" <= '" + overDate + "'";
curFilterText = " " + queryCondition.getFieldName() + " >= '" + startDate + "' AND " + queryCondition.getFieldName() + " <= '" + overDate + "'";
}
// 合并到主查询过滤中
queryFilters += queryFilters.equals("") ? " " + curFilterText + " " : " AND " + curFilterText + " ";
} // IF OVER
} // FOR OVER
// 最终处理 queryFilters、LIMIT、DISTINCT
if (!StringUtils.isNotBlank(queryFilters)) queryFilters = " AND " + queryFilters; // if (!queryFilters.equals("")) queryFilters = " WHERE " + queryFilters;
String queryLimit = limitRange > 0 ? " limit " + limitRange : "";
// 最终处理 SQL
String queryFull = "SELECT " + queryDistinct + queryColumns + " FROM " + tableId + " " + queryFilters + " " + queryOrder + " " + queryDir + queryLimit;
log.debug("buildFlatQuerySQL","生成自助指标查询SQL:" + queryFull);
return queryFull;
}
@Override
public FlatQueryResult getFlatQueryResult(String tableId, List<String> enterpriseIds, List<FlatQueryCondition> queryConditions, String orderField, String orderDir,
Boolean execDistinct, Integer queryDataType, Integer limitRange) {
log.debug("getFlatQueryResult", "自助指标查询来自 " + enterpriseIds.get(0));
// 定义返回值
FlatQueryResult result = new FlatQueryResult();
// 定义查询语句
String queryFull = this.buildFlatQuerySQL(
true, // 查询用途
tableId,
enterpriseIds,
queryConditions,
orderField,
orderDir,
execDistinct,
limitRange);
// 进行查询
Connection conn = HiveHelper.getHiveConnection();
if (conn != null) {
Date startTime = new Date();
try {
Statement stat = conn.createStatement();
stat.execute("REFRESH TABLE " + tableId); // 强制刷新表信息
ResultSet rs = stat.executeQuery(queryFull);
ResultSetMetaData metaData = rs.getMetaData();
List<String> cFilters = Lists.newArrayList();
for (FlatQueryCondition cond : queryConditions) {
if (cond.getEnableEncrypt()) {
cFilters.add(cond.getFieldMark());
log.debug("getFlatQueryResult", "新增查询加密字段条件:" + cond.getFieldMark());
} // IF OVER
} // FOR OVER
while (rs.next()) {
for (int i = 0; i < queryConditions.size(); i++) {
FlatQueryCondition condition = queryConditions.get(i);
String fieldName = condition.getFieldName();
// if (cFilters.contains(fieldName)) {
// if (queryDataType.equals(QueryDataType.FULL)) {
// String preResult = rs.getString(fieldName);
// String expResult = preResult != null ? DecryptUtils.getInstance().decrypt(preResult) : "";
// result.add(fieldName, expResult);
// } else result.add(fieldName, "******");
// } else {
int fieldColumnIndex = rs.findColumn(fieldName);
int fieldType = rs.getMetaData().getColumnType(fieldColumnIndex);
Object fieldResult = null;
switch (fieldType) {
case Types.DECIMAL:
Object tmpDecimal = rs.getObject(fieldColumnIndex);
fieldResult = tmpDecimal != null ? String.valueOf(rs.getBigDecimal(fieldColumnIndex)) : null;
break;
case Types.FLOAT:
case Types.DOUBLE:
Object tmpDouble = rs.getObject(fieldColumnIndex);
fieldResult = tmpDouble != null ? String.valueOf(rs.getDouble(fieldColumnIndex)) : null;
break;
case Types.INTEGER:
Object tmpInt = rs.getObject(fieldColumnIndex);
fieldResult = tmpInt != null ? String.valueOf(rs.getInt(fieldColumnIndex)) : null;
break;
case Types.DATE:
Date tmpDate = rs.getDate(fieldColumnIndex);
fieldResult = tmpDate != null ? tmpDate.getTime() : null;
break;
default:
// 文本型字符串判断是否需要解密
// if (queryDataType == QueryDataType.FULL && condition.getEnableEncrypt()) { // 如果需要进行解密
// String preResult = rs.getString(fieldColumnIndex);
// //fieldResult = DecryptUtils.getInstance().decrypt(preResult);
// if (StringUtils.isNotBlank(preResult)) {
// fieldResult = DecryptUtils.decrypt(preResult);
// } else fieldResult = "";
// } else fieldResult = rs.getObject(fieldColumnIndex);
//fieldResult = rs.getObject(fieldColumnIndex);
if (condition.getEnableEncrypt()) { // 如果需要进行解密
String preResult = rs.getString(fieldColumnIndex);
//fieldResult = DecryptUtils.getInstance().decrypt(preResult);
if (queryDataType == QueryDataType.FULL) {
if (StringUtils.isNotBlank(preResult)) {
fieldResult = DecryptUtils.decrypt(preResult);
} else fieldResult = "";
} else fieldResult = "******";
} else fieldResult = rs.getObject(fieldColumnIndex);
} // SWITCH OVER
result.add(fieldName, fieldResult);
// } // IF ELSE OVER
} // FOR OVER
} // WHILE OVER
} catch (Exception ex) {
ex.printStackTrace();
} finally {
Date endTime = new Date();
log.debug("getFlatQueryResult", "自助指标执行时间:" + ((endTime.getTime() - startTime.getTime()) + " 毫秒"));
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} // IF OVER
// 返回结果
return result;
}
/** 获取自助指标字段过滤条件数据
* @param tableId
* @param fieldName
* @return
*/
public List<Object> getFlatQueryFilterData(String tableId, List<String> enterpriseIds, String fieldName) {
List<Object> result = Lists.newArrayList();
Connection conn = HiveHelper.getHiveConnection();
if (conn != null) {
try {
Statement stat = conn.createStatement();
stat.execute("REFRESH TABLE " + tableId); // 强制刷新表结构
// ff8080816133365501614f100ddf6ed7 江南布衣
//String sql = "SELECT DISTINCT " + fieldName + " FROM (SELECT " + fieldName + " FROM " + tableId + " WHERE enterprise_id = 'ff8080816133365501614f100ddf6ed7') ";
String sql = "SELECT DISTINCT " + fieldName + " FROM (SELECT " + fieldName + " FROM " + tableId + " WHERE enterprise_id = '" + enterpriseIds.get(0) + "') ";
//String sql = "SELECT DISTINCT " + fieldName + " FROM " + tableId + " LIMIT 1000 ";
// String sql = "with my_table as (" +
// "select " + fieldName + " from " + tableId + " limit 1000" +
// ")" +
// " select distinct " + fieldName + " from my_table";
log.debug("自助指标字段过滤请求:", sql);
ResultSet rs = stat.executeQuery(sql);
while (rs.next()) {
result.add(rs.getObject(fieldName));
} // WHILE OVER
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} // IF OVER
return result;
}
/** 评估自助指标查询下载任务数据量
* @param tableId
* @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) {
Integer result = -1;
// 生成正式查询
String preQuery = this.buildFlatQuerySQL(
true, // 查询用途
tableId,
enterpriseIds,
queryConditions,
orderField,
orderDir,
execDistinct,
0);
String finQuery = "SELECT COUNT(1) FROM (" + preQuery + ") AS tmpTable";
Connection conn = HiveHelper.getHiveConnection();
if (conn != null) {
try {
Statement stat = conn.createStatement();
stat.execute("REFRESH TABLE " + tableId); // 强制刷新表结构
ResultSet rs = stat.executeQuery(finQuery);
if (rs.next()) {
result = rs.getInt(1);
}
} catch (Exception ex) {
ex.printStackTrace();
// String exWord = ex.getMessage();
// // Invalid SessionHandle
// if (exWord.contains("HiveSQLException: Invalid SessionHandle")) {
// DataSource source = HiveHelper.getDataSource();
// source = new
// }
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} // IF OVER
return result;
}
/** 创建自助指标查询的下载任务
* @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) {
log.debug("buildFlatQueryDownloadTask", "自助指标下载请求来自 " + enterpriseIds.get(0));
// 增加下载量
FlatQueryTable table = this.flatQueryTableDao.getFlatQueryTableById(userId, tableId);
if (table != null) {
table.setDownloadCount(table.getDownloadCount() + 1);
this.flatQueryTableDao.updateFlatQueryTable(table);
}
// 注册下载任务
DownloadTask curTask = new DownloadTask();
curTask.setId(String.valueOf((new Date()).getTime()));
curTask.setQueryDataSource(QueryDataSource.FLAT_QUERY); // 设置为平面查询
curTask.setUserId(userId);
curTask.setName(name);
curTask.setModuleName(moduleName);
curTask.setAmount(amount);
curTask.setFormat(format);
curTask.setStartTime(new Date());
curTask.setStatus(DownloadTaskStatus.WAITING);
// 新增下载任务属性
curTask.setUseCompress(useCompress);
curTask.setApplyId(applyId); // 设置申请编号
curTask.setQueryDataType(queryDataType);
if (queryDataType == QueryDataType.SAFE) { // 如果是安全模式
curTask.setApplyPermitted(Global.YES); // 安全模式直接允许下载
curTask.setApplyStatus(DownloadApplyStatus.PERMITTED_BY_SELF);
} else { // 如果是完整模式
curTask.setApplyPermitted(Global.NO); // 完整模式默认不允许
curTask.setApplyStatus(DownloadApplyStatus.WAITING);
} // IF ELSE OVER
curTask.setRealSql(""); // 设置查询为空
curTask.setEnterpriseId(enterpriseIds.get(0));
Integer preReportCount = DownloadTaskServiceImpl.getInstance().getDownloadTaskCountByEnterpriseId(curTask.getEnterpriseId());
curTask.setReportId(ServiceUtils.buildReportId(curTask.getQueryDataType(), preReportCount));
// 保存下载任务
DownloadTaskServiceImpl.getInstance().createDownloadTask(curTask);
// 生成条件
FlatQueryTaskCondition condition = new FlatQueryTaskCondition();
condition.setTaskId(curTask.getId());
condition.setTableId(tableId);
condition.setQueryDataType(queryDataType); // 新增申请的数据类型
condition.setEnterpriseIds(enterpriseIds);
condition.setConditions(queryConditions);
condition.setOrderField(orderField);
condition.setOrderDir(orderDir);
condition.setExecDistinct(execDistinct);
// 设置条件可否执行
if (curTask.getApplyPermitted().equals(Global.YES)) {
condition.setBuildPermitted(Global.YES);
} else condition.setBuildPermitted(Global.NO);
// 保存至列表
this.taskConditions.add(condition);
return curTask;
}
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");
/** 下载任务执行计时器 */
private Timer downloadTaskTimer = new Timer();
/** 启动自助指标查询计划任务 */
private void runDownloadTask(Integer interval) {
this.downloadTaskTimer.schedule(new TimerTask() {
@Override
public void run() {
if (taskConditions != null && taskConditions.size() > 0) {
FlatQueryTaskCondition condition = null;
//FlatQueryTaskCondition condition = taskConditions.remove(0); // 移除并获取第一个任务条件
for (int i=0; i<taskConditions.size(); i++ ) {
if (taskConditions.get(i).getBuildPermitted().equals(Global.YES)) {
condition = taskConditions.remove(i); // 移除并获取第一个任务条件
break;
} // IF OVER
} // FOR OVER
if (condition != null) {
// 更新任务状态
DownloadTask task = DownloadTaskServiceImpl.getInstance().getDownloadTaskById(condition.getTaskId());
task.setStatus(DownloadTaskStatus.BUILDING);
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
log.debug("runDownloadTask.run", "自助指标下载任务执行:" + task.getId());
String fullQuery = buildFlatQuerySQL(
false, // 下载用途
condition.getTableId(),
condition.getEnterpriseIds(),
condition.getConditions(),
condition.getOrderField(),
condition.getOrderDir(),
condition.getExecDistinct(), 0);
Connection conn = HiveHelper.getHiveConnection();
if (conn != null) {
try {
Statement stat = conn.createStatement();
stat.execute("REFRESH TABLE " + condition.getTableId()); // 强制刷新表结构
ResultSet rs = stat.executeQuery(fullQuery);
// 生成指定格式下载元文件
String originalFilePath = "";
if (task.getFormat().equals(DownloadFileFormat.CSV)) { // 如果指定为 CSV 格式
log.debug("runDownloadTask.run", "准备生成自助指标下载文件 " + condition.getTaskId() + ".csv");
originalFilePath = SAVE_FOLDER + "/" + condition.getTaskId() + ".csv";
File tmp = new File(originalFilePath);
if (tmp.exists()) { // 删除可能存在的文件
tmp.delete();
}
//CSVWriter csvWriter = new CSVWriter(new FileWriter(csvPath), '\t');
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(originalFilePath), Charset.forName("GBK"));
ResultSetHelper helper = new CsvResultSetHelper(task.getQueryDataType() == QueryDataType.FULL ? CsvDataFilterMode.DECRYPT : CsvDataFilterMode.NONE, condition.getDecryptFilters());
CSVWriter writer = new CSVWriter(out, ',');
writer.setResultService(helper);
writer.writeAll(rs, true);
writer.close();
out.close();//记得关闭资源
log.debug("runDownloadTask.run", "已生成自助指标下载文件 " + condition.getTaskId() + ".csv");
} else { // 如果指定为 XLS 格式
log.debug("runDownloadTask.run", "准备生成自助指标下载文件 " + condition.getTaskId() + ".xlsx");
originalFilePath = SAVE_FOLDER + "/" + condition.getTaskId() + ".xlsx";
SXSSFWorkbook wb = new SXSSFWorkbook(100); // 内存中保留 100 行
Sheet sheet = wb.createSheet();
Row row = sheet.createRow(0);
Cell cell;
for (int j = 0; j < rs.getMetaData().getColumnCount(); ++j) { // 遍历创建表头
String colName = rs.getMetaData().getColumnLabel(j + 1);
cell = row.createCell(j);
cell.setCellValue(colName);
}
// 遍历输出行
int rowCount = 0;
while (rs.next()) {
rowCount++;
row = sheet.createRow(rowCount);
for (int j = 0; j < rs.getMetaData().getColumnCount(); ++j) {
//String c = rs.getString(j + 1);
//row.createCell(j).setCellValue(c);
String cName = rs.getMetaData().getColumnName(j+1);
List<String> cFilters = condition.getDecryptFilters();
if (task.getQueryDataType() == QueryDataType.FULL && cFilters.contains(cName)) {
String tmpResult = rs.getString(j + 1);
if (StringUtils.isNotBlank(tmpResult)) tmpResult = DecryptUtils.getInstance().decrypt(tmpResult);
row.createCell(j).setCellValue(tmpResult);
} else {
int cType = rs.getMetaData().getColumnType(j + 1);
switch (cType) {
case Types.TIMESTAMP:
row.createCell(j).setCellValue(rs.getTimestamp(j + 1) != null ? datetimeFormatter.format(rs.getTimestamp(j + 1)) : "");
break;
case Types.DATE:
row.createCell(j).setCellValue(rs.getDate(j + 1) != null ? dateFormatter.format(rs.getDate(j + 1)) : "");
break;
case Types.TIME:
row.createCell(j).setCellValue(rs.getTimestamp(j + 1) != null ? timeFormatter.format(rs.getTimestamp(j + 1)) : "");
break;
default:
row.createCell(j).setCellValue(rs.getString(j + 1));
break;
}
} // IF ELSE OVER
} // FOR OVER
} // WHILE OVER
FileOutputStream fileOut = new FileOutputStream(originalFilePath);
wb.write(fileOut);
//fileOut.flush(); // SXSSFWorkbook 使用 auto-flush 模式
fileOut.close();
//wb.close();
wb.dispose(); // SXSSFWorkbook 没有 close 方法
log.debug("runDownloadTask.run", "已生成自助指标下载文件 " + condition.getTaskId() + ".xlsx");
} // IF ELSE OVER
// 如果指定压缩,则使用之
//if (task.getFormat().equals("zip")) {
if (task.getUseCompress().equals(Global.YES)) {
log.debug("runDownloadTask.run", "准备生成自助指标压缩文件 " + condition.getTaskId() + ".zip");
String zipFilePath = SAVE_FOLDER + "/" + condition.getTaskId() + ".zip";
File zipFile = new File(zipFilePath);
ZipOutputStream zos = null;
byte[] buf = new byte[1024];
int length = 0;
try {
OutputStream os = new FileOutputStream(zipFilePath);
BufferedOutputStream bos = new BufferedOutputStream(os);
zos = new ZipOutputStream(bos);
zos.setLevel(6); // 压缩率选择 0-9
InputStream is = new FileInputStream(originalFilePath);
BufferedInputStream bis = new BufferedInputStream(is);
zos.putNextEntry(new ZipEntry(originalFilePath.substring(originalFilePath.lastIndexOf("/") + 1)));
while ((length = bis.read(buf)) > 0) {
zos.write(buf, 0, length);
}
bis.close();
is.close();
//bos.close();
//os.close();
log.debug("runDownloadTask.run", "已生成自助指标压缩文件 " + condition.getTaskId() + ".zip");
} catch (Exception ex2) {
throw ex2;
} finally {
zos.closeEntry();
zos.close();
}
}
task.setStatus(DownloadTaskStatus.COMPLISHED);
task.setOverTime(new Date());
String taskFileExt = task.getUseCompress().equals(Global.YES) ? ".zip" : task.getFormat().equals(DownloadFileFormat.CSV) ? ".csv" : ".xlsx";
task.setFilePath(task.getId() + taskFileExt);
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
} catch (Exception ex) {
ex.printStackTrace();
// 标记任务异常
task.setStatus(DownloadTaskStatus.ERROR);
task.setOverTime(new Date());
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} // IF OVER
} // IF OVER
} // 没有任务则忽略
} // run Define Over
}, interval * 1000, interval * 1000);// 配置中的值为毫秒
}
/** 下载申请检查计时器 */
private Timer applyTimer = new Timer();
/** 运行下载申请任务
* @param interval
*/
private void runApplyTask(Integer interval) {
this.applyTimer.schedule(new TimerTask() {
@Override
public void run() {
List<DownloadTask> waitingTasks = DownloadTaskServiceImpl.getInstance().getDownloadTaskOfWaiting(QueryDataSource.FLAT_QUERY);
for (DownloadTask task : waitingTasks) {
if (!task.getApplyId().equals("")) {
String applyStatusText = HttpUtils.doGet("http://www.gicdev.com/api-admin/apply-info?type=2&applyId=" + task.getApplyId());
//String applyStatusText = HttpUtils.doGet("http://hope.demogic.com/api-admin/apply-info?type=2&applyId=" + task.getApplyId());
log.debug("runApplyTask.run", "查询自助指标查询 " + task.getId() + " 审核状态码" + applyStatusText);
boolean conditionRemove = false; // 从上传条件移除
boolean conditionUpdate = false; // 更新条件
if (applyStatusText.indexOf("\"checkStatus\":0") > 0) { // 如果自审核通过
task.setApplyStatus(DownloadApplyStatus.PERMITTED_BY_SELF);
task.setApplyPermitted(Global.YES);
conditionUpdate = true;
} else if (applyStatusText.indexOf("\"checkStatus\":2") > 0) { // 如果第三方审核通过
task.setApplyStatus(DownloadApplyStatus.PERMITTED_BY_OTHER);
task.setApplyPermitted(Global.YES);
conditionUpdate = true;
} else if (applyStatusText.indexOf("\"checkStatus\":1") > 0) { // 如果审核超时
task.setApplyStatus(DownloadApplyStatus.TIMEOUT);
task.setApplyPermitted(Global.NO);
conditionRemove = true;
}
if (conditionRemove || conditionUpdate) {
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
log.debug("runApplyTask.run", "自助指标查询 " + task.getId() + " 审核状态已更新:" + task.getApplyStatus() + " / " + task.getApplyPermitted());
}
if (conditionUpdate) { // 如果可以更新状态
if (taskConditions != null && taskConditions.size() > 0) {
for (FlatQueryTaskCondition condition : taskConditions) {
if (condition.getTaskId().equals(task.getId())) {
condition.setBuildPermitted(Global.YES);
log.debug("runApplyTask.run", "自助指标查询 " + task.getId() + " 已允许生成");
break;
} // IF OVER
} // FOR OVER
} // IF OVER
} else if (conditionRemove) { // 如果可以移除
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
if (taskConditions != null && taskConditions.size() > 0) {
for (FlatQueryTaskCondition condition : taskConditions) {
if (condition.getTaskId().equals(task.getId())) {
taskConditions.remove(condition);
log.debug("runApplyTask.run", "自助指标查询 " + task.getId() + " 已从待生成队列移除");
break;
} // IF OVER
} // FOR OVER
} // IF OVER
} // IF ELSE OVER
}
} // FOR OVER
} // RUN OVER
}, interval * 1000, interval * 1000);// 配置中的值为毫秒
}
}
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);
}
}
package com.gic.cloud.data.hook.service.impl;
import cn.medubi.client.utils.LogPak;
import com.gic.cloud.data.hook.api.dto.*;
import com.gic.cloud.data.hook.api.dto.DataDesensiType;
import com.gic.cloud.data.hook.api.entity.*;
import com.gic.cloud.data.hook.api.service.IFreeQueryService;
import com.gic.cloud.data.hook.service.HiveHelper;
import com.gic.cloud.data.hook.service.HttpUtils;
import com.gic.cloud.data.hook.service.MysqlHelper;
import com.gic.cloud.data.hook.service.ServiceUtils;
import com.gic.cloud.data.hook.service.dao.FreeQueryRecordDao;
import com.gic.cloud.data.hook.service.dao.FreeQuerySourceDao;
import com.gic.cloud.data.hook.service.entity.CsvDataFilterMode;
import com.gic.cloud.data.hook.service.entity.CsvResultSetHelper;
import com.google.common.collect.Lists;
import com.opencsv.CSVWriter;
import com.opencsv.ResultSetHelper;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
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.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/** 自定义查询服务接口实现
* @author Sam
*/
public class FreeQueryServiceImpl implements IFreeQueryService {
/** 日志类 */
private static LogPak log = new LogPak(FreeQueryServiceImpl.class);
/** csv / xls 下载目录 */
public static final String SAVE_FOLDER = "/usr/local/data-hook-file";
/** 脱敏字段 */
public static final List<String> FILTERS_PHONE_ONLY = Arrays.asList("mobile", "phone", "enterprise_name");
/** 脱敏字段 */
public static final List<String> FILTERS_PHONE_AND_CARD = Arrays.asList("card_num", "mobile", "phone", "enterprise_name");
/** 获取指定脱敏类型的过滤字段集合
* @param desensiType
* @return
*/
public static List<String> getFieldsFilters(Integer desensiType) {
if (desensiType == DataDesensiType.PHONE_ONLY) {
return FILTERS_PHONE_ONLY;
} else return FILTERS_PHONE_AND_CARD;
}
/** 是否为脱敏字段 */
public static boolean isFilterFields(Integer desensiType, String fieldName) {
List<String> fieldsFilter = getFieldsFilters(desensiType);
for (String filter : fieldsFilter) {
if (fieldName.contains(filter)) return true;
} // FOR OVER
return false;
}
/** 自定义查询关联的下载条件列表 */
protected List<FreeQueryTaskCondition> taskConditions = Lists.newArrayList();
/** 自定义查询记录 DAO */
@Autowired
private FreeQueryRecordDao freeQueryRecordDao;
/** 自定义查询数据源 DAO */
@Autowired
private FreeQuerySourceDao freeQuerySourceDao;
/** 构造函数 */
private FreeQueryServiceImpl() {
log.debug("construct", "准备初始化 FreeQuery 查询服务");
this.runDownloadTask(3); // 3秒轮训
this.runApplyTask(5); // 每5秒钟进行任务状态检测
}
@Override
public List<FreeQueryTable> getFreeQueryTableList() {
return MysqlHelper.getFreeQueryTableList();
}
@Override
public Integer createFreeQueryRecord(FreeQueryRecord record) {
return this.freeQueryRecordDao.createFreeQueryRecord(record);
}
@Override
public Integer updateFreeQueryRecord(FreeQueryRecord record) {
return this.freeQueryRecordDao.updateFreeQueryRecord(record);
}
@Override
public Integer deleteFreeQueryRecord(String recordId) {
return this.freeQueryRecordDao.deleteFreeQueryRecord(recordId);
}
@Override
public FreeQueryRecord getFreeQueryRecordByUserIdAndRecordId(String userId, String recordId) {
return this.freeQueryRecordDao.getFreeQueryRecordByUserIdAndRecordId(userId, recordId);
}
@Override
public List<FreeQueryRecord> getFreeQueryRecordListByUserId(String userId, String fuzzy) {
return this.freeQueryRecordDao.getFreeQueryRecordListByUserId(userId, fuzzy);
}
/** 修订 SQL 语句(将 dmwl_test 标记替换为实际库)
* @param sql
* @return
*/
// public String prefixSQL(String enterpriseId, String sql) {
// FreeQuerySource source = this.freeQuerySourceDao.getFreeQuerySourceByEnterpriseId(enterpriseId);
// return sql.replace("dmwl_test", "gic_data_" + source.getEnterpriseId());
// }
/** 获取指定表的所有字段
* @param tableName
* @return
*/
public List<String> getColumnsByTable(String tableName) {
List<String> result = Lists.newArrayList();
Connection conn = MysqlHelper.getFreeQueryConnection("6c68a26e6f0d11e59d0818c58a146ef4");
if (conn != null) {
try {
log.debug("getColumnsByTable", "准备查询表信息 " + tableName);
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("select column_name from information_schema.columns where table_schema = 'amx' and table_name = '" + tableName + "' ");
while (rs.next()) {
result.add(rs.getString(1));
//log.debug("getColumnsByTable", "获取字段:" + rs.getString(1));
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} // IF OVER
// 返回结果
return result;
}
@Override
public Integer getFreeQueryCount(String sql, String enterpriseId) {
//sql = prefixSQL(enterpriseId, sql);
Integer result = -1;
log.debug("getFreeQueryCount", "Count 自定义查询来自 " + enterpriseId);
log.debug("getFreeQueryCount", "自定义查询SQL:" + sql);
Connection conn = MysqlHelper.getFreeQueryConnection(enterpriseId);
if (conn != null) {
try {
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("SELECT COUNT(1) FROM (" + sql + ") AS tmpTable");
if (rs.next()) {
result = rs.getInt(1);
log.debug("getFreeQueryCount", "自定义查询 count:" + result);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} // IF OVER
// 返回结果
return result;
}
/** DateTime 类型转换 */
private static SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/** Date 类型转换 */
private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
/** Time 类型转换 */
private static SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
@Override
public FreeQueryResult getFreeQueryResult(String sql, String enterpriseId, Integer queryDataType, Integer desensiType) {
//sql = prefixSQL(enterpriseId, sql);
log.debug("getFreeQueryResult", "Execute 自定义查询来自 " + enterpriseId);
log.debug("getFreeQueryResult", "自定义查询SQL:" + sql);
FreeQueryResult result = new FreeQueryResult();
Connection conn = MysqlHelper.getFreeQueryConnection(enterpriseId);
if (conn != null) {
try {
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
while (rs.next()) {
ResultSetMetaData metaData = rs.getMetaData();
//log.debug("getFreeQueryResult", "查询结果列数:" + metaData.getColumnCount());
for (int i = 0; i < metaData.getColumnCount(); i++) {
String fieldName = metaData.getColumnLabel(i + 1);
Object filedValue;
if (queryDataType == QueryDataType.SAFE && FreeQueryServiceImpl.isFilterFields(desensiType, fieldName)) {
filedValue = "******";
} else {
switch (metaData.getColumnType(i + 1)) {
case Types.TIMESTAMP:
filedValue = rs.getTimestamp(fieldName) != null ? datetimeFormat.format(new Date(rs.getTimestamp(fieldName).getTime())) : "";
break;
case Types.DATE:
filedValue = rs.getTimestamp(fieldName) != null ? dateFormat.format(new Date(rs.getTimestamp(fieldName).getTime())) : "";
break;
case Types.TIME:
filedValue = rs.getTimestamp(fieldName) != null ? timeFormat.format(new Date(rs.getTimestamp(fieldName).getTime())) : "";
break;
default:
filedValue = rs.getObject(fieldName);
} // SWITCH OVER
} // IF ELSE
result.add(fieldName, filedValue);
} // FOR OVER
} // WHILE OVER
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} // IF OVER
// 返回结果
return result;
}
/** 生成下载任务
* @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) {
//sql = prefixSQL(enterpriseId, sql);
// 注册下载任务
DownloadTask curTask = new DownloadTask();
curTask.setId(String.valueOf((new Date()).getTime()));
curTask.setQueryDataSource(QueryDataSource.FREE_QUERY); // 设置为自定义查询
curTask.setUserId(userId);
curTask.setName(name);
curTask.setModuleName("自定义查询"); // FreeQuery 恒为自定义查询
curTask.setAmount(amount);
curTask.setFormat(format);
curTask.setStartTime(new Date());
curTask.setStatus(DownloadTaskStatus.WAITING);
curTask.setUseCompress(useCompress ? Global.YES : Global.NO);
// 新增下载任务属性
curTask.setQueryDataType(queryDataType);
curTask.setApplyId(applyId); // 设置申请编号
if (queryDataType == QueryDataType.SAFE) { // 如果是安全模式
curTask.setApplyPermitted(Global.YES); // 安全模式直接允许下载
curTask.setApplyStatus(DownloadApplyStatus.PERMITTED_BY_SELF);
} else { // 如果是完整模式
curTask.setApplyPermitted(Global.NO); // 完整模式默认不允许
curTask.setApplyStatus(DownloadApplyStatus.WAITING);
} // IF ELSE OVER
curTask.setRealSql(sql); // 自定义查询皆保存 SQL
curTask.setEnterpriseId(enterpriseId);
Integer preReportCount = DownloadTaskServiceImpl.getInstance().getDownloadTaskCountByEnterpriseId(curTask.getEnterpriseId());
curTask.setReportId(ServiceUtils.buildReportId(curTask.getQueryDataType(), preReportCount));
// 保存下载任务
DownloadTaskServiceImpl.getInstance().createDownloadTask(curTask);
// 生成条件
FreeQueryTaskCondition condition = new FreeQueryTaskCondition();
condition.setTaskId(curTask.getId());
condition.setSql(sql);
condition.setEnterpriseId(enterpriseId);
condition.setDesensiType(desensiType);
// 设置条件可否执行
if (curTask.getApplyPermitted().equals(Global.YES)) {
condition.setBuildPermitted(Global.YES);
} else condition.setBuildPermitted(Global.NO);
// 保存至列表
this.taskConditions.add(condition);
return curTask;
}
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");
/** 下载任务执行计时器 */
private Timer downloadTaskTimer = new Timer();
/** 启动自助指标查询计划任务 */
private void runDownloadTask(Integer interval) {
this.downloadTaskTimer.schedule(new TimerTask() {
@Override
public void run() {
if (taskConditions != null && taskConditions.size() > 0) {
//FreeQueryTaskCondition condition = taskConditions.remove(0); // 移除并获取第一个任务条件
FreeQueryTaskCondition condition = null;
for (int i = 0; i < taskConditions.size(); i++) {
if (taskConditions.get(i).getBuildPermitted().equals(Global.YES)) {
condition = taskConditions.remove(i); // 移除并获取第一个任务条件
break;
} // IF OVER
} // FOR OVER
if (condition != null) {
// 更新任务状态
DownloadTask task = DownloadTaskServiceImpl.getInstance().getDownloadTaskById(condition.getTaskId());
task.setStatus(DownloadTaskStatus.BUILDING);
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
String fullQuery = condition.getSql();
Connection conn = MysqlHelper.getFreeQueryConnection(condition.getEnterpriseId());
if (conn != null) {
try {
// 设定为流式读取
Statement stat = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
stat.setFetchSize(Integer.MIN_VALUE);
ResultSet rs = stat.executeQuery(fullQuery);
// 生成指定格式下载元文件
String originalFilePath = "";
if (task.getFormat().equals(DownloadFileFormat.CSV)) { // 如果指定为 CSV 格式
log.debug("runDownloadTask.run", "准备生成自定义查询下载文件 " + condition.getTaskId() + ".csv");
//String csvPath = SAVE_FOLDER + "/" + condition.getTaskId() + ".csv";
originalFilePath = SAVE_FOLDER + "/" + condition.getTaskId() + ".csv";
File tmp = new File(originalFilePath);
if (tmp.exists()) { // 删除可能存在的文件
tmp.delete();
}
//CSVWriter csvWriter = new CSVWriter(new FileWriter(csvPath), '\t');
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(originalFilePath), Charset.forName("GBK"));
ResultSetHelper helper = new CsvResultSetHelper(task.getQueryDataType() == QueryDataType.FULL ? CsvDataFilterMode.NONE : CsvDataFilterMode.DESENSI, FreeQueryServiceImpl.getFieldsFilters(condition.getDesensiType()));
CSVWriter writer = new CSVWriter(out, ',');
writer.setResultService(helper);
writer.writeAll(rs, true);
writer.close();
out.close();
log.debug("runDownloadTask.run", "已生成自定义查询下载文件 " + condition.getTaskId() + ".csv");
} else {
log.debug("runDownloadTask.run", "准备生成自定义查询下载文件 " + condition.getTaskId() + ".xlsx");
originalFilePath = SAVE_FOLDER + "/" + condition.getTaskId() + ".xlsx";
SXSSFWorkbook wb = new SXSSFWorkbook(100); // 内存中保留 100 行
Sheet sheet = wb.createSheet();
Row row = sheet.createRow(0);
Cell cell;
for (int j = 0; j < rs.getMetaData().getColumnCount(); ++j) { // 遍历创建表头
String colName = rs.getMetaData().getColumnLabel(j + 1);
cell = row.createCell(j);
cell.setCellValue(colName);
}
// 遍历输出行
int rowCount = 0;
while (rs.next()) {
rowCount++;
row = sheet.createRow(rowCount);
for (int j = 0; j < rs.getMetaData().getColumnCount(); ++j) {
//String c = rs.getString(j + 1);
//row.createCell(j).setCellValue(c);
String cName = rs.getMetaData().getColumnName(j+1);
if (task.getQueryDataType() == QueryDataType.SAFE
&& FreeQueryServiceImpl.isFilterFields(condition.getDesensiType(), cName)) {
row.createCell(j).setCellValue("******");
} else {
int cType = rs.getMetaData().getColumnType(j + 1);
switch (cType) {
case Types.TIMESTAMP:
row.createCell(j).setCellValue(rs.getTimestamp(j + 1) != null ? datetimeFormatter.format(rs.getTimestamp(j + 1)) : "");
break;
case Types.DATE:
row.createCell(j).setCellValue(rs.getDate(j + 1) != null ? dateFormatter.format(rs.getDate(j + 1)) : "");
break;
case Types.TIME:
row.createCell(j).setCellValue(rs.getTimestamp(j + 1) != null ? timeFormatter.format(rs.getTimestamp(j + 1)) : "");
break;
default:
row.createCell(j).setCellValue(rs.getString(j + 1));
break;
}
}
} // FOR OVER
} // WHILE OVER
FileOutputStream fileOut = new FileOutputStream(originalFilePath);
wb.write(fileOut);
//fileOut.flush(); // SXSSFWorkbook 使用 auto-flush 模式
fileOut.close();
//wb.close();
wb.dispose(); // SXSSFWorkbook 没有 close 方法
log.debug("runDownloadTask.run", "已生成自定义查询下载文件 " + condition.getTaskId() + ".xlsx");
}
if (task.getUseCompress().equals(Global.YES)) {
log.debug("runDownloadTask.run", "准备生成自定义查询压缩文件 " + condition.getTaskId() + ".zip");
String zipFilePath = SAVE_FOLDER + "/" + condition.getTaskId() + ".zip";
File zipFile = new File(zipFilePath);
ZipOutputStream zos = null;
byte[] buf = new byte[1024];
int length = 0;
try {
OutputStream os = new FileOutputStream(zipFilePath);
BufferedOutputStream bos = new BufferedOutputStream(os);
zos = new ZipOutputStream(bos);
zos.setLevel(6); // 压缩率选择 0-9
InputStream is = new FileInputStream(originalFilePath);
BufferedInputStream bis = new BufferedInputStream(is);
zos.putNextEntry(new ZipEntry(originalFilePath.substring(originalFilePath.lastIndexOf("/") + 1)));
while ((length = bis.read(buf)) > 0) {
zos.write(buf, 0, length);
}
bis.close();
is.close();
//bos.close();
//os.close();
log.debug("runDownloadTask.run", "已生成自定义查询压缩文件 " + condition.getTaskId() + ".zip");
} catch (Exception ex2) {
throw ex2;
} finally {
zos.closeEntry();
zos.close();
}
}
task.setStatus(DownloadTaskStatus.COMPLISHED);
task.setOverTime(new java.util.Date());
String taskFileExt = task.getUseCompress().equals(Global.YES) ? ".zip" : task.getFormat().equals(DownloadFileFormat.CSV) ? ".csv" : ".xlsx";
task.setFilePath(task.getId() + taskFileExt);
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
} catch (Exception ex) {
ex.printStackTrace();
// 标记任务异常
task.setStatus(DownloadTaskStatus.ERROR);
task.setOverTime(new Date());
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} // IF OVER
} // IF OVER
} // 没有任务则忽略
} // run Define Over
}, interval * 1000, interval * 1000);// 配置中的值为毫秒
}
/** 下载申请检查计时器 */
private Timer applyTimer = new Timer();
/** 运行下载申请任务
* @param interval
*/
private void runApplyTask(Integer interval) {
this.applyTimer.schedule(new TimerTask() {
@Override
public void run() {
List<DownloadTask> waitingTasks = DownloadTaskServiceImpl.getInstance().getDownloadTaskOfWaiting(QueryDataSource.FREE_QUERY);
for (DownloadTask task : waitingTasks) {
if (!task.getApplyId().equals("")) {
String applyStatusText = HttpUtils.doGet("http://www.gicdev.com/api-admin/apply-info?type=2&applyId=" + task.getApplyId());
//String applyStatusText = HttpUtils.doGet("http://hope.demogic.com/api-admin/apply-info?type=2&applyId=" + task.getApplyId());
log.debug("runApplyTask.run", "查询自助指标查询 " + task.getId() + " 审核状态码" + applyStatusText);
boolean conditionRemove = false; // 从上传条件移除
boolean conditionUpdate = false; // 更新条件
if (applyStatusText.indexOf("\"checkStatus\":0") > 0) { // 如果自审核通过
task.setApplyStatus(DownloadApplyStatus.PERMITTED_BY_SELF);
task.setApplyPermitted(Global.YES);
conditionUpdate = true;
} else if (applyStatusText.indexOf("\"checkStatus\":2") > 0) { // 如果第三方审核通过
task.setApplyStatus(DownloadApplyStatus.PERMITTED_BY_OTHER);
task.setApplyPermitted(Global.YES);
conditionUpdate = true;
} else if (applyStatusText.indexOf("\"checkStatus\":1") > 0) { // 如果审核超时
task.setApplyStatus(DownloadApplyStatus.TIMEOUT);
task.setApplyPermitted(Global.NO);
conditionRemove = true;
}
if (conditionRemove || conditionUpdate) {
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
log.debug("runApplyTask.run", "自定义查询 " + task.getId() + " 审核状态已更新:" + task.getApplyStatus() + " / " + task.getApplyPermitted());
}
if (conditionUpdate) { // 如果可以更新状态
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
if (taskConditions != null && taskConditions.size() > 0) {
for (FreeQueryTaskCondition condition : taskConditions) {
if (condition.getTaskId().equals(task.getId())) {
condition.setBuildPermitted(Global.YES);
log.debug("runApplyTask.run", "自定义查询 " + task.getId() + " 已允许生成");
break;
} // IF OVER
} // FOR OVER
} // IF OVER
} else if (conditionRemove) { // 如果可以移除
DownloadTaskServiceImpl.getInstance().updateDownloadTask(task);
if (taskConditions != null && taskConditions.size() > 0) {
for (int j=0; j<taskConditions.size(); j++) {
if (taskConditions.get(j).getTaskId().equals(task.getId())) {
taskConditions.remove(j);
log.debug("runApplyTask.run", "自定义指标查询 " + task.getId() + " 已从待生成队列移除");
} // IF OVER
} // FOR OVER
} // IF OVER
} // IF ELSE OVER
}
} // FOR OVER
} // RUN OVER
}, interval * 1000, interval * 1000);// 配置中的值为毫秒
}
}
package com.gic.cloud.data.hook.service.impl;
import com.alibaba.druid.util.StringUtils;
import com.gic.cloud.common.api.base.Page;
import com.gic.cloud.data.hook.api.dto.MyFlatQuery;
import com.gic.cloud.data.hook.api.service.IMyFlatQueryService;
import com.gic.cloud.data.hook.service.dao.MyFlatQueryDao;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Date;
import java.util.List;
/** 自定义指标查询接口实现
* @author Sam
*/
public class MyFlatQueryServiceImpl implements IMyFlatQueryService {
/** 自定义指标查询接口单例 */
private static MyFlatQueryServiceImpl instance = null;
/** 获取自定义指标查询接口单例
* @return
*/
public static MyFlatQueryServiceImpl getInstance() {
if (instance == null) instance = new MyFlatQueryServiceImpl();
return instance;
}
/** 构造函数 */
public MyFlatQueryServiceImpl() {
instance = this;
}
@Autowired
private MyFlatQueryDao myFlatQueryDao;
@Override
public Integer createMyFlatQuery(MyFlatQuery myFlatQuery) {
return myFlatQueryDao.createMyFlatQuery(myFlatQuery);
}
@Override
public Integer updateMyFlatQuery(MyFlatQuery myFlatQuery) {
return myFlatQueryDao.updateMyFlatQuery(myFlatQuery);
}
@Override
public Integer deleteMyFlatQuery(String id) {
return myFlatQueryDao.deleteMyFlatQuery(id);
}
@Override
public MyFlatQuery queryMyFlatQueryById(String id) {
return myFlatQueryDao.getMyFlatQueryById(id);
}
@Override
public Page<MyFlatQuery> queryMyFlatQueryPage(String userId, String fuzzy, int pageNum, int pageSize) {
Page<MyFlatQuery> result = new Page<>();
PageHelper.startPage(pageNum, pageSize); // 设置分页参数
List<MyFlatQuery> query = myFlatQueryDao.getMyFlatQueryList(userId, fuzzy);
// 生成数据输出信息
PageInfo<MyFlatQuery> preResult = new PageInfo<>(query);
result.setList(preResult.getList()); // 设置数据集
result.setTotal(preResult.getTotal()); // 设置总数
result.setPageNum(preResult.getPageNum()); // 设置当前页数
return result;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
data-hook-service-druid.xml 由于 init.xml 内置机制原因,此 xml 必须放第一个
data-hook-init.xml 为 data-hook 所有项目初始化参数加载(位于 data-hook-api/resource)
data-hook-dubbo-settings.xml 所有项目使用的 dubbo 环境配置(位于 data-hook-api/resource)
data-hook-service-dubbo-config.xml 为 data-hook-service 使用的 Dubbo 配置
data-hook-flat-query-source.xml 为自助指标查询使用的 MySQL 配置
data-hook-free-query-source.xml 为自定义查询使用的 MySQL 配置 -->
<!--<import resource="classpath*:applicationContext-init.xml"/>-->
<import resource="classpath*:data-hook-service-druid.xml"/>
<import resource="classpath:data-hook-init.xml"/>
<import resource="classpath:data-hook-dubbo-settings.xml"/>
<import resource="classpath:data-hook-service-dubbo-config.xml"/>
<import resource="classpath:data-hook-flat-query-source.xml"/>
<import resource="classpath:data-hook-free-query-source.xml"/>
<!--
<import resource="classpath*:data-hook-service-druid-prod.xml"/>
<import resource="classpath:data-hook-init.xml"/>
<import resource="file:config/data-hook-dubbo-settings.xml"/>
<import resource="classpath:data-hook-service-dubbo-config.xml"/>
<import resource="file:config/data-hook-flat-query-source.xml"/>
<import resource="file:config/data-hook-free-query-source.xml"/>
-->
<!--<import resource="classpath:cloud-web-service-task.xml" />-->
</beans>
\ 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:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!--<dubbo:registry address="zookeeper://123.207.187.158:2199" protocol="dubbo" id="remoteAddress" register="false" timeout="120000" file="dubbo/remote/${dubbo.registry.file}/dubbo.cache"/>-->
<dubbo:registry address="zookeeper://localhost:2181" protocol="dubbo" id="localAddress" timeout="120000" file="dubbo/local/${dubbo.registry.file}/dubbo.cache"/>
<dubbo:registry address="zookeeper://localhost:2181" protocol="dubbo" id="remoteAddress" timeout="120000" file="dubbo/local/${dubbo.registry.file}/dubbo.cache"/>
<dubbo:provider timeout="120000" retries="0" registry="localAddress,remoteAddress"/>
<dubbo:consumer timeout="120000" retries="0" check="false" registry="localAddress,remoteAddress"/>
<!--<bean id="brave" class="com.github.kristofa.brave.dubbo.BraveFactoryBean" p:serviceName="${dubbo.registry.file}" p:zipkinHost="http://123.207.187.158:9411/" p:rate="1.0" />-->
</beans>
\ 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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<bean class="org.apache.commons.dbcp.BasicDataSource" id="hiveSource" destroy-method="close">
<property name="driverClassName" value="org.apache.hive.jdbc.HiveDriver" />
<!--<property name="url" value="jdbc:hive2://115.159.205.44:10015/data_test" />-->
<property name="url" value="jdbc:hive2://10.105.14.41:10015/data_test" />
<property name="username" value="hadoop" />
<property name="password" value="" />
<property name="maxActive">
<value>20</value>
</property>
<property name="maxIdle">
<value>5</value>
</property>
<property name="minIdle">
<value>1</value>
</property>
<property name="testWhileIdle">
<value>true</value>
</property>
<property name="maxWait">
<value>120000</value>
</property>
</bean>
</beans>
\ 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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<bean class="org.apache.commons.dbcp.BasicDataSource" id="mysqlSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<!--<property name="url" value="jdbc:mysql://56cbb9f62fac6.sh.cdb.myqcloud.com:6634/dmwl_test" />
<property name="username" value="data_test" />
<property name="password" value="iP7LwQsezaWW" />-->
<property name="url" value="jdbc:mysql://56cbb9f62fac6.sh.cdb.myqcloud.com:6634/enterprise_extract_byenterpriseid" />
<property name="username" value="cdb_outerroot" />
<property name="password" value="@09ui%sbc09" />
<property name="maxActive">
<value>50</value>
</property>
<property name="maxIdle">
<value>5</value>
</property>
<property name="maxWait">
<value>120000</value>
</property>
</bean>
<!-- 内外网环境切换开关 -->
<bean class="com.gic.cloud.data.hook.service.entity.MysqlSourceSwitch" id="mysqlSourceSwitch">
<property name="isRunningOutsite">
<value>false</value>
</property>
<property name="urlReplaceTarget" value="10.0.0.6:3306" />
<property name="urlReplaceValue" value="sh-cdb-a76oi99n.sql.tencentcdb.com:63177" />
</bean>
</beans>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 全局参数 -->
<settings>
<!-- 使全局的映射器启用或禁用缓存,默认启用 -->
<setting name="cacheEnabled" value="true"/>
<!-- 全局启用或禁用延迟加载,当禁用时,所有关联对象都会即时加载,默认启用 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 有延迟加载属性的对象主动加载任意属性或按需要加载,默认启用 -->
<setting name="aggressiveLazyLoading" value="true"/>
<!-- 是否允许单条 SQL 返回多个数据集,该属性取决于驱动的兼容性,默认启用 -->
<setting name="multipleResultSetsEnabled" value="true"/>
<!-- 是否可以使用列的别名,该属性取决于驱动的兼容性,默认启用 -->
<setting name="useColumnLabel" value="true"/>
<!-- 是否允许 JDBC 生成主键,该属性取决于驱动的兼容性。启动情况下将强制使用被生成的主键,默认关闭 -->
<setting name="useGeneratedKeys" value="false"/>
<!-- 指定 MyBatis 如何自动映射数据基表的列 NONE:不映射 PARTIAL:部分映射 FULL:全部映射 -->
<setting name="autoMappingBehavior" value="PARTIAL"/>
<!-- 指定默认的执行类型(SIMPLE:简单 REUSE:执行器可能重复使用 prepared statements 语句 BATCH:执行器可以重复执行语句和批量更新) -->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 是否使用驼峰命名法转换字段,默认开启 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 设置本地缓存范围 SESSION:基于会话(有数据共享)STATEMENT:语句范围 (会话间无数据共享) 默认基于 SESSION -->
<setting name="localCacheScope" value="SESSION"/>
<!-- 设置当 JDBC 类型为空时,某些驱动程序要指定默认值(默认为 OTHER,同时插入空值时不需要指定类型) -->
<setting name="jdbcTypeForNull" value="VARCHAR"/>
</settings>
</configuration>
<?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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:annotation-config />
<!--<context:component-scan base-package="com.gic.cloud" />-->
<context:property-placeholder location="file:./config/data-hook-service-jdbc.properties" ignore-unresolvable="true" />
<bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
<!-- 基本属性 url、user、password -->
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${jdbc.maxsize}" />
<property name="minIdle" value="1" />
<property name="maxActive" value="${jdbc.maxsize}" />
<property name="removeAbandoned" value="true" /> <!-- 打开removeAbandoned功能 -->
<property name="removeAbandonedTimeout" value="120" /> <!-- 1800秒,也就是30分钟 -->
<property name="logAbandoned" value="true" /> <!-- 关闭abanded连接时输出错误日志 -->
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="0" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
</bean>
<bean class="com.gic.cloud.init.CloudSqlSessionFactoryBean" id="sqlSessionFactory">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.gic.cloud.data.hook.**" />
<property name="mapperLocations" value="classpath*:mapper/*.xml" />
<property name="configLocation" value="classpath:data-hook-mybatis-config.xml"></property><!-- 增加 mybatis 进阶配置 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>
dialect=mysql
</value>
</property>
</bean>
</array>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--<property name="basePackage" value="com.gic.cloud.**.dao.mapper,com.gic.cloud.*.dao.mapper" />-->
<property name="basePackage" value="com.gic.cloud.**.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 事务管理器 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />
</beans>
\ 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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:annotation-config />
<!--<context:component-scan base-package="com.gic.cloud" />-->
<context:property-placeholder location="classpath*:data-hook-service-jdbc.properties" ignore-unresolvable="true" />
<bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
<!-- 基本属性 url、user、password -->
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${jdbc.maxsize}" />
<property name="minIdle" value="1" />
<property name="maxActive" value="${jdbc.maxsize}" />
<property name="removeAbandoned" value="true" /> <!-- 打开removeAbandoned功能 -->
<property name="removeAbandonedTimeout" value="120" /> <!-- 1800秒,也就是30分钟 -->
<property name="logAbandoned" value="true" /> <!-- 关闭abanded连接时输出错误日志 -->
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="0" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
</bean>
<bean class="com.gic.cloud.init.CloudSqlSessionFactoryBean" id="sqlSessionFactory">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:mapper/*.xml" />
<property name="typeAliasesPackage" value="com.gic.cloud.data.**" />
<property name="configLocation" value="classpath:data-hook-mybatis-config.xml"></property><!-- 增加 mybatis 进阶配置 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>
dialect=mysql
</value>
</property>
</bean>
</array>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--<property name="basePackage" value="com.gic.cloud.**.dao.mapper,com.gic.cloud.*.dao.mapper" />-->
<property name="basePackage" value="com.gic.cloud.**.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 事务管理器 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />
</beans>
\ 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:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<context:component-scan base-package="com.gic.cloud.data.hook.service" />
<!-- 应用名称 -->
<dubbo:application name="gic-cloud-data-hook"/>
<!-- 外部服务端口 -->
<dubbo:protocol name="dubbo" port="30001"/>
<!-- 注册外部服务:FlatQueryTableService -->
<bean class="com.gic.cloud.data.hook.service.impl.FreeQueryServiceImpl" id="freeQueryService" />
<dubbo:service interface="com.gic.cloud.data.hook.api.service.IFreeQueryService" ref="freeQueryService" timeout="120000" />
<bean class="com.gic.cloud.data.hook.service.impl.FlatQueryTableServiceImpl" id="flatQueryTableService" />
<dubbo:service interface="com.gic.cloud.data.hook.api.service.IFlatQueryTableService" ref="flatQueryTableService" timeout="120000" />
<bean class="com.gic.cloud.data.hook.service.impl.FlatQueryResultServiceImpl" id="flatQueryResultService" />
<dubbo:service interface="com.gic.cloud.data.hook.api.service.IFlatQueryResultService" ref="flatQueryResultService" timeout="120000" />
<bean class="com.gic.cloud.data.hook.service.impl.DownloadTaskServiceImpl" id="downloadTaskService" />
<dubbo:service interface="com.gic.cloud.data.hook.api.service.IDownloadTaskService" ref="downloadTaskService" timeout="120000" />
<bean class="com.gic.cloud.data.hook.service.impl.MyFlatQueryServiceImpl" id="myFlatQueryService" />
<dubbo:service interface="com.gic.cloud.data.hook.api.service.IMyFlatQueryService" ref="myFlatQueryService" timeout="120000" />
<!-- 引用的 Dubbo 服务 -->
<!--<dubbo:reference interface="com.gic.dict.api.service.ManagerDictService" id="managerDictService" timeout="10000" />
<dubbo:reference interface="com.gic.cloud.communicate.api.service.member.MemberTagFieldService" id="memberTagFieldService" timeout="10000" />
<dubbo:reference interface="com.gic.cloud.communicate.api.service.store.StoreDealService" id="storeDealService" timeout="10000" />
<dubbo:reference interface="com.gic.cloud.communicate.api.service.enterprise.EnterpriseOperationService" id="enterpriseOperationService" timeout="10000" />-->
<!-- 使用zookeeper注册中心暴露服务地址 -->
<!--<dubbo:registry address="zookeeper://localhost:2181" protocol="dubbo" id="localAdd"/>-->
<!--<dubbo:registry address="zookeeper://115.159.182.172:2199" protocol="dubbo" id="remoteAdd"/>-->
<!--<dubbo:registry address="zookeeper://localhost:2181|zookeeper://115.159.182.172:2199" protocol="dubbo"/>-->
</beans>
\ No newline at end of file
jdbc.driver=com.mysql.jdbc.Driver
jdbc.dialect=org.hibernate.dialect.MySQLDialect
#jdbc.url=jdbc:mysql://115.236.76.136:3306/damogic?useUnicode=true&characterEncoding=utf-8
#jdbc.username=root
#jdbc.password=Root%Banli.Mobi@Database#Password
#jdbc.url=jdbc:mysql://212.64.0.96:3306/datahook?useUnicode=true&characterEncoding=utf-8
#jdbc.username=datahook
#jdbc.password=123456
#jdbc.maxsize=30
#jdbc.url=jdbc:mysql://212.64.4.231:3306/data_hook?useUnicode=true&characterEncoding=utf-8
jdbc.url=jdbc:mysql://10.105.8.172:3306/data_hook?useUnicode=true&characterEncoding=utf-8
jdbc.username=datahook
jdbc.password=gic2018dh
jdbc.maxsize=30
dubbo.spring.config=classpath*\:applicationContext-conf.xml
dubbo.protocol.dubbo.payload=41557050
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="Trace">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.cloud.data.hook.service.dao.DownloadRecordDao">
<!-- Basic Define -->
<sql id="queryTables">
dh_download_record AS q
</sql>
<sql id="updateTable">
dh_download_record
</sql>
<sql id="queryColumns">
q.id,
q.task_id,
q.download_time,
q.user_id,
q.enterprise_id,
q.user_name,
t.name AS "task_name",
t.module_name,
t.amount,
t.query_data_type,
t.real_sql,
t.report_id
</sql>
<sql id="queryJoins">
LEFT JOIN dh_download_task AS t ON t.id = q.task_id
</sql>
<!-- Dao Define -->
<select id="getDownloadRecordList" resultType="DownloadRecord">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.user_id = #{userId}
<if test="startTime != null">
AND q.download_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="endTime != null">
AND q.download_time <![CDATA[ <= ]]> #{endTime}
</if>
<if test="queryDataType != -1">
AND t.query_data_type = #{queryDataType}
</if>
<if test="fuzzyRange != ''">
<bind name="pattern" value="'%' + fuzzy + '%'" />
<choose>
<when test="fuzzyRange == 'reportId'">
AND t.report_id LIKE #{pattern}
</when>
<when test="fuzzyRange == 'userName'">
AND q.user_name LIKE #{pattern}
</when>
<when test="fuzzyRange == 'taskName'">
AND t.name LIKE #{pattern}
</when>
<when test="fuzzyRange == 'moduleName'">
AND t.module_name LIKE #{pattern}
</when>
</choose>
</if>
ORDER BY
q.download_time DESC
</select>
<insert id="createDownloadRecord">
INSERT INTO <include refid="updateTable"/>
(
id,
task_id,
download_time,
user_id,
enterprise_id,
user_name
) VALUES (
#{id},
#{taskId},
#{downloadTime},
#{userId},
#{enterpriseId},
#{userName}
)
</insert>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.cloud.data.hook.service.dao.DownloadTaskDao">
<!-- Basic Define -->
<sql id="queryTables">
dh_download_task AS q
</sql>
<sql id="updateTable">
dh_download_task
</sql>
<sql id="queryColumns">
q.id,
q.user_id,
q.name,
q.module_name,
q.amount,
q.status,
q.start_time,
q.over_time,
q.format,
q.file_path,
q.use_compress,
q.query_data_source,
q.query_data_type,
q.apply_id,
q.apply_permitted,
q.apply_status,
q.real_sql,
q.enterprise_id,
q.report_id
</sql>
<sql id="queryJoins">
</sql>
<!-- Dao Define -->
<select id="getDownloadTaskById" resultType="DownloadTask">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.id = #{taskId}
</select>
<select id="getDownloadTaskListByUserId" resultType="DownloadTask">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.user_id = #{userId}
AND q.del_flag = '0'
<if test="fuzzy != '' ">
<bind name="pattern" value="'%' + fuzzy + '%'" />
AND (
q.name LIKE #{pattern}
OR q.report_id LIKE #{pattern}
)
</if>
ORDER BY
q.start_time DESC
</select>
<select id="getExpiredDownloadTaskList" resultType="DownloadTask">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.over_time <![CDATA[ <= ]]> #{expireDate}
AND q.del_flag = '0'
ORDER BY
q.over_time DESC
</select>
<insert id="createDownloadTask">
INSERT INTO <include refid="updateTable"/>
(
id,
user_id,
name,
module_name,
amount,
status,
start_time,
over_time,
format,
file_path,
use_compress,
query_data_type,
query_data_source,
apply_id,
apply_permitted,
apply_status,
real_sql,
enterprise_id,
report_id,
del_flag
) VALUES (
#{id},
#{userId},
#{name},
#{moduleName},
#{amount},
#{status},
#{startTime},
#{overTime},
#{format},
#{filePath},
#{useCompress},
#{queryDataType},
#{queryDataSource},
#{applyId},
#{applyPermitted},
#{applyStatus},
#{realSql},
#{enterpriseId},
#{reportId},
'0'
)
</insert>
<update id="updateDownloadTask">
UPDATE <include refid="updateTable"/> SET
user_id = #{userId},
name = #{name},
module_name = #{moduleName},
amount = #{amount},
status = #{status},
start_time = #{startTime},
over_time = #{overTime},
format = #{format},
file_path = #{filePath},
use_compress = #{useCompress},
query_data_type = #{queryDataType},
query_data_source = #{queryDataSource},
apply_id = #{applyId},
apply_status = #{applyStatus},
apply_permitted = #{applyPermitted},
real_sql = #{realSql},
enterprise_id = #{enterpriseId},
report_id = #{reportId}
WHERE
id = #{id}
</update>
<update id="deleteDownloadTask">
UPDATE <include refid="updateTable"/> SET
del_flag = '1'
WHERE
id = #{taskId}
</update>
<select id="countDownloadTaskByEnterpriseId" resultType="java.lang.Integer">
SELECT count(1)
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.enterprise_id = #{enterpriseId}
</select>
<select id="getDownloadTaskOfWaiting" resultType="DownloadTask">
SELECT *
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.query_data_source = #{queryDataSource}
AND q.apply_status = 3
AND q.del_flag = '0'
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.cloud.data.hook.service.dao.FlatQueryFavoDao">
<!-- Basic Define -->
<sql id="queryTables">
dh_flat_query_favo AS q
</sql>
<sql id="updateTable">
dh_flat_query_favo
</sql>
<sql id="queryColumns">
q.id,
q.user_id,
q.table_id,
q.is_favo
</sql>
<sql id="queryJoins">
</sql>
<!-- Dao Define -->
<select id="getFlatQueryFavo" resultType="FlatQueryFavo">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.user_id = #{userId}
AND q.table_id = #{tableId}
</select>
<insert id="addFlatQueryFavo">
INSERT INTO <include refid="updateTable"/>
(
id,
user_id,
table_id,
is_favo
) VALUES (
#{id},
#{userId},
#{tableId},
'1'
)
</insert>
<update id="removeFlatQueryFavo">
DELETE FROM <include refid="updateTable"/>
WHERE
user_id = #{userId}
AND table_id = #{tableId}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.cloud.data.hook.service.dao.FlatQueryFieldDao">
<!-- Basic Define -->
<sql id="queryTables">
dh_flat_query_field AS q
</sql>
<sql id="updateTable">
dh_flat_query_field
</sql>
<sql id="queryColumns">
q.id,
q.table_id,
q.field_mark,
q.field_name,
q.field_type,
q.enable_filter,
q.enable_order,
q.enable_encrypt
</sql>
<sql id="queryJoins">
</sql>
<!-- Dao Define -->
<select id="getFlatQueryFieldByTableId" resultType="FlatQueryField">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.table_id = #{tableId}
ORDER BY
q.id
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.cloud.data.hook.service.dao.FlatQueryTableDao">
<!-- Basic Define -->
<sql id="queryTables">
dh_flat_query_table AS q
</sql>
<sql id="updateTable">
dh_flat_query_table
</sql>
<sql id="queryColumns">
(@row_number:=@row_number + 1) AS "id",
q.table_id,
q.name,
q.description,
q.click_count,
q.download_count,
f.is_favo
</sql>
<sql id="queryJoins">
LEFT JOIN dh_flat_query_favo AS f ON f.user_id = #{userId} AND f.table_id = q.table_id
</sql>
<update id="updateFlatQueryTable">
UPDATE <include refid="updateTable"/> SET
name = #{name},
description = #{description},
click_count = #{clickCount},
download_count = #{downloadCount}
WHERE table_id = #{tableId}
</update>
<!-- Dao Define -->
<select id="getFlatQueryTableById" resultType="FlatQueryTable">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.table_id = #{tableId}
</select>
<select id="getFlatQueryTable" resultType="FlatQueryTable">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
<if test="fuzzy != '' ">
<bind name="pattern" value="'%' + fuzzy + '%'" />
WHERE
q.table_id LIKE #{pattern}
OR q.name LIKE #{pattern}
OR q.description LIKE #{pattern}
</if>
ORDER BY
f.is_favo DESC,
CONVERT(q.name USING gbk)
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.cloud.data.hook.service.dao.FreeQueryRecordDao">
<!-- Basic Define -->
<sql id="queryTables">
dh_free_query_record AS q
</sql>
<sql id="updateTable">
dh_free_query_record
</sql>
<sql id="queryColumns">
q.id,
q.update_time,
q.name,
q.user_id,
q.content
</sql>
<sql id="queryJoins">
</sql>
<!-- Dao Define -->
<insert id="createFreeQueryRecord">
INSERT INTO <include refid="updateTable"/>
(
id,
update_time,
name,
user_id,
content
) VALUES (
#{id},
#{updateTime},
#{name},
#{userId},
#{content}
)
</insert>
<update id="updateFreeQueryRecord">
UPDATE <include refid="updateTable"/> SET
update_time = #{updateTime},
name = #{name},
user_id = #{userId},
content = #{content}
WHERE
id = #{id}
</update>
<update id="deleteFreeQueryRecord">
DELETE FROM <include refid="updateTable"/>
WHERE
id = #{recordId}
</update>
<select id="getFreeQueryRecordListByUserId" resultType="FreeQueryRecord">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.user_id = #{userId}
<if test="fuzzy != '' ">
<bind name="pattern" value="'%' + fuzzy + '%'" />
AND (
q.name LIKE #{pattern}
OR q.content LIKE #{pattern}
)
</if>
ORDER BY
q.update_time DESC
</select>
<select id="getFreeQueryRecordByUserIdAndRecordId" resultType="FreeQueryRecord">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.user_id = #{userId}
AND q.id = #{recordId}
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.cloud.data.hook.service.dao.FreeQuerySourceDao">
<!-- Basic Define -->
<sql id="queryTables">
dh_free_query_source AS q
</sql>
<sql id="updateTable">
dh_free_query_source
</sql>
<sql id="queryColumns">
q.id,
q.enterprise_id,
q.url,
q.username,
q.password,
q.enterprise_name
</sql>
<sql id="queryJoins">
</sql>
<!-- Dao Define -->
<insert id="createFreeQuerySource">
INSERT INTO <include refid="updateTable"/>
(
id,
enterprise_id,
url,
username,
password,
enterprise_name
) VALUES (
#{id},
#{enterpriseId},
#{url},
#{username},
#{password},
#{enterpriseName}
)
</insert>
<update id="updateFreeQuerySource">
UPDATE <include refid="updateTable"/> SET
enterprise_id = #{enterpriseId},
url = #{url},
username = #{username},
password = #{password},
enterprise_name = #{enterpriseName}
WHERE
id = #{id}
</update>
<update id="deleteFreeQueryRecord">
DELETE FROM <include refid="updateTable"/>
WHERE
id = #{sourceId}
</update>
<select id="getFreeQuerySourceByEnterpriseId" resultType="FreeQuerySource">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.enterprise_id = #{enterpriseId}
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.cloud.data.hook.service.dao.MyFlatQueryDao">
<!-- Basic Define -->
<sql id="queryTables">
dh_my_flat_query AS q
</sql>
<sql id="updateTable">
dh_my_flat_query
</sql>
<sql id="queryColumns">
(@row_number:=@row_number + 1) AS "row_id",
q.id,
q.name,
q.description,
q.user_id,
q.table_id,
q.conditions_text,
q.update_time,
t.name AS "table_name"
</sql>
<sql id="queryJoins">
LEFT JOIN dh_flat_query_table AS t ON t.table_id = q.table_id
</sql>
<insert id="createMyFlatQuery">
INSERT INTO <include refid="updateTable"/>
(
id,
name,
description,
user_id,
table_id,
conditions_text,
update_time
) VALUES (
#{id},
#{name},
#{description},
#{userId},
#{tableId},
#{conditionsText},
#{updateTime}
)
</insert>
<update id="updateMyFlatQuery">
UPDATE <include refid="updateTable"/> SET
name = #{name},
description = #{description},
conditions_text = #{conditionsText},
update_time = #{updateTime}
WHERE
id = #{id}
</update>
<update id="deleteMyFlatQuery">
DELETE FROM <include refid="updateTable"/>
WHERE
id = #{id}
</update>
<!-- Dao Define -->
<select id="getMyFlatQueryById" resultType="MyFlatQuery">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.id = #{id}
</select>
<select id="getMyFlatQueryList" resultType="MyFlatQuery">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.user_id = #{userId}
<if test="fuzzy != '' ">
<bind name="pattern" value="'%' + fuzzy + '%'" />
AND (
t.name LIKE #{pattern}
OR q.name LIKE #{pattern}
OR q.description LIKE #{pattern}
)
</if>
ORDER BY
q.update_time DESC
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.cloud.data.hook.service.dao.RiskModeRecordDao">
<!-- Basic Define -->
<sql id="queryTables">
dh_risk_mode_record AS q
</sql>
<sql id="updateTable">
dh_risk_mode_record
</sql>
<sql id="queryColumns">
q.apply_id,
q.enterprise_id,
q.user_id,
q.user_name,
q.user_phone,
q.audit_name,
q.audit_phone,
q.risk_duration,
q.create_time
</sql>
<sql id="queryJoins">
</sql>
<!-- Dao Define -->
<select id="getRiskModeRecordByApplyId" resultType="RiskModeRecord">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.apply_id = #{applyId}
</select>
<select id="getRiskModeRecordList" resultType="RiskModeRecord">
SELECT
<include refid="queryColumns"/>
FROM
<include refid="queryTables"/>
<include refid="queryJoins"/>
WHERE
q.enterprise_id = #{enterpriseId}
<if test="startTime != null">
AND q.create_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="endTime != null">
AND q.create_time <![CDATA[ <= ]]> #{endTime}
</if>
<if test="riskDuration != -1">
AND q.risk_duration = #{riskDuration}
</if>
<if test="fuzzyRange != ''">
<bind name="pattern" value="'%' + fuzzy + '%'" />
<choose>
<when test="fuzzyRange == 'userName'">
AND q.user_name LIKE #{pattern}
</when>
<when test="fuzzyRange == 'userPhone'">
AND q.user_phone LIKE #{pattern}
</when>
<when test="fuzzyRange == 'auditName'">
AND q.audit_name LIKE #{pattern}
</when>
<when test="fuzzyRange == 'auditPhone'">
AND q.audit_phone LIKE #{pattern}
</when>
</choose>
</if>
ORDER BY
q.create_time DESC
</select>
<insert id="createRiskModeRecord">
INSERT INTO <include refid="updateTable"/>
(
apply_id,
enterprise_id,
user_id,
user_name,
user_phone,
audit_name,
audit_phone,
risk_duration,
create_time
) VALUES (
#{applyId},
#{enterpriseId},
#{userId},
#{userName},
#{userPhone},
#{auditName},
#{auditPhone},
#{riskDuration},
#{createTime}
)
</insert>
<update id="updateRiskModeRecord">
UPDATE <include refid="updateTable"/> SET
enterprise_id = #{enterpriseId},
user_id = #{userId},
user_name = #{userName},
user_phone = #{userPhone},
audit_name = #{auditName},
audit_phone = #{auditPhone},
risk_duration = #{riskDuration},
create_time = #{createTime}
WHERE
apply_id = #{applyId}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
<facet type="web" name="Web">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
</webroots>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="jdk" jdkName="1.7" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
<orderEntry type="module" module-name="gic-cloud-data-hook-api" />
<orderEntry type="library" name="Maven: com.gic:gic-cloud-web-service-api:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-platform-config:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.ctrip.framework.apollo:apollo-client:1.0.0" level="project" />
<orderEntry type="library" name="Maven: com.ctrip.framework.apollo:apollo-core:1.0.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
<orderEntry type="library" name="Maven: com.google.inject:guice:4.1.0" level="project" />
<orderEntry type="library" name="Maven: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-cloud-commons:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-orm:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:3.2.18.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.0" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.3" level="project" />
<orderEntry type="module-library">
<library name="Maven: com.alibaba:jconsole:1.8.0">
<CLASSES>
<root url="jar:///Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/jconsole.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="Maven: com.alibaba:tools:1.8.0">
<CLASSES>
<root url="jar:///Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/tools.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="Maven: com.alibaba:dubbo:2.8.5" level="project" />
<orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty:3.7.0.Final" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.16" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.15.0-GA" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.2.1" level="project" />
<orderEntry type="library" name="Maven: commons-pool:commons-pool:1.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-framework:2.5.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-client:2.5.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.6" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-log4j12:1.6.1" level="project" />
<orderEntry type="library" name="Maven: jline:jline:0.9.94" level="project" />
<orderEntry type="library" name="Maven: com.github.sgroschupf:zkclient:0.1" level="project" />
<orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.1" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
<orderEntry type="library" name="Maven: jstl:jstl:1.2" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:4.0.0" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.1.41" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.8.0" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: xom:xom:1.2.5" level="project" />
<orderEntry type="library" name="Maven: xml-apis:xml-apis:1.3.03" level="project" />
<orderEntry type="library" name="Maven: xerces:xercesImpl:2.8.0" level="project" />
<orderEntry type="library" name="Maven: xalan:xalan:2.7.0" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.7.3" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-commons:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-dubbo-extension:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.influxdb:influxdb-java:2.14" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:retrofit:2.4.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:converter-moshi:2.4.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.moshi:moshi:1.5.0" level="project" />
<orderEntry type="library" name="Maven: org.msgpack:msgpack-core:0.8.16" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.11.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.10.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.14.0" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-apollo-sdk:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-mq-sdk:1.0.28" level="project" />
<orderEntry type="library" name="Maven: com.101tec:zkclient:0.10" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-redis-sdk:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.redisson:redisson:2.12.5" level="project" />
<orderEntry type="library" name="Maven: javax.cache:cache-api:1.0.0" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-stream:2.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:2.0.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.0" level="project" />
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.8.11" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-bean:3.7.1" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-core:3.7.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.7.9" level="project" />
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.15" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-all:4.1.17.Final" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-lgpl:1.9.13" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-1.2-api:2.7" level="project" />
<orderEntry type="library" name="Maven: org.hibernate:hibernate-core:4.0.0.Final" level="project" />
<orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:1.0.0.Final" level="project" />
<orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:0.5.4" level="project" />
<orderEntry type="library" name="Maven: org.jboss:jandex:1.0.3.Final" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:4.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.21" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.3.5" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:core:3.1.0" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:javase:3.1.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.10-FINAL" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.10-FINAL" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.10-FINAL" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.3.0" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: quartz:quartz:1.5.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.3.2" level="project" />
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.10" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:2.0.1" level="project" />
<orderEntry type="library" name="Maven: org.jxls:jxls-poi:1.0.9" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-jexl:2.1.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.12" level="project" />
<orderEntry type="library" name="Maven: org.jxls:jxls:2.3.0" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.3" level="project" />
<orderEntry type="library" name="Maven: com.gic:task-allocation-sdk:0.6" level="project" />
<orderEntry type="library" name="Maven: com.dexcoder:dexcoder-dal-spring:2.3.5" level="project" />
<orderEntry type="library" name="Maven: com.dexcoder:dexcoder-commons:2.3.5" level="project" />
<orderEntry type="library" name="Maven: com.dexcoder:dexcoder-dal:2.3.5" level="project" />
<orderEntry type="library" name="Maven: com.whalin:Memcached-Java-Client:3.0.2" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-base-api:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-web:2.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j-impl:2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-jcl:2.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.10" level="project" />
<orderEntry type="library" name="Maven: ma.glasnost.orika:orika-core:1.5.4" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.paranamer:paranamer:2.8" level="project" />
<orderEntry type="library" name="Maven: com.carrotsearch:java-sizeof:0.0.5" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.janino:janino:3.0.8" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.janino:commons-compiler:3.0.8" level="project" />
<orderEntry type="library" name="Maven: com.gic:gic-cloud-common-api:3.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.7.9" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.7.9.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.7.0" level="project" />
</component>
</module>
\ 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>
<artifactId>gic-cloud-data-hook</artifactId>
<packaging>war</packaging>
<name>${project.artifactId}</name>
<url>http://maven.apache.org</url>
<version>${dataHookVersion}</version>
<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>
<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-data-hook-api</artifactId>
<version>${dataHookVersion}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-cloud-commons</artifactId>
<version>${cloudCommonsVersion}</version>
</dependency>
<!--<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-cloud-web-service-api</artifactId>
<version>${cloudServiceVersion}</version>
</dependency>-->
<!--<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-memcached</artifactId>
<version>${memcachedVersion}</version>
</dependency>-->
<!--<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-clerk-api</artifactId>
<version>${serviceVersion}</version>
</dependency>-->
<!--<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-enterprise-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-platform-config</artifactId>
<version>${platformConfigVersion}</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>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>9090</port>
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
<finalName>my-proxy</finalName>
<server>tomcat7</server>
</configuration>
</plugin>
</plugins>
</build>
</project>
package com.gic.cloud.data.hook.entity;
import java.io.Serializable;
import java.util.Date;
/** 自定义查询
* @author Sam
*/
public class SqlWord implements Serializable {
private static final long serialVersionUID = 2999938312026456234L;
/** 主键 */
protected String id = "";
/** 主键
* @return
*/
public String getId() {
return id;
}
/** 主键
* @param id
*/
public void setId(String id) {
this.id = id;
}
/** 更新日期 */
protected Date updateDate = new Date();
/** 更新日期
* @return
*/
public Date getUpdateDate() {
return updateDate;
}
/** 更新日期
* @param updateDate
*/
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
/** 查询命名 */
protected String name = "";
/** 查询命名
* @return
*/
public String getName() {
return name;
}
/** 查询命名
* @param name
*/
public void setName(String name) {
this.name = name;
}
/** 用户主键 */
protected String userId = "";
/** 用户主键
* @return
*/
public String getUserId() {
return userId;
}
/** 用户主键
* @param userId
*/
public void setUserId(String userId) {
this.userId = userId;
}
/** 查询文本 */
protected String word = "";
/** 查询文本
* @return
*/
public String getWord() {
return word;
}
/** 查询文本
* @param word
*/
public void setWord(String word) {
this.word = word;
}
}
package com.gic.cloud.data.hook.web;
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 com.gic.cloud.data.hook.api.entity.GeneralResult;
import com.gic.cloud.data.hook.api.service.IDownloadTaskService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/** 下载任务相关
* @author Sam
*/
@Controller
public class DownloadTaskController {
/** 下载任务查询服务*/
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Autowired
private IDownloadTaskService downloadTaskService;
/** 获取下载任务分页
* @param userId
* @param fuzzy
* @param pageNum
* @param pageSize
* @param request
* @param response
* @return
*/
@RequestMapping("/download-task-page")
public Page<DownloadTask> downloadTaskPage(String userId, String fuzzy, Integer pageNum, Integer pageSize, HttpServletRequest request, HttpServletResponse response) {
return this.downloadTaskService.getDownloadTaskPage(userId, fuzzy, pageNum, pageSize);
}
/** 删除下载任务
* @param taskId
* @param request
* @param response
* @return
*/
@RequestMapping("/delete-download-task")
public GeneralResult deleteDownloadTask(String taskId, HttpServletRequest request, HttpServletResponse response) {
GeneralResult result = new GeneralResult();
boolean proResult = this.downloadTaskService.deleteDownloadTask(taskId);
result.setResult(proResult);
return result;
}
/** 创建下载日志
* @param taskId
* @param userId
* @param userName
* @param enterpriseId
* @return
*/
@RequestMapping("/create-download-record")
public GeneralResult createDownloadRecord(String taskId, String userId, String userName, String enterpriseId) {
GeneralResult result = new GeneralResult();
Integer proResult = this.downloadTaskService.createDownloadRecord(taskId, userId, userName, enterpriseId);
result.setResult(proResult == 1);
return result;
}
private static SimpleDateFormat datetimeFormatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
/** 创建下载记录
* @param userId
* @param enterpriseId
* @param fuzzy
* @param pageNum
* @param pageSize
* @param request
* @param response
* @return
*/
@RequestMapping("/download-record-page")
public Page<DownloadRecord> downloadTaskPage(String userId, String enterpriseId, String startTimeText, String endTimeText, Integer queryDataType, String fuzzyRange, String fuzzy, Integer pageNum, Integer pageSize, HttpServletRequest request, HttpServletResponse response) throws ParseException {
String finStartTimeText = StringUtils.isNoneBlank(startTimeText) ? startTimeText + " 00:00:00" : "";
String finEndTimeText = StringUtils.isNoneBlank(endTimeText) ? endTimeText + " 23:59:59" : "";
Date startTime = finStartTimeText.equals("") ? null : datetimeFormatter.parse(finStartTimeText);
Date endTime = finEndTimeText.equals("") ? null : datetimeFormatter.parse(finEndTimeText);
System.out.println(startTime);
System.out.println(endTime);
return this.downloadTaskService.getDownloadRecordPage(userId, enterpriseId, startTime, endTime, queryDataType, fuzzyRange, fuzzy, pageNum, pageSize);
}
/** 创建风险模式记录
* @param record
* @return
*/
@RequestMapping("/create-risk-mode-record")
public GeneralResult createRiskModeRecord(RiskModeRecord record) {
GeneralResult result = new GeneralResult();
this.downloadTaskService.createRiskModeRecord(record);
result.setResult(true);
return result;
}
@RequestMapping("/risk-mode-record-page")
public Page<RiskModeRecord> riskModeRecordPage(String enterpriseId, String startTimeText, String endTimeText, Integer riskDuration, String fuzzyRange, String fuzzy, Integer pageNum, Integer pageSize, HttpServletRequest request, HttpServletResponse response) throws ParseException {
String finStartTimeText = StringUtils.isNoneBlank(startTimeText) ? startTimeText + " 00:00:00" : "";
String finEndTimeText = StringUtils.isNoneBlank(endTimeText) ? endTimeText + " 23:59:59" : "";
Date startTime = finStartTimeText.equals("") ? null : datetimeFormatter.parse(finStartTimeText);
Date endTime = finEndTimeText.equals("") ? null : datetimeFormatter.parse(finEndTimeText);
// Date startTime = startTimeText.equals("") ? null : datetimeFormatter.parse(startTimeText);
// Date endTime = endTimeText.equals("") ? null : datetimeFormatter.parse(endTimeText);
return this.downloadTaskService.getRiskModeRecordPage(enterpriseId, startTime, endTime, riskDuration, fuzzyRange, fuzzy, pageNum, pageSize);
}
}
package com.gic.cloud.data.hook.web;
import com.gic.cloud.common.api.base.Page;
import com.gic.cloud.data.hook.api.dto.*;
import com.gic.cloud.data.hook.api.entity.FlatQueryCondition;
import com.gic.cloud.data.hook.api.entity.FlatQueryExecuteRequest;
import com.gic.cloud.data.hook.api.entity.GeneralResult;
import com.gic.cloud.data.hook.api.entity.Global;
import com.gic.cloud.data.hook.api.service.IFlatQueryResultService;
import com.gic.cloud.data.hook.api.service.IFlatQueryTableService;
import com.gic.cloud.data.hook.api.service.IMyFlatQueryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/** 自助取数相关 Controller
* @author Sam
*/
@Controller
public class FlatQueryController {
/** 自助查询结果与字段过滤服务 */
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Autowired
private IFlatQueryResultService flatQueryResultService;
/** 自助查询表与字段定义服务 */
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Autowired
private IFlatQueryTableService flatQueryTableService;
/** 自定义指标查询服务 */
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Autowired
private IMyFlatQueryService myFlatQueryService;
/** 查询表定义及下载量等信息
* @param userId 指定的用户主键
* @param fuzzy 模糊查询信息
* @param pageNum 指定分页数量
* @param pageSize 指定每页查询数量
*/
@RequestMapping("/flat-query-table-page")
public Page<FlatQueryTable> flatQueryTablePage(String userId, String fuzzy, Integer pageNum, Integer pageSize, HttpServletRequest request, HttpServletResponse response) {
return this.flatQueryTableService.queryFlatQueryTablePage(userId, fuzzy, pageNum, pageSize); // 限定 10 个/分页
}
/** 切换自助查询表的收藏状态
* @param userId 指定的用户主键
* @param tableId 指定的表编号
* @param request
* @param response
* @return
*/
@RequestMapping("/flat-query-switch-favo")
public GeneralResult flatQuerySwitchFavo(String userId, String tableId, HttpServletRequest request, HttpServletResponse response) {
GeneralResult result = new GeneralResult();
result.setResult(true); // 一定返回处理成功
FlatQueryFavo favo = this.flatQueryTableService.queryFlatQueryFavo(userId, tableId);
if (favo != null) { // 如果原来有值
this.flatQueryTableService.removeFlatQueryFavo(userId, tableId);
result.setInfo("0|" + tableId); // 0 表示取消收藏
} else {
this.flatQueryTableService.createFlatQueryFavo(userId, tableId);
result.setInfo("1|" + tableId); // 1 表示添加收藏
} // IF ELSE OVER
return result;
}
/** 获取指定自助查询表明细
* @param userId 用户主键
* @param tableId 指定表名
* @param request
* @param response
* @return
*/
@RequestMapping("/flat-query-table-detail")
public FlatQueryTableDetail flatQueryTableDetail(String userId, String tableId, HttpServletRequest request, HttpServletResponse response) {
System.out.println(userId);
System.out.println(tableId);
return this.flatQueryTableService.queryFlatQueryTableDetailByTableId(userId, tableId);
}
/** 执行自助查询
* @param executeRequest
* @param request
* @param response
* @return
*/
@RequestMapping("/flat-query")
public FlatQueryResult doFlatQuery(@RequestBody FlatQueryExecuteRequest executeRequest, HttpServletRequest request, HttpServletResponse response) {
System.out.println("doFlatQuery:" + executeRequest.getTableId());
System.out.println("doFlatQuery:" + executeRequest.getQueryConditions().size());
for (FlatQueryCondition condition : executeRequest.getQueryConditions()) {
System.out.println(condition.getFieldName() + " " + condition.getFieldType());
}
return this.flatQueryResultService.getFlatQueryResult(
executeRequest.getTableId(),
executeRequest.getEnterpriseIds(),
executeRequest.getQueryConditions(),
executeRequest.getOrderField(),
executeRequest.getOrderDir(),
executeRequest.getExecDistinct(),
executeRequest.getQueryDataType(),
1000); // 强制 1000 限制
}
/** 获取自助查询下载量评估
* @param executeRequest
* @param request
* @param response
* @return
*/
@RequestMapping("/get-flat-query-download-task-amount")
public GeneralResult getFlatQueryDownloadTaskAmount(@RequestBody FlatQueryExecuteRequest executeRequest, HttpServletRequest request, HttpServletResponse response) {
GeneralResult result = new GeneralResult();
Integer amount = this.flatQueryResultService.estimateFlatQueryDownloadTask(
executeRequest.getTableId(),
executeRequest.getEnterpriseIds(),
executeRequest.getQueryConditions(),
executeRequest.getOrderField(),
executeRequest.getOrderDir(),
executeRequest.getExecDistinct()
);
result.setInfo(String.valueOf(amount));
return result;
}
/** 生成自助查询下载任务
* @param executeRequest
* @param request
* @param response
* @return
*/
@RequestMapping("/build-flat-query-download-task")
public DownloadTask buildDownloadTask(@RequestBody FlatQueryExecuteRequest executeRequest, HttpServletRequest request, HttpServletResponse response) {
return this.flatQueryResultService.buildFlatQueryDownloadTask(
executeRequest.getUserId(),
executeRequest.getName(),
executeRequest.getModuleName(),
executeRequest.getAmount(),
executeRequest.getFormat(),
executeRequest.getTableId(),
executeRequest.getEnterpriseIds(),
executeRequest.getQueryConditions(),
executeRequest.getOrderField(),
executeRequest.getOrderDir(),
executeRequest.getExecDistinct(),
executeRequest.getUseCompress() ? Global.YES : Global.NO,
executeRequest.getQueryDataType(),
executeRequest.getApplyId()
);
}
/** 获取自助查询字段可过滤值
* @param tableId
* @param fieldName
* @param request
* @param response
* @return
*/
@RequestMapping("/flat-query-filter-data")
public List<Object> getFlatQueryTextFilterData(@RequestParam String tableId, @RequestParam String enterpriseIdsText, @RequestParam String fieldName, HttpServletRequest request, HttpServletResponse response) {
String[] enterpriseIdsArr = enterpriseIdsText.split(",");
return this.flatQueryResultService.getFlatQueryFilterData(tableId, CollectionUtils.arrayToList(enterpriseIdsArr), fieldName);
}
/** 查询自定义指标查询
* @param id 指定的自定义指标
*/
@RequestMapping("/my-flat-query")
public MyFlatQuery myFlatQuery(@RequestParam String id, HttpServletRequest request, HttpServletResponse response) {
return this.myFlatQueryService.queryMyFlatQueryById(id);
}
/** 查询自定义指标查询分页
* @param userId 指定的用户主键
* @param fuzzy 模糊查询信息
* @param pageNum 指定分页数量
* @param pageSize 指定每页查询数量
*/
@RequestMapping("/my-flat-query-page")
public Page<MyFlatQuery> myFlatQueryPage(@RequestParam String userId, @RequestParam String fuzzy, @RequestParam Integer pageNum, @RequestParam Integer pageSize, HttpServletRequest request, HttpServletResponse response) {
return this.myFlatQueryService.queryMyFlatQueryPage(userId, fuzzy, pageNum, pageSize); // 限定 10 个/分页
}
/** 创建或保存自定义指标查询
* @param myFlatQuery
* @param request
* @param response
* @return
*/
@RequestMapping("/save-my-flat-query")
public GeneralResult saveMyFlatQuery(@RequestBody MyFlatQuery myFlatQuery, HttpServletRequest request, HttpServletResponse response) {
GeneralResult result = new GeneralResult();
Integer count = 0;
if (myFlatQuery.getId().equals("")) { // 如果是新建
myFlatQuery.setId(String.valueOf((new Date()).getTime()));
myFlatQuery.setUpdateTime(new Date());
count = myFlatQueryService.createMyFlatQuery(myFlatQuery);
} else { // 如果是更新
myFlatQuery.setUpdateTime(new Date());
count = myFlatQueryService.updateMyFlatQuery(myFlatQuery);
} // IF ELSE OVER
result.setResult(true);
result.setInfo(myFlatQuery.getId());
return result;
}
/** 删除指定的自定义指标查询
* @param id
* @param request
* @param response
* @return
*/
@RequestMapping("/delete-my-flat-query")
public GeneralResult deleteMyFlatQuery(@RequestParam String id, HttpServletRequest request, HttpServletResponse response) {
GeneralResult result = new GeneralResult();
Integer isSuccess = myFlatQueryService.deleteMyFlatQuery(id);
result.setInfo(isSuccess.toString());
return result;
}
}
package com.gic.cloud.data.hook.web;
import com.gic.cloud.common.api.base.Page;
import com.gic.cloud.data.hook.api.dto.*;
import com.gic.cloud.data.hook.api.entity.FlatQueryExecuteRequest;
import com.gic.cloud.data.hook.api.entity.GeneralResult;
import com.gic.cloud.data.hook.api.service.IFlatQueryResultService;
import com.gic.cloud.data.hook.api.service.IFreeQueryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
/** 自定义查询相关 Controller
* @author Sam
*/
@Controller
public class FreeQueryController {
/** 自定义查询服务 */
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Autowired
private IFreeQueryService freeQueryService;
/** 获取所有的自定义查询表信息
* @param request
* @param response
* @return
*/
@RequestMapping("/free-query-table-list")
public List<FreeQueryTable> freeQueryTableList(HttpServletRequest request, HttpServletResponse response) {
return this.freeQueryService.getFreeQueryTableList();
}
/** 获取所有的自定义查询记录
* @param userId 指定的用户编号
* @param fuzzy 模糊查询条件
* @param request
* @param response
* @return
*/
@RequestMapping("/free-query-record-list")
public List<FreeQueryRecord> freeQueryRecordList(String userId, String fuzzy, HttpServletRequest request, HttpServletResponse response) {
return this.freeQueryService.getFreeQueryRecordListByUserId(userId, fuzzy); // 限定 10 个/分页
}
/** 创建自定义查询记录
* @param userId 指定的用户编号
* @param name 查询记录名称
* @param content 查询脚本内容
* @param request
* @param response
* @return
*/
@RequestMapping("/create-free-query-record")
public List<FreeQueryRecord> createFreeQueryRecord(String recordId, String userId, String name, String content, HttpServletRequest request, HttpServletResponse response) {
FreeQueryRecord record = new FreeQueryRecord();
record.setId(recordId);
record.setUserId(userId);
record.setName(name);
record.setContent(content);
record.setUpdateTime(new Date());
this.freeQueryService.createFreeQueryRecord(record);
return this.freeQueryService.getFreeQueryRecordListByUserId(userId, ""); // 返回所有集合记录
}
/** 更新自定义查询记录
* @param userId 指定的用户编号
* @param recordId 要更新的记录编号
* @param name 更新的记录名称
* @param content 更新的记录脚本内容
* @param request
* @param response
* @return
*/
@RequestMapping("/update-free-query-record")
public List<FreeQueryRecord> updateFreeQueryRecord(String userId, String recordId, String name, String content, HttpServletRequest request, HttpServletResponse response) {
FreeQueryRecord preRecord = this.freeQueryService.getFreeQueryRecordByUserIdAndRecordId(userId, recordId);
if (preRecord != null) {
preRecord.setName(name);
preRecord.setContent(content);
preRecord.setUpdateTime(new Date());
this.freeQueryService.updateFreeQueryRecord(preRecord);
} // IF OVER
return this.freeQueryService.getFreeQueryRecordListByUserId(userId, ""); // 返回所有集合记录
}
/** 删除指定的自定义查询记录
* @param userId 指定的用户编号
* @param recordId 指定的记录编号
* @param request
* @param response
* @return
*/
@RequestMapping("/delete-free-query-record")
public List<FreeQueryRecord> deleteFreeQueryRecord(String userId, String recordId, HttpServletRequest request, HttpServletResponse response) {
FreeQueryRecord preRecord = this.freeQueryService.getFreeQueryRecordByUserIdAndRecordId(userId, recordId);
if (preRecord != null) {
this.freeQueryService.deleteFreeQueryRecord(recordId);
} // IF OVER
return this.freeQueryService.getFreeQueryRecordListByUserId(userId, ""); // 返回所有集合记录
}
/** 获取自定义查询总数
* @param sql
* @param request
* @param response
* @return
*/
@RequestMapping("/get-free-query-count")
public GeneralResult getFreeQueryCount(String sql, String enterpriseId, HttpServletRequest request, HttpServletResponse response) {
GeneralResult result = new GeneralResult();
result.setInfo(String.valueOf(this.freeQueryService.getFreeQueryCount(sql, enterpriseId)));
return result;
}
/** 获取自定义查询结果
* @param sql
* @param request
* @param response
* @return
*/
@RequestMapping("/get-free-query-result")
public FreeQueryResult getFreeQueryResult(String sql, String enterpriseId, Integer queryDataType, Integer desensiType, HttpServletRequest request, HttpServletResponse response) {
return this.freeQueryService.getFreeQueryResult( "SELECT tmpTable.* FROM (" + sql + ") AS tmpTable LIMIT 1000", enterpriseId, queryDataType, desensiType);
}
/** 生成自助查询下载任务
* @param userId
* @param name
* @param amount
* @param format
* @param sql
* @param request
* @param response
* @return
*/
@RequestMapping("/build-free-query-download-task")
public DownloadTask buildDownloadTask(String userId, String name, Integer amount, String format, String sql, String enterpriseId, Boolean useCompress, Integer dataType, String applyId, Integer desensiType, HttpServletRequest request, HttpServletResponse response) {
return this.freeQueryService.buildFreeQueryDownloadTask(userId, name, amount, format, sql, enterpriseId, useCompress, dataType, applyId, desensiType);
}
/** 获取指定表明的所有字段
* @param tableName
* @param request
* @param response
* @return
*/
@RequestMapping("/get-columns-by-table")
public List<String> getColumnsByTable(String tableName, HttpServletRequest request, HttpServletResponse response) {
return this.freeQueryService.getColumnsByTable(tableName);
}
}
package com.gic.cloud.data.hook.web;
import com.alibaba.fastjson.JSON;
import com.gic.cloud.data.hook.api.dto.FlatQueryResult;
import com.gic.cloud.data.hook.api.dto.FlatQueryTable;
import com.gic.cloud.data.hook.api.entity.FlatQueryCondition;
import com.gic.cloud.data.hook.api.entity.FlatQueryFieldType;
import com.gic.cloud.data.hook.api.service.IFlatQueryResultService;
import com.gic.cloud.data.hook.api.service.IFlatQueryTableService;
import com.google.common.collect.Lists;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@Controller
public class TestController {
private org.slf4j.Logger logger= LoggerFactory.getLogger(TestController.class);
@Autowired
private IFlatQueryTableService flatQueryTableService;
@Autowired
private IFlatQueryResultService flatQueryResultService;
// @ResponseBody
// @RequestMapping("/test2")
// public String test2(HttpServletRequest request, HttpServletResponse response) {
// return "hello world";
// }
// @ResponseBody
// @RequestMapping("/test")
// public FlatQueryTable test(HttpServletRequest request, HttpServletResponse response) {
// FlatQueryTable table = this.flatQueryTableService.queryFlatQueryTableById("test_table");
// logger.debug("json 格式为 " + JSON.toJSONString(table));
// return table;
// }
// @ResponseBody
// @RequestMapping("/test2")
// public FlatQueryResult test2(HttpServletRequest request, HttpServletResponse response) {
// // 准备查询条件
// List<FlatQueryCondition> conditions = Lists.newArrayList();
// FlatQueryCondition testCondition = new FlatQueryCondition();
// testCondition.setFieldName("order_id");
// testCondition.setFieldType(FlatQueryFieldType.TEXT);
// conditions.add(testCondition);
// // 进行查询
// FlatQueryResult result = this.flatQueryResultService.getFlatQueryResult("extract_order_information", conditions, "", "", false, 500000);
//
// return result;
// }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--<import resource="classpath:data-hook-init.xml"/>--><!-- data-hook 所有项目使用的 dubbo 环境配置(位于 data-hook-api/resource) -->
<!--<import resource="classpath*:applicationContext-sharding-db.xml"/>-->
<import resource="classpath*:applicationContext-init.xml"/>
<import resource="data-hook-dubbo-settings.xml"/><!-- data-hook 所有项目初始化参数加载(位于 data-hook-api/resource)-->
<import resource="data-hook-dubbo-config.xml"/><!-- data-hook web 项目使用的 dubbo 引用服务配置 -->
</beans>
<?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:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<context:component-scan base-package="com.gic.cloud.data.hook" />
<!-- 应用名称 -->
<dubbo:application name="gic-cloud-data-hook"/>
<!-- 外部服务端口 -->
<dubbo:protocol name="dubbo" port="2181"/>
<!-- 引用的 Dubbo 服务 -->
<dubbo:reference interface="com.gic.cloud.data.hook.api.service.IFlatQueryTableService" id="flatQueryTableService" timeout="120000" retries="0" />
<dubbo:reference interface="com.gic.cloud.data.hook.api.service.IFlatQueryResultService" id="flatQueryResultService" timeout="120000" retries="0" />
<dubbo:reference interface="com.gic.cloud.data.hook.api.service.IFreeQueryService" id="freeQueryService" timeout="120000" retries="0" />
<dubbo:reference interface="com.gic.cloud.data.hook.api.service.IDownloadTaskService" id="downloadTaskService" timeout="120000" retries="0" />
<dubbo:reference interface="com.gic.cloud.data.hook.api.service.IMyFlatQueryService" id="myFlatQueryService" timeout="120000" retries="0" />
<!--<dubbo:reference interface="com.gic.enterprise.api.service.EnterPerformanceService" id="enterPerformanceService" timeout="10000" retries="0" />
<dubbo:reference interface="com.gic.cloud.communicate.api.service.performance.CloudPerformanceService" id="cloudPerformanceService" timeout="10000" retries="0" />
<dubbo:reference interface="com.gic.cloud.communicate.api.service.store.AreaService" id="areaService" timeout="10000" retries="0" />-->
<!-- 使用zookeeper注册中心暴露服务地址 -->
<!--<dubbo:registry address="zookeeper://localhost:2181" protocol="dubbo" id="localAdd"/>-->
<!--<dubbo:registry address="zookeeper://115.159.182.172:2199" protocol="dubbo" id="remoteAdd"/>-->
<!--<dubbo:registry address="zookeeper://localhost:2181|zookeeper://115.159.182.172:2199" protocol="dubbo"/>-->
</beans>
\ 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:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!--<dubbo:registry address="zookeeper://123.207.187.158:2199" protocol="dubbo" id="remoteAddress" register="false" timeout="120000" file="dubbo/remote/${dubbo.registry.file}/dubbo.cache"/>-->
<dubbo:registry address="zookeeper://localhost:2181" protocol="dubbo" id="localAddress" timeout="120000" file="dubbo/local/${dubbo.registry.file}/dubbo.cache"/>
<dubbo:registry address="zookeeper://localhost:2181" protocol="dubbo" id="remoteAddress" timeout="120000" file="dubbo/local/${dubbo.registry.file}/dubbo.cache"/>
<dubbo:provider timeout="120000" retries="0" registry="localAddress,remoteAddress"/>
<dubbo:consumer timeout="120000" retries="0" check="false" registry="localAddress,remoteAddress"/>
<!--<bean id="brave" class="com.github.kristofa.brave.dubbo.BraveFactoryBean" p:serviceName="${dubbo.registry.file}" p:zipkinHost="http://123.207.187.158:9411/" p:rate="1.0" />-->
</beans>
\ No newline at end of file
dubbo.spring.config=classpath*\:applicationContext-conf.xml
dubbo.protocol.dubbo.payload=41557050
\ No newline at end of file
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
<context:component-scan base-package="com.gic.cloud.data.hook" />
<!-- 启动对@AspectJ注解的支持 -->
<!--<aop:aspectj-autoproxy />-->
<mvc:resources location="/images/" mapping="/images/**" />
<mvc:resources location="/js/" mapping="/js/**" />
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxUploadSize" value="-1"></property>
</bean>
<!-- 明确js/css/jpg/gif等静态资源的访问不通过Constroller -->
<mvc:default-servlet-handler />
<!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射 -->
<mvc:annotation-driven>
<!-- 不使用默认的消息转换器 -->
<mvc:message-converters register-defaults="false">
<!-- 配置Spring的转换器 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
<!-- 配置fastjson中实现HttpMessageConverter接口的转换器 -->
<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<!-- 加入支持的媒体类型,返回contentType -->
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 (解决中文乱码) -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<!--默认是 iso-8859-1 -->
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
</list>
</property>
</bean>
<!---->
<!--<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">-->
<!--<property name="converters">-->
<!--<set>-->
<!--<bean class="com.gic.commons.util.DateConverter"></bean>-->
<!--</set>-->
<!--</property>-->
<!--</bean>-->
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<!-- 扩展名至mimeType的映射,即 http://xxxx/rest.json 映射为 application/json http://xxxx/rest.xml
映射为 application/xml -->
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<!-- 用于开启 http://xxxx/rest?format=json 的支持 -->
<property name="favorParameter" value="true" />
<property name="defaultViews">
<list>
<!-- JSON View -->
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
</bean>
<!-- XML View -->
<!-- <bean name="xStreamMarshallingView" class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller"> <bean class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="autodetectAnnotations" value="false"/> </bean> </property>
</bean> -->
<!-- JAXB XML View -->
</list>
</property>
<!-- 设置为true以忽略对Accept Header的支持 -->
<property name="ignoreAcceptHeader" value="true" />
</bean>
<!-- 视图解析器配置 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<!-- If no extension matched, use JSP view -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="order" value="2" />
<property name="prefix">
<value>/WEB-INF/view/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Data-Hook-Web</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-conf.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="ExternalSystem" externalSystem="Maven" />
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ 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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gic</groupId>
<artifactId>gic-cloud</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>${project.artifactId}</name>
<modules>
<module>gic-cloud-data-hook</module>
<module>gic-cloud-data-hook-service</module>
<module>gic-cloud-data-hook-api</module>
</modules>
</project>
\ No newline at end of file
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