UMS 정리

This commit is contained in:
eastargh
2026-06-22 16:31:27 +09:00
parent b8beeb7c3e
commit a514b9d7a9
4 changed files with 66 additions and 47 deletions
@@ -76,8 +76,8 @@ public class ApiStatusService {
String event = entry.getKey(); String event = entry.getKey();
List<String> apiIds = entry.getValue(); List<String> apiIds = entry.getValue();
String message = getSwingChatMessage(event, apiIds); HashMap<String, Object> params = getSwingChatMessage(event, apiIds);
ums.sendMessenger("api-monitor", MessageCode.API_STATUS_CHANGED, message); ums.send("api-monitor", MessageCode.API_STATUS_CHANGED, params);
//제휴사 웹훅 발송 //제휴사 웹훅 발송
ums.sendWebhook(event, apiIds); ums.sendWebhook(event, apiIds);
@@ -103,7 +103,7 @@ public class ApiStatusService {
} }
private String getSwingChatMessage(String event, List<String> apiIds) { private HashMap<String, Object> getSwingChatMessage(String event, List<String> apiIds) {
String message = ""; String message = "";
switch (event) { switch (event) {
case "CONTROL_START": case "CONTROL_START":
@@ -126,9 +126,18 @@ public class ApiStatusService {
break; break;
default: default:
message = ""; message = "";
} }
return message + "\n- " + String.join(",", apiIds); if (apiIds.size() > 1) {
message += "\n" + apiIds.get(0) + "" + (apiIds.size()-1) + "";
} else {
message += "\n- " + apiIds.get(0);
}
HashMap<String, Object> params = new HashMap<>();
params.put("message", message);
return params;
} }
} }
@@ -29,14 +29,13 @@ public class UmsManager {
private final WebhookService webhookService; private final WebhookService webhookService;
/** /**
* role 역할을 가진 내부직원에게 메신저(Swing chat) 발송 * roleId에 해당하는 역할을 가진 내부직원에게 UMS(sms,email,messenger) 발송
* @param role * @param role
* @param messageCode * @param messageCode
* @param message * @param params
* @return * @return
*/ */
public void sendMessenger(String roleId, MessageCode messageCode, String message) { public void send(String roleId, MessageCode messageCode, HashMap<String, Object> params) {
List<UserInfo> users = userInfoService.findAllByRoleId(roleId); List<UserInfo> users = userInfoService.findAllByRoleId(roleId);
if (users.isEmpty()) { if (users.isEmpty()) {
log.info("sendMessenger: no users found for role '{}'", roleId); log.info("sendMessenger: no users found for role '{}'", roleId);
@@ -44,36 +43,36 @@ public class UmsManager {
} }
for (UserInfo user : users) { for (UserInfo user : users) {
String cleanedPhone = user.getCphnno().replaceAll("[^0-9]", "").trim();
MessageRecipient recipient = MessageRecipient.builder() MessageRecipient recipient = MessageRecipient.builder()
.userId(user.getUserid()) .userId(user.getUserid())
.username(user.getUsername()) .username(user.getUsername())
.email(user.getEmad())
.phone(cleanedPhone)
.messengerId(user.getUserid())
.build(); .build();
HashMap<String, Object> params = new HashMap<>();
params.put("message", message);
messageHandlerService.publishEvent(messageCode, recipient, params); messageHandlerService.publishEvent(messageCode, recipient, params);
} }
} }
/** /**
* 내부직원에게 메신저 발송 * 직원 또는 회원에게 UMS(sms,email,messenger) 발송
* @param user * @param user
* @param messageCode * @param messageCode
* @param message * @param params
*/ */
public void sendMessenger(UserInfo user, MessageCode messageCode, String message) { public void send(UserInfo user, MessageCode messageCode, HashMap<String, Object> params) {
String cleanedPhone = user.getCphnno().replaceAll("[^0-9]", "").trim();
MessageRecipient recipient = MessageRecipient.builder() MessageRecipient recipient = MessageRecipient.builder()
.userId(user.getUserid()) .userId(user.getUserid())
.username(user.getUsername()) .username(user.getUsername())
.email(user.getEmad())
.phone(cleanedPhone)
.messengerId(user.getUserid())
.build(); .build();
HashMap<String, Object> params = new HashMap<>();
params.put("message", message);
messageHandlerService.publishEvent(messageCode, recipient, params); messageHandlerService.publishEvent(messageCode, recipient, params);
} }
/** /**
* event를 구독중인 제휴사에게 웹훅 발송 (비동기) * event를 구독중인 제휴사에게 웹훅 발송 (비동기)
* @param event * @param event
@@ -56,7 +56,7 @@ public class SmsAuthController implements InterceptorSkipController {
// 인증번호 생성 및 발송 // 인증번호 생성 및 발송
String authCode = getSmsAuthService().generateAuthCode(); String authCode = getSmsAuthService().generateAuthCode();
boolean sent = getSmsAuthService().sendAuthCode(userInfo.getCphnno(), authCode); boolean sent = getSmsAuthService().sendAuthCode(userInfo, authCode);
if (sent) { if (sent) {
// 세션에 인증번호 저장 (기존 UserInfo, LoginVo 유지) // 세션에 인증번호 저장 (기존 UserInfo, LoginVo 유지)
@@ -106,7 +106,7 @@ public class SmsAuthController implements InterceptorSkipController {
// 새 인증번호 생성 및 발송 // 새 인증번호 생성 및 발송
String authCode = getSmsAuthService().generateAuthCode(); String authCode = getSmsAuthService().generateAuthCode();
boolean sent = getSmsAuthService().sendAuthCode(userInfo.getCphnno(), authCode); boolean sent = getSmsAuthService().sendAuthCode(userInfo, authCode);
if (sent) { if (sent) {
LoginVo loginVo = getSmsAuthService().getLoginVoFromSession(session); LoginVo loginVo = getSmsAuthService().getLoginVoFromSession(session);
@@ -1,22 +1,25 @@
package com.eactive.eai.rms.ext.kjb.smsauth; package com.eactive.eai.rms.ext.kjb.smsauth;
import java.security.SecureRandom;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import com.eactive.apim.portal.template.entity.MessageCode;
import com.eactive.apim.portal.user.entity.UserInfo; import com.eactive.apim.portal.user.entity.UserInfo;
import com.eactive.eai.rms.common.login.LoginVo; import com.eactive.eai.rms.common.login.LoginVo;
import com.eactive.eai.rms.ext.djb.ums.UmsManager;
import com.eactive.ext.kjb.common.KjbProperty; import com.eactive.ext.kjb.common.KjbProperty;
import com.eactive.ext.kjb.common.KjbPropertyHolder; import com.eactive.ext.kjb.common.KjbPropertyHolder;
import com.eactive.ext.kjb.common.KjbUmsException; import com.eactive.ext.kjb.common.KjbUmsException;
import com.eactive.ext.kjb.ums.KjbUmsService; import com.eactive.ext.kjb.ums.KjbUmsService;
import com.eactive.ext.kjb.ums.UmsBizWorkCode;
import com.eactive.ext.kjb.ums.gson.GsonUtil;
import com.eactive.ext.kjb.ums.gson.VerifyPhoneUmsTemplate;
import com.google.gson.JsonObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpSession; import lombok.extern.slf4j.Slf4j;
import java.security.SecureRandom;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Slf4j @Slf4j
public class SmsAuthService { public class SmsAuthService {
@@ -38,6 +41,9 @@ public class SmsAuthService {
public static final String MODE_FIXED = "fixed"; public static final String MODE_FIXED = "fixed";
private final SecureRandom random = new SecureRandom(); private final SecureRandom random = new SecureRandom();
@Autowired
private UmsManager ums;
private SmsAuthService() { private SmsAuthService() {
// 싱글톤 // 싱글톤
@@ -116,20 +122,25 @@ public class SmsAuthService {
/** /**
* SMS 인증번호 발송 * SMS 인증번호 발송
*/ */
public boolean sendAuthCode(String phone, String authCode) { public boolean sendAuthCode(UserInfo userInfo, String authCode) {
try { try {
String cleanedPhone = phone.replaceAll("[^0-9]", "").trim(); // String cleanedPhone = phone.replaceAll("[^0-9]", "").trim();
String guid = String.format("EAPIM_EMS-%s", // String guid = String.format("EAPIM_EMS-%s",
DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").format(LocalDateTime.now())); // DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").format(LocalDateTime.now()));
//
JsonObject content = GsonUtil.toJsonObject(VerifyPhoneUmsTemplate.builder().authNumber(authCode).build()); // JsonObject content = GsonUtil.toJsonObject(VerifyPhoneUmsTemplate.builder().authNumber(authCode).build());
//
getUmsService().sendKakaoAlimTalk(guid, UmsBizWorkCode.VERIFY_PHONE, cleanedPhone, content); // getUmsService().sendKakaoAlimTalk(guid, UmsBizWorkCode.VERIFY_PHONE, cleanedPhone, content);
log.info("SMS 인증번호 발송 완료 - guid: {}, phone: {}****{}", // log.info("SMS 인증번호 발송 완료 - guid: {}, phone: {}****{}",
guid, cleanedPhone.substring(0, 3), cleanedPhone.substring(cleanedPhone.length() - 4)); // guid, cleanedPhone.substring(0, 3), cleanedPhone.substring(cleanedPhone.length() - 4));
log.debug("SMS 인증번호 발송 - authCode: {}", authCode); // log.debug("SMS 인증번호 발송 - authCode: {}", authCode);
HashMap<String,Object> params = new HashMap<String, Object>();
params.put("authNumber", authCode);
ums.send(userInfo, MessageCode.USER_VERIFICATION_MOBILEPHONE, params);
return true; return true;
} catch (KjbUmsException e) { } catch (Exception e) {
log.error("SMS 인증번호 발송 실패", e); log.error("SMS 인증번호 발송 실패", e);
return false; return false;
} }