webhook 발송
This commit is contained in:
@@ -42,6 +42,9 @@ public class WebhookSendLog {
|
|||||||
@Column(name = "STATUS_CODE")
|
@Column(name = "STATUS_CODE")
|
||||||
private Integer statusCode;
|
private Integer statusCode;
|
||||||
|
|
||||||
|
@Column(name = "ORG_ID")
|
||||||
|
private String orgId;
|
||||||
|
|
||||||
@Lob
|
@Lob
|
||||||
@Column(name = "RESPONSE_BODY")
|
@Column(name = "RESPONSE_BODY")
|
||||||
private String responseBody;
|
private String responseBody;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import com.eactive.apim.portal.template.entity.MessageCode;
|
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.ApiStatus;
|
||||||
import com.eactive.eai.rms.data.entity.onl.djb.apistatus.ApiStatusEvent;
|
import com.eactive.eai.rms.data.entity.onl.djb.apistatus.ApiStatusEvent;
|
||||||
import com.eactive.eai.rms.ext.djb.util.UmsManager;
|
import com.eactive.eai.rms.ext.djb.util.UmsManager;
|
||||||
@@ -70,27 +71,21 @@ public class ApiStatusService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//이벤트별로 ums, webhook을 발송한다
|
//이벤트별로 ums, webhook을 발송한다
|
||||||
for (Map.Entry<String, List<String>> entry : eventMap.entrySet()) {
|
for (Map.Entry<String, List<String>> entry : eventMap.entrySet()) {
|
||||||
String event = entry.getKey();
|
String event = entry.getKey();
|
||||||
List<String> apiIds = entry.getValue();
|
List<String> apiIds = entry.getValue();
|
||||||
|
|
||||||
|
Role role = new Role();
|
||||||
|
role.setRoleId("api-monitor");
|
||||||
String message = getSwingChatMessage(event, apiIds);
|
String message = getSwingChatMessage(event, apiIds);
|
||||||
ums.sendMessenger("api-monitor", MessageCode.API_STATUS_CHANGED, message);
|
ums.sendMessenger(role, MessageCode.API_STATUS_CHANGED, message);
|
||||||
|
|
||||||
//제휴사 webhook 발송
|
//제휴사 webhook 발송
|
||||||
ums.sendWebhook(event, apiIds);
|
ums.sendWebhook(event, apiIds);
|
||||||
|
|
||||||
//개발자포탈 API상태모니터링 화면을 위한 처리
|
//개발자포탈 API상태모니터링 화면을 위한 처리
|
||||||
djbService.detect(event, apiIds);
|
djbService.detect(event, apiIds);
|
||||||
|
|
||||||
|
|
||||||
// if (event.endsWith("_END")) {
|
|
||||||
// djbService.recovered(event, apiIds);
|
|
||||||
// } else {
|
|
||||||
// djbService.detect(event, apiIds);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.MessageHandlerService;
|
||||||
import com.eactive.apim.portal.template.service.MessageRecipient;
|
import com.eactive.apim.portal.template.service.MessageRecipient;
|
||||||
import com.eactive.apim.portal.user.entity.UserInfo;
|
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.data.entity.man.user.UserInfoService;
|
||||||
import com.eactive.eai.rms.ext.djb.webhook.dto.WebhookSendRequest;
|
import com.eactive.eai.rms.ext.djb.webhook.dto.WebhookSendRequest;
|
||||||
import com.eactive.eai.rms.ext.djb.webhook.service.WebhookService;
|
import com.eactive.eai.rms.ext.djb.webhook.service.WebhookService;
|
||||||
@@ -29,17 +30,16 @@ public class UmsManager {
|
|||||||
private final WebhookService webhookService;
|
private final WebhookService webhookService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 내부직원 메신저(Swing chat) 발송
|
* role 역할을 가진 내부직원에게 메신저(Swing chat) 발송
|
||||||
* @param roleId
|
* @param role
|
||||||
* @param messageCode
|
* @param messageCode
|
||||||
* @param message
|
* @param message
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public void sendMessenger(String roleId, MessageCode messageCode, String message) {
|
public void sendMessenger(Role role, MessageCode messageCode, String message) {
|
||||||
|
List<UserInfo> users = userInfoService.findAllByRoleId(role.getRoleId());
|
||||||
List<UserInfo> users = userInfoService.findAllByRoleId(roleId);
|
|
||||||
if (users.isEmpty()) {
|
if (users.isEmpty()) {
|
||||||
log.warn("sendMessenger: no users found for role '{}'", roleId);
|
log.warn("sendMessenger: no users found for role '{}'", role.getRoleId());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,14 +55,31 @@ public class UmsManager {
|
|||||||
messageHandlerService.publishEvent(messageCode, recipient, params);
|
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<String, Object> params = new HashMap<>();
|
||||||
|
params.put("message", message);
|
||||||
|
|
||||||
|
messageHandlerService.publishEvent(messageCode, recipient, params);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* event를 구둑중인 제휴사에게 웹훅 발송
|
* event를 구독중인 제휴사에게 웹훅 발송
|
||||||
* @param event
|
* @param event
|
||||||
* @param apiIds
|
* @param apiIds
|
||||||
*/
|
*/
|
||||||
public void sendWebhook(String event, List<String> apiIds) {
|
public void sendWebhook(String event, List<String> apiIds) {
|
||||||
|
|
||||||
List<WebhookSendRequest> list = webhookService.findSendList(event, apiIds);
|
List<WebhookSendRequest> list = webhookService.findSendList(event, apiIds);
|
||||||
for (WebhookSendRequest req : list) {
|
for (WebhookSendRequest req : list) {
|
||||||
webhookService.send(req);
|
webhookService.send(req);
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ public class WebhookService {
|
|||||||
Object data = req.getData();
|
Object data = req.getData();
|
||||||
|
|
||||||
WebhookSendLog sendLog = new WebhookSendLog();
|
WebhookSendLog sendLog = new WebhookSendLog();
|
||||||
|
sendLog.setOrgId(req.getOrgId());
|
||||||
sendLog.setTargetUrl(targetUrl);
|
sendLog.setTargetUrl(targetUrl);
|
||||||
sendLog.setEventType(eventType);
|
sendLog.setEventType(eventType);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user