From 35e5564252b0c5b0baaf801b2b10cdb89008bcaa Mon Sep 17 00:00:00 2001 From: eastargh Date: Tue, 2 Jun 2026 09:43:03 +0900 Subject: [PATCH] =?UTF-8?q?webhook=20=EB=B0=9C=EC=86=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../onl/djb/webhook/WebhookSendLog.java | 3 ++ .../ext/djb/apistatus/ApiStatusService.java | 13 +++----- .../eai/rms/ext/djb/util/UmsManager.java | 33 ++++++++++++++----- .../djb/webhook/service/WebhookService.java | 1 + 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/djb/webhook/WebhookSendLog.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/djb/webhook/WebhookSendLog.java index a1fa55d..5c82e6e 100644 --- a/src/main/java/com/eactive/eai/rms/data/entity/onl/djb/webhook/WebhookSendLog.java +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/djb/webhook/WebhookSendLog.java @@ -42,6 +42,9 @@ public class WebhookSendLog { @Column(name = "STATUS_CODE") private Integer statusCode; + @Column(name = "ORG_ID") + private String orgId; + @Lob @Column(name = "RESPONSE_BODY") private String responseBody; diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/apistatus/ApiStatusService.java b/src/main/java/com/eactive/eai/rms/ext/djb/apistatus/ApiStatusService.java index 08e6bce..5bb77d0 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/apistatus/ApiStatusService.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/apistatus/ApiStatusService.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.eactive.apim.portal.template.entity.MessageCode; +import com.eactive.eai.rms.data.entity.man.role.Role; import com.eactive.eai.rms.data.entity.onl.djb.apistatus.ApiStatus; import com.eactive.eai.rms.data.entity.onl.djb.apistatus.ApiStatusEvent; import com.eactive.eai.rms.ext.djb.util.UmsManager; @@ -70,27 +71,21 @@ public class ApiStatusService { } } - //이벤트별로 ums, webhook을 발송한다 for (Map.Entry> entry : eventMap.entrySet()) { String event = entry.getKey(); List apiIds = entry.getValue(); + Role role = new Role(); + role.setRoleId("api-monitor"); String message = getSwingChatMessage(event, apiIds); - ums.sendMessenger("api-monitor", MessageCode.API_STATUS_CHANGED, message); + ums.sendMessenger(role, MessageCode.API_STATUS_CHANGED, message); //제휴사 webhook 발송 ums.sendWebhook(event, apiIds); //개발자포탈 API상태모니터링 화면을 위한 처리 djbService.detect(event, apiIds); - - -// if (event.endsWith("_END")) { -// djbService.recovered(event, apiIds); -// } else { -// djbService.detect(event, apiIds); -// } } } diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/util/UmsManager.java b/src/main/java/com/eactive/eai/rms/ext/djb/util/UmsManager.java index ac1479d..0bb9d21 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/util/UmsManager.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/util/UmsManager.java @@ -12,6 +12,7 @@ import com.eactive.apim.portal.template.entity.MessageCode; import com.eactive.apim.portal.template.service.MessageHandlerService; import com.eactive.apim.portal.template.service.MessageRecipient; import com.eactive.apim.portal.user.entity.UserInfo; +import com.eactive.eai.rms.data.entity.man.role.Role; import com.eactive.eai.rms.data.entity.man.user.UserInfoService; import com.eactive.eai.rms.ext.djb.webhook.dto.WebhookSendRequest; import com.eactive.eai.rms.ext.djb.webhook.service.WebhookService; @@ -29,17 +30,16 @@ public class UmsManager { private final WebhookService webhookService; /** - * 내부직원 메신저(Swing chat) 발송 - * @param roleId + * role 역할을 가진 내부직원에게 메신저(Swing chat) 발송 + * @param role * @param messageCode * @param message * @return */ - public void sendMessenger(String roleId, MessageCode messageCode, String message) { - - List users = userInfoService.findAllByRoleId(roleId); + public void sendMessenger(Role role, MessageCode messageCode, String message) { + List users = userInfoService.findAllByRoleId(role.getRoleId()); if (users.isEmpty()) { - log.warn("sendMessenger: no users found for role '{}'", roleId); + log.warn("sendMessenger: no users found for role '{}'", role.getRoleId()); return; } @@ -55,14 +55,31 @@ public class UmsManager { messageHandlerService.publishEvent(messageCode, recipient, params); } } + + /** + * 내부직원에게 메신저 발송 + * @param user + * @param messageCode + * @param message + */ + public void sendMessenger(UserInfo user, MessageCode messageCode, String message) { + MessageRecipient recipient = MessageRecipient.builder() + .userId(user.getUserid()) + .username(user.getUsername()) + .build(); + + HashMap params = new HashMap<>(); + params.put("message", message); + + messageHandlerService.publishEvent(messageCode, recipient, params); + } /** - * event를 구둑중인 제휴사에게 웹훅 발송 + * event를 구독중인 제휴사에게 웹훅 발송 * @param event * @param apiIds */ public void sendWebhook(String event, List apiIds) { - List list = webhookService.findSendList(event, apiIds); for (WebhookSendRequest req : list) { webhookService.send(req); diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/webhook/service/WebhookService.java b/src/main/java/com/eactive/eai/rms/ext/djb/webhook/service/WebhookService.java index afde0bf..60f5c36 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/webhook/service/WebhookService.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/webhook/service/WebhookService.java @@ -98,6 +98,7 @@ public class WebhookService { Object data = req.getData(); WebhookSendLog sendLog = new WebhookSendLog(); + sendLog.setOrgId(req.getOrgId()); sendLog.setTargetUrl(targetUrl); sendLog.setEventType(eventType);