[공통 코드 유틸리티 클래스 추가] CommonCodeUtils.java 파일을 새로 생성하여 공통 코드 조회 및 검증 기능을 구현하였습니다.

This commit is contained in:
2025-09-01 11:11:52 +09:00
parent 49b0815765
commit 2058dc9793

View File

@@ -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<CommonCodeDto> 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<CommonCodeDto> getActiveCodesByGroup(String groupCode) {
try {
return commonCodeService.getActiveCodesByGroupCode(groupCode);
} catch (Exception e) {
log.warn("그룹별 공통 코드 조회 실패: groupCode={}, error={}", groupCode, e.getMessage());
return List.of();
}
}
/**
* 부모 코드로 활성화된 공통 코드 목록 조회
*/
public List<CommonCodeDto> 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<CommonCodeDto> 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;
}
}
}