fix: [esign] 서명 요청/다음 서명자 알림에 역할 기반 분기 적용
- dispatchNotification: 상대방(counterpart)만 알림톡, 본사(creator)는 이메일 - 순차 서명 시 다음 서명자 알림도 동일 역할 기반 분기 적용 - 다음 서명자 알림에서 getKakaotalkChannelId/getTemplateData 헬퍼 활용 - 알림톡 실패 시 이메일 자동 폴백 로직 통일
This commit is contained in:
@@ -978,9 +978,10 @@ private function dispatchNotification(
|
||||
): array {
|
||||
$results = [];
|
||||
$alimtalkFailed = false;
|
||||
$isCounterpart = $signer->role === EsignSigner::ROLE_COUNTERPART;
|
||||
|
||||
// 알림톡 발송
|
||||
if (in_array($sendMethod, ['alimtalk', 'both']) && $signer->phone) {
|
||||
// 알림톡 발송: 상대방(counterpart)에게만 카카오톡 발송, 본사(creator)는 이메일
|
||||
if (in_array($sendMethod, ['alimtalk', 'both']) && $isCounterpart && $signer->phone) {
|
||||
$alimtalkResult = $this->sendAlimtalk($contract, $signer, $smsFallback, $isReminder, $templateName);
|
||||
$results[] = $alimtalkResult;
|
||||
$alimtalkFailed = ! ($alimtalkResult['success'] ?? false);
|
||||
@@ -988,11 +989,13 @@ private function dispatchNotification(
|
||||
|
||||
// 이메일 발송 조건:
|
||||
// 1) email/both 선택 시
|
||||
// 2) alimtalk인데 번호 없으면 폴백
|
||||
// 3) alimtalk 발송 실패 시 이메일 자동 폴백
|
||||
// 2) 본사(creator)는 항상 이메일
|
||||
// 3) 상대방이지만 전화번호 없으면 이메일 폴백
|
||||
// 4) 알림톡 발송 실패 시 이메일 자동 폴백
|
||||
$shouldSendEmail = in_array($sendMethod, ['email', 'both'])
|
||||
|| ($sendMethod === 'alimtalk' && ! $signer->phone)
|
||||
|| ($sendMethod === 'alimtalk' && $alimtalkFailed);
|
||||
|| ! $isCounterpart
|
||||
|| ($sendMethod === 'alimtalk' && $isCounterpart && ! $signer->phone)
|
||||
|| ($sendMethod === 'alimtalk' && $isCounterpart && $alimtalkFailed);
|
||||
|
||||
if ($shouldSendEmail && $signer->email) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user