Commit 1187686a authored by 宋新宇's avatar 宋新宇

日志及修改

parent 8dbe7136
...@@ -24,13 +24,19 @@ import java.util.*; ...@@ -24,13 +24,19 @@ import java.util.*;
public class Main { public class Main {
private static final Logger DYSTORY_SYS_LOG = LoggerFactory.getLogger("dystory.sys"); private static final Logger DYSTORY_SYS_LOG = LoggerFactory.getLogger("dystory.sys");
private static final Logger DYSTORY_ERROR_LOG = LoggerFactory.getLogger("dystory.error"); private static final Logger DYSTORY_ERROR_LOG = LoggerFactory.getLogger("dystory.error");
private static final Logger NOVEL_SYS_LOG = LoggerFactory.getLogger("novel.sys");
private static final Logger NOVEL_ERROR_LOG = LoggerFactory.getLogger("novel.error");
@PostConstruct @PostConstruct
public void plog(){ public void plog(){
//只输出到 /data/marketing/logs/dystory_sys.log //只输出到 /data/marketing/logs/dystory_sys.log
DYSTORY_SYS_LOG.info("Closing reporter org.apache.kafka.common.metrics.JmxReporter "); DYSTORY_SYS_LOG.info("DyStory Closing reporter org.apache.kafka.common.metrics.JmxReporter ");
//只输出到 /data/marketing/logs/dystory_error.log //只输出到 /data/marketing/logs/dystory_error.log
DYSTORY_ERROR_LOG.info("Exception......."); DYSTORY_ERROR_LOG.error("DyStory Exception.......");
//只输出到 /data/marketing/logs/novel_sys.log
NOVEL_SYS_LOG.info("Novel Closing reporter org.apache.kafka.common.metrics.JmxReporter ");
//只输出到 /data/marketing/logs/novel_error.log
NOVEL_ERROR_LOG.error("Novel Exception.......");
//输出控制台全部内容 //输出控制台全部内容
log.info("INFO.........INFO........INFO.."); log.info("INFO.........INFO........INFO..");
} }
......
...@@ -6,6 +6,8 @@ import com.lwby.marketing.vo.StoryNovelAction; ...@@ -6,6 +6,8 @@ import com.lwby.marketing.vo.StoryNovelAction;
import com.lwby.marketing.vo.StoreUserUploadEventBO; import com.lwby.marketing.vo.StoreUserUploadEventBO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.listener.MessageListener; import org.springframework.kafka.listener.MessageListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -23,27 +25,28 @@ public class DyStoryActiveConsumer implements MessageListener<String, String> { ...@@ -23,27 +25,28 @@ public class DyStoryActiveConsumer implements MessageListener<String, String> {
@Resource @Resource
DyStoryFlowExecutor dyStoryFlowExecutor; DyStoryFlowExecutor dyStoryFlowExecutor;
private static final Logger DYSTORY_SYS_LOG = LoggerFactory.getLogger("dystory.sys");
private static final Logger DYSTORY_ERROR_LOG = LoggerFactory.getLogger("dystory.error");
@KafkaListener(topics = {"${system.consumer.dystory.active.topic}"},groupId = "${system.consumer.dystory.active.topic}") @KafkaListener(topics = {"${system.consumer.dystory.active.topic}"},groupId = "${system.consumer.dystory.active.topic}")
@Override @Override
public void onMessage(ConsumerRecord<String, String> data) { public void onMessage(ConsumerRecord<String, String> data) {
long begin = System.currentTimeMillis(); long begin = System.currentTimeMillis();
if (log.isInfoEnabled()) { DYSTORY_SYS_LOG.info("media.active.story.onMessage start, data={}", data == null ? null : data.value());
log.info("media.active.story.onMessage start, data={}", data == null ? null : data.value());
}
if (data != null) { if (data != null) {
try { try {
StoreUserUploadEventBO event = JSONObject.parseObject(data.value(), StoreUserUploadEventBO.class); StoreUserUploadEventBO event = JSONObject.parseObject(data.value(), StoreUserUploadEventBO.class);
if (log.isInfoEnabled()) { DYSTORY_SYS_LOG.info("media.active.story.topic={}, bookStoreEvent={}", data.topic(), JSON.toJSONString(event));
log.info("media.active.story.topic={}, bookStoreEvent={}", data.topic(), JSON.toJSONString(event));
}
StoryNovelAction action = new StoryNovelAction(event.getClientInfo(),event.getUserId(),event.getOpenId(),event.getUserUploadEvent()); StoryNovelAction action = new StoryNovelAction(event.getClientInfo(),event.getUserId(),event.getOpenId(),event.getUserUploadEvent());
dyStoryFlowExecutor.getExecutorByStory().execute(action); dyStoryFlowExecutor.getExecutorByStory().execute(action);
} catch (Throwable e) { } catch (Throwable e) {
log.error("story.novel.active.onMessage failed, data={}, costTime={} ms", data.value(), DYSTORY_ERROR_LOG.error("story.novel.active.onMessage failed, data={}, costTime={} ms", data.value(),
System.currentTimeMillis() - begin, e); System.currentTimeMillis() - begin, e);
} }
} }
......
...@@ -6,6 +6,8 @@ import com.lwby.marketing.vo.StoryNovelAction; ...@@ -6,6 +6,8 @@ import com.lwby.marketing.vo.StoryNovelAction;
import com.lwby.marketing.vo.StoreUserUploadEventBO; import com.lwby.marketing.vo.StoreUserUploadEventBO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.listener.MessageListener; import org.springframework.kafka.listener.MessageListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -24,27 +26,28 @@ public class DyStoryPayConsumer extends DyStoryFlowExecutor implements MessageLi ...@@ -24,27 +26,28 @@ public class DyStoryPayConsumer extends DyStoryFlowExecutor implements MessageLi
@Resource @Resource
DyStoryFlowExecutor dyStoryFlowExecutor; DyStoryFlowExecutor dyStoryFlowExecutor;
private static final Logger DYSTORY_SYS_LOG = LoggerFactory.getLogger("dystory.sys");
private static final Logger DYSTORY_ERROR_LOG = LoggerFactory.getLogger("dystory.error");
@KafkaListener(topics = {"${system.consumer.dystory.pay.topic}"},groupId = "${system.consumer.dystory.pay.group_id}") @KafkaListener(topics = {"${system.consumer.dystory.pay.topic}"},groupId = "${system.consumer.dystory.pay.group_id}")
@Override @Override
public void onMessage(ConsumerRecord<String, String> data) { public void onMessage(ConsumerRecord<String, String> data) {
long begin = System.currentTimeMillis(); long begin = System.currentTimeMillis();
if (log.isInfoEnabled()) { DYSTORY_SYS_LOG.info("media.pay.story.onMessage start, data={}", data == null ? null : data.value());
log.info("media.pay.story.onMessage start, data={}", data == null ? null : data.value());
}
if (data != null) { if (data != null) {
try { try {
StoreUserUploadEventBO event = JSONObject.parseObject(data.value(), StoreUserUploadEventBO.class); StoreUserUploadEventBO event = JSONObject.parseObject(data.value(), StoreUserUploadEventBO.class);
if (log.isInfoEnabled()) { DYSTORY_SYS_LOG.info("media.pay.story.topic={}, bookStoreEvent={}", data.topic(), JSON.toJSONString(event));
log.info("media.pay.story.topic={}, bookStoreEvent={}", data.topic(), JSON.toJSONString(event));
}
StoryNovelAction action = new StoryNovelAction(event.getClientInfo(),event.getUserId(),event.getOpenId(),event.getUserUploadEvent(),event.getProductId()); StoryNovelAction action = new StoryNovelAction(event.getClientInfo(),event.getUserId(),event.getOpenId(),event.getUserUploadEvent(),event.getProductId());
dyStoryFlowExecutor.getExecutorByStory().execute(action); dyStoryFlowExecutor.getExecutorByStory().execute(action);
} catch (Throwable e) { } catch (Throwable e) {
log.error("story.novel.pay.onMessage failed, data={}, costTime={} ms", data.value(), DYSTORY_ERROR_LOG.error("story.novel.pay.onMessage failed, data={}, costTime={} ms", data.value(),
System.currentTimeMillis() - begin, e); System.currentTimeMillis() - begin, e);
} }
} }
......
...@@ -10,6 +10,8 @@ import com.lwby.marketing.att.novel.AttributionType; ...@@ -10,6 +10,8 @@ import com.lwby.marketing.att.novel.AttributionType;
import com.lwby.marketing.vo.DeliveryDeviceInfo; import com.lwby.marketing.vo.DeliveryDeviceInfo;
import com.lwby.marketing.vo.StoryNovelAction; import com.lwby.marketing.vo.StoryNovelAction;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.kafka.support.SendResult; import org.springframework.kafka.support.SendResult;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -20,6 +22,8 @@ import java.util.Objects; ...@@ -20,6 +22,8 @@ import java.util.Objects;
@Component @Component
public class DyStoryUniversalProcess extends UniversalProcess { public class DyStoryUniversalProcess extends UniversalProcess {
private static final Logger DYSTORY_SYS_LOG = LoggerFactory.getLogger("dystory.sys");
private static final Logger DYSTORY_ERROR_LOG = LoggerFactory.getLogger("dystory.error");
/** /**
* 通知处理结果 * 通知处理结果
*/ */
...@@ -46,8 +50,8 @@ public class DyStoryUniversalProcess extends UniversalProcess { ...@@ -46,8 +50,8 @@ public class DyStoryUniversalProcess extends UniversalProcess {
String jsonString = JSONObject.toJSONString(ddi); String jsonString = JSONObject.toJSONString(ddi);
ListenableFuture<SendResult<String, String>> active_result = kafkaTemplate.send(topic, jsonString); ListenableFuture<SendResult<String, String>> active_result = kafkaTemplate.send(topic, jsonString);
active_result.addCallback( active_result.addCallback(
result -> log.info("归因成功[{}],归因类型[{}]", jsonString, status.desc), result -> DYSTORY_SYS_LOG.info("归因成功[{}],归因类型[{}]", jsonString, status.desc),
ex -> log.error("归因失败[{}],归因类型[{}]", jsonString, status.desc, ex) ex -> DYSTORY_ERROR_LOG.error("归因失败[{}],归因类型[{}]", jsonString, status.desc, ex)
); );
} }
......
...@@ -8,6 +8,8 @@ import com.lwby.marketing.flow.NodeSwitchFlow; ...@@ -8,6 +8,8 @@ import com.lwby.marketing.flow.NodeSwitchFlow;
import com.lwby.marketing.vo.StoryNovelAction; import com.lwby.marketing.vo.StoryNovelAction;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -24,6 +26,8 @@ import java.util.concurrent.ThreadLocalRandom; ...@@ -24,6 +26,8 @@ import java.util.concurrent.ThreadLocalRandom;
@Component("dystory_payspdu") @Component("dystory_payspdu")
public class PaySpduFlow extends NodeSwitchFlow<StoryNovelAction> { public class PaySpduFlow extends NodeSwitchFlow<StoryNovelAction> {
private static final Logger DYSTORY_SYS_LOG = LoggerFactory.getLogger("dystory.sys");
@Resource @Resource
DyStoryUniversalProcess up; DyStoryUniversalProcess up;
...@@ -39,7 +43,7 @@ public class PaySpduFlow extends NodeSwitchFlow<StoryNovelAction> { ...@@ -39,7 +43,7 @@ public class PaySpduFlow extends NodeSwitchFlow<StoryNovelAction> {
String shaveMakeCall = up.getAttributeRuleByPlatformIdAndChannelId(platformId,channelId); String shaveMakeCall = up.getAttributeRuleByPlatformIdAndChannelId(platformId,channelId);
if (StringUtils.isEmpty(shaveMakeCall)) { if (StringUtils.isEmpty(shaveMakeCall)) {
//直接回传,走回传流 //直接回传,走回传流
log.info("PaySpduFlow process0 attribute is null,platformId={},channelId={}",action.getPlatformId(),action.getChannelId()); DYSTORY_SYS_LOG.info("PaySpduFlow process0 attribute is null,platformId={},channelId={}",action.getPlatformId(),action.getChannelId());
return; return;
} }
/** /**
...@@ -67,7 +71,7 @@ public class PaySpduFlow extends NodeSwitchFlow<StoryNovelAction> { ...@@ -67,7 +71,7 @@ public class PaySpduFlow extends NodeSwitchFlow<StoryNovelAction> {
} }
if (sprDedu == 100) { if (sprDedu == 100) {
log.info("PaySpduFlow process0 attribute.sprDeduChannel 100,platformId={},channelId={}",action.getPlatformId(),action.getChannelId()); DYSTORY_SYS_LOG.info("PaySpduFlow process0 attribute.sprDeduChannel 100,platformId={},channelId={}",action.getPlatformId(),action.getChannelId());
return; return;
} }
...@@ -81,16 +85,16 @@ public class PaySpduFlow extends NodeSwitchFlow<StoryNovelAction> { ...@@ -81,16 +85,16 @@ public class PaySpduFlow extends NodeSwitchFlow<StoryNovelAction> {
up.incrby(channelTotal, 1); up.incrby(channelTotal, 1);
if (isCallback(channelTotalCount, channelCallbackCount, sprDedu)) { if (isCallback(channelTotalCount, channelCallbackCount, sprDedu)) {
//回传,回传个数 + 1 //回传,回传个数 + 1
up.incrby(channelCallback, 1); up.incrby(channelCallback, 1);
log.info( DYSTORY_SYS_LOG.info(
"PaySpduFlow.process0.deduction doing dynamic, platformId = {}, channel = {}, sprDedu = {}, goodId = {}, channelTotalCount = {}, channelCallbackCount = {}, v = {}", "PaySpduFlow.process0.deduction doing dynamic, platformId = {}, channel = {}, sprDedu = {}, goodId = {}, channelTotalCount = {}, channelCallbackCount = {}, v = {}",
platformId, channelId, sprDedu, goodId, channelTotalCount, channelCallbackCount, 1); platformId, channelId, sprDedu, goodId, channelTotalCount, channelCallbackCount, 1);
} else { } else {
up.notifyResult(action,"ocpc_pay", AttributionStatus.NORMAL_DEDUCTION_CALLBACK); up.notifyResult(action,"ocpc_pay", AttributionStatus.NORMAL_DEDUCTION_CALLBACK);
up.set(up.getFirstCheckerKey(action),60 * 60 * 24,"1"); up.set(up.getFirstCheckerKey(action),60 * 60 * 24,"1");
log.info( DYSTORY_SYS_LOG.info(
"PaySpduFlow.process0.deduction doing dynamic, platformId = {}, channel = {}, sprDedu = {}, goodId = {}, channelTotalCount = {}, channelCallbackCount = {}, v = {}", "PaySpduFlow.process0.deduction doing dynamic, platformId = {}, channel = {}, sprDedu = {}, goodId = {}, channelTotalCount = {}, channelCallbackCount = {}, v = {}",
platformId, channelId, sprDedu, goodId, channelTotalCount, channelCallbackCount, 0); platformId, channelId, sprDedu, goodId, channelTotalCount, channelCallbackCount, 0);
} }
......
...@@ -7,6 +7,8 @@ import com.lwby.marketing.vo.BookStoreEvent; ...@@ -7,6 +7,8 @@ import com.lwby.marketing.vo.BookStoreEvent;
import com.lwby.marketing.vo.NovelAction; import com.lwby.marketing.vo.NovelAction;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.listener.MessageListener; import org.springframework.kafka.listener.MessageListener;
...@@ -28,6 +30,10 @@ public class NovelActiveConsumer implements MessageListener<String, String> { ...@@ -28,6 +30,10 @@ public class NovelActiveConsumer implements MessageListener<String, String> {
FlowExecutor<NovelAction> executorNovel; FlowExecutor<NovelAction> executorNovel;
private static final Logger NOVEL_SYS_LOG = LoggerFactory.getLogger("novel.sys");
private static final Logger NOVEL_ERROR_LOG = LoggerFactory.getLogger("novel.error");
@PostConstruct @PostConstruct
public void init(){ public void init(){
executorNovel = new FlowExecutor<>(ctx, Rule.create().THEN("novel_setup").THEN("novel_prize").THEN("novel_store").THEN("novel_checkerfirst").SWITCH("novel_cross","novel_plan","novel_channel")); executorNovel = new FlowExecutor<>(ctx, Rule.create().THEN("novel_setup").THEN("novel_prize").THEN("novel_store").THEN("novel_checkerfirst").SWITCH("novel_cross","novel_plan","novel_channel"));
...@@ -38,21 +44,18 @@ public class NovelActiveConsumer implements MessageListener<String, String> { ...@@ -38,21 +44,18 @@ public class NovelActiveConsumer implements MessageListener<String, String> {
public void onMessage(ConsumerRecord<String, String> data) { public void onMessage(ConsumerRecord<String, String> data) {
//long begin = System.currentTimeMillis(); //long begin = System.currentTimeMillis();
//if (log.isInfoEnabled()) { //NOVEL_SYS_LOG.info("media.active.onMessage start, data={}", data == null ? null : data.value());
// log.info("media.active.onMessage start, data={}", data == null ? null : data.value());
//}
//if (data != null) { //if (data != null) {
// try { // try {
// BookStoreEvent event = JSON.parseObject(data.value(), BookStoreEvent.class); // BookStoreEvent event = JSON.parseObject(data.value(), BookStoreEvent.class);
// if (log.isInfoEnabled()) { // NOVEL_SYS_LOG.info("media.active.topic={}, bookStoreEvent={}", data.topic(), JSON.toJSONString(event));
// log.info("media.active.topic={}, bookStoreEvent={}", data.topic(), JSON.toJSONString(event));
// }
// //
// NovelAction action = new NovelAction(event.getClientInfo(), data.value()); // NovelAction action = new NovelAction(event.getClientInfo(), data.value());
// //
// executorNovel.execute(action); // executorNovel.execute(action);
// } catch (Throwable e) { // } catch (Throwable e) {
// log.error("novel.active.onMessage failed, data={}, costTime={} ms", data.value(), // NOVEL_ERROR_LOG.info("novel.active.onMessage failed, data={}, costTime={} ms", data.value(),
// System.currentTimeMillis() - begin, e); // System.currentTimeMillis() - begin, e);
// } // }
//} //}
......
...@@ -6,6 +6,8 @@ import com.lwby.marketing.att.UniversalProcess; ...@@ -6,6 +6,8 @@ import com.lwby.marketing.att.UniversalProcess;
import com.lwby.marketing.vo.NovelAction; import com.lwby.marketing.vo.NovelAction;
import com.lwby.marketing.vo.DeliveryDeviceInfo; import com.lwby.marketing.vo.DeliveryDeviceInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.kafka.support.SendResult; import org.springframework.kafka.support.SendResult;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.concurrent.ListenableFuture; import org.springframework.util.concurrent.ListenableFuture;
...@@ -15,7 +17,9 @@ import java.util.Objects; ...@@ -15,7 +17,9 @@ import java.util.Objects;
@Slf4j @Slf4j
@Component @Component
public class NovelUniversalProcess extends UniversalProcess { public class NovelUniversalProcess extends UniversalProcess {
public static final String PRIZE_FLOW_PREFIX = "c:ouser:"; public static final String PRIZE_FLOW_PREFIX = "c:ouser:";
private static final Logger NOVEL_SYS_LOG = LoggerFactory.getLogger("novel.sys");
private static final Logger NOVEL_ERROR_LOG = LoggerFactory.getLogger("novel.error");
/** /**
* 通知处理结果 * 通知处理结果
...@@ -45,8 +49,8 @@ public class NovelUniversalProcess extends UniversalProcess { ...@@ -45,8 +49,8 @@ public class NovelUniversalProcess extends UniversalProcess {
String jsonString = JSONObject.toJSONString(ddi); String jsonString = JSONObject.toJSONString(ddi);
ListenableFuture<SendResult<String, String>> active_result = kafkaTemplate.send("ocpc_result", jsonString); ListenableFuture<SendResult<String, String>> active_result = kafkaTemplate.send("ocpc_result", jsonString);
active_result.addCallback( active_result.addCallback(
result -> log.info("归因成功[{}],归因类型[{}]", jsonString, status.desc), result -> NOVEL_SYS_LOG.info("归因成功[{}],归因类型[{}]", jsonString, status.desc),
ex -> log.error("归因失败[{}],归因类型[{}]", jsonString, status.desc, ex) ex -> NOVEL_ERROR_LOG.error("归因失败[{}],归因类型[{}]", jsonString, status.desc, ex)
); );
} }
......
...@@ -6,6 +6,8 @@ import com.lwby.marketing.att.novel.NovelUniversalProcess; ...@@ -6,6 +6,8 @@ import com.lwby.marketing.att.novel.NovelUniversalProcess;
import com.lwby.marketing.flow.NodeSwitchFlow; import com.lwby.marketing.flow.NodeSwitchFlow;
import com.lwby.marketing.util.DateTimUtils; import com.lwby.marketing.util.DateTimUtils;
import com.lwby.marketing.vo.NovelAction; import com.lwby.marketing.vo.NovelAction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -24,6 +26,8 @@ public class ChannelAttributionFlow extends NodeSwitchFlow<NovelAction> { ...@@ -24,6 +26,8 @@ public class ChannelAttributionFlow extends NodeSwitchFlow<NovelAction> {
@Resource @Resource
NovelUniversalProcess up; NovelUniversalProcess up;
private static final Logger NOVEL_SYS_LOG = LoggerFactory.getLogger("novel.sys");
@Override @Override
public boolean checked(NovelAction action) { public boolean checked(NovelAction action) {
return true; return true;
...@@ -47,6 +51,7 @@ public class ChannelAttributionFlow extends NodeSwitchFlow<NovelAction> { ...@@ -47,6 +51,7 @@ public class ChannelAttributionFlow extends NodeSwitchFlow<NovelAction> {
action.getMedia().notify(action); action.getMedia().notify(action);
up.notifyResult(action, AttributionStatus.ACTIVE_CALLBACK); up.notifyResult(action, AttributionStatus.ACTIVE_CALLBACK);
up.set(up.getFirstCheckerKey(action),60 * 60 * 24,"1"); up.set(up.getFirstCheckerKey(action),60 * 60 * 24,"1");
NOVEL_SYS_LOG.info("ChannelAttributionFlow process0 sprDeduChannel 100,platformId={},channelId={}",action.getPlatformId(),action.getChannelId());
return; return;
} }
...@@ -71,8 +76,14 @@ public class ChannelAttributionFlow extends NodeSwitchFlow<NovelAction> { ...@@ -71,8 +76,14 @@ public class ChannelAttributionFlow extends NodeSwitchFlow<NovelAction> {
up.incrby(channelCallback, 1); up.incrby(channelCallback, 1);
action.getMedia().notify(action); action.getMedia().notify(action);
up.notifyResult(action, AttributionStatus.ACTIVE_CALLBACK); up.notifyResult(action, AttributionStatus.ACTIVE_CALLBACK);
NOVEL_SYS_LOG.info(
"ChannelAttributionFlow.process0.deduction doing dynamic, platformId = {}, channel = {}, planId={}, sprDedu = {}, channelTotalCount = {}, channelCallbackCount = {}, v = {}",
action.getPlatformId(), action.getChannelId(),action.getPlanId(), sprDedu, channelTotalCount, channelCallbackCount, 1);
} else { } else {
up.notifyResult(action, AttributionStatus.NORMAL_DEDUCTION_CALLBACK); up.notifyResult(action, AttributionStatus.NORMAL_DEDUCTION_CALLBACK);
NOVEL_SYS_LOG.info(
"ChannelAttributionFlow.process0.deduction doing dynamic, platformId = {}, channel = {}, planId={}, sprDedu = {}, channelTotalCount = {}, channelCallbackCount = {}, v = {}",
action.getPlatformId(), action.getChannelId(),action.getPlanId(), sprDedu, channelTotalCount, channelCallbackCount, 1);
} }
} }
up.set(up.getFirstCheckerKey(action),60 * 60 * 24,"1"); up.set(up.getFirstCheckerKey(action),60 * 60 * 24,"1");
...@@ -97,6 +108,8 @@ public class ChannelAttributionFlow extends NodeSwitchFlow<NovelAction> { ...@@ -97,6 +108,8 @@ public class ChannelAttributionFlow extends NodeSwitchFlow<NovelAction> {
* @return * @return
*/ */
public boolean isAliveByDay(long userId, int day){ public boolean isAliveByDay(long userId, int day){
return marketingJdbcTemplate.queryForMap(String.format("select 1 from lwby_marketing_growth.alive_olduser where user_id ='%d' and last_alive_date >= CURDATE() - INTERVAL %d DAY",userId,day)).size() > 0; return (Long) marketingJdbcTemplate.queryForMap(String.format(
"select count(1) c from alive_olduser where user_id ='%d' and last_alive_date >= CURDATE() - INTERVAL %d DAY", userId,
day)).get("c") > 0;
} }
} }
\ No newline at end of file
...@@ -11,6 +11,8 @@ import com.lwby.marketing.po.CrossCallback; ...@@ -11,6 +11,8 @@ import com.lwby.marketing.po.CrossCallback;
import com.lwby.marketing.util.DateTimUtils; import com.lwby.marketing.util.DateTimUtils;
import com.lwby.marketing.vo.NovelAction; import com.lwby.marketing.vo.NovelAction;
import com.lwby.marketing.vo.CrossPlatformAccount; import com.lwby.marketing.vo.CrossPlatformAccount;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.RowMapper;
...@@ -30,6 +32,8 @@ public class CrossPlatformAttributionFlow extends NodeSwitchFlow<NovelAction> { ...@@ -30,6 +32,8 @@ public class CrossPlatformAttributionFlow extends NodeSwitchFlow<NovelAction> {
@Resource @Resource
NovelUniversalProcess up; NovelUniversalProcess up;
private static final Logger NOVEL_SYS_LOG = LoggerFactory.getLogger("novel.sys");
@Override @Override
public boolean checked(NovelAction action) { public boolean checked(NovelAction action) {
//获取跨平台帐号配置 //获取跨平台帐号配置
...@@ -37,6 +41,8 @@ public class CrossPlatformAttributionFlow extends NodeSwitchFlow<NovelAction> { ...@@ -37,6 +41,8 @@ public class CrossPlatformAttributionFlow extends NodeSwitchFlow<NovelAction> {
//判断是否配置跨平台归因,如果没有则继续执行下一个计划归因处理器 //判断是否配置跨平台归因,如果没有则继续执行下一个计划归因处理器
if(Objects.isNull(cpa) || (!cpa.getAccount().contains("0") && !cpa.getAccount().contains(action.getAdvertiserId())) if(Objects.isNull(cpa) || (!cpa.getAccount().contains("0") && !cpa.getAccount().contains(action.getAdvertiserId()))
|| (cpa.getOldAccount().contains("0") || cpa.getOldAccount().contains(action.getAdvertiserId()))){ || (cpa.getOldAccount().contains("0") || cpa.getOldAccount().contains(action.getAdvertiserId()))){
NOVEL_SYS_LOG.info("CrossPlatformAttributionFlow checked false,platformId={},advertiserId={},media={},deviceId={},channelId={}",action.getPlatformId()
,action.getAdvertiserId(),action.getMediaName(),action.getDeviceId(),action.getChannelId());
return false; return false;
} }
action.setCpa(cpa); action.setCpa(cpa);
...@@ -53,6 +59,7 @@ public class CrossPlatformAttributionFlow extends NodeSwitchFlow<NovelAction> { ...@@ -53,6 +59,7 @@ public class CrossPlatformAttributionFlow extends NodeSwitchFlow<NovelAction> {
action.getMedia().notify(action); action.getMedia().notify(action);
up.notifyResult(action, AttributionStatus.ACTIVE_CALLBACK); up.notifyResult(action, AttributionStatus.ACTIVE_CALLBACK);
up.set(up.getFirstCheckerKey(action),60 * 60 * 24,"1"); //每天扣量过一次,不在重复走 up.set(up.getFirstCheckerKey(action),60 * 60 * 24,"1"); //每天扣量过一次,不在重复走
NOVEL_SYS_LOG.info("CrossPlatformAttributionFlow process0 sprDeduChannel 100,platformId={},channelId={}",action.getPlatformId(),action.getChannelId());
return; return;
} }
...@@ -70,8 +77,14 @@ public class CrossPlatformAttributionFlow extends NodeSwitchFlow<NovelAction> { ...@@ -70,8 +77,14 @@ public class CrossPlatformAttributionFlow extends NodeSwitchFlow<NovelAction> {
//callbackService.registerCallback(action); //callbackService.registerCallback(action);
action.getMedia().notify(action); action.getMedia().notify(action);
up.notifyResult(action,AttributionStatus.ACTIVE_CALLBACK); up.notifyResult(action,AttributionStatus.ACTIVE_CALLBACK);
NOVEL_SYS_LOG.info(
"CrossPlatformAttributionFlow.process0.deduction doing dynamic, platformId = {}, channel = {}, sprDedu = {}, channelTotalCount = {}, channelCallbackCount = {}, v = {}",
action.getPlatformId(), action.getChannelId(), sprDedu, channelTotalCount, channelCallbackCount, 1);
}else{ }else{
up.notifyResult(action,AttributionStatus.NORMAL_DEDUCTION_CALLBACK); up.notifyResult(action,AttributionStatus.NORMAL_DEDUCTION_CALLBACK);
NOVEL_SYS_LOG.info(
"CrossPlatformAttributionFlow.process0.deduction doing dynamic, platformId = {}, channel = {}, sprDedu = {}, channelTotalCount = {}, channelCallbackCount = {}, v = {}",
action.getPlatformId(), action.getChannelId(), sprDedu, channelTotalCount, channelCallbackCount, 1);
} }
up.set(up.getFirstCheckerKey(action),60 * 60 * 24,"1"); //每天扣量过一次,不在重复走 up.set(up.getFirstCheckerKey(action),60 * 60 * 24,"1"); //每天扣量过一次,不在重复走
} }
...@@ -124,9 +137,9 @@ public class CrossPlatformAttributionFlow extends NodeSwitchFlow<NovelAction> { ...@@ -124,9 +137,9 @@ public class CrossPlatformAttributionFlow extends NodeSwitchFlow<NovelAction> {
int spanCheckMaxDay = action.getCpa().getSpanCheckMaxDay(); int spanCheckMaxDay = action.getCpa().getSpanCheckMaxDay();
if (daysSinceRegistration < spanCheckMaxDay) { if (daysSinceRegistration < spanCheckMaxDay) {
userType = UserType.NEW;
} else if (daysSinceRegistration>=spanCheckMaxDay && daysSinceRegistration<=150) {
userType = UserType.INTERMEDIATE; userType = UserType.INTERMEDIATE;
} else if (daysSinceRegistration>=spanCheckMaxDay && daysSinceRegistration<=150) {
userType = UserType.NEW;
} }
} else { } else {
// 非当日注册用户 // 非当日注册用户
......
...@@ -13,6 +13,8 @@ import com.lwby.marketing.vo.ClientInfo; ...@@ -13,6 +13,8 @@ import com.lwby.marketing.vo.ClientInfo;
import com.lwby.marketing.vo.DeliveryDeviceInfo; import com.lwby.marketing.vo.DeliveryDeviceInfo;
import com.lwby.marketing.vo.UserProfile; import com.lwby.marketing.vo.UserProfile;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -23,6 +25,7 @@ import java.util.Objects; ...@@ -23,6 +25,7 @@ import java.util.Objects;
public class ParameterSetupFlow extends NodeFlow<NovelAction> { public class ParameterSetupFlow extends NodeFlow<NovelAction> {
@Resource @Resource
NovelUniversalProcess up; NovelUniversalProcess up;
private static final Logger NOVEL_ERROR_LOG = LoggerFactory.getLogger("novel.error");
@Override @Override
public void process(NovelAction action) { public void process(NovelAction action) {
...@@ -30,7 +33,7 @@ public class ParameterSetupFlow extends NodeFlow<NovelAction> { ...@@ -30,7 +33,7 @@ public class ParameterSetupFlow extends NodeFlow<NovelAction> {
//获取用户注册时间 //获取用户注册时间
UserProfile userProfile = clientInfo.getUser(); UserProfile userProfile = clientInfo.getUser();
if (userProfile == null || userProfile.getRegistrationDate() == null) { if (userProfile == null || userProfile.getRegistrationDate() == null) {
log.error("ClientInfo.userProfile 对像为[{}],BookStoreEvent报文[{}]、ClientInfo对像[{}]",userProfile, action.getBody(), clientInfo); NOVEL_ERROR_LOG.error("ClientInfo.userProfile 对像为[{}],BookStoreEvent报文[{}]、ClientInfo对像[{}]",userProfile, action.getBody(), clientInfo);
return; return;
} }
......
...@@ -16,8 +16,8 @@ import java.util.Objects; ...@@ -16,8 +16,8 @@ import java.util.Objects;
public class PrizeSevenUserFlow extends NodeFlow<NovelAction> { public class PrizeSevenUserFlow extends NodeFlow<NovelAction> {
//TODO;建议参数先写死 //TODO;建议参数先写死
@Value("${platformPrizeExpire:{}}") //@Value("${platformPrizeExpire:{}}")
private String platformPrizeExpire; //private String platformPrizeExpire;
@Resource @Resource
NovelUniversalProcess up; NovelUniversalProcess up;
...@@ -26,7 +26,11 @@ public class PrizeSevenUserFlow extends NodeFlow<NovelAction> { ...@@ -26,7 +26,11 @@ public class PrizeSevenUserFlow extends NodeFlow<NovelAction> {
public void process(NovelAction action) { public void process(NovelAction action) {
if(DateTimUtils.isTimeGreaterThanSevenDays(action.getRegistrationDate())){ if(DateTimUtils.isTimeGreaterThanSevenDays(action.getRegistrationDate())){
//代码有问题 //代码有问题
JSONObject platformPrizeExpireJson = JSON.parseObject(platformPrizeExpire); JSONObject platformPrizeExpireJson = JSON.parseObject("{\n"
+ " \"5\": 259200,\n"
+ " \"6\": 259200,\n"
+ " \"51\": 259200\n"
+ "}");
Integer platformPrizeExpireStr = platformPrizeExpireJson.getInteger(String.valueOf(action.getPlatformId())); Integer platformPrizeExpireStr = platformPrizeExpireJson.getInteger(String.valueOf(action.getPlatformId()));
String prizeAssembleKey = NovelUniversalProcess.PRIZE_FLOW_PREFIX; String prizeAssembleKey = NovelUniversalProcess.PRIZE_FLOW_PREFIX;
......
...@@ -8,11 +8,15 @@ import com.lwby.marketing.notify.media.jrtt.dto.JrttAttributeRequest; ...@@ -8,11 +8,15 @@ import com.lwby.marketing.notify.media.jrtt.dto.JrttAttributeRequest;
import com.lwby.marketing.vo.DeliveryDeviceInfo; import com.lwby.marketing.vo.DeliveryDeviceInfo;
import com.lwby.marketing.vo.StoryNovelAction; import com.lwby.marketing.vo.StoryNovelAction;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Slf4j @Slf4j
public class StoryJRTTNotify extends DYNotify { public class StoryJRTTNotify extends DYNotify {
public static final String ATTRIBUTE_URL = "https://analytics.oceanengine.com/api/v2/conversion"; public static final String ATTRIBUTE_URL = "https://analytics.oceanengine.com/api/v2/conversion";
private static final Logger DYSTORY_SYS_LOG = LoggerFactory.getLogger("dystory.sys");
@Override @Override
public boolean active(StoryNovelAction na) { public boolean active(StoryNovelAction na) {
return notify(na,"active"); return notify(na,"active");
...@@ -39,7 +43,7 @@ public class StoryJRTTNotify extends DYNotify { ...@@ -39,7 +43,7 @@ public class StoryJRTTNotify extends DYNotify {
try { try {
String result = HttpUtil.post(ATTRIBUTE_URL, userJson); String result = HttpUtil.post(ATTRIBUTE_URL, userJson);
Integer resultCode = (Integer) JSON.parseObject(result).get("code"); Integer resultCode = (Integer) JSON.parseObject(result).get("code");
log.info("JRTTActiveCallback.story.{}.upload,result={},userId={},channel={},platform={}",eventType,JSON.toJSONString(result),na.getUserId(),na.getChannelId(),na.getPlatformId()); DYSTORY_SYS_LOG.info("JRTTActiveCallback.story.{}.upload,result={},userId={},channel={},platform={}",eventType,JSON.toJSONString(result),na.getUserId(),na.getChannelId(),na.getPlatformId());
return resultCode == 0; return resultCode == 0;
} catch (Exception e) { } catch (Exception e) {
return false; return false;
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
<configuration> <configuration>
<property name="LOG_DIR" value="${LOG_PATH:-.}" /> <property name="LOG_DIR" value="${LOG_PATH:-.}" />
<!--抖音故事会-->
<appender name="dystory_sys" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="dystory_sys" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/dystory_sys.log</File> <File>${LOG_DIR}/dystory_sys.log</File>
<append>true</append> <append>true</append>
...@@ -34,6 +35,39 @@ ...@@ -34,6 +35,39 @@
<appender-ref ref="dystory_error" /> <appender-ref ref="dystory_error" />
</logger> </logger>
<!--小说-->
<appender name="novel_sys" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/novel_sys.log</File>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/novel_sys/novel_sys.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%logger] [tr=%mdc{TRACE_ID:-0}] %msg %n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<logger name="novel.sys" level="INFO" additivity="false">
<appender-ref ref="novel_sys" />
</logger>
<appender name="novel_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_DIR}/novel_error.log</File>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/novel_error/novel_error.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%logger] [tr=%mdc{TRACE_ID:-0}] %msg %n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<logger name="novel.error" level="INFO" additivity="true">
<appender-ref ref="novel_error" />
</logger>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder> <encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%logger] [tr=%mdc{TRACE_ID:-0}] %msg %n</pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%logger] [tr=%mdc{TRACE_ID:-0}] %msg %n</pattern>
......
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