huangpingkang 1 год назад
Родитель
Сommit
77de928cb1

+ 110 - 1
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/DianZhongServiceImpl.java

@@ -152,6 +152,12 @@ public class DianZhongServiceImpl implements IDianZhongService {
                                         dorisLoadManager.add("hr_playlet", "user_event", dzUser);
                                         JSONObject dzLogin = getDZLogin(line, clientId);
                                         dorisLoadManager.add("hr_playlet", "server_event", dzLogin);
+                                        JSONObject dzActivation = getDZActivation(line, clientId);
+                                        dorisLoadManager.add("hr_playlet", "server_event", dzActivation);
+                                        JSONObject dzRegister = getDZRegister(line, clientId);
+                                        if (statDate.replace("-", "").equals(dzRegister.getString("stat_date"))) {
+                                            dorisLoadManager.add("hr_playlet", "server_event", dzRegister);
+                                        }
                                     } else if ("order".equals(type)) {
                                         JSONObject dzOrder = getDZOrder(line, clientId);
                                         dorisLoadManager.add("hr_playlet", "server_event", dzOrder);
@@ -229,6 +235,7 @@ public class DianZhongServiceImpl implements IDianZhongService {
         adId = StringUtils.isNotBlank(promotionId) ? promotionId : adId;
         Long dyeTime = jsonObject.getLong("dyeTime");
         String activationTime = DateUtils.formatDate(dyeTime * 1000, "yyyy-MM-dd HH:mm:ss");
+        String activationDate = DateUtils.formatDate(dyeTime * 1000, "yyyyMMdd");
         String fromMedia = jsonObject.getString("from");
         String userId = jsonObject.getString("userId");
         loginJson.put("stat_date", statDate);
@@ -236,14 +243,114 @@ public class DianZhongServiceImpl implements IDianZhongService {
         loginJson.put("event_pk", SecureUtil.md5(String.format("dianzhong_login_%s_%s", userId, loginTime)));
         loginJson.put("event_tag", "dianzhong_login");
         loginJson.put("app_id", clientDomain2AppId.getOrDefault(appId, appId));
+        loginJson.put("activation_date", activationDate);
+        loginJson.put("uid", userId);
+        loginJson.put("open_id", jsonObject.getString("openId"));
+        loginJson.put("platform", domain2Platform.getOrDefault(domain, domain));
+        loginJson.put("official_account_open_id", jsonObject.getString("thirdWxId"));
+        loginJson.put("channel_id", jsonObject.getString("channelId"));
+        loginJson.put("link_id", jsonObject.getString("referralId"));
+        loginJson.put("register_date", jsonObject.getString("ctime"));
+        loginJson.put("expiration_time", jsonObject.getString("vipEndDate"));
+        loginJson.put("last_login_time", jsonObject.getString("loginTime"));
+        loginJson.put("created_at", loginTime);
+        loginJson.put("ip", jsonObject.getString("ip"));
+        loginJson.put("mobile_system", jsonObject.getIntValue("os") == 0 ? "Android" : "ios");
+        loginJson.put("person_id", jsonObject.getString("kdrId"));
+        loginJson.put("a_id", jsonObject.getString("projectId"));
+        loginJson.put("ad_id", adId);
+        loginJson.put("activation_time", activationTime);
+        loginJson.put("media_id", media2Id.getOrDefault(fromMedia, fromMedia));
 
+        if (NumberUtil.isLong(adId) && !"0".equals(adId)) {
+            String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", DateUtils.formatDate(loginTime * 1000, "yyyy-MM-dd"), -15);
+            Map<String, String> ad2Advertiser = cacheService.getBytedanceAdvertiserByAd(adId, DateUtils.getDateInteger(anotherDay));
+            if (!Check.isNullMap(ad2Advertiser)) {
+                String advertiserId = ad2Advertiser.get("advertiser_id");
+                loginJson.put("advertiser_id", advertiserId);
+            }
+        }
+        return loginJson;
+    }
+
+    private JSONObject getDZActivation(String line, String clientId) {
+        JSONObject jsonObject = JSONObject.parseObject(line);
+        JSONObject loginJson = new JSONObject();
+        int domain = jsonObject.getIntValue("domain");
+        String appId = clientId + domain;
+        Long loginTime = jsonObject.getLong("loginTime");
+        String adId = jsonObject.getString("adid");
+        String promotionId = jsonObject.getString("promotionId");
+        adId = StringUtils.isNotBlank(promotionId) ? promotionId : adId;
+        Long dyeTime = jsonObject.getLong("dyeTime");
+        String statDate = DateUtils.formatDate(dyeTime * 1000, "yyyyMMdd");
+        String activationTime = DateUtils.formatDate(dyeTime * 1000, "yyyy-MM-dd HH:mm:ss");
+        String fromMedia = jsonObject.getString("from");
+        String userId = jsonObject.getString("userId");
+        loginJson.put("stat_date", statDate);
+        loginJson.put("event", "ACTIVATION");
+        loginJson.put("event_pk", SecureUtil.md5(String.format("dianzhong_activation_%s_%s", userId, dyeTime)));
+        loginJson.put("event_tag", "dianzhong_activation");
+        loginJson.put("app_id", clientDomain2AppId.getOrDefault(appId, appId));
+        loginJson.put("activation_date", statDate);
+        loginJson.put("uid", userId);
+        loginJson.put("open_id", jsonObject.getString("openId"));
+        loginJson.put("platform", domain2Platform.getOrDefault(domain, domain));
+        loginJson.put("official_account_open_id", jsonObject.getString("thirdWxId"));
+        loginJson.put("channel_id", jsonObject.getString("channelId"));
+        loginJson.put("link_id", jsonObject.getString("referralId"));
+        loginJson.put("register_date", jsonObject.getString("ctime"));
+        loginJson.put("expiration_time", jsonObject.getString("vipEndDate"));
+        loginJson.put("last_login_time", jsonObject.getString("loginTime"));
+        loginJson.put("created_at", loginTime);
+        loginJson.put("ip", jsonObject.getString("ip"));
+        loginJson.put("mobile_system", jsonObject.getIntValue("os") == 0 ? "Android" : "ios");
+        loginJson.put("person_id", jsonObject.getString("kdrId"));
+        loginJson.put("a_id", jsonObject.getString("projectId"));
+        loginJson.put("ad_id", adId);
+        loginJson.put("activation_time", activationTime);
+        loginJson.put("media_id", media2Id.getOrDefault(fromMedia, fromMedia));
+
+        if (NumberUtil.isLong(adId) && !"0".equals(adId)) {
+            String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", DateUtils.formatDate(loginTime * 1000, "yyyy-MM-dd"), -15);
+            Map<String, String> ad2Advertiser = cacheService.getBytedanceAdvertiserByAd(adId, DateUtils.getDateInteger(anotherDay));
+            if (!Check.isNullMap(ad2Advertiser)) {
+                String advertiserId = ad2Advertiser.get("advertiser_id");
+                loginJson.put("advertiser_id", advertiserId);
+            }
+        }
+        return loginJson;
+    }
+
+    private JSONObject getDZRegister(String line, String clientId) {
+        JSONObject jsonObject = JSONObject.parseObject(line);
+        JSONObject loginJson = new JSONObject();
+        int domain = jsonObject.getIntValue("domain");
+        String appId = clientId + domain;
+        Long ctime = jsonObject.getLong("ctime");
+        String statDate = DateUtils.formatDate(ctime * 1000, "yyyyMMdd");
+        Long loginTime = jsonObject.getLong("loginTime");
+        String adId = jsonObject.getString("adid");
+        String promotionId = jsonObject.getString("promotionId");
+        adId = StringUtils.isNotBlank(promotionId) ? promotionId : adId;
+        Long dyeTime = jsonObject.getLong("dyeTime");
+        String activationTime = DateUtils.formatDate(dyeTime * 1000, "yyyy-MM-dd HH:mm:ss");
+        String activationDate = DateUtils.formatDate(dyeTime * 1000, "yyyyMMdd");
+        String fromMedia = jsonObject.getString("from");
+        String userId = jsonObject.getString("userId");
+        loginJson.put("stat_date", statDate);
+        loginJson.put("event", "REGISTER");
+        loginJson.put("event_pk", SecureUtil.md5(String.format("dianzhong_register_%s_%s", userId, ctime)));
+        loginJson.put("event_tag", "dianzhong_register");
+        loginJson.put("app_id", clientDomain2AppId.getOrDefault(appId, appId));
+        loginJson.put("activation_date", activationDate);
         loginJson.put("uid", userId);
         loginJson.put("open_id", jsonObject.getString("openId"));
         loginJson.put("platform", domain2Platform.getOrDefault(domain, domain));
         loginJson.put("official_account_open_id", jsonObject.getString("thirdWxId"));
         loginJson.put("channel_id", jsonObject.getString("channelId"));
         loginJson.put("link_id", jsonObject.getString("referralId"));
-        loginJson.put("register_date", jsonObject.getString("registerDate"));
+        loginJson.put("register_date", jsonObject.getString("ctime"));
         loginJson.put("expiration_time", jsonObject.getString("vipEndDate"));
         loginJson.put("last_login_time", jsonObject.getString("loginTime"));
         loginJson.put("created_at", loginTime);
@@ -279,6 +386,7 @@ public class DianZhongServiceImpl implements IDianZhongService {
         adId = StringUtils.isNotBlank(promotionId) ? promotionId : adId;
         Long dyeTime = jsonObject.getLong("dyeTime");
         String activationTime = DateUtils.formatDate(dyeTime * 1000, "yyyy-MM-dd HH:mm:ss");
+        String activationDate = DateUtils.formatDate(dyeTime * 1000, "yyyyMMdd");
         String fromMedia = jsonObject.getString("from");
         orderJson.put("stat_date", statDate);
         orderJson.put("event", "PAY");
@@ -308,6 +416,7 @@ public class DianZhongServiceImpl implements IDianZhongService {
         orderJson.put("scene", jsonObject.getString("scene"));
         orderJson.put("official_account_open_id", jsonObject.getString("thirdWxId"));
         orderJson.put("activation_time", activationTime);
+        orderJson.put("activation_date", activationDate);
         orderJson.put("pay_type", jsonObject.getString("orderSubType"));
         orderJson.put("media_id", media2Id.getOrDefault(fromMedia, fromMedia));
         orderJson.put("money_benefit", jsonObject.getDouble("moneyBenefit"));