- 승인/거절 템플릿 변수 매핑 (APP_NAME, REASON 등) - 법인 관리자 승인/거절 통지 로직 개선
This commit is contained in:
+35
-2
@@ -110,11 +110,13 @@ public class PortalAppApprovalListener implements ApprovalListener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
MessageRecipient recipient = new MessageRecipient();
|
MessageRecipient recipient = new MessageRecipient();
|
||||||
|
recipient.setUsername(requester.getUserName());
|
||||||
recipient.setPhone(requester.getMobileNumber());
|
recipient.setPhone(requester.getMobileNumber());
|
||||||
recipient.setUserId(requester.getEmailAddr());
|
recipient.setUserId(requester.getEmailAddr());
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
params.put("apiKey", appRequest.getClientName());
|
// DB 템플릿 APP_APPROVE SMS 변수(%APP_NAME%)에 매핑
|
||||||
messageSendService.sendMessage(MessageCode.APP_REGISTER_APPROVED, recipient, params);
|
params.put("APP_NAME", appRequest.getClientName());
|
||||||
|
messageSendService.sendMessage(MessageCode.APP_APPROVE, recipient, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void syncTargetServer(AppRequestType action, CredentialUI credentialUI) throws ApprovalDeployException {
|
private void syncTargetServer(AppRequestType action, CredentialUI credentialUI) throws ApprovalDeployException {
|
||||||
@@ -225,5 +227,36 @@ public class PortalAppApprovalListener implements ApprovalListener {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void rollback(Approval approval) {
|
public void rollback(Approval approval) {
|
||||||
logger.info("Approval {} rollback", approval.getId());
|
logger.info("Approval {} rollback", approval.getId());
|
||||||
|
|
||||||
|
// 앱 사용 거절 통지
|
||||||
|
Optional<AppRequest> optRequest = appRequestRepository.findAppRequestByApproval(approval);
|
||||||
|
if (!optRequest.isPresent()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
AppRequest appRequest = optRequest.get();
|
||||||
|
com.eactive.apim.portal.portaluser.entity.PortalUser requester = approval.getRequester();
|
||||||
|
if (requester == null) {
|
||||||
|
logger.warn("앱 거절 통지 생략 - 요청자 정보 없음. appRequestId: {}", appRequest.getId());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MessageRecipient recipient = new MessageRecipient();
|
||||||
|
recipient.setUsername(requester.getUserName());
|
||||||
|
recipient.setPhone(requester.getMobileNumber());
|
||||||
|
recipient.setUserId(requester.getEmailAddr());
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
// DB 템플릿 APP_REJECTED SMS 변수(%APP_NAME%, %REASON%)에 매핑
|
||||||
|
params.put("APP_NAME", appRequest.getClientName());
|
||||||
|
params.put("REASON", extractRejectReason(approval));
|
||||||
|
messageSendService.sendMessage(MessageCode.APP_REJECTED, recipient, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String extractRejectReason(Approval approval) {
|
||||||
|
if (approval.getApprovers() == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return approval.getApprovers().stream()
|
||||||
|
.map(com.eactive.apim.portal.approval.entity.Approver::getApprovalMessage)
|
||||||
|
.filter(m -> m != null && !m.isEmpty())
|
||||||
|
.findFirst().orElse("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+36
-1
@@ -94,10 +94,15 @@ public class PortalUserApprovalListener implements ApprovalListener {
|
|||||||
|
|
||||||
private void sendApprovalResult(PortalUser portalUser) {
|
private void sendApprovalResult(PortalUser portalUser) {
|
||||||
MessageRecipient recipient = new MessageRecipient();
|
MessageRecipient recipient = new MessageRecipient();
|
||||||
|
recipient.setUsername(portalUser.getUserName());
|
||||||
recipient.setPhone(portalUser.getMobileNumber());
|
recipient.setPhone(portalUser.getMobileNumber());
|
||||||
recipient.setUserId(portalUser.getEmailAddr());
|
recipient.setUserId(portalUser.getEmailAddr());
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
// messageSendService.sendMessage(MessageCode.USER_REGISTRATION_APPROVED, recipient, params);
|
// DB 템플릿 MANAGER_WITH_ORG_REGISTER_APPROVED SMS 변수(%ORG_NAME%)에 매핑
|
||||||
|
PortalOrg org = portalUser.getPortalOrg();
|
||||||
|
if (org != null) {
|
||||||
|
params.put("ORG_NAME", org.getOrgName());
|
||||||
|
}
|
||||||
messageSendService.sendMessage(MessageCode.MANAGER_WITH_ORG_REGISTER_APPROVED, recipient, params);
|
messageSendService.sendMessage(MessageCode.MANAGER_WITH_ORG_REGISTER_APPROVED, recipient, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,6 +160,13 @@ public class PortalUserApprovalListener implements ApprovalListener {
|
|||||||
PortalUser portalUser = portalUserService.findByUserId(userId);
|
PortalUser portalUser = portalUserService.findByUserId(userId);
|
||||||
PortalOrg portalOrg = portalUser.getPortalOrg();
|
PortalOrg portalOrg = portalUser.getPortalOrg();
|
||||||
|
|
||||||
|
// 거절 통지에 필요한 정보를 반려 처리(정보 마스킹) 이전에 캡처
|
||||||
|
String noticeName = portalUser.getUserName();
|
||||||
|
String noticePhone = portalUser.getMobileNumber();
|
||||||
|
String noticeEmail = portalUser.getEmailAddr();
|
||||||
|
String noticeOrgName = portalOrg != null ? portalOrg.getOrgName() : null;
|
||||||
|
String rejectReason = extractRejectReason(approval);
|
||||||
|
|
||||||
// 개인→법인 전환 요청 반려: approvalStatus가 PENDING이면 전환 신청이었으므로 개인 사용자로 복원
|
// 개인→법인 전환 요청 반려: approvalStatus가 PENDING이면 전환 신청이었으므로 개인 사용자로 복원
|
||||||
if (PortalUserEnums.ApprovalStatus.PENDING.equals(portalUser.getApprovalStatus())) {
|
if (PortalUserEnums.ApprovalStatus.PENDING.equals(portalUser.getApprovalStatus())) {
|
||||||
logger.info("Approval {} is a personal-to-corporate conversion rejection. Reverting user {} to personal user.", approval.getId(), userId);
|
logger.info("Approval {} is a personal-to-corporate conversion rejection. Reverting user {} to personal user.", approval.getId(), userId);
|
||||||
@@ -199,5 +211,28 @@ public class PortalUserApprovalListener implements ApprovalListener {
|
|||||||
|
|
||||||
portalOrgService.save(portalOrg);
|
portalOrgService.save(portalOrg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 법인관리자/법인 등록 거절 통지 (정보 마스킹 이전 캡처값 사용)
|
||||||
|
MessageRecipient recipient = new MessageRecipient();
|
||||||
|
recipient.setUsername(noticeName);
|
||||||
|
recipient.setPhone(noticePhone);
|
||||||
|
recipient.setUserId(noticeEmail);
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
// DB 템플릿 MANAGER_WITH_ORG_REGISTER_REJECTED SMS 변수(%ORG_NAME%, %REASON%)에 매핑
|
||||||
|
if (noticeOrgName != null) {
|
||||||
|
params.put("ORG_NAME", noticeOrgName);
|
||||||
|
}
|
||||||
|
params.put("REASON", rejectReason);
|
||||||
|
messageSendService.sendMessage(MessageCode.MANAGER_WITH_ORG_REGISTER_REJECTED, recipient, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String extractRejectReason(Approval approval) {
|
||||||
|
if (approval.getApprovers() == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return approval.getApprovers().stream()
|
||||||
|
.map(com.eactive.apim.portal.approval.entity.Approver::getApprovalMessage)
|
||||||
|
.filter(m -> m != null && !m.isEmpty())
|
||||||
|
.findFirst().orElse("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user