From 2058dc979390e1d3e5d52d10c40007905328660a Mon Sep 17 00:00:00 2001 From: sohot8653 Date: Mon, 1 Sep 2025 11:11:52 +0900 Subject: [PATCH] =?UTF-8?q?[=EA=B3=B5=ED=86=B5=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9C=A0=ED=8B=B8=EB=A6=AC=ED=8B=B0=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=B6=94=EA=B0=80]=20CommonCodeUtils.java=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=9D=84=20=EC=83=88=EB=A1=9C=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=ED=95=98=EC=97=AC=20=EA=B3=B5=ED=86=B5=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A1=B0=ED=9A=8C=20=EB=B0=8F=20=EA=B2=80=EC=A6=9D?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20=EA=B5=AC=ED=98=84=ED=95=98?= =?UTF-8?q?=EC=98=80=EC=8A=B5=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/utils/CommonCodeUtils.java | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 src/main/java/com/bio/bio_backend/global/utils/CommonCodeUtils.java diff --git a/src/main/java/com/bio/bio_backend/global/utils/CommonCodeUtils.java b/src/main/java/com/bio/bio_backend/global/utils/CommonCodeUtils.java new file mode 100644 index 0000000..cbfeeb2 --- /dev/null +++ b/src/main/java/com/bio/bio_backend/global/utils/CommonCodeUtils.java @@ -0,0 +1,132 @@ +package com.bio.bio_backend.global.utils; + +import org.springframework.stereotype.Component; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import com.bio.bio_backend.domain.admin.common_code.dto.CommonCodeDto; +import com.bio.bio_backend.domain.admin.common_code.dto.CommonGroupCodeDto; +import com.bio.bio_backend.domain.admin.common_code.service.CommonCodeService; +import java.util.List; +import java.util.Optional; + +/** + * 공통 코드 관련 유틸리티 클래스 + * 다른 서비스의 비즈니스 로직에서 공통 코드를 쉽게 조회할 수 있도록 제공 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class CommonCodeUtils { + + private final CommonCodeService commonCodeService; + + /** + * 코드로 공통 코드 조회 + */ + public CommonCodeDto getCode(String code) { + try { + return commonCodeService.getCode(code); + } catch (Exception e) { + log.warn("공통 코드 조회 실패: code={}, error={}", code, e.getMessage()); + return null; + } + } + + /** + * 코드로 공통 코드 조회 (Optional 반환) + */ + public Optional getCodeOptional(String code) { + try { + return Optional.of(commonCodeService.getCode(code)); + } catch (Exception e) { + log.warn("공통 코드 조회 실패: code={}, error={}", code, e.getMessage()); + return Optional.empty(); + } + } + + /** + * 그룹 코드로 활성화된 공통 코드 목록 조회 + */ + public List getActiveCodesByGroup(String groupCode) { + try { + return commonCodeService.getActiveCodesByGroupCode(groupCode); + } catch (Exception e) { + log.warn("그룹별 공통 코드 조회 실패: groupCode={}, error={}", groupCode, e.getMessage()); + return List.of(); + } + } + + /** + * 부모 코드로 활성화된 공통 코드 목록 조회 + */ + public List getActiveCodesByParent(String parentCode) { + try { + return commonCodeService.getActiveCodesByParentCode(parentCode); + } catch (Exception e) { + log.warn("부모 코드별 공통 코드 조회 실패: parentCode={}, error={}", parentCode, e.getMessage()); + return List.of(); + } + } + + /** + * 그룹 코드 정보 조회 + */ + public CommonGroupCodeDto getGroupCode(String groupCode) { + try { + return commonCodeService.getGroupCode(groupCode); + } catch (Exception e) { + log.warn("그룹 코드 조회 실패: groupCode={}, error={}", groupCode, e.getMessage()); + return null; + } + } + + /** + * 코드명으로 공통 코드 조회 (그룹 내에서) + */ + public CommonCodeDto getCodeByName(String groupCode, String name) { + try { + List codes = commonCodeService.getActiveCodesByGroupCode(groupCode); + return codes.stream() + .filter(code -> name.equals(code.getName())) + .findFirst() + .orElse(null); + } catch (Exception e) { + log.warn("이름으로 공통 코드 조회 실패: groupCode={}, name={}, error={}", + groupCode, name, e.getMessage()); + return null; + } + } + + /** + * 코드 존재 여부 확인 + */ + public boolean existsCode(String code) { + return getCodeOptional(code).isPresent(); + } + + /** + * 그룹 코드 존재 여부 확인 + */ + public boolean existsGroupCode(String groupCode) { + try { + commonCodeService.getGroupCode(groupCode); + return true; + } catch (Exception e) { + return false; + } + } + + /** + * 코드 값 검증 (코드가 존재하고 활성화되어 있는지 확인) + */ + public boolean isValidCode(String groupCode, String code) { + try { + CommonCodeDto codeDto = commonCodeService.getCode(code); + return codeDto != null && + groupCode.equals(codeDto.getGroupCode()) && + Boolean.TRUE.equals(codeDto.getUseFlag()); + } catch (Exception e) { + return false; + } + } +}