지대한
8 months ago
11 changed files with 613 additions and 36 deletions
@ -0,0 +1,21 @@
|
||||
package kr.co.palnet.kac.api.com.controller; |
||||
|
||||
import kr.co.palnet.kac.data.com.service.ComCodeDomainService; |
||||
import lombok.RequiredArgsConstructor; |
||||
import org.springframework.web.bind.annotation.GetMapping; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
|
||||
@RequiredArgsConstructor |
||||
@RequestMapping("/v1/com/code") |
||||
@RestController |
||||
public class CodeController { |
||||
|
||||
private final ComCodeDomainService comCodeDomainService; |
||||
|
||||
@GetMapping("/test") |
||||
public String test() { |
||||
var test = comCodeDomainService.getComCdGroupBas("test"); |
||||
return "test"; |
||||
} |
||||
} |
@ -0,0 +1,12 @@
|
||||
package kr.co.palnet.kac.data.com.repository; |
||||
|
||||
import kr.co.palnet.kac.data.com.model.ComCdBas; |
||||
import org.springframework.data.jpa.repository.JpaRepository; |
||||
|
||||
import java.util.List; |
||||
|
||||
public interface ComCdBasRepository extends JpaRepository<ComCdBas, ComCdBas.ComCdBasId> { |
||||
List<ComCdBas> findByGroupCdAndUseYnOrderBySortOrdrAsc(String groupCd, String useYn); |
||||
|
||||
ComCdBas findByGroupCdAndCdIdAndUseYn(String groupCd, String cdId, String useYn); |
||||
} |
@ -0,0 +1,7 @@
|
||||
package kr.co.palnet.kac.data.com.repository; |
||||
|
||||
import kr.co.palnet.kac.data.com.model.ComCdGroupBas; |
||||
import org.springframework.data.jpa.repository.JpaRepository; |
||||
|
||||
public interface ComCdGroupBasRepository extends JpaRepository<ComCdGroupBas, String> { |
||||
} |
@ -0,0 +1,10 @@
|
||||
package kr.co.palnet.kac.data.com.repository; |
||||
|
||||
import kr.co.palnet.kac.data.com.model.ComCdLangCtg; |
||||
import org.springframework.data.jpa.repository.JpaRepository; |
||||
|
||||
import java.util.List; |
||||
|
||||
public interface ComCdLangCtgRepository extends JpaRepository<ComCdLangCtg, ComCdLangCtg.ComCdLangCtgId> { |
||||
List<ComCdLangCtg> findByGroupCdAndCdId(String groupCd, String cdId); |
||||
} |
@ -0,0 +1,202 @@
|
||||
package kr.co.palnet.kac.data.com.service; |
||||
|
||||
import kr.co.palnet.kac.data.com.model.ComCdBas; |
||||
import kr.co.palnet.kac.data.com.model.ComCdGroupBas; |
||||
import kr.co.palnet.kac.data.com.model.ComCdLangCtg; |
||||
import kr.co.palnet.kac.data.com.repository.ComCdBasRepository; |
||||
import kr.co.palnet.kac.data.com.repository.ComCdGroupBasRepository; |
||||
import kr.co.palnet.kac.data.com.repository.ComCdLangCtgRepository; |
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import java.time.LocalDateTime; |
||||
import java.util.List; |
||||
|
||||
@Slf4j |
||||
@RequiredArgsConstructor |
||||
@Service |
||||
public class ComCodeDomainService { |
||||
|
||||
private final ComCdGroupBasRepository comCdGroupBasRepository; |
||||
private final ComCdBasRepository comCdBasRepository; |
||||
private final ComCdLangCtgRepository comCdLangCtgRepository; |
||||
|
||||
// 그룹 조회
|
||||
public List<ComCdGroupBas> getComCdGroupBasList() { |
||||
return comCdGroupBasRepository.findAll(); |
||||
} |
||||
|
||||
public ComCdGroupBas getComCdGroupBas(String groupCd) { |
||||
return comCdGroupBasRepository.findById(groupCd).orElse(null); |
||||
} |
||||
|
||||
// TODO 코드 조회시 UPPER 기반 계층구조로 변경
|
||||
// 코드 조회
|
||||
public List<ComCdBas> getComCdBasList(String groupCd) { |
||||
return comCdBasRepository.findByGroupCdAndUseYnOrderBySortOrdrAsc(groupCd, "Y"); |
||||
} |
||||
|
||||
public ComCdBas getComCdBas(String groupCd, String cdId) { |
||||
return comCdBasRepository.findByGroupCdAndCdIdAndUseYn(groupCd, cdId, "Y"); |
||||
} |
||||
|
||||
// 언어 조회
|
||||
public List<ComCdLangCtg> getComCdLangCtgList(String groupCd, String cdId) { |
||||
return comCdLangCtgRepository.findByGroupCdAndCdId(groupCd, cdId); |
||||
} |
||||
|
||||
public ComCdLangCtg getComCdLangCtg(String groupCd, String cdId, String langDivCd) { |
||||
ComCdLangCtg.ComCdLangCtgId id = ComCdLangCtg.ComCdLangCtgId.builder() |
||||
.groupCd(groupCd) |
||||
.cdId(cdId) |
||||
.langDivCd(langDivCd) |
||||
.build(); |
||||
return comCdLangCtgRepository.findById(id).orElse(null); |
||||
} |
||||
|
||||
|
||||
// TODO Exception 처리
|
||||
// 그룹 등록
|
||||
public ComCdGroupBas createComCdGroupBas(ComCdGroupBas comCdGroupBas) { |
||||
comCdGroupBasRepository.findById(comCdGroupBas.getGroupCd()).ifPresent(bas -> { |
||||
throw new RuntimeException("이미 존재하는 코드 그룹입니다."); |
||||
}); |
||||
|
||||
// TODO 일자 및 사용자 넣기
|
||||
comCdGroupBas.setCreateDt(LocalDateTime.now()); |
||||
comCdGroupBas.setCreateUserId("CREATE_USER"); |
||||
comCdGroupBas.setUpdateDt(LocalDateTime.now()); |
||||
comCdGroupBas.setUpdateUserId("CREATE_USER"); |
||||
|
||||
return comCdGroupBasRepository.save(comCdGroupBas); |
||||
} |
||||
|
||||
// TODO 일자 및 사용자 넣기
|
||||
// TODO Exception 처리
|
||||
// 코드 등록
|
||||
public ComCdBas createComCdBas(ComCdBas comCdBas) { |
||||
// comCdBasRepository.findById(comCdBas.getId()).ifPresent(bas -> {
|
||||
// throw new RuntimeException("이미 존재하는 코드입니다.");
|
||||
// });
|
||||
var id = ComCdBas.ComCdBasId.builder() |
||||
.groupCd(comCdBas.getGroupCd()) |
||||
.cdId(comCdBas.getCdId()) |
||||
.build(); |
||||
comCdBasRepository.findById(id).ifPresent(bas -> { |
||||
throw new RuntimeException("이미 존재하는 코드입니다."); |
||||
}); |
||||
// TODO 일자 및 사용자 넣기
|
||||
comCdBas.setCreateDt(LocalDateTime.now()); |
||||
comCdBas.setCreateUserId("CREATE_USER"); |
||||
comCdBas.setUpdateDt(LocalDateTime.now()); |
||||
comCdBas.setUpdateUserId("CREATE_USER"); |
||||
|
||||
return comCdBasRepository.save(comCdBas); |
||||
} |
||||
|
||||
// 언어 등록
|
||||
public ComCdLangCtg createComCdLangCtg(ComCdLangCtg comCdLangCtg) { |
||||
// comCdLangCtgRepository.findById(comCdLangCtg.getId()).ifPresent(bas -> {
|
||||
// throw new RuntimeException("이미 존재하는 코드 언어입니다.");
|
||||
// });
|
||||
var id = ComCdLangCtg.ComCdLangCtgId.builder() |
||||
.groupCd(comCdLangCtg.getGroupCd()) |
||||
.cdId(comCdLangCtg.getCdId()) |
||||
.langDivCd(comCdLangCtg.getLangDivCd()) |
||||
.build(); |
||||
comCdLangCtgRepository.findById(id).ifPresent(bas -> { |
||||
throw new RuntimeException("이미 존재하는 코드 언어입니다."); |
||||
}); |
||||
|
||||
// TODO 일자 및 사용자 넣기
|
||||
comCdLangCtg.setCreateDt(LocalDateTime.now()); |
||||
comCdLangCtg.setCreateUserId("CREATE_USER"); |
||||
comCdLangCtg.setUpdateDt(LocalDateTime.now()); |
||||
comCdLangCtg.setUpdateUserId("CREATE_USER"); |
||||
|
||||
return comCdLangCtgRepository.save(comCdLangCtg); |
||||
} |
||||
|
||||
// TODO Exception 처리
|
||||
// 그룹 수정
|
||||
public ComCdGroupBas updateComCdGroupBas(ComCdGroupBas comCdGroupBas) { |
||||
var bas = comCdGroupBasRepository.findById(comCdGroupBas.getGroupCd()).orElseThrow(() -> { |
||||
throw new RuntimeException("존재하지 않는 코드 그룹입니다."); |
||||
}); |
||||
bas.update(comCdGroupBas); |
||||
|
||||
// TODO 일자 및 사용자 넣기
|
||||
bas.setUpdateDt(LocalDateTime.now()); |
||||
bas.setUpdateUserId("UPDATE_USER"); |
||||
|
||||
return comCdGroupBasRepository.save(bas); |
||||
} |
||||
|
||||
// TODO 일자 및 사용자 넣기
|
||||
// TODO Exception 처리
|
||||
// 코드 수정
|
||||
public ComCdBas updateComCdBas(ComCdBas comCdBas) { |
||||
|
||||
var id = ComCdBas.ComCdBasId.builder() |
||||
.groupCd(comCdBas.getGroupCd()) |
||||
.cdId(comCdBas.getCdId()) |
||||
.build(); |
||||
|
||||
var bas = comCdBasRepository.findById(id).orElseThrow(() -> { |
||||
throw new RuntimeException("존재하지 않는 코드입니다."); |
||||
}); |
||||
bas.update(comCdBas); |
||||
|
||||
// TODO 일자 및 사용자 넣기
|
||||
bas.setUpdateDt(LocalDateTime.now()); |
||||
bas.setUpdateUserId("UPDATE_USER"); |
||||
|
||||
return comCdBasRepository.save(bas); |
||||
} |
||||
|
||||
// TODO 일자 및 사용자 넣기
|
||||
// TODO Exception 처리
|
||||
// 언어 수정
|
||||
public ComCdLangCtg updateComCdLangCtg(ComCdLangCtg comCdLangCtg) { |
||||
var id = ComCdLangCtg.ComCdLangCtgId.builder() |
||||
.groupCd(comCdLangCtg.getGroupCd()) |
||||
.cdId(comCdLangCtg.getCdId()) |
||||
.langDivCd(comCdLangCtg.getLangDivCd()) |
||||
.build(); |
||||
var bas = comCdLangCtgRepository.findById(id).orElseThrow(() -> { |
||||
throw new RuntimeException("존재하지 않는 코드 언어입니다."); |
||||
}); |
||||
bas.update(comCdLangCtg); |
||||
|
||||
// TODO 일자 및 사용자 넣기
|
||||
bas.setUpdateDt(LocalDateTime.now()); |
||||
bas.setUpdateUserId("UPDATE_USER"); |
||||
|
||||
return comCdLangCtgRepository.save(bas); |
||||
} |
||||
|
||||
// 그룹 삭제
|
||||
public void deleteComCdGroupBas(String groupCd) { |
||||
comCdGroupBasRepository.deleteById(groupCd); |
||||
} |
||||
|
||||
// 코드 삭제
|
||||
public void deleteComCdBas(String groupCd, String cdId) { |
||||
var id = ComCdBas.ComCdBasId.builder() |
||||
.groupCd(groupCd) |
||||
.cdId(cdId) |
||||
.build(); |
||||
comCdBasRepository.deleteById(id); |
||||
} |
||||
|
||||
// 언어 삭제
|
||||
public void deleteComCdLangCtg(String groupCd, String cdId, String langDivCd) { |
||||
var id = ComCdLangCtg.ComCdLangCtgId.builder() |
||||
.groupCd(groupCd) |
||||
.cdId(cdId) |
||||
.langDivCd(langDivCd) |
||||
.build(); |
||||
comCdLangCtgRepository.deleteById(id); |
||||
} |
||||
} |
@ -0,0 +1,234 @@
|
||||
package kr.co.palnet.kac.data.com.service; |
||||
|
||||
import kr.co.palnet.kac.app.KacAppApplication; |
||||
import kr.co.palnet.kac.data.com.model.ComCdBas; |
||||
import kr.co.palnet.kac.data.com.model.ComCdGroupBas; |
||||
import kr.co.palnet.kac.data.com.model.ComCdLangCtg; |
||||
import kr.co.palnet.kac.data.com.repository.ComCdBasRepository; |
||||
import kr.co.palnet.kac.data.com.repository.ComCdGroupBasRepository; |
||||
import kr.co.palnet.kac.data.com.repository.ComCdLangCtgRepository; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.junit.jupiter.api.BeforeEach; |
||||
import org.junit.jupiter.api.DisplayName; |
||||
import org.junit.jupiter.api.Test; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.boot.test.context.SpringBootTest; |
||||
|
||||
import java.time.LocalDateTime; |
||||
|
||||
@Slf4j |
||||
@SpringBootTest(classes = KacAppApplication.class) |
||||
class ComCodeDomainServiceTest { |
||||
|
||||
@Autowired |
||||
private ComCodeDomainService comCodeDomainService; |
||||
|
||||
@Autowired |
||||
private ComCdGroupBasRepository comCdGroupBasRepository; |
||||
@Autowired |
||||
private ComCdBasRepository comCdBasRepository; |
||||
@Autowired |
||||
private ComCdLangCtgRepository comCdLangCtgRepository; |
||||
|
||||
@BeforeEach |
||||
void before() { |
||||
log.info("before start"); |
||||
this.comCdLangCtgRepository.deleteAll(); |
||||
this.comCdBasRepository.deleteAll(); |
||||
this.comCdGroupBasRepository.deleteAll(); |
||||
|
||||
for (int i = 0; i < 3; i++) { |
||||
ComCdGroupBas comCdGroupBas = ComCdGroupBas.builder() |
||||
.groupCd("TEST" + i) |
||||
.siteCd("KAC") |
||||
.groupCdNm("테스트" + i) |
||||
.rm("비고") |
||||
.createUserId("INIT_CREATE_USER") |
||||
.createDt(LocalDateTime.now()) |
||||
.updateUserId("INIT_UPDATE_USER") |
||||
.updateDt(LocalDateTime.now()) |
||||
.build(); |
||||
|
||||
ComCdGroupBas saveComCdGroupBas = comCdGroupBasRepository.save(comCdGroupBas); |
||||
|
||||
for (int j = 0; j < 10; j++) { |
||||
|
||||
ComCdBas comCdBas = ComCdBas.builder() |
||||
.groupCd("TEST" + i) |
||||
.cdId("TEST" + j) |
||||
.addInfoValue("add infomation.") |
||||
.sortOrdr(0) |
||||
.useYn("Y") |
||||
.createUserId("INIT_CREATE_USER") |
||||
.createDt(LocalDateTime.now()) |
||||
.updateUserId("INIT_UPDATE_USER") |
||||
.updateDt(LocalDateTime.now()) |
||||
.build(); |
||||
|
||||
// comCdBas.setComCdGroupBas(saveComCdGroupBas);
|
||||
ComCdBas saveComCdBas = comCdBasRepository.save(comCdBas); |
||||
|
||||
for (int k = 0; k < 2; k++) { |
||||
ComCdLangCtg comCdLangCtg = ComCdLangCtg.builder() |
||||
.groupCd("TEST" + i) |
||||
.cdId("TEST" + j) |
||||
.langDivCd(k != 1 ? "ko_KR" : "en_US") |
||||
.cdNm("테스트") |
||||
.createUserId("INIT_CREATE_USER") |
||||
.createDt(LocalDateTime.now()) |
||||
.updateUserId("INIT_UPDATE_USER") |
||||
.updateDt(LocalDateTime.now()) |
||||
.build(); |
||||
|
||||
// comCdLangCtg.setComCdBas(saveComCdBas);
|
||||
comCdLangCtgRepository.save(comCdLangCtg); |
||||
} |
||||
} |
||||
|
||||
|
||||
} |
||||
|
||||
|
||||
log.info("before end"); |
||||
} |
||||
|
||||
@DisplayName("before...") |
||||
@Test |
||||
void testBefore() { |
||||
log.info("before..."); |
||||
} |
||||
|
||||
@DisplayName("그룹 조회 - 목록") |
||||
@Test |
||||
void getComCdGroupBasList() { |
||||
comCodeDomainService.getComCdGroupBasList().forEach(comCdGroupBas -> log.info("{}", comCdGroupBas)); |
||||
} |
||||
|
||||
@DisplayName("그룹 조회 - 단건") |
||||
@Test |
||||
void getComCdGroupBas() { |
||||
var comCdGroupBas = comCodeDomainService.getComCdGroupBas("TEST"); |
||||
log.info("{}", comCdGroupBas); |
||||
} |
||||
|
||||
@DisplayName("코드 조회 - 목록") |
||||
@Test |
||||
void getComCdBasList() { |
||||
comCodeDomainService.getComCdBasList("TEST").forEach(bas -> log.info("{}", bas)); |
||||
} |
||||
|
||||
@DisplayName("코드 조회 - 단건") |
||||
@Test |
||||
void getComCdBas() { |
||||
var comCdBas = comCodeDomainService.getComCdBas("TEST", "TEST"); |
||||
log.info("{}", comCdBas); |
||||
} |
||||
|
||||
@DisplayName("언어 조회 - 목록") |
||||
@Test |
||||
void getComCdLangCtgList() { |
||||
comCodeDomainService.getComCdLangCtgList("TEST", "TEST").forEach(lang -> log.info("{}", lang)); |
||||
} |
||||
|
||||
@DisplayName("언어 조회 - 단건") |
||||
@Test |
||||
void getComCdLangCtg() { |
||||
ComCdLangCtg comCdLangCtg = comCodeDomainService.getComCdLangCtg("TEST", "TEST", "ko_KR"); |
||||
log.info("{}", comCdLangCtg); |
||||
} |
||||
|
||||
|
||||
@DisplayName("그룹 등록 - 단건") |
||||
@Test |
||||
void createComCdGroupBas() { |
||||
ComCdGroupBas entity = ComCdGroupBas.builder() |
||||
.groupCd("TEST100") |
||||
.siteCd("KAC") |
||||
.groupCdNm("테스트") |
||||
.rm("비고") |
||||
.build(); |
||||
comCodeDomainService.createComCdGroupBas(entity); |
||||
} |
||||
|
||||
@DisplayName("코드 등록 - 단건") |
||||
@Test |
||||
void createComCdBas() { |
||||
ComCdBas entity = ComCdBas.builder() |
||||
.groupCd("TEST1") |
||||
.cdId("TEST100") |
||||
.addInfoValue("add infomation.") |
||||
.sortOrdr(0) |
||||
.useYn("Y") |
||||
.build(); |
||||
comCodeDomainService.createComCdBas(entity); |
||||
} |
||||
|
||||
@DisplayName("언어 등록 - 단건") |
||||
@Test |
||||
void createComCdLangCtg() { |
||||
|
||||
|
||||
ComCdLangCtg entity = ComCdLangCtg.builder() |
||||
.groupCd("TEST1") |
||||
.cdId("TEST1") |
||||
.langDivCd("zh_CN") |
||||
.cdNm("테스트1") |
||||
.build(); |
||||
ComCdLangCtg comCdLangCtg = comCodeDomainService.createComCdLangCtg(entity); |
||||
log.info("{}", comCdLangCtg); |
||||
} |
||||
|
||||
@DisplayName("그룹 수정 - 단건") |
||||
@Test |
||||
void updateComCdGroupBas() { |
||||
ComCdGroupBas entity = ComCdGroupBas.builder() |
||||
.groupCd("TEST0") |
||||
.siteCd("KAC") |
||||
.groupCdNm("테스트") |
||||
.rm("비고-update") |
||||
.build(); |
||||
ComCdGroupBas comCdGroupBas = comCodeDomainService.updateComCdGroupBas(entity); |
||||
log.info("{}", comCdGroupBas); |
||||
} |
||||
|
||||
@DisplayName("코드 수정 - 단건") |
||||
@Test |
||||
void updateComCdBas() { |
||||
ComCdBas entity = ComCdBas.builder() |
||||
.groupCd("TEST0") |
||||
.cdId("TEST7") |
||||
.addInfoValue("add infomation - update.") |
||||
.build(); |
||||
comCodeDomainService.updateComCdBas(entity); |
||||
} |
||||
|
||||
@DisplayName("언어 수정 - 단건") |
||||
@Test |
||||
void updateComCdLangCtg() { |
||||
ComCdLangCtg entity = ComCdLangCtg.builder() |
||||
.groupCd("TEST0") |
||||
.cdId("TEST7") |
||||
.langDivCd("ko_KR") |
||||
.cdNm("테스트1 - update") |
||||
.build(); |
||||
comCodeDomainService.updateComCdLangCtg(entity); |
||||
} |
||||
|
||||
@DisplayName("그룹 삭제 - 단건") |
||||
@Test |
||||
void deleteComCdGroupBas() { |
||||
comCodeDomainService.deleteComCdGroupBas("TEST3"); |
||||
} |
||||
|
||||
@DisplayName("코드 삭제 - 단건") |
||||
@Test |
||||
void deleteComCdBas() { |
||||
comCodeDomainService.deleteComCdBas("TEST3", "TEST3"); |
||||
} |
||||
|
||||
@DisplayName("언어 삭제 - 단건") |
||||
@Test |
||||
void deleteComCdLangCtg() { |
||||
comCodeDomainService.deleteComCdLangCtg("TEST3", "TEST3", "en_US"); |
||||
} |
||||
} |
Loading…
Reference in new issue