From dfa35752c25ff3fcbe1d937a963a49e35d81fd9f Mon Sep 17 00:00:00 2001 From: 3y Date: Sat, 8 Jan 2022 10:15:25 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=97=A5=E5=BF=97=E5=9F=8B=E7=82=B9?= =?UTF-8?q?=EF=BC=8C=E5=BC=95=E5=85=A5=E6=B3=A8=E8=A7=A3=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=97=A5=E5=BF=97=202.=20=E6=8E=A5=E5=85=A5=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E6=B8=A0=E9=81=93=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/java3y/austin/domain/AnchorInfo.java | 42 +++++++++++++++ .../com/java3y/austin/domain/LogParam.java | 34 +++++++++++++ .../com/java3y/austin/domain/TaskInfo.java | 2 +- .../java3y/austin/dto/EmailContentModel.java | 19 +++++++ .../com/java3y/austin/enums/AnchorState.java | 31 +++++++++++ austin-handler/pom.xml | 6 +++ .../austin/domain/DeduplicationParam.java | 6 +++ .../java3y/austin/handler/EmailHandler.java | 48 ++++++++++++++++- .../com/java3y/austin/handler/Handler.java | 10 +++- .../com/java3y/austin/handler/SmsHandler.java | 25 ++++++--- .../com/java3y/austin/receiver/Receiver.java | 12 +++-- .../com/java3y/austin/script/SmsScript.java | 3 +- .../austin/script/TencentSmsScript.java | 12 ++--- .../AbstractDeduplicationService.java | 8 ++- .../DeduplicationRuleService.java | 3 ++ .../discard/DiscardMessageService.java | 4 ++ .../java3y/austin/action/AssembleAction.java | 6 +++ .../austin/service/SendServiceImpl.java | 3 ++ austin-support/pom.xml | 5 +- .../com/java3y/austin/utils/LogUtils.java | 51 +++++++++++++++++++ .../java3y/austin/utils/TaskInfoUtils.java | 13 +++++ .../com/java3y/austin/AustinApplication.java | 1 - .../controller/MessageTemplateController.java | 10 ++-- .../austin/controller/SendController.java | 10 ++-- pom.xml | 15 ++++++ 25 files changed, 341 insertions(+), 38 deletions(-) create mode 100644 austin-common/src/main/java/com/java3y/austin/domain/AnchorInfo.java create mode 100644 austin-common/src/main/java/com/java3y/austin/domain/LogParam.java create mode 100644 austin-common/src/main/java/com/java3y/austin/enums/AnchorState.java create mode 100644 austin-support/src/main/java/com/java3y/austin/utils/LogUtils.java diff --git a/austin-common/src/main/java/com/java3y/austin/domain/AnchorInfo.java b/austin-common/src/main/java/com/java3y/austin/domain/AnchorInfo.java new file mode 100644 index 0000000..0aa01d9 --- /dev/null +++ b/austin-common/src/main/java/com/java3y/austin/domain/AnchorInfo.java @@ -0,0 +1,42 @@ +package com.java3y.austin.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Set; + +/** + * 埋点信息 + * @author 3y + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class AnchorInfo { + + /** + * 发送用户 + */ + private Set ids; + + /** + * 具体点位 + */ + private int state; + + /** + * 业务Id(数据追踪使用) + * 生成逻辑参考 TaskInfoUtils + */ + private Long businessId; + + + /** + * 生成时间 + */ + private long timestamp; + +} diff --git a/austin-common/src/main/java/com/java3y/austin/domain/LogParam.java b/austin-common/src/main/java/com/java3y/austin/domain/LogParam.java new file mode 100644 index 0000000..6445529 --- /dev/null +++ b/austin-common/src/main/java/com/java3y/austin/domain/LogParam.java @@ -0,0 +1,34 @@ +package com.java3y.austin.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * 日志参数 + * @author 3y + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class LogParam { + + /** + * 需要记录的日志 + */ + private Object object; + + /** + * 标识日志的业务 + */ + private String bizType; + + /** + * 生成时间 + */ + private long timestamp; + +} diff --git a/austin-common/src/main/java/com/java3y/austin/domain/TaskInfo.java b/austin-common/src/main/java/com/java3y/austin/domain/TaskInfo.java index 0221fb2..5578636 100644 --- a/austin-common/src/main/java/com/java3y/austin/domain/TaskInfo.java +++ b/austin-common/src/main/java/com/java3y/austin/domain/TaskInfo.java @@ -26,7 +26,7 @@ public class TaskInfo { /** * 业务Id(数据追踪使用) - * 生成逻辑参考 + * 生成逻辑参考 TaskInfoUtils */ private Long businessId; diff --git a/austin-common/src/main/java/com/java3y/austin/dto/EmailContentModel.java b/austin-common/src/main/java/com/java3y/austin/dto/EmailContentModel.java index 8801b2e..854629b 100644 --- a/austin-common/src/main/java/com/java3y/austin/dto/EmailContentModel.java +++ b/austin-common/src/main/java/com/java3y/austin/dto/EmailContentModel.java @@ -1,9 +1,28 @@ package com.java3y.austin.dto; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + /** * @author 3y */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor public class EmailContentModel extends ContentModel { + /** + * 标题 + */ + private String title; + + /** + * 内容(可写入HTML) + */ + private String content; + } diff --git a/austin-common/src/main/java/com/java3y/austin/enums/AnchorState.java b/austin-common/src/main/java/com/java3y/austin/enums/AnchorState.java new file mode 100644 index 0000000..f02dfce --- /dev/null +++ b/austin-common/src/main/java/com/java3y/austin/enums/AnchorState.java @@ -0,0 +1,31 @@ +package com.java3y.austin.enums; + + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.ToString; + +/** + * 打点信息枚举 + * + * @author 3y + */ +@Getter +@ToString +@AllArgsConstructor +public enum AnchorState { + + RECEIVE(10, "成功消费Kafka"), + DISCARD(20, "消费被丢弃"), + CONTENT_DEDUPLICATION(30, "消息被内容去重"), + RULE_DEDUPLICATION(40, "消息被频次去重"), + WHITE_LIST(50, "白名单过滤"), + SEND_SUCCESS(60, "消息下发成功"), + SEND_FAIL(70, "消息下发失败"), + ; + + + private Integer code; + private String description; + +} diff --git a/austin-handler/pom.xml b/austin-handler/pom.xml index 47b1552..e30299d 100644 --- a/austin-handler/pom.xml +++ b/austin-handler/pom.xml @@ -35,5 +35,11 @@ + + + + com.sun.mail + javax.mail + \ No newline at end of file diff --git a/austin-handler/src/main/java/com/java3y/austin/domain/DeduplicationParam.java b/austin-handler/src/main/java/com/java3y/austin/domain/DeduplicationParam.java index 46eefff..e976a32 100644 --- a/austin-handler/src/main/java/com/java3y/austin/domain/DeduplicationParam.java +++ b/austin-handler/src/main/java/com/java3y/austin/domain/DeduplicationParam.java @@ -1,5 +1,6 @@ package com.java3y.austin.domain; +import com.java3y.austin.enums.AnchorState; import lombok.Builder; import lombok.Data; @@ -28,4 +29,9 @@ public class DeduplicationParam { */ private Integer countNum; + /** + * 标识属于哪种去重 + */ + private AnchorState anchorState; + } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/EmailHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/EmailHandler.java index 532f58c..721fb19 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/EmailHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/EmailHandler.java @@ -1,7 +1,18 @@ package com.java3y.austin.handler; +import cn.hutool.extra.mail.Mail; +import cn.hutool.extra.mail.MailAccount; +import cn.hutool.extra.mail.MailUtil; +import com.google.common.base.Throwables; +import com.java3y.austin.domain.AnchorInfo; import com.java3y.austin.domain.TaskInfo; +import com.java3y.austin.dto.ContentModel; +import com.java3y.austin.dto.EmailContentModel; +import com.java3y.austin.enums.AnchorState; import com.java3y.austin.enums.ChannelType; +import com.java3y.austin.utils.LogUtils; +import com.sun.mail.util.MailSSLSocketFactory; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; /** @@ -10,6 +21,7 @@ import org.springframework.stereotype.Component; * @author 3y */ @Component +@Slf4j public class EmailHandler extends Handler { public EmailHandler() { @@ -17,6 +29,40 @@ public class EmailHandler extends Handler { } @Override - public void handler(TaskInfo taskInfoList) { + public boolean handler(TaskInfo taskInfo) { + EmailContentModel emailContentModel = (EmailContentModel) taskInfo.getContentModel(); + MailAccount account = getAccount(); + try { + MailUtil.send(account, taskInfo.getReceiver(), emailContentModel.getTitle(), + emailContentModel.getContent(), true, null); + } catch (Exception e) { + log.error("EmailHandler#handler fail!{},params:{}", Throwables.getStackTraceAsString(e), taskInfo); + return false; + } + return true; + } + + + + /** + * 获取账号信息 + * @return + */ + private MailAccount getAccount() { + MailAccount account = new MailAccount(); + try { + account.setHost("smtp.qq.com").setPort(465); + account.setUser("403686131@qq.com").setPass("cmnznhomnbtlbggi").setAuth(true); + account.setFrom("403686131@qq.com"); + + MailSSLSocketFactory sf = new MailSSLSocketFactory(); + sf.setTrustAllHosts(true); + account.setStarttlsEnable(true).setSslEnable(true).setCustomProperty("mail.smtp.ssl.socketFactory", sf); + + account.setTimeout(25000).setConnectionTimeout(25000); + } catch (Exception e) { + log.error("EmailHandler#getAccount fail!{}", Throwables.getStackTraceAsString(e)); + } + return account; } } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/Handler.java b/austin-handler/src/main/java/com/java3y/austin/handler/Handler.java index d45007e..bd37e7d 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/Handler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/Handler.java @@ -1,6 +1,9 @@ package com.java3y.austin.handler; +import com.java3y.austin.domain.AnchorInfo; import com.java3y.austin.domain.TaskInfo; +import com.java3y.austin.enums.AnchorState; +import com.java3y.austin.utils.LogUtils; import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.PostConstruct; @@ -30,7 +33,10 @@ public abstract class Handler { } public void doHandler(TaskInfo taskInfo) { - handler(taskInfo); + if (!handler(taskInfo)) { + LogUtils.print(AnchorInfo.builder().state(AnchorState.SEND_FAIL.getCode()).businessId(taskInfo.getBusinessId()).ids(taskInfo.getReceiver()).build()); + } + LogUtils.print(AnchorInfo.builder().state(AnchorState.SEND_SUCCESS.getCode()).businessId(taskInfo.getBusinessId()).ids(taskInfo.getReceiver()).build()); } /** @@ -39,6 +45,6 @@ public abstract class Handler { * @param taskInfo * @return */ - public abstract void handler(TaskInfo taskInfo); + public abstract boolean handler(TaskInfo taskInfo); } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/SmsHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/SmsHandler.java index 8d35524..2d76ff9 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/SmsHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/SmsHandler.java @@ -2,13 +2,19 @@ package com.java3y.austin.handler; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.google.common.base.Throwables; import com.java3y.austin.dao.SmsRecordDao; +import com.java3y.austin.domain.AnchorInfo; import com.java3y.austin.domain.SmsParam; import com.java3y.austin.domain.SmsRecord; import com.java3y.austin.domain.TaskInfo; import com.java3y.austin.dto.SmsContentModel; +import com.java3y.austin.enums.AnchorState; import com.java3y.austin.enums.ChannelType; import com.java3y.austin.script.SmsScript; +import com.java3y.austin.utils.LogUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -20,6 +26,7 @@ import java.util.List; * @author 3y */ @Component +@Slf4j public class SmsHandler extends Handler { public SmsHandler() { @@ -34,22 +41,26 @@ public class SmsHandler extends Handler { @Override - public void handler(TaskInfo taskInfo) { - + public boolean handler(TaskInfo taskInfo) { SmsParam smsParam = SmsParam.builder() .phones(taskInfo.getReceiver()) .content(getSmsContent(taskInfo)) .messageTemplateId(taskInfo.getMessageTemplateId()) .supplierId(10) .supplierName("腾讯云通知类消息渠道").build(); - List recordList = smsScript.send(smsParam); - - if (!CollUtil.isEmpty(recordList)) { - smsRecordDao.saveAll(recordList); + try { + List recordList = smsScript.send(smsParam); + if (!CollUtil.isEmpty(recordList)) { + smsRecordDao.saveAll(recordList); + } + return true; + } catch (Exception e) { + log.error("SmsHandler#handler fail:{},params:{}", + Throwables.getStackTraceAsString(e), JSON.toJSONString(smsParam)); } + return false; } - /** * 如果有输入链接,则把链接拼在文案后 *

diff --git a/austin-handler/src/main/java/com/java3y/austin/receiver/Receiver.java b/austin-handler/src/main/java/com/java3y/austin/receiver/Receiver.java index 2859b49..8648b75 100644 --- a/austin-handler/src/main/java/com/java3y/austin/receiver/Receiver.java +++ b/austin-handler/src/main/java/com/java3y/austin/receiver/Receiver.java @@ -1,10 +1,15 @@ package com.java3y.austin.receiver; +import cn.monitor4all.logRecord.annotation.OperationLog; import com.alibaba.fastjson.JSON; +import com.java3y.austin.domain.AnchorInfo; +import com.java3y.austin.domain.LogParam; import com.java3y.austin.domain.TaskInfo; +import com.java3y.austin.enums.AnchorState; import com.java3y.austin.pending.Task; import com.java3y.austin.pending.TaskPendingHolder; import com.java3y.austin.utils.GroupIdMappingUtils; +import com.java3y.austin.utils.LogUtils; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.beans.factory.annotation.Autowired; @@ -22,7 +27,7 @@ import java.util.Optional; */ @Slf4j public class Receiver { - + private static final String LOG_BIZ_TYPE = "Receiver#consumer"; @Autowired private ApplicationContext context; @@ -33,6 +38,7 @@ public class Receiver { public void consumer(ConsumerRecord consumerRecord, @Header(KafkaHeaders.GROUP_ID) String topicGroupId) { Optional kafkaMessage = Optional.ofNullable(consumerRecord.value()); if (kafkaMessage.isPresent()) { + List TaskInfoLists = JSON.parseArray(kafkaMessage.get(), TaskInfo.class); String messageGroupId = GroupIdMappingUtils.getGroupIdByTaskInfo(TaskInfoLists.get(0)); @@ -41,13 +47,11 @@ public class Receiver { */ if (topicGroupId.equals(messageGroupId)) { for (TaskInfo taskInfo : TaskInfoLists) { + LogUtils.print(LogParam.builder().bizType(LOG_BIZ_TYPE).object(taskInfo).build(), AnchorInfo.builder().ids(taskInfo.getReceiver()).businessId(taskInfo.getBusinessId()).state(AnchorState.RECEIVE.getCode()).build()); Task task = context.getBean(Task.class).setTaskInfo(taskInfo); taskPendingHolder.route(topicGroupId).execute(task); } } } - } - - } diff --git a/austin-handler/src/main/java/com/java3y/austin/script/SmsScript.java b/austin-handler/src/main/java/com/java3y/austin/script/SmsScript.java index dd04ec4..0df8244 100644 --- a/austin-handler/src/main/java/com/java3y/austin/script/SmsScript.java +++ b/austin-handler/src/main/java/com/java3y/austin/script/SmsScript.java @@ -2,6 +2,7 @@ package com.java3y.austin.script; import com.java3y.austin.domain.SmsRecord; import com.java3y.austin.domain.SmsParam; +import com.tencentcloudapi.common.exception.TencentCloudSDKException; import java.util.List; @@ -17,6 +18,6 @@ public interface SmsScript { * @param smsParam 发送短信参数 * @return 渠道商接口返回值 */ - List send(SmsParam smsParam); + List send(SmsParam smsParam) throws Exception; } diff --git a/austin-handler/src/main/java/com/java3y/austin/script/TencentSmsScript.java b/austin-handler/src/main/java/com/java3y/austin/script/TencentSmsScript.java index 8602aa8..5f27282 100644 --- a/austin-handler/src/main/java/com/java3y/austin/script/TencentSmsScript.java +++ b/austin-handler/src/main/java/com/java3y/austin/script/TencentSmsScript.java @@ -10,6 +10,7 @@ import com.java3y.austin.domain.SmsParam; import com.java3y.austin.domain.SmsRecord; import com.java3y.austin.enums.SmsStatus; import com.tencentcloudapi.common.Credential; +import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.common.profile.ClientProfile; import com.tencentcloudapi.common.profile.HttpProfile; import com.tencentcloudapi.sms.v20210111.SmsClient; @@ -62,18 +63,13 @@ public class TencentSmsScript implements SmsScript { private String SIGN_NAME; @Override - public List send(SmsParam smsParam) { - try { + public List send(SmsParam smsParam) throws TencentCloudSDKException { + SmsClient client = init(); SendSmsRequest request = assembleReq(smsParam); SendSmsResponse response = client.SendSms(request); - return assembleSmsRecord(smsParam,response); - } catch (Exception e) { - log.error("send tencent sms fail!{},params:{}", - Throwables.getStackTraceAsString(e), JSON.toJSONString(smsParam)); - return null; - } + } private List assembleSmsRecord(SmsParam smsParam, SendSmsResponse response) { diff --git a/austin-handler/src/main/java/com/java3y/austin/service/deduplication/AbstractDeduplicationService.java b/austin-handler/src/main/java/com/java3y/austin/service/deduplication/AbstractDeduplicationService.java index 4fa703b..912199a 100644 --- a/austin-handler/src/main/java/com/java3y/austin/service/deduplication/AbstractDeduplicationService.java +++ b/austin-handler/src/main/java/com/java3y/austin/service/deduplication/AbstractDeduplicationService.java @@ -2,8 +2,11 @@ package com.java3y.austin.service.deduplication; import cn.hutool.core.collection.CollUtil; import com.java3y.austin.constant.AustinConstant; +import com.java3y.austin.domain.AnchorInfo; import com.java3y.austin.domain.DeduplicationParam; import com.java3y.austin.domain.TaskInfo; +import com.java3y.austin.enums.AnchorState; +import com.java3y.austin.utils.LogUtils; import com.java3y.austin.utils.RedisUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -46,7 +49,10 @@ public abstract class AbstractDeduplicationService { putInRedis(readyPutRedisReceiver, inRedisValue, param); // 剔除符合去重条件的用户 - taskInfo.getReceiver().removeAll(filterReceiver); + if (CollUtil.isNotEmpty(filterReceiver)) { + taskInfo.getReceiver().removeAll(filterReceiver); + LogUtils.print(AnchorInfo.builder().businessId(taskInfo.getBusinessId()).ids(filterReceiver).state(param.getAnchorState().getCode()).build()); + } } diff --git a/austin-handler/src/main/java/com/java3y/austin/service/deduplication/DeduplicationRuleService.java b/austin-handler/src/main/java/com/java3y/austin/service/deduplication/DeduplicationRuleService.java index 18ac54b..b003922 100644 --- a/austin-handler/src/main/java/com/java3y/austin/service/deduplication/DeduplicationRuleService.java +++ b/austin-handler/src/main/java/com/java3y/austin/service/deduplication/DeduplicationRuleService.java @@ -8,6 +8,7 @@ import com.ctrip.framework.apollo.spring.annotation.ApolloConfig; import com.java3y.austin.constant.AustinConstant; import com.java3y.austin.domain.DeduplicationParam; import com.java3y.austin.domain.TaskInfo; +import com.java3y.austin.enums.AnchorState; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -48,6 +49,7 @@ public class DeduplicationRuleService { DeduplicationParam contentParams = DeduplicationParam.builder() .deduplicationTime(contentDeduplication.getLong(TIME)) .countNum(contentDeduplication.getInteger(NUM)).taskInfo(taskInfo) + .anchorState(AnchorState.CONTENT_DEDUPLICATION) .build(); contentDeduplicationService.deduplication(contentParams); @@ -57,6 +59,7 @@ public class DeduplicationRuleService { DeduplicationParam businessParams = DeduplicationParam.builder() .deduplicationTime(seconds) .countNum(frequencyDeduplication.getInteger(NUM)).taskInfo(taskInfo) + .anchorState(AnchorState.RULE_DEDUPLICATION) .build(); frequencyDeduplicationService.deduplication(businessParams); } diff --git a/austin-handler/src/main/java/com/java3y/austin/service/discard/DiscardMessageService.java b/austin-handler/src/main/java/com/java3y/austin/service/discard/DiscardMessageService.java index 876b8fd..ebfa541 100644 --- a/austin-handler/src/main/java/com/java3y/austin/service/discard/DiscardMessageService.java +++ b/austin-handler/src/main/java/com/java3y/austin/service/discard/DiscardMessageService.java @@ -5,7 +5,10 @@ import com.alibaba.fastjson.JSONArray; import com.ctrip.framework.apollo.Config; import com.ctrip.framework.apollo.spring.annotation.ApolloConfig; import com.java3y.austin.constant.AustinConstant; +import com.java3y.austin.domain.AnchorInfo; import com.java3y.austin.domain.TaskInfo; +import com.java3y.austin.enums.AnchorState; +import com.java3y.austin.utils.LogUtils; import org.springframework.stereotype.Service; /** @@ -28,6 +31,7 @@ public class DiscardMessageService { JSONArray array = JSON.parseArray(config.getProperty(DISCARD_MESSAGE_KEY, AustinConstant.APOLLO_DEFAULT_VALUE_JSON_ARRAY)); if (array.contains(String.valueOf(taskInfo.getMessageTemplateId()))) { + LogUtils.print(AnchorInfo.builder().businessId(taskInfo.getBusinessId()).ids(taskInfo.getReceiver()).state(AnchorState.DISCARD.getCode()).build()); return true; } return false; diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/action/AssembleAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/action/AssembleAction.java index b66e9be..c9ee53a 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/action/AssembleAction.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/action/AssembleAction.java @@ -118,6 +118,12 @@ public class AssembleAction implements BusinessProcess { } } + // 如果 url 字段存在,则在url拼接对应的埋点参数 + String url = (String) ReflectUtil.getFieldValue(contentModel, "url"); + if (StrUtil.isNotBlank(url)) { + String resultUrl = TaskInfoUtils.generateUrl(url, messageTemplate.getId(), messageTemplate.getTemplateType()); + ReflectUtil.setFieldValue(contentModel, "url", resultUrl); + } return contentModel; } } diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/SendServiceImpl.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/SendServiceImpl.java index 7032156..d4cb01e 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/SendServiceImpl.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/SendServiceImpl.java @@ -1,5 +1,6 @@ package com.java3y.austin.service; +import cn.monitor4all.logRecord.annotation.OperationLog; import com.java3y.austin.domain.BatchSendRequest; import com.java3y.austin.domain.SendRequest; import com.java3y.austin.domain.SendResponse; @@ -23,6 +24,7 @@ public class SendServiceImpl implements SendService { private ProcessController processController; @Override + @OperationLog(bizType = "SendService#send", bizId = "#sendRequest.messageTemplateId", msg = "#sendRequest") public SendResponse send(SendRequest sendRequest) { SendTaskModel sendTaskModel = SendTaskModel.builder() @@ -42,6 +44,7 @@ public class SendServiceImpl implements SendService { } @Override + @OperationLog(bizType = "SendService#batchSend", bizId = "#batchSendRequest.messageTemplateId", msg = "#batchSendRequest") public SendResponse batchSend(BatchSendRequest batchSendRequest) { SendTaskModel sendTaskModel = SendTaskModel.builder() .messageTemplateId(batchSendRequest.getMessageTemplateId()) diff --git a/austin-support/pom.xml b/austin-support/pom.xml index f2cbe34..2bdc228 100644 --- a/austin-support/pom.xml +++ b/austin-support/pom.xml @@ -69,7 +69,10 @@ - + + cn.monitor4all + log-record-starter + \ No newline at end of file diff --git a/austin-support/src/main/java/com/java3y/austin/utils/LogUtils.java b/austin-support/src/main/java/com/java3y/austin/utils/LogUtils.java new file mode 100644 index 0000000..d26bf66 --- /dev/null +++ b/austin-support/src/main/java/com/java3y/austin/utils/LogUtils.java @@ -0,0 +1,51 @@ +package com.java3y.austin.utils; + +import cn.monitor4all.logRecord.bean.LogDTO; +import cn.monitor4all.logRecord.service.CustomLogListener; +import com.alibaba.fastjson.JSON; +import com.java3y.austin.domain.AnchorInfo; +import com.java3y.austin.domain.LogParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 所有的日志都存在 + */ +@Slf4j +@Component +public class LogUtils extends CustomLogListener { + + /** + * 方法切面的日志 @OperationLog 所产生 + */ + @Override + public void createLog(LogDTO logDTO) throws Exception { + log.info(JSON.toJSONString(logDTO)); + } + + /** + * 记录当前对象信息 + */ + public static void print(LogParam logParam) { + logParam.setTimestamp(System.currentTimeMillis()); + log.info(JSON.toJSONString(logParam)); + } + + /** + * 记录打点信息 + */ + public static void print(AnchorInfo anchorInfo) { + anchorInfo.setTimestamp(System.currentTimeMillis()); + log.info(JSON.toJSONString(anchorInfo)); + } + + /** + * 记录当前对象信息和打点信息 + */ + public static void print(LogParam logParam,AnchorInfo anchorInfo) { + print(anchorInfo); + print(logParam); + } +} diff --git a/austin-support/src/main/java/com/java3y/austin/utils/TaskInfoUtils.java b/austin-support/src/main/java/com/java3y/austin/utils/TaskInfoUtils.java index 6f2fbed..c303d1a 100644 --- a/austin-support/src/main/java/com/java3y/austin/utils/TaskInfoUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/utils/TaskInfoUtils.java @@ -24,4 +24,17 @@ public class TaskInfoUtils { return Long.valueOf(String.format("%d%s", templateType * TYPE_FLAG + templateId, today)); } + /** + * 对url添加平台参数(用于追踪数据) + */ + public static String generateUrl(String url, Long templateId, Integer templateType) { + url = url.trim(); + Long businessId = generateBusinessId(templateId, templateType); + if (url.indexOf('?') == -1) { + return url + "?track_code_bid=" + businessId; + } else { + return url + "&track_code_bid=" + businessId; + } + } + } diff --git a/austin-web/src/main/java/com/java3y/austin/AustinApplication.java b/austin-web/src/main/java/com/java3y/austin/AustinApplication.java index 3a4a784..df049fd 100644 --- a/austin-web/src/main/java/com/java3y/austin/AustinApplication.java +++ b/austin-web/src/main/java/com/java3y/austin/AustinApplication.java @@ -12,7 +12,6 @@ public class AustinApplication { public static void main(String[] args) { // TODO apollo的地址 //System.setProperty("apollo.config-service", "http://ip:7000"); - SpringApplication.run(AustinApplication.class, args); } } diff --git a/austin-web/src/main/java/com/java3y/austin/controller/MessageTemplateController.java b/austin-web/src/main/java/com/java3y/austin/controller/MessageTemplateController.java index 6dd63e6..1f85f88 100644 --- a/austin-web/src/main/java/com/java3y/austin/controller/MessageTemplateController.java +++ b/austin-web/src/main/java/com/java3y/austin/controller/MessageTemplateController.java @@ -28,16 +28,16 @@ public class MessageTemplateController { public String insert() { MessageTemplate messageTemplate = MessageTemplate.builder() - .name("test短信") + .name("test邮件") .auditStatus(10) .flowId("yyyy") .msgStatus(10) - .idType(10) - .sendChannel(10) - .templateType(10) + .idType(50) + .sendChannel(40) + .templateType(20) .msgType(10) .expectPushTime("0") - .msgContent("3333333m") + .msgContent("{\"content\":\"{$contentValue}\",\"title\":\"{$title}\"}") .sendAccount(66) .creator("yyyyc") .updator("yyyyu") diff --git a/austin-web/src/main/java/com/java3y/austin/controller/SendController.java b/austin-web/src/main/java/com/java3y/austin/controller/SendController.java index 3ac6dac..d03880a 100644 --- a/austin-web/src/main/java/com/java3y/austin/controller/SendController.java +++ b/austin-web/src/main/java/com/java3y/austin/controller/SendController.java @@ -24,12 +24,10 @@ public class SendController { /** * 发送 - * - * @param phone * @return */ @GetMapping("/sendSmsTest") - public SendResponse sendSmsTest(String phone, Long templateId) { + public SendResponse sendSmsTest(String receiver, Long templateId) { /** * @@ -39,11 +37,11 @@ public class SendController { * messageTemplate Id 为2 的模板内容(营销短信) * {"auditStatus":10,"auditor":"yyyyyyz","created":1636978066,"creator":"yyyyc","deduplicationTime":1,"expectPushTime":"0","flowId":"yyyy","id":1,"idType":30,"isDeleted":0,"isNightShield":0,"msgContent":"{\"content\":\"{$contentValue}\"}","msgStatus":10,"msgType":20,"name":"test短信","proposer":"yyyy22","sendAccount":66,"sendChannel":30,"team":"yyyt","templateType":10,"updated":1636978066,"updator":"yyyyu"} */ - // 文案参数 Map variables = new HashMap<>(8); - variables.put("contentValue", "6666"); - MessageParam messageParam = new MessageParam().setReceiver(phone).setVariables(variables); + variables.put("contentValue", "6666" + System.currentTimeMillis()); + variables.put("title", "yyyyyy"); + MessageParam messageParam = new MessageParam().setReceiver(receiver).setVariables(variables); SendRequest sendRequest = new SendRequest().setCode(BusinessCode.COMMON_SEND.getCode()) diff --git a/pom.xml b/pom.xml index 3c6651a..3965b0b 100644 --- a/pom.xml +++ b/pom.xml @@ -81,6 +81,21 @@ apollo-client-config-data 1.9.1 + + + + cn.monitor4all + log-record-starter + 1.0.4 + + + + + com.sun.mail + javax.mail + 1.6.2 + +