From 0ef36b59d037b19e017753f2a81ee245cd5fdc09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B1=84=EC=A7=80=EC=9B=90?= Date: Thu, 15 May 2025 17:05:39 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20cortarNumber=EB=A1=9C=20cortarName?= =?UTF-8?q?=20=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8A=94=20=EC=BF=BC=EB=A6=AC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zipline/repository/region/RegionRepository.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/apiserver/infrastructure/src/main/java/com/zipline/repository/region/RegionRepository.java b/apiserver/infrastructure/src/main/java/com/zipline/repository/region/RegionRepository.java index 5980b3da..89767914 100644 --- a/apiserver/infrastructure/src/main/java/com/zipline/repository/region/RegionRepository.java +++ b/apiserver/infrastructure/src/main/java/com/zipline/repository/region/RegionRepository.java @@ -1,17 +1,19 @@ package com.zipline.repository.region; +import com.zipline.entity.publicitem.Region; import java.util.List; - import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import com.zipline.entity.publicitem.Region; - @Repository public interface RegionRepository extends JpaRepository { List findByParentCortarNo(Long parentCortarNo); @Query("SELECT concat(gp.cortarName, ' ', p.cortarName, ' ', r.cortarName) FROM Region r LEFT JOIN Region p ON r.parent.cortarNo = p.cortarNo LEFT JOIN Region gp ON p.parent.cortarNo = gp.cortarNo WHERE r.cortarNo = :cortarNo") String findWithParentsByDistrictCode(Long cortarNo); -} + + @Query("SELECT r.cortarName FROM Region r WHERE r.cortarNo = :cortarNo") + String findCortarNameByCortarNo(@Param("cortarNo") String cortarNoText); +} \ No newline at end of file From 9e425c8f5eab58179d4f441699cba76baadf0e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B1=84=EC=A7=80=EC=9B=90?= Date: Thu, 15 May 2025 17:06:27 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EB=AC=B8=EC=9E=90=20=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=20=EC=8B=9C=20=EA=B4=80=EC=8B=AC=20=EC=A7=80=EC=97=AD?= =?UTF-8?q?=20=EB=B3=80=EC=88=98=20=EC=B9=98=ED=99=98=EC=9D=84=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20=EC=82=AC=EC=9D=B4=EB=93=9C=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/message/MessageServiceImpl.java | 40 ++++++++++++++++++- .../dto/request/SendMessageRequestDTO.java | 8 ++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/apiserver/service/src/main/java/com/zipline/service/message/MessageServiceImpl.java b/apiserver/service/src/main/java/com/zipline/service/message/MessageServiceImpl.java index 2b713b1f..e3339d0b 100644 --- a/apiserver/service/src/main/java/com/zipline/service/message/MessageServiceImpl.java +++ b/apiserver/service/src/main/java/com/zipline/service/message/MessageServiceImpl.java @@ -8,6 +8,7 @@ import com.zipline.global.exception.user.UserException; import com.zipline.global.exception.user.errorcode.UserErrorCode; import com.zipline.repository.message.MessageHistoryRepository; +import com.zipline.repository.region.RegionRepository; import com.zipline.repository.user.UserRepository; import com.zipline.service.message.dto.request.MessageHistoryRequestDTO; import com.zipline.service.message.dto.request.SendMessageRequestDTO; @@ -15,6 +16,8 @@ import java.time.LocalDateTime; import java.util.List; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -30,6 +33,7 @@ public class MessageServiceImpl implements MessageService { private final MessageHistoryParamFormatter messageHistoryParamFormatter; private final MessageHistoryRepository messageHistoryRepository; private final UserRepository userRepository; + private final RegionRepository regionRepository; public void saveMessageHistory(String messageGroupId, Long userUID) { @@ -45,11 +49,45 @@ public void saveMessageHistory(String messageGroupId, Long userUID) { messageHistoryRepository.save(messageHistory); } + private String replaceTemplateValues(String text) { + if (text == null) return null; + + Pattern pattern = Pattern.compile("\\$\\$###\\{([^}]+)}"); + Matcher matcher = pattern.matcher(text); + + StringBuilder result = new StringBuilder(); + while (matcher.find()) { + String key = matcher.group(1); + String replacement = getReplacementValue(key); + matcher.appendReplacement(result, Matcher.quoteReplacement(replacement)); + } + matcher.appendTail(result); + + return result.toString(); + } + + private String getReplacementValue(String key) { + if (key == null || !key.matches("\\d{10}")) { + return key; + } + if (regionRepository.findCortarNameByCortarNo(key) == null) { + return key; + } + return regionRepository.findCortarNameByCortarNo(key); + } + @Transactional public String sendMessage(List request, Long userUID) { try { - Map wrappedRequest = Map.of("messages", request); + List processedRequest = request.stream() + .map(msg -> { + String processedText = replaceTemplateValues(msg.getText()); + return msg.withText(processedText); + }) + .toList(); + + Map wrappedRequest = Map.of("messages", processedRequest); String response = webClient.post() .uri("/send-many/detail") diff --git a/apiserver/service/src/main/java/com/zipline/service/message/dto/request/SendMessageRequestDTO.java b/apiserver/service/src/main/java/com/zipline/service/message/dto/request/SendMessageRequestDTO.java index f793697b..c4e9e83f 100644 --- a/apiserver/service/src/main/java/com/zipline/service/message/dto/request/SendMessageRequestDTO.java +++ b/apiserver/service/src/main/java/com/zipline/service/message/dto/request/SendMessageRequestDTO.java @@ -1,10 +1,18 @@ package com.zipline.service.message.dto.request; +import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; @Getter +@AllArgsConstructor +@NoArgsConstructor public class SendMessageRequestDTO { private String from; private String to; private String text; + + public SendMessageRequestDTO withText(String text) { + return new SendMessageRequestDTO(this.from, this.to, text); + } } \ No newline at end of file From da93b7cf4f64ef274bfac4c1ab985ad38916d0a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B1=84=EC=A7=80=EC=9B=90?= Date: Fri, 16 May 2025 02:42:03 +0900 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=98=EA=B2=8C=20=EC=BF=BC=EB=A6=AC=20=ED=98=B8=EC=B6=9C?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zipline/service/message/MessageServiceImpl.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/apiserver/service/src/main/java/com/zipline/service/message/MessageServiceImpl.java b/apiserver/service/src/main/java/com/zipline/service/message/MessageServiceImpl.java index e3339d0b..466ee764 100644 --- a/apiserver/service/src/main/java/com/zipline/service/message/MessageServiceImpl.java +++ b/apiserver/service/src/main/java/com/zipline/service/message/MessageServiceImpl.java @@ -70,10 +70,9 @@ private String getReplacementValue(String key) { if (key == null || !key.matches("\\d{10}")) { return key; } - if (regionRepository.findCortarNameByCortarNo(key) == null) { - return key; - } - return regionRepository.findCortarNameByCortarNo(key); + String cortarName = regionRepository.findCortarNameByCortarNo(key); + + return cortarName != null ? cortarName : key; } @Transactional