yumeng před 1 týdnem
rodič
revize
ee74d0e54e

+ 5 - 4
src/main/java/com/adx/tencent/conversionsync/ConversionSyncService.java

@@ -97,7 +97,7 @@ public class ConversionSyncService {
 
         if (bid == null) {
             if (coldStore != null) {
-                try { coldStore.saveConversion(conversionRecord(payment, "")); } catch (Exception ignored) {}
+                try { coldStore.saveConversion(conversionRecord(payment, null, "")); } catch (Exception ignored) {}
             }
             result.skipped.incrementAndGet();
             return;
@@ -107,7 +107,7 @@ public class ConversionSyncService {
         // bid 不是腾讯,或没有设备标识
         if (!"tencent".equals(bid.getMedia())) {
             if (coldStore != null) {
-                try { coldStore.saveConversion(conversionRecord(payment, bid.getMedia())); } catch (Exception ignored) {}
+                try { coldStore.saveConversion(conversionRecord(payment, bid, bid.getMedia())); } catch (Exception ignored) {}
             }
             result.skipped.incrementAndGet();
             return;
@@ -117,7 +117,7 @@ public class ConversionSyncService {
         log.info("[ConversionSync] 匹配到腾讯转化 | qk={} | act={} | deviceId={} | date={} | payment={}",
                 payment.getQk(), payment.getAct(), payment.getDeviceId(), payment.getDate(), payment.getPayment());
         if (coldStore != null) {
-            try { coldStore.saveConversion(conversionRecord(payment, bid.getMedia())); } catch (Exception ignored) {}
+            try { coldStore.saveConversion(conversionRecord(payment, bid, bid.getMedia())); } catch (Exception ignored) {}
         }
 
         String actionType = null;
@@ -196,11 +196,12 @@ public class ConversionSyncService {
         return "android";
     }
 
-    private static ConversionRecord conversionRecord(PaymentInfo p, String media) {
+    private static ConversionRecord conversionRecord(PaymentInfo p, BidRecord bid, String media) {
         ConversionRecord r = new ConversionRecord();
         r.setDedupeKey(conversionDedupeKey(p, media));
         r.setQk(p.getQk());
         r.setMedia(media);
+        r.setTagId(bid != null ? bid.getTagId() : null);
         r.setDate(p.getDate());
         r.setAppSid(p.getAppSid());
         r.setCustomerName(p.getCustomerName());

+ 9 - 1
src/main/java/com/adx/tencent/storage/TiDBColdStore.java

@@ -78,6 +78,7 @@ public class TiDBColdStore {
                 dedupe_key VARCHAR(255),
                 qk VARCHAR(128),
                 media VARCHAR(64),
+                tag_id VARCHAR(128),
                 date_value VARCHAR(16),
                 appsid VARCHAR(128),
                 customer_name VARCHAR(128),
@@ -91,6 +92,7 @@ public class TiDBColdStore {
                 created_at TIMESTAMP(3) NOT NULL,
                 UNIQUE KEY uk_tencent_baidu_conversions_dedupe (dedupe_key),
                 KEY idx_tencent_baidu_conversions_qk_act_created_at (qk, act, created_at),
+                KEY idx_tencent_baidu_conversions_tag_id (tag_id),
                 KEY idx_tencent_baidu_conversions_device_id (device_id)
             )
             """,
@@ -144,6 +146,12 @@ public class TiDBColdStore {
                 stmt.execute("ALTER TABLE tencent_baidu_conversions ADD COLUMN gmv DOUBLE AFTER payment");
             } catch (Exception ignored) {}
             try {
+                stmt.execute("ALTER TABLE tencent_baidu_conversions ADD COLUMN tag_id VARCHAR(128) AFTER media");
+            } catch (Exception ignored) {}
+            try {
+                stmt.execute("ALTER TABLE tencent_baidu_conversions ADD KEY idx_tencent_baidu_conversions_tag_id (tag_id)");
+            } catch (Exception ignored) {}
+            try {
                 stmt.execute("ALTER TABLE tencent_tag_event ADD COLUMN baidu_act INT NULL COMMENT '百度转化行为' AFTER tag_id");
             } catch (Exception ignored) {}
             try {
@@ -215,7 +223,7 @@ public class TiDBColdStore {
         try (SqlSession session = sqlSessionFactory.openSession(true)) {
             ConversionMapper mapper = session.getMapper(ConversionMapper.class);
             mapper.insertOrUpdate(
-                record.getDedupeKey(), record.getQk(), record.getMedia(),
+                record.getDedupeKey(), record.getQk(), record.getMedia(), record.getTagId(),
                 record.getDate(), record.getAppSid(), record.getCustomerName(),
                 record.getDeviceId(), record.getConv(), record.getPayment(), record.getGmv(),
                 record.getAct(), record.getTu(), record.getClkTime(),

+ 1 - 0
src/main/java/com/adx/tencent/storage/mapper/ConversionMapper.java

@@ -8,6 +8,7 @@ public interface ConversionMapper {
     void insertOrUpdate(@Param("dedupeKey") String dedupeKey,
                         @Param("qk") String qk,
                         @Param("media") String media,
+                        @Param("tagId") String tagId,
                         @Param("dateValue") String dateValue,
                         @Param("appsid") String appsid,
                         @Param("customerName") String customerName,

+ 3 - 0
src/main/java/com/adx/tencent/storage/model/ConversionRecord.java

@@ -7,6 +7,7 @@ public class ConversionRecord {
     @JsonProperty("dedupeKey")    private String dedupeKey;
     @JsonProperty("qk")           private String qk;
     @JsonProperty("media")        private String media;
+    @JsonProperty("tagId")        private String tagId;
     @JsonProperty("date")         private String date;
     @JsonProperty("appsid")       private String appSid;
     @JsonProperty("customerName") private String customerName;
@@ -25,6 +26,8 @@ public class ConversionRecord {
     public void setQk(String v) { this.qk = v; }
     public String getMedia() { return media; }
     public void setMedia(String v) { this.media = v; }
+    public String getTagId() { return tagId; }
+    public void setTagId(String v) { this.tagId = v; }
     public String getDate() { return date; }
     public void setDate(String v) { this.date = v; }
     public String getAppSid() { return appSid; }

+ 3 - 2
src/main/resources/mapper/ConversionMapper.xml

@@ -4,14 +4,15 @@
 <mapper namespace="com.adx.tencent.storage.mapper.ConversionMapper">
     <insert id="insertOrUpdate">
         INSERT INTO tencent_baidu_conversions (
-            dedupe_key, qk, media, date_value, appsid, customer_name, device_id, conv,
+            dedupe_key, qk, media, tag_id, date_value, appsid, customer_name, device_id, conv,
             payment, gmv, act, tu, clk_time, created_at
         ) VALUES (
-            #{dedupeKey}, #{qk}, #{media}, #{dateValue}, #{appsid}, #{customerName},
+            #{dedupeKey}, #{qk}, #{media}, #{tagId}, #{dateValue}, #{appsid}, #{customerName},
             #{deviceId}, #{conv}, #{payment}, #{gmv}, #{act}, #{tu}, #{clkTime}, #{createdAt}
         )
         ON DUPLICATE KEY UPDATE
             media = VALUES(media),
+            tag_id = VALUES(tag_id),
             conv = VALUES(conv),
             payment = VALUES(payment),
             gmv = VALUES(gmv),