- 인증 이벤트 매핑 추가: 이메일/휴대폰 인증번호 DB 변수 설정
eapim-portal CI (from elink-portal-common) / build (push) Has been cancelled

- 초대 관련 이벤트 매핑 개선: %ORG_NAME% 변수 지원 추가
- 메시지 발송 공통 변수 자동 주입 로직 추가
This commit is contained in:
Rinjae
2026-06-24 19:47:33 +09:00
parent 1a12816643
commit 363863746b
7 changed files with 44 additions and 63 deletions
@@ -25,6 +25,8 @@ public class UserInvitationCancelEvent implements MessageEventHandler {
Map<String, String> requestParams = new HashMap<>();
requestParams.put("corpName", params.get("corpName").toString());
requestParams.put("managerName", params.get("managerName").toString());
// DB 템플릿 USER_INVITATION_CANCELED SMS 변수(%ORG_NAME%)에 매핑
requestParams.put("ORG_NAME", params.get("corpName").toString());
return new MessageSendEvent(source, KEY, recipient, requestParams);
}
@@ -26,6 +26,8 @@ public class UserInvitationEvent implements MessageEventHandler {
requestParams.put("url", params.get("url").toString());
requestParams.put("loginId",params.get("corpName").toString() + " 이용자");
requestParams.put("authNumber", params.get("authNumber").toString());
// DB 템플릿 USER_INVITATION SMS 변수(%ORG_NAME%)에 매핑 (USER_NAME 은 공통 자동주입)
requestParams.put("ORG_NAME", params.get("corpName").toString());
return new MessageSendEvent(source, KEY, recipient, requestParams);
}
@@ -24,7 +24,10 @@ public class UserPasswordResetEvent implements MessageEventHandler {
@Override
public MessageSendEvent createEvent(Object source, MessageRecipient recipient, Map<String, Object> params) {
Map<String, String> requestParams = new HashMap<>();
requestParams.put("tempPassword", (String) params.get("tempPassword"));
String tempPassword = (String) params.get("tempPassword");
requestParams.put("tempPassword", tempPassword);
// DB 템플릿 USER_PASSWORD_RESET SMS 변수(%TEMP_PASSWORD%)에 매핑
requestParams.put("TEMP_PASSWORD", tempPassword);
return new MessageSendEvent(source, KEY, recipient, requestParams);
}
@@ -23,7 +23,10 @@ public class UserVerificationEmailEvent implements MessageEventHandler {
@Override
public MessageSendEvent createEvent(Object source, MessageRecipient recipient, Map<String, Object> params) {
Map<String, String> requestParams = new HashMap<>();
requestParams.put("authNumber", (String) params.get("authNumber"));
String authNumber = (String) params.get("authNumber");
requestParams.put("authNumber", authNumber);
// DB 템플릿 USER_VERIFICATION_EMAIL 변수(%AUTH_NO%)에 매핑
requestParams.put("AUTH_NO", authNumber);
return new MessageSendEvent(source, KEY, recipient, requestParams);
}
@@ -24,7 +24,10 @@ public class UserVerificationMobilePhoneEvent implements MessageEventHandler {
@Override
public MessageSendEvent createEvent(Object source, MessageRecipient recipient, Map<String, Object> params) {
Map<String, String> requestParams = new HashMap<>();
requestParams.put("authNumber", (String) params.get("authNumber"));
String authNumber = (String) params.get("authNumber");
requestParams.put("authNumber", authNumber);
// DB 템플릿 USER_VERIFICATION_MOBILEPHONE SMS 변수(%AUTH_CODE%)에 매핑
requestParams.put("AUTH_CODE", authNumber);
return new MessageSendEvent(source, KEY, recipient, requestParams);
}
@@ -10,83 +10,47 @@ public enum MessageCode {
// 사용자 이벤트 영역
USER_VERIFICATION_EMAIL("이메일 주소 인증", "FM_APIM001", Channels.EMAIL),
USER_VERIFICATION_MOBILEPHONE("휴대폰 번호 인증", "S55_ICT_0006", Channels.KAKAO_ALIMTALK),
USER_VERIFICATION_EMAIL("이메일 주소 인증", null, Channels.EMAIL),
USER_VERIFICATION_MOBILEPHONE("휴대폰 번호 인증", null, Channels.KAKAO_ALIMTALK),
USER_PASSWORD_RESET("비밀번호 재설정", "FM_APIM002", Channels.EMAIL),
USER_PASSWORD_CHANGED("사용자 비밀번호 변경", "FM_APIM003", Channels.EMAIL),
USER_PASSWORD_RESET("비밀번호 재설정", null, Channels.KAKAO_ALIMTALK),
USER_PASSWORD_CHANGED("사용자 비밀번호 변경", null, Channels.KAKAO_ALIMTALK),
USER_ACCOUNT_LOCKED("계정 잠금 알림", "FM_APIM004", Channels.EMAIL),
USER_ACCOUNT_LOCKED("계정 잠금 알림", null, Channels.KAKAO_ALIMTALK),
// 법인관리자 이벤트 영역
USER_INVITATION("법인 이용자 이메일 초대", "FM_APIM005", Channels.EMAIL),
USER_INVITATION_CANCELED("법인 이용자 이메일 초대 취소", "FM_APIM006", Channels.EMAIL),
USER_INVITATION("법인 이용자 이메일 초대", null, Channels.KAKAO_ALIMTALK),
USER_INVITATION_CANCELED("법인 이용자 이메일 초대 취소", null, Channels.KAKAO_ALIMTALK),
MANAGER_WITH_ORG_REGISTER_APPROVED("법인관리자 및 법인 등록 승인", "FM_APIM007", Channels.EMAIL),
MANAGER_WITH_ORG_REGISTER_REJECTED("법인관리자 및 법인 등록 거절", "FM_APIM008", Channels.EMAIL),
MANAGER_WITH_ORG_REGISTER_APPROVED("법인관리자 및 법인 등록 승인", null, Channels.KAKAO_ALIMTALK),
MANAGER_WITH_ORG_REGISTER_REJECTED("법인관리자 및 법인 등록 거절", null, Channels.KAKAO_ALIMTALK),
// 관리자 영역
APP_REGISTER_APPROVED("등록 승인", "FM_APIM009", Channels.EMAIL),
APP_REGISTER_REJECTED("등록 거절", "FM_APIM010", Channels.EMAIL),
APP_APPROVE("사용 승인", null, Channels.KAKAO_ALIMTALK),
APP_REJECTED("사용 거절", null, Channels.KAKAO_ALIMTALK),
// Q&A 등록/댓글 등록 알림 (DJBank 커스텀 — portal-admin 수신)
INQUIRY_CREATED("Q&A 등록 알림", null, Channels.NONE),
INQUIRY_COMMENT_CREATED("Q&A 댓글 등록 알림", null, Channels.NONE),
INQUIRY_CREATED("Q&A 등록 알림", null, Channels.SWING),
INQUIRY_COMMENT_CREATED("Q&A 댓글 등록 알림", null, Channels.SWING),
PARTNERSHIP_CREATED("개선요청/제휴 게시물 등록 알림", null, Channels.SWING),
// 제주은행
API_STATUS_CHANGED("API 상태 변화", "FM_APIM011", Channels.SWING),
INFLOW_TOKEN_FAILED("유량제어 토큰 획득 실패", "FM_APIM012", Channels.SWING),
ADMIN_VERIFICATION_MOBILEPHONE("관리자포탈 휴대폰 번호 인증", "FM_APIM013", Channels.KAKAO_ALIMTALK),
API_STATUS_CHANGED("API 상태 변화", null, Channels.SWING),
INFLOW_TOKEN_FAILED("유량제어 토큰 획득 실패", null, Channels.SWING),
ADMIN_VERIFICATION_MOBILEPHONE("관리자포탈 휴대폰 번호 인증", null, Channels.KAKAO_ALIMTALK),
// 미 사용, 미 분류
@Deprecated
// 레거시/미사용 — Event 핸들러 클래스 호환을 위해 유지 (실제 발송 없음)
API_APPROVED("API 승인 알림", null, Channels.NONE),
@Deprecated
API_REJECTED("API 거절 알림", null, Channels.NONE),
@Deprecated
APP_REGISTER("앱 등록 완료", null, Channels.NONE),
@Deprecated
USER_MANAGER_ASSIGNED("관리자 권한 부여", null, Channels.NONE),
@Deprecated
REQUEST_AUTH_NUMBER("인증번호 요청", null, Channels.NONE),
@Deprecated
USER_WITHDRAWAL_APPROVED("계정 비활성화", null, Channels.NONE),
@Deprecated
USER_ACTIVATION("사용자 활성화 완료", null, Channels.NONE), // 이게 왜...이메일 인증인건데........
@Deprecated
APP_REGISTER_REQUEST("앱 등록 요청", null, Channels.NONE),
@Deprecated
APP_REGISTER_REJECTED("앱 등록 거절", null, Channels.NONE),
UNKNOWN_ERROR("알수 없는 에러 발생", null, Channels.NONE),
@Deprecated
PASSWORD_RESET_COMPLETE("비밀번호 변경 완료", null, Channels.NONE),
@Deprecated
REQUEST_PASSWORD_RESET("비밀번호 초기화 요청", null, Channels.NONE),
@Deprecated // 정확한 용도 모름
USER_REGISTRATION_APPROVED("사용자 등록 승인 완료", null, Channels.NONE),
@Deprecated // 정확한 용도 모름
USER_REGISTRATION_DENIED("사용자 등록 거절", null, Channels.NONE),
@Deprecated // 정확한 용도 모름
USER_REGISTRATION_REQUEST_ADMIN("사용자 등록 승인 요청", null, Channels.NONE),
@Deprecated // 정확한 용도 모름
USER_REGISTRATION_DENIED("사용자 등록 거절", null, Channels.NONE),
USER_REGISTRATION_REQUEST_USER("사용자 등록 요청 완료", null, Channels.NONE),
@Deprecated
REQUEST_PASSWORD_RESET("비밀번호 초기화 요청", null, Channels.NONE),
USER_MANAGER_ASSIGNED("관리자 권한 부여", null, Channels.NONE),
USER_REGISTRATION_APPROVED("사용자 등록 승인 완료", null, Channels.NONE),
PASSWORD_RESET_COMPLETE("비밀번호 변경 완료", null, Channels.NONE),
INQUIRY_RESPONSE("QnA 답변 작성", null, Channels.NONE)
;
@@ -130,10 +130,14 @@ public class MessageSendService {
}
private void updateMessageParams(MessageRecipient user, Map<String, String> messageParams) {
// 공통 자동주입. 대문자 별칭(USER_ID/USER_NAME)은 DB 템플릿 변수 표기와 맞춘다.
// putIfAbsent 이므로 개별 이벤트(createEvent)가 먼저 넣은 값이 있으면 그대로 둔다(오버라이드).
messageParams.put("userId", user.getUserId());
messageParams.putIfAbsent("USER_ID", user.getUserId());
if (StringUtils.hasText(user.getUsername())) {
messageParams.put("userName", user.getUsername());
messageParams.putIfAbsent("USER_NAME", user.getUsername());
}
}