|
|
@@ -1,15 +1,13 @@
|
|
|
package cn.reghao.tnb.message.app.service;
|
|
|
|
|
|
import cn.reghao.jutil.jdk.serializer.JsonConverter;
|
|
|
+import cn.reghao.tnb.message.api.constant.MsgType;
|
|
|
import cn.reghao.tnb.message.api.dto.msg.RtmpMessage;
|
|
|
-import cn.reghao.tnb.message.app.model.msg.DingRtmpMsg;
|
|
|
+import cn.reghao.tnb.message.app.model.msg.DingMsgUtil;
|
|
|
import cn.reghao.tnb.message.app.service.notifier.ding.DingMsg;
|
|
|
-import cn.reghao.tnb.user.api.dto.AdminMessage;
|
|
|
import cn.reghao.tnb.message.api.constant.NotifyType;
|
|
|
-import cn.reghao.tnb.message.api.dto.msg.BaseMessage;
|
|
|
import cn.reghao.tnb.message.api.dto.msg.LoginMessage;
|
|
|
import cn.reghao.tnb.message.api.dto.msg.VerifyMessage;
|
|
|
-import cn.reghao.tnb.message.app.service.notifier.email.EmailMsg;
|
|
|
import cn.reghao.tnb.user.api.iface.UserService;
|
|
|
import com.google.gson.JsonObject;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -31,51 +29,44 @@ public class MessageConsumer {
|
|
|
this.notifyService = notifyService;
|
|
|
}
|
|
|
|
|
|
- public void sendMessage(String jsonPayload) {
|
|
|
+ public void handleMessage(String jsonPayload) {
|
|
|
JsonObject jsonObject = JsonConverter.jsonToJsonElement(jsonPayload).getAsJsonObject();
|
|
|
int notifyType = jsonObject.get("notifyType").getAsInt();
|
|
|
- if (notifyType == NotifyType.webhook.getValue()) {
|
|
|
- RtmpMessage rtmpMessage = JsonConverter.jsonToObject(jsonPayload, RtmpMessage.class);
|
|
|
- DingMsg dingMsg = new DingRtmpMsg(rtmpMessage).dingMsg();
|
|
|
- String webhookName = "ding_bdbot";
|
|
|
- notifyService.notify(webhookName, dingMsg);
|
|
|
+ int msgTypeCode = jsonObject.get("msgType").getAsInt();
|
|
|
+ MsgType msgType = MsgType.getByCode(msgTypeCode);
|
|
|
+ switch (NotifyType.getByCode(notifyType)) {
|
|
|
+ case webhook:
|
|
|
+ handleWebhookMessage(msgType, jsonPayload);
|
|
|
+ break;
|
|
|
+ case email:
|
|
|
+ break;
|
|
|
+ case mobile:
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void sendMessage(BaseMessage baseMessage) {
|
|
|
- if (baseMessage instanceof LoginMessage) {
|
|
|
- LoginMessage loginMessage = (LoginMessage) baseMessage;
|
|
|
- int notifyType = loginMessage.getNotifyType();
|
|
|
- String receiver = loginMessage.getReceiver();
|
|
|
- if (notifyType == NotifyType.email.getValue()) {
|
|
|
- String subject = loginMessage.getTitle();
|
|
|
- String content = String.format("您的帐号在 %s 通过客户端 %s 登录, 登录 IP 为 %s", loginMessage.getLoginAt(), loginMessage.getUserAgent(), loginMessage.getPublicIp());
|
|
|
- EmailMsg emailMsg = new EmailMsg(subject, content);
|
|
|
- notifyService.notify(receiver, emailMsg);
|
|
|
- } else if (notifyType == NotifyType.mobile.getValue()) {
|
|
|
- String errMsg = "短信消息尚未实现";
|
|
|
- AdminMessage adminMessage = new AdminMessage(2, errMsg);
|
|
|
- userService.sendAdminMessage(adminMessage);
|
|
|
- }
|
|
|
- } else if (baseMessage instanceof VerifyMessage) {
|
|
|
- VerifyMessage verifyMessage = (VerifyMessage) baseMessage;
|
|
|
- int notifyType = verifyMessage.getNotifyType();
|
|
|
- if (notifyType == NotifyType.email.getValue()) {
|
|
|
- String receiver = verifyMessage.getReceiver();
|
|
|
- EmailMsg emailMsg = new EmailMsg(verifyMessage.getTitle(), verifyMessage.getContent());
|
|
|
- notifyService.notify(receiver, emailMsg);
|
|
|
- } else if (notifyType == NotifyType.mobile.getValue()) {
|
|
|
- String errMsg = "短信验证码尚未实现";
|
|
|
- AdminMessage adminMessage = new AdminMessage(2, errMsg);
|
|
|
- userService.sendAdminMessage(adminMessage);
|
|
|
- }
|
|
|
- } else if (baseMessage instanceof RtmpMessage) {
|
|
|
- RtmpMessage rtmpMessage = (RtmpMessage) baseMessage;
|
|
|
- if (rtmpMessage.getNotifyType() == NotifyType.webhook.getValue()) {
|
|
|
- DingMsg dingMsg = new DingRtmpMsg(rtmpMessage).dingMsg();
|
|
|
- String webhookName = "ding_bdbot";
|
|
|
- notifyService.notify(webhookName, dingMsg);
|
|
|
- }
|
|
|
+ private void handleWebhookMessage(MsgType msgType, String jsonPayload) {
|
|
|
+ DingMsg dingMsg = null;
|
|
|
+ switch (msgType) {
|
|
|
+ case verifyMsg:
|
|
|
+ VerifyMessage verifyMessage = JsonConverter.jsonToObject(jsonPayload, VerifyMessage.class);
|
|
|
+ dingMsg = DingMsgUtil.getDingMsg(verifyMessage);
|
|
|
+ break;
|
|
|
+ case loginMsg:
|
|
|
+ LoginMessage loginMessage = JsonConverter.jsonToObject(jsonPayload, LoginMessage.class);
|
|
|
+ dingMsg = DingMsgUtil.getDingMsg(loginMessage);
|
|
|
+ break;
|
|
|
+ case rtmpMsg:
|
|
|
+ RtmpMessage rtmpMessage = JsonConverter.jsonToObject(jsonPayload, RtmpMessage.class);
|
|
|
+ dingMsg = DingMsgUtil.getDingMsg(rtmpMessage);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (dingMsg != null) {
|
|
|
+ String webhookName = "ding_bdbot";
|
|
|
+ notifyService.notify(webhookName, dingMsg);
|
|
|
}
|
|
|
}
|
|
|
}
|