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 5fb5d1b..c2f3152 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 @@ -93,7 +93,7 @@ public class ApiStatusService { //내부직원 스윙챗 발송 if (monitoringContext.getBooleanProperty(MonitoringContext.DJB_UMS_MESSENGER_APIMONITOR_ENABLED, true)) { HashMap params = getSwingChatMessage(event, apiIds); - ums.send("api-monitor", MessageCode.API_STATUS_CHANGED, params); + ums.sendMessenger("api-monitor", MessageCode.API_STATUS_CHANGED, params); } //제휴사 웹훅 발송 diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/UmsManager.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/UmsManager.java index 6031247..f991ba7 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/ums/UmsManager.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/UmsManager.java @@ -60,6 +60,44 @@ public class UmsManager { } } + /** + * roleId에 해당하는 역할을 가진 직원에게 messenger 발송 (제주은행은 sms, email은 1인 발송이나, messenger는 다수 발송) + * (기존 ums 로직을 멀티 receiver로 변경할려면 많은 부분을 수정해야하기 때문에, messenger 전용만 추가) + * @param role + * @param messageCode + * @param params + * @return + */ + public void sendMessenger(String roleId, MessageCode messageCode, HashMap params) { + List users = userInfoService.findAllByRoleId(roleId); + if (users.isEmpty()) { + log.info("sendMessenger: no users found for role '{}'", roleId); + return; + } + + String messengerIds = ""; + String userNames = ""; + + for (UserInfo user : users) { + if (StringUtils.isEmpty(messengerIds)) { + messengerIds += user.getUserid(); + userNames += user.getUsername(); + } else { + messengerIds += "," + user.getUserid(); + userNames += "," + user.getUsername(); + } + } + + MessageRecipient recipient = MessageRecipient.builder() + .userId("") + .username(userNames) + .email("") + .phone("") + .messengerId(messengerIds) + .build(); + messageHandlerService.publishEvent(messageCode, recipient, params); + } + /** * 직원 또는 회원에게 UMS(sms,email,messenger) 발송 * @param user diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java index be25afe..87a917f 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java @@ -187,15 +187,7 @@ public class UmsService { swiDataVO.setNotiContent(messageRequest.getMessage()); // 스윙챗 알림 데이터 - List swiReDataVOList = new ArrayList(); - SwingReceiverDataVO receiver = new SwingReceiverDataVO(); - receiver.setType("PSN"); - receiver.setCompanyCode("CB"); - receiver.setCode(messageRequest.getMessengerId()); - receiver.setName(messageRequest.getUsername()); - swiReDataVOList.add(receiver); - - swiDataVO.setReceiverInfo(swiReDataVOList); + swiDataVO.setReceiverInfo(getSwingReceiver(messageRequest)); String header = gson.toJson(stdHeadVO); String common = gson.toJson(swiComVO); @@ -295,6 +287,25 @@ public class UmsService { } + private List getSwingReceiver(MessageRequest messageRequest) { + + String[] messengerIds = messageRequest.getMessengerId().split(","); + String[] userNames = messageRequest.getUsername().split(","); + + // 스윙챗 알림 데이터 + List swiReDataVOList = new ArrayList(); + for (int i = 0; i < messengerIds.length; i++) { + SwingReceiverDataVO receiver = new SwingReceiverDataVO(); + receiver.setType("PSN"); + receiver.setCompanyCode("CB"); + receiver.setCode(messengerIds[i]); + receiver.setName(userNames[i]); + swiReDataVOList.add(receiver); + } + + return swiReDataVOList; + } + private String[] makeStdGuidInfo() { // 리턴값 String rtnVal[] = new String[3];