Commit 234b680e authored by sheteng's avatar sheteng

init

parents
#Thu Jul 22 10:20:45 CST 2021
gradle.version=6.8
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/../../../../:\project\appsflyer_advert_new_flink\.idea/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/
This diff is collapsed.
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Gradle Imported" enabled="true">
<outputRelativeToContentRoot value="true" />
<processorPath useClasspath="false">
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.18/481f5bfed3ae29f656eedfe9e98c8365b8ba5c57/lombok-1.18.18.jar" />
</processorPath>
<module name="appsflyer_advert_new_flink.main" />
<module name="appsflyer_advert_new_flink.test" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel target="1.8" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="MavenRepo" />
<option name="name" value="MavenRepo" />
<option name="url" value="https://repo.maven.apache.org/maven2/" />
</remote-repository>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="libraries-with-intellij-classes">
<option name="intellijApiContainingLibraries">
<list>
<LibraryCoordinatesState>
<option name="artifactId" value="ideaIU" />
<option name="groupId" value="com.jetbrains.intellij.idea" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="ideaIU" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="ideaIC" />
<option name="groupId" value="com.jetbrains.intellij.idea" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="ideaIC" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="pycharmPY" />
<option name="groupId" value="com.jetbrains.intellij.pycharm" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="pycharmPY" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="pycharmPC" />
<option name="groupId" value="com.jetbrains.intellij.pycharm" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="pycharmPC" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="clion" />
<option name="groupId" value="com.jetbrains.intellij.clion" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="clion" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="riderRD" />
<option name="groupId" value="com.jetbrains.intellij.rider" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="riderRD" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="goland" />
<option name="groupId" value="com.jetbrains.intellij.goland" />
</LibraryCoordinatesState>
<LibraryCoordinatesState>
<option name="artifactId" value="goland" />
<option name="groupId" value="com.jetbrains" />
</LibraryCoordinatesState>
</list>
</option>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="appsflyer_advert_new_flink" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" type="JAVA_MODULE" version="4" />
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
buildscript {
repositories {
mavenCentral()
}
}
apply plugin: "java"
apply plugin: "application"
group 'com.fshark.overseas.advert'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
ext {
javaVersion = '1.8'
flinkVersion = '1.11.1'
scalaBinaryVersion = '2.12'
slf4jVersion = '1.7.7'
log4jVersion = '1.2.17'
}
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
//applicationDefaultJvmArgs = ["-Dlog4j.configuration=log4j.properties"]
mainClassName = 'com.fshark.overseas.advert.AppsflyerAnalyze'
repositories {
mavenCentral()
}
// NOTE: We cannot use "compileOnly" or "shadow" configurations since then we could not run code
// in the IDE or with "gradle run". We also cannot exclude transitive dependencies from the
// shadowJar yet (see https://github.com/johnrengelman/shadow/issues/159).
// -> Explicitly define the // libraries we want to be included in the "flinkShadowJar" configuration!
configurations {
flinkShadowJar // dependencies which go into the shadowJar
// always exclude these (also from transitive dependencies) since they are provided by Flink
flinkShadowJar.exclude group: 'org.apache.flink', module: 'force-shading'
flinkShadowJar.exclude group: 'com.google.code.findbugs', module: 'jsr305'
flinkShadowJar.exclude group: 'org.slf4j'
flinkShadowJar.exclude group: 'log4j'
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
compile 'com.github.ben-manes.caffeine:caffeine:2.8.5'
compile 'com.zaxxer:HikariCP:3.4.5'
compile group: 'org.jdbi', name: 'jdbi3-core', version: '3.18.0'
compile group: 'org.jdbi', name: 'jdbi3-sqlobject', version: '3.18.0'
compile 'redis.clients:jedis:3.5.1'
compile 'com.squareup.okhttp3:okhttp:3.14.1'
implementation 'com.google.code.gson:gson:2.8.4'
compile 'com.alibaba:fastjson:1.2.62'
compile "org.apache.flink:flink-connector-kafka_${scalaBinaryVersion}:${flinkVersion}"
// https://mvnrepository.com/artifact/mysql/mysql-connector-java
implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.25'
compile "org.apache.flink:flink-statebackend-rocksdb_${scalaBinaryVersion}:${flinkVersion}"
compile "org.apache.flink:flink-java:${flinkVersion}"
compile "org.apache.flink:flink-streaming-java_${scalaBinaryVersion}:${flinkVersion}"
compile "org.apache.flink:flink-clients_${scalaBinaryVersion}:${flinkVersion}"
implementation 'ru.yandex.clickhouse:clickhouse-jdbc:0.1.52'
// --------------------------------------------------------------
// Dependencies that should be part of the shadow jar, e.g.
// connectors. These must be in the flinkShadowJar configuration!
// --------------------------------------------------------------
//flinkShadowJar "org.apache.flink:flink-connector-kafka-0.11_${scalaBinaryVersion}:${flinkVersion}"
compile "org.springframework:spring-beans:5.1.6.RELEASE"
compileOnly "log4j:log4j:${log4jVersion}"
compileOnly "org.slf4j:slf4j-log4j12:${slf4jVersion}"
compileOnly 'org.projectlombok:lombok:1.18.18'
annotationProcessor 'org.projectlombok:lombok:1.18.18'
testCompileOnly 'org.projectlombok:lombok:1.18.18'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.18'
// Add test dependencies here.
testCompile group: 'it.ozimov', name: 'embedded-redis', version: '0.7.2'
testCompile "org.mockito:mockito-core:2.+"
testCompile "org.apache.flink:flink-test-utils_${scalaBinaryVersion}:${flinkVersion}"
}
test {
useJUnitPlatform()
}
// make compileOnly dependencies available for tests:
sourceSets {
main.compileClasspath += configurations.flinkShadowJar
main.runtimeClasspath += configurations.flinkShadowJar
test.compileClasspath += configurations.flinkShadowJar
test.runtimeClasspath += configurations.flinkShadowJar
javadoc.classpath += configurations.flinkShadowJar
}
run.classpath = sourceSets.main.runtimeClasspath
jar {
manifest {
attributes 'Built-By': System.getProperty('user.name'),
'Build-Jdk': System.getProperty('java.version')
}
}
com/fshark/overseas/advert/modle/AppsFlyerWithAccountEvent.java
com.fshark.overseas.advert.modle.AppsFlyerWithAccountEvent
com/fshark/overseas/advert/modle/PlatformEnum.java
com.fshark.overseas.advert.modle.PlatformEnum
com/fshark/overseas/advert/util/Common.java
com.fshark.overseas.advert.util.Common
com/fshark/overseas/advert/util/AppConfig.java
com.fshark.overseas.advert.util.AppConfig
com.fshark.overseas.advert.util.AppConfig$AppConfigBuilder
com/fshark/overseas/advert/entity/dao/MetricsDetailDao.java
com.fshark.overseas.advert.entity.dao.MetricsDetailDao
com/fshark/overseas/advert/entity/RegisterAccount.java
com.fshark.overseas.advert.entity.RegisterAccount
com.fshark.overseas.advert.entity.RegisterAccount$RegisterAccountBuilder
com/fshark/overseas/advert/processor/ActivationAggregateFunction.java
com.fshark.overseas.advert.processor.ActivationAggregateFunction
com/fshark/overseas/advert/modle/mapping/Media.java
com.fshark.overseas.advert.modle.mapping.Media
com.fshark.overseas.advert.modle.mapping.Media$MediaBuilder
com/fshark/overseas/advert/entity/dao/OrderDao.java
com.fshark.overseas.advert.entity.dao.OrderDao
com/fshark/overseas/advert/entity/mapper/RegisterAccountMapper.java
com.fshark.overseas.advert.entity.mapper.RegisterAccountMapper
com/fshark/overseas/advert/entity/GameAccount.java
com.fshark.overseas.advert.entity.GameAccount
com.fshark.overseas.advert.entity.GameAccount$GameAccountBuilder
com/fshark/overseas/advert/util/DatabaseUtils.java
com.fshark.overseas.advert.util.DatabaseUtils
com/fshark/overseas/advert/entity/dao/GameMappingDao.java
com.fshark.overseas.advert.entity.dao.GameMappingDao
com/fshark/overseas/advert/modle/metrics/ActivationMetrics.java
com.fshark.overseas.advert.modle.metrics.ActivationMetrics
com/fshark/overseas/advert/modle/metrics/BaseMetrics.java
com.fshark.overseas.advert.modle.metrics.BaseMetrics
com/fshark/overseas/advert/modle/mapping/AdMapping.java
com.fshark.overseas.advert.modle.mapping.AdMapping
com/fshark/overseas/advert/modle/AppsflyerRoleLogin.java
com.fshark.overseas.advert.modle.AppsflyerRoleLogin
com/fshark/overseas/advert/util/JdbiContext.java
com.fshark.overseas.advert.util.JdbiContext
com/fshark/overseas/advert/processor/GameAdMappingProcessor.java
com.fshark.overseas.advert.processor.GameAdMappingProcessor
com/fshark/overseas/advert/util/RedisClientUtils.java
com.fshark.overseas.advert.util.RedisClientUtils
com/fshark/overseas/advert/processor/ActivitionProcess.java
com.fshark.overseas.advert.processor.ActivitionProcess
com/fshark/overseas/advert/processor/StoreMetricProcess.java
com.fshark.overseas.advert.processor.StoreMetricProcess
com/fshark/overseas/advert/sink/PurchaseSink.java
com.fshark.overseas.advert.sink.PurchaseSink
com/fshark/overseas/advert/modle/mapping/MediaCampaign.java
com.fshark.overseas.advert.modle.mapping.MediaCampaign
com/fshark/overseas/advert/modle/OrderData.java
com.fshark.overseas.advert.modle.OrderData
com/fshark/overseas/advert/modle/AppsFlyerEvent.java
com.fshark.overseas.advert.modle.AppsFlyerEvent
com/fshark/overseas/advert/processor/ParseEventProcessor.java
com.fshark.overseas.advert.processor.ParseEventProcessor
com/fshark/overseas/advert/processor/CreateRoleProcess.java
com.fshark.overseas.advert.processor.CreateRoleProcess
com/fshark/overseas/advert/processor/ActivationResultWindows.java
com.fshark.overseas.advert.processor.ActivationResultWindows
com/fshark/overseas/advert/util/DateUtils.java
com.fshark.overseas.advert.util.DateUtils
com/fshark/overseas/advert/util/Constants.java
com.fshark.overseas.advert.util.Constants
com/fshark/overseas/advert/processor/RemainProcess.java
com.fshark.overseas.advert.processor.RemainProcess
com/fshark/overseas/advert/modle/AppsflyerPurchase.java
com.fshark.overseas.advert.modle.AppsflyerPurchase
com/fshark/overseas/advert/modle/EventTypeEnum.java
com.fshark.overseas.advert.modle.EventTypeEnum
com/fshark/overseas/advert/util/DateTimeUtils.java
com.fshark.overseas.advert.util.DateTimeUtils
com/fshark/overseas/advert/entity/mapper/GameAccountMapper.java
com.fshark.overseas.advert.entity.mapper.GameAccountMapper
com/fshark/overseas/advert/processor/RoleLoginProcess.java
com.fshark.overseas.advert.processor.RoleLoginProcess
com/fshark/overseas/advert/modle/metrics/RemainMetrics.java
com.fshark.overseas.advert.modle.metrics.RemainMetrics
com/fshark/overseas/advert/entity/dao/GameAccountDao.java
com.fshark.overseas.advert.entity.dao.GameAccountDao
com/fshark/overseas/advert/modle/mapping/Game.java
com.fshark.overseas.advert.modle.mapping.Game
com/fshark/overseas/advert/util/ClickFeedbackRecord.java
com.fshark.overseas.advert.util.ClickFeedbackRecord
com.fshark.overseas.advert.util.ClickFeedbackRecord$ClickFeedbackRecordBuilder
com/fshark/overseas/advert/entity/mapper/MediaMapper.java
com.fshark.overseas.advert.entity.mapper.MediaMapper
com/fshark/overseas/advert/sink/RemainSink.java
com.fshark.overseas.advert.sink.RemainSink
com/fshark/overseas/advert/AppsflyerAnalyze.java
com.fshark.overseas.advert.AppsflyerAnalyze
com/fshark/overseas/advert/entity/dao/MetricsDao.java
com.fshark.overseas.advert.entity.dao.MetricsDao
com/fshark/overseas/advert/sink/ActicitionSink.java
com.fshark.overseas.advert.sink.ActicitionSink
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#!/usr/bin/env sh
#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
exec "$JAVACMD" "$@"
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
rootProject.name = 'appsflyer_advert_new_flink'
Manifest-Version: 1.0
Main-Class: com.fshark.overseas.advert.AppsflyerAnalyze
package com.fshark.overseas.advert;
import com.fshark.overseas.advert.modle.AppsFlyerEvent;
import com.fshark.overseas.advert.modle.EventTypeEnum;
import com.fshark.overseas.advert.modle.metrics.ActivationMetrics;
import com.fshark.overseas.advert.modle.metrics.RemainMetrics;
import com.fshark.overseas.advert.processor.*;
import com.fshark.overseas.advert.sink.ActicitionSink;
import com.fshark.overseas.advert.sink.PurchaseSink;
import com.fshark.overseas.advert.sink.RemainSink;
import com.fshark.overseas.advert.util.AppConfig;
import org.apache.flink.api.common.restartstrategy.RestartStrategies;
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows;
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
/**
* 广告计算
*/
public class AppsflyerAnalyze {
static AppConfig loadConfigFromArgs(String[] args) throws Exception {
ParameterTool parameters = ParameterTool.fromArgs(args);
AppConfig appConfig = new AppConfig();
try {
appConfig.setSourceKafkaBootstrapServers(parameters.get("source-kafka-bootstrap-servers"));
appConfig.setSourceKafkaGroupId(parameters.get("source-kafka-group-id"));
appConfig.setSourceKafkaTopic(parameters.get("source-kafka-topic"));
appConfig.setDbHost(parameters.get("jdbc-host"));
appConfig.setDbUser(parameters.get("jdbc-user"));
appConfig.setDbPassword(parameters.get("jdbc-password"));
} catch (Exception e) {
System.err.println("Place set args: " +
" --source-kafka-bootstrap-servers <source-kafka-bootstrap-servers>" +
" --source-kafka-group-id <source-kafka-group-id>" +
" --source-kafka-topic <source-kafka-topic>" +
" --jdbc-host <jdbc-host> " +
" --jdbc-user <jdbc-user> " +
" --jdbc-password <jdbc-password> ");
throw e;
}
return appConfig;
}
public static void main(String[] args) throws Exception {
AppConfig appConfig = loadConfigFromArgs(args);
final StreamExecutionEnvironment sse = StreamExecutionEnvironment.getExecutionEnvironment();
sse.setParallelism(1);
sse.enableCheckpointing(1000 * 60 * 10);
sse.setRestartStrategy(RestartStrategies.fixedDelayRestart(Integer.MAX_VALUE, org.apache.flink.api.common.time.Time.of(10, TimeUnit.SECONDS)));
//source设置
Properties properties = new Properties();
properties.setProperty("bootstrap.servers", appConfig.getSourceKafkaBootstrapServers());
properties.setProperty("group.id", appConfig.getSourceKafkaGroupId());
properties.setProperty("auto.offset.reset", "earliest");
FlinkKafkaConsumer<String> dataConsumer = new FlinkKafkaConsumer<>(appConfig.getSourceKafkaTopic(), new SimpleStringSchema(), properties);
DataStream<AppsFlyerEvent> adEventDataStream = sse.addSource(dataConsumer)
.flatMap(new ParseEventProcessor())
.uid("parse-event")
.name("parse-event")
.shuffle();
adEventDataStream.print();
//广告指标(激活)
DataStream<ActivationMetrics> activitionMetricStream = adEventDataStream
.filter(EventTypeEnum::installEvent)
.flatMap(new ActivitionProcess(appConfig))
.uid("activition-event")
.name("activition-event");
DataStream<ActivationMetrics> createRoleMetricStream = adEventDataStream
.filter(EventTypeEnum::createRoleEvent)
.flatMap(new CreateRoleProcess(appConfig))
.uid("create-role-event")
.name("create-role-event");
//注册\留存
DataStream<ActivationMetrics> loginRoleMetricStream = adEventDataStream
.filter(EventTypeEnum::roleLoginEvent)
.flatMap(new RoleLoginProcess(appConfig))
.uid("role-login-event")
.name("role-login-event");
//角色注册激活预聚合
DataStream<ActivationMetrics> activitionResult = activitionMetricStream
.union(loginRoleMetricStream, createRoleMetricStream)
.keyBy(ActivationMetrics::getKey)
.window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
.aggregate(new ActivationAggregateFunction(), new ActivationResultWindows())
.uid("activation-agg-event")
.name("activation-agg-event");
// 角色注册激活写入
activitionResult.addSink(new ActicitionSink(appConfig))
.uid("login-sink-event")
.name("login-sink-event");
//
// //指标详细记录
activitionMetricStream.union(loginRoleMetricStream, createRoleMetricStream)
.timeWindowAll(Time.minutes(1)).process(new StoreMetricProcess(appConfig))
.uid("metric-detail")
.name("metric-detail");
//// 留存预聚合
DataStream<RemainMetrics> remainResult = loginRoleMetricStream.flatMap(new RemainProcess())
.keyBy(RemainMetrics::getRemind_key)
.window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
.sum("user_num")
.uid("remain-event")
.name("remain-event");
//留存写入
remainResult.addSink(new RemainSink(appConfig))
.uid("remain-sink-event")
.name("remain-sink-event");
// 订单信息
adEventDataStream.filter(EventTypeEnum::orderEvent)
.addSink(new PurchaseSink(appConfig))
.uid("order-event")
.name("order-event");
sse.execute("appsflyer-analyze");
}
}
package com.fshark.overseas.advert.entity;
import lombok.Builder;
import lombok.Data;
import java.sql.Timestamp;
import java.time.LocalDateTime;
@Builder
@Data
public class GameAccount {
private String did;
private String gameId;
private String platform;
private String mediaSource;
private String event_type;
private String event_time;
}
package com.fshark.overseas.advert.entity;
import lombok.Builder;
import lombok.Data;
@Builder
@Data
public class RegisterAccount {
private String reg_time;
private String activationTime;
private String retargetingTime;
}
package com.fshark.overseas.advert.entity.dao;
import com.fshark.overseas.advert.entity.GameAccount;
import com.fshark.overseas.advert.entity.RegisterAccount;
import com.fshark.overseas.advert.entity.mapper.GameAccountMapper;
import com.fshark.overseas.advert.entity.mapper.RegisterAccountMapper;
import com.fshark.overseas.advert.modle.AppsFlyerEvent;
import org.apache.kafka.common.protocol.types.Field;
import org.jdbi.v3.sqlobject.config.RegisterRowMapper;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import java.util.Optional;
public interface GameAccountDao {
/**
* 根据主键获取当前账户信息
*
* @param
* @return
*/
@SqlQuery("SELECT * FROM appsflyer_activation_devices WHERE game_id=:game_id AND uid=:uid And platform =:platform AND event_type =:event_type order by event_time limit 1")
@RegisterRowMapper(GameAccountMapper.class)
Optional<GameAccount> findByPrimary(@BindBean AppsFlyerEvent event, @Bind("event_type") String event_type);
@SqlUpdate("insert into appsflyer_activation_devices (`platform`,`did`, `uid`, `region`, `game_id`,`media_source`,`campaign_id`,`ad_set_id`,`ad_id`,`ip`, `time_zone`,`event_type`,`event_time`) " +
"values ( :platform,:did ,:uid, :region, :game_id, :media_source, :campaign_id,:ad_set_id, :ad_id, :ip, :time_zone,'activition',:reg_time) ")
void insertActivition(@BindBean AppsFlyerEvent event, @Bind("reg_time") String reg_time);
@SqlUpdate("insert into appsflyer_activation_devices (`platform`,`did`, `uid`, `region`, `game_id`,`media_source`,`campaign_id`,`ad_set_id`,`ad_id`,`ip`, `time_zone`,`event_type`,`event_time`) " +
" values ( :platform,:did ,:uid, :region, :game_id, :media_source, :campaign_id,:ad_set_id, :ad_id, :ip, :time_zone,'register',:reg_time ) ")
void insertRegister(@BindBean AppsFlyerEvent value, @Bind("reg_time") String reg_time);
@SqlUpdate("insert into appsflyer_activation_devices (`platform`,`did`, `uid`, `region`, `game_id`,`media_source`,`campaign_id`,`ad_set_id`,`ad_id`,`ip`, `time_zone`,`event_type`,`event_time`) " +
" values ( :platform,:did ,:uid, :region, :game_id, :media_source, :campaign_id,:ad_set_id, :ad_id, :ip, :time_zone,'rolelogin',:event_time ) ")
void insertRoleLogin(@BindBean AppsFlyerEvent value);
@SqlUpdate("insert into appsflyer_activation_devices (`platform`,`did`, `uid`, `region`, `game_id`,`media_source`,`campaign_id`,`ad_set_id`,`ad_id`,`ip`, `time_zone`,`event_type`,`event_time`) " +
" values ( :platform,:did ,:uid, :region, :game_id, :media_source, :campaign_id,:ad_set_id, :ad_id, :ip, :time_zone,'pauchase',:event_time ) ")
void insertPauchase(@BindBean AppsFlyerEvent value);
}
package com.fshark.overseas.advert.entity.dao;
import com.fshark.overseas.advert.entity.mapper.MediaMapper;
import com.fshark.overseas.advert.modle.AppsFlyerEvent;
import com.fshark.overseas.advert.modle.mapping.Media;
import org.jdbi.v3.sqlobject.config.RegisterRowMapper;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import java.util.Optional;
/**
* 游戏广告相关的映射
*/
public interface GameMappingDao {
/**
* 拉取游戏
*/
@SqlQuery("select count(1) from game where platform_id = :platform_id and af_app_id = :game_id")
boolean findGameByPrimary(@BindBean AppsFlyerEvent event, @Bind("platform_id") int platform_id);
@SqlUpdate("insert into game (`platform_id`, `af_app_id`, `af_app_name`, `app_id`,`select_time_zone`) values (:platform_id,:game_id,:app_name,:app_id,:select_time_zone)")
void saveGame(@BindBean AppsFlyerEvent value, @Bind("platform_id") int platform_id);
@SqlQuery("select * from media where af_media_id = :media_source")
@RegisterRowMapper(MediaMapper.class)
Optional<Media> findMediaByPrimary(@BindBean AppsFlyerEvent value);
@SqlUpdate("insert into media (`af_media_id`) values (:media_source)")
void saveMediaSource(@BindBean AppsFlyerEvent value);
@SqlQuery("select count(1) from adgroup_media_mapping where af_media_id = :media_source and af_group_id = :campaign_id ")
boolean existsMediaCampaign(@BindBean AppsFlyerEvent appsFlyerEvent);
@SqlUpdate("insert into adgroup_media_mapping (`media_id`, `af_media_id`, `af_group_id`, `af_group_name`) values (:id, :media_source, :campaign_id, :campaign)")
void saveMediaCampaign(@BindBean AppsFlyerEvent appsFlyerEvent, @BindBean Media media);
@SqlUpdate("insert into ad_mapping (`media_id`, `af_media_id`, `af_ad_group_id`, `af_ad_group_name`, `af_ad_plan_id`, `af_ad_plan_name`, `af_ad_id`, `af_ad_name`) " +
" values (:id, :media_source , :campaign_id, :campaign, :ad_set_id, :ad_set, :ad_id, :ad) on duplicate key update af_ad_group_name = values(af_ad_group_name), af_ad_plan_name = values(af_ad_plan_name), af_ad_name = values(af_ad_name)")
void saveAdMapping(@BindBean AppsFlyerEvent appsFlyerEvent, @BindBean Media media);
}
package com.fshark.overseas.advert.entity.dao;
import com.fshark.overseas.advert.modle.metrics.ActivationMetrics;
import com.fshark.overseas.advert.modle.metrics.RemainMetrics;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
/**
*
*/
public interface MetricsDao {
/**
* 更新指标表的注册创角等
* @param event
*/
@SqlUpdate("insert into appsflyer_metrics" +
" (`data_date`,`data_hour`,`time_zone`,`region`, `platform`, `game_id`, `media_source`, `campaign_id` ,`ad_set_id`,`ad_id`,`channel`,`data_activation`,`data_register`,`data_device_register`,`data_create_role`,`data_day_act_register`,`data_day_register_create`,`data_active_day_dau`,`data_type`)" +
" values (:data_date,:data_hour,:time_zone,:region,:platform,:game_id,:media_source,:campaign_id,:ad_set_id,:ad_id,:channel,:data_activation,:data_register,:data_device_register,:data_create_role,:data_day_act_register,:data_day_register_create,:data_active_day_dau,:data_type) ")
void insertActivationMetrics(@BindBean ActivationMetrics event);
@SqlUpdate("insert into appsflyer_retention " +
" (`data_date`,`region`, `platform`, `game_id`, `media_source`, `campaign_id` ,`ad_set_id`,`ad_id`,`currency`,`register_num`)" +
" values (:data_date,:region,:platform,:game_id,:media_source,:campaign_id,:ad_set_id,:ad_id,'KRW',:data_register)")
void insertRegisterNum(@BindBean ActivationMetrics event);
}
package com.fshark.overseas.advert.entity.dao;
import com.fshark.overseas.advert.modle.metrics.ActivationMetrics;
import org.jdbi.v3.sqlobject.customizer.Bind;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
public interface MetricsDetailDao {
@SqlUpdate("insert into appsflyer_metrics_detail" +
" (`uid`,`data_date`,`data_hour`,`time_zone`,`region`, `platform`, `game_id`, `media_source`, `campaign_id` ,`ad_set_id`,`ad_id`,`channel`,`data_type`,`metric_name`,`metric_value`)" +
" values(:uid,:data_date,:data_hour,:time_zone,:region,:platform,:game_id,:media_source,:campaign_id,:ad_set_id,:ad_id,:channel,:data_type,:column,'1')")
void insertMetricDetail(@BindBean ActivationMetrics activationMetrics, @Bind("column") String column);
}
package com.fshark.overseas.advert.entity.dao;
import com.fshark.overseas.advert.modle.OrderData;
import org.jdbi.v3.sqlobject.customizer.BindBean;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
public interface OrderDao {
@SqlUpdate("insert into appsflyer_pay_record (region, did, uid,platform, game_id, media_source, campaign_id, ad_set_id,ad_id, " +
" pay_time, money, currency, order_no, reg_time, activation_time, time_zone ,channel,data_type)" +
" values(:region, :did, :uid, :platform, :game_id, :media_source, :campaign_id, :ad_set_id , :ad_id," +
" :pay_time, :revenue,:currency,:orderno,:reg_time,:activation_time,:time_zone,:channel,:data_type)")
void insertOrder(@BindBean OrderData orderData);
// @SqlUpdate("insert into appsflyer_order_accumulative" +
// " (`ds`,`region`, `platform`, `game_id`, `media_source`, `campaign_id` ,`ad_set_id`,`ad_id`,`currency`,`%s`" +
// " values()")
// void insertLtv(@BindBean OrderData orderData, int pay_user);
}
package com.fshark.overseas.advert.entity.mapper;
import com.fshark.overseas.advert.entity.GameAccount;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import java.sql.ResultSet;
import java.sql.SQLException;
public class GameAccountMapper implements RowMapper<GameAccount> {
@Override
public GameAccount map(ResultSet rs, StatementContext ctx) throws SQLException {
return GameAccount.builder()
.gameId(rs.getString("game_id"))
.did(rs.getString("did"))
.platform(rs.getString("platform"))
.mediaSource(rs.getString("media_source"))
.event_type(rs.getString("event_type"))
.event_time(rs.getString("event_time"))
.build();
}
}
package com.fshark.overseas.advert.entity.mapper;
import com.fshark.overseas.advert.modle.mapping.Media;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MediaMapper implements RowMapper<Media> {
@Override
public Media map(ResultSet rs, StatementContext ctx) throws SQLException {
return Media.builder()
.media_source(rs.getString("af_media_id"))
.id(rs.getLong("id"))
.build();
}
}
package com.fshark.overseas.advert.entity.mapper;
import com.fshark.overseas.advert.entity.RegisterAccount;
import org.jdbi.v3.core.mapper.RowMapper;
import org.jdbi.v3.core.statement.StatementContext;
import java.sql.ResultSet;
import java.sql.SQLException;
public class RegisterAccountMapper implements RowMapper<RegisterAccount> {
@Override
public RegisterAccount map(ResultSet rs, StatementContext ctx) throws SQLException {
return RegisterAccount.builder()
.activationTime(rs.getString("activation_time"))
.retargetingTime(rs.getString("retargeting_time"))
.reg_time(rs.getString("reg_time"))
.build();
}
}
package com.fshark.overseas.advert.modle;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
public class AppsFlyerWithAccountEvent extends AppsFlyerEvent {
/**
* 服务注册时间
*/
private String register_server_time;
/**
* 区服
*/
private String register_server_id;
/**
* 上次区服登录时间
*/
private String last_role_login_time;
/**
* 数据类型 1.新增 2.再营销 3.预注册
*/
private int data_type = 1;
private String role_id;
}
package com.fshark.overseas.advert.modle;
import lombok.Data;
@Data
public class AppsflyerPurchase {
/**
* appsflyer_id : 1617268324168-7014069328556002014
* advertising_id : a397f73f-2522-4722-b486-edb493a73648
* idfa :
* ouid : 161726882715613001
* did : ffffffff-ec1b-5350-ffff-ffffef05ac4a,unknown,01b876f77ac02302
* user_id : 161726882715613001
* openid : 161726882715613001
* roleid : 6065909e271bed34ab14d17d
* rolename : ud22cub780ub3c4ud2b8
* serverid : 8401
* currency : KRW
* revenue : 1200.00
* af_currency : KRW
* af_revenue : 1200.00
* type : 1
* orderid : 10061951141360659419cb6b0ZJZ1617269785
* itemid : com.khsanguo.shark.1200
* itemnum : 1
* productid : charge6
* platform_id : 2
* time : 1617269799
* ip : 125.184.219.179
* platform : android
* plat : 1
* gameid : 9
* bundle_id : com.ldsanguo.shark
* bundle_name : ub09cud22cuc0bcuad6d:10vs10
* app_id : 100016
* _res : 2046*1080
* _ip : 125.184.219.179
* _appver : 1.2.6
* _sdk : php
* _mfr : samsung
* terminal : android
* _wifi : true
* _model :
* macaddr :
* channel : mgsdk
* subchannel :
* _sdkserver : 1.6.0
* _os : android
* _osver : 11
*/
private String appsflyer_id;
private String advertising_id;
private String idfa;
private long ouid;
private String did;
private long user_id;
private long openid;
private String roleid;
private String rolename;
private String serverid;
private String currency;
private String revenue;
private String af_currency;
private double af_revenue;
private String type;
private String orderid;
private String itemid;
private int itemnum;
private String productid;
private String platform_id;
private String time;
private String ip;
private String platform;
private String plat;
private String gameid;
private String bundle_id;
private String bundle_name;
private String app_id;
private String _res;
private String _ip;
private String _appver;
private String _sdk;
private String _mfr;
private String terminal;
private String _wifi;
private String _model;
private String macaddr;
private String channel;
private String subchannel;
private String _sdkserver;
private String _os;
private String _osver;
public String getAppsflyer_id() {
return appsflyer_id;
}
public void setAppsflyer_id(String appsflyer_id) {
this.appsflyer_id = appsflyer_id;
}
public String getAdvertising_id() {
return advertising_id;
}
public void setAdvertising_id(String advertising_id) {
this.advertising_id = advertising_id;
}
public String getIdfa() {
return idfa;
}
public void setIdfa(String idfa) {
this.idfa = idfa;
}
public long getOuid() {
return ouid;
}
public void setOuid(long ouid) {
this.ouid = ouid;
}
public String getDid() {
return did;
}
public void setDid(String did) {
this.did = did;
}
public long getUser_id() {
return user_id;
}
public void setUser_id(long user_id) {
this.user_id = user_id;
}
public long getOpenid() {
return openid;
}
public void setOpenid(long openid) {
this.openid = openid;
}
public String getRoleid() {
return roleid;
}
public void setRoleid(String roleid) {
this.roleid = roleid;
}
public String getRolename() {
return rolename;
}
public void setRolename(String rolename) {
this.rolename = rolename;
}
public String getServerid() {
return serverid;
}
public void setServerid(String serverid) {
this.serverid = serverid;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public String getRevenue() {
return revenue;
}
public void setRevenue(String revenue) {
this.revenue = revenue;
}
public String getAf_currency() {
return af_currency;
}
public void setAf_currency(String af_currency) {
this.af_currency = af_currency;
}
public double getAf_revenue() {
return af_revenue;
}
public void setAf_revenue(double af_revenue) {
this.af_revenue = af_revenue;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid;
}
public String getItemid() {
return itemid;
}
public void setItemid(String itemid) {
this.itemid = itemid;
}
public int getItemnum() {
return itemnum;
}
public void setItemnum(int itemnum) {
this.itemnum = itemnum;
}
public String getProductid() {
return productid;
}
public void setProductid(String productid) {
this.productid = productid;
}
public String getPlatform_id() {
return platform_id;
}
public void setPlatform_id(String platform_id) {
this.platform_id = platform_id;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPlatform() {
return platform;
}
public void setPlatform(String platform) {
this.platform = platform;
}
public String getPlat() {
return plat;
}
public void setPlat(String plat) {
this.plat = plat;
}
public String getGameid() {
return gameid;
}
public void setGameid(String gameid) {
this.gameid = gameid;
}
public String getBundle_id() {
return bundle_id;
}
public void setBundle_id(String bundle_id) {
this.bundle_id = bundle_id;
}
public String getBundle_name() {
return bundle_name;
}
public void setBundle_name(String bundle_name) {
this.bundle_name = bundle_name;
}
public String getApp_id() {
return app_id;
}
public void setApp_id(String app_id) {
this.app_id = app_id;
}
public String get_res() {
return _res;
}
public void set_res(String _res) {
this._res = _res;
}
public String get_ip() {
return _ip;
}
public void set_ip(String _ip) {
this._ip = _ip;
}
public String get_appver() {
return _appver;
}
public void set_appver(String _appver) {
this._appver = _appver;
}
public String get_sdk() {
return _sdk;
}
public void set_sdk(String _sdk) {
this._sdk = _sdk;
}
public String get_mfr() {
return _mfr;
}
public void set_mfr(String _mfr) {
this._mfr = _mfr;
}
public String getTerminal() {
return terminal;
}
public void setTerminal(String terminal) {
this.terminal = terminal;
}
public String get_wifi() {
return _wifi;
}
public void set_wifi(String _wifi) {
this._wifi = _wifi;
}
public String get_model() {
return _model;
}
public void set_model(String _model) {
this._model = _model;
}
public String getMacaddr() {
return macaddr;
}
public void setMacaddr(String macaddr) {
this.macaddr = macaddr;
}
public String getChannel() {
return channel;
}
public void setChannel(String channel) {
this.channel = channel;
}
public String getSubchannel() {
return subchannel;
}
public void setSubchannel(String subchannel) {
this.subchannel = subchannel;
}
public String get_sdkserver() {
return _sdkserver;
}
public void set_sdkserver(String _sdkserver) {
this._sdkserver = _sdkserver;
}
public String get_os() {
return _os;
}
public void set_os(String _os) {
this._os = _os;
}
public String get_osver() {
return _osver;
}
public void set_osver(String _osver) {
this._osver = _osver;
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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