Files
ga-commission-system/ga-external-adapter/src/main/java/com/ga/external/message/MockMessageAdapter.java
T

48 lines
1.8 KiB
Java
Raw Normal View History

package com.ga.external.message;
import com.ga.common.adapter.message.MessageAdapter;
import com.ga.common.adapter.message.MessageRequest;
import com.ga.common.adapter.message.MessageResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.UUID;
/**
* SMS / 카카오 알림톡 Mock 구현.
* <p>
* 활성 조건: app.adapter.message=mock (기본). 실제 SDK 통합 시 yml 값을 'toast' 등으로 바꾸면 본 빈은 비활성.
* 항상 성공 응답. phoneNumber 는 뒷 4자리 외 마스킹.
*/
@Slf4j
@Component
@ConditionalOnProperty(prefix = "app.adapter", name = "message", havingValue = "mock", matchIfMissing = true)
public class MockMessageAdapter implements MessageAdapter {
@Override
public MessageResponse send(MessageRequest request) {
String masked = maskPhone(request.getPhoneNumber());
String msgId = "MOCK-MSG-" + UUID.randomUUID();
log.info("[MOCK MSG] send channel={} to={} title={} refType={} refId={} msgId={}",
request.getChannel(), masked, request.getTitle(),
request.getRefType(), request.getRefId(), msgId);
return MessageResponse.builder()
.messageId(msgId)
.sent(true)
.resultCode("0000")
.resultMessage("MOCK sent")
.sentAt(LocalDateTime.now())
.build();
}
private String maskPhone(String phone) {
if (phone == null) return null;
String digits = phone.replaceAll("[^0-9]", "");
if (digits.length() <= 4) return "****";
return "***-****-" + digits.substring(digits.length() - 4);
}
}