diff --git a/src/main/java/com/example/gimmegonghakauth/InitData.java b/src/main/java/com/example/gimmegonghakauth/InitData.java deleted file mode 100644 index 9f288cf..0000000 --- a/src/main/java/com/example/gimmegonghakauth/InitData.java +++ /dev/null @@ -1,240 +0,0 @@ -package com.example.gimmegonghakauth; - -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import com.example.gimmegonghakauth.dao.AbeekDao; -import com.example.gimmegonghakauth.dao.MajorsDao; -import com.example.gimmegonghakauth.user.infrastructure.UserRepository; -import com.example.gimmegonghakauth.domain.AbeekDomain; -import com.example.gimmegonghakauth.domain.AbeekDomain.AbeekDomainBuilder; -import com.example.gimmegonghakauth.domain.MajorsDomain; -import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.service.recommend.MajorName; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.annotation.Profile; -import org.springframework.context.event.EventListener; -import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -@Component -@RequiredArgsConstructor -@Profile("!(prod || release)") -public class InitData { - - private final MajorsDao majorsDao; - private final AbeekDao abeekDao; - private final UserRepository userRepository; - private final PasswordEncoder passwordEncoder; - - @Value("${admin1}") - private Long admin1; - - @Value("${admin2}") - private Long admin2; - - @Value("${admin3}") - private Long admin3; - - @EventListener(ApplicationReadyEvent.class) - @Transactional - public void initDatabase() { - MajorsDomain computerMajor = MajorsDomain.builder() - .id(1L) - .major(MajorName.COMPUTER.getName()).build(); - MajorsDomain elecInfoMajor = MajorsDomain.builder() - .id(2L) - .major(MajorName.ELEC_INFO.getName()).build(); - MajorsDomain softwareMajor = MajorsDomain.builder() - .id(3L) - .major(MajorName.SOFTWARE.getName()).build(); - MajorsDomain dataScienceMajor = MajorsDomain.builder() - .id(4L) - .major(MajorName.DATA_SCIENCE.getName()).build(); - majorsDao.save(computerMajor); - majorsDao.save(elecInfoMajor); - majorsDao.save(softwareMajor); - majorsDao.save(dataScienceMajor); - - //24학년도 computerMajor - AbeekDomainBuilder abeek1 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.BSM) - .majorsDomain(computerMajor) - .note("this is a test note") - .year(24) - .minCredit(18); - AbeekDomainBuilder abeek2 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.PROFESSIONAL_NON_MAJOR) - .majorsDomain(computerMajor) - .note("this is a test note") - .year(24) - .minCredit(14); - AbeekDomainBuilder abeek3 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.DESIGN) - .majorsDomain(computerMajor) - .note("this is a test note") - .year(24) - .minCredit(10); - AbeekDomainBuilder abeek4 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.MAJOR) - .majorsDomain(computerMajor) - .note("this is a test note") - .year(24) - .minCredit(45); - AbeekDomainBuilder abeek5 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.MINIMUM_CERTI) - .majorsDomain(computerMajor) - .note("this is a test note") - .year(24) - .minCredit(77); - - abeekDao.save(abeek1.build()); - abeekDao.save(abeek2.build()); - abeekDao.save(abeek3.build()); - abeekDao.save(abeek4.build()); - abeekDao.save(abeek5.build()); - - //24학년도 전정통 - AbeekDomainBuilder abeek21 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.MSC) - .majorsDomain(elecInfoMajor) - .note("this is a test note") - .year(24) - .minCredit(27); - AbeekDomainBuilder abeek22 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.PROFESSIONAL_NON_MAJOR) - .majorsDomain(elecInfoMajor) - .note("this is a test note") - .year(24) - .minCredit(14); - AbeekDomainBuilder abeek23 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.DESIGN) - .majorsDomain(elecInfoMajor) - .note("this is a test note") - .year(24) - .minCredit(9); - AbeekDomainBuilder abeek24 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.MAJOR) - .majorsDomain(elecInfoMajor) - .note("this is a test note") - .year(24) - .minCredit(45); - AbeekDomainBuilder abeek25 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.MINIMUM_CERTI) - .majorsDomain(elecInfoMajor) - .note("this is a test note") - .year(24) - .minCredit(86); - - abeekDao.save(abeek21.build()); - abeekDao.save(abeek22.build()); - abeekDao.save(abeek23.build()); - abeekDao.save(abeek24.build()); - abeekDao.save(abeek25.build()); - - //24학년도 소프트웨어 - AbeekDomainBuilder abeek31 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.BSM) - .majorsDomain(softwareMajor) - .note("this is a test note") - .year(24) - .minCredit(18); - AbeekDomainBuilder abeek32 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.PROFESSIONAL_NON_MAJOR) - .majorsDomain(softwareMajor) - .note("this is a test note") - .year(24) - .minCredit(14); - AbeekDomainBuilder abeek33 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.DESIGN) - .majorsDomain(softwareMajor) - .note("this is a test note") - .year(24) - .minCredit(12); - AbeekDomainBuilder abeek34 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.MAJOR) - .majorsDomain(softwareMajor) - .note("this is a test note") - .year(24) - .minCredit(45); - AbeekDomainBuilder abeek35 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.MINIMUM_CERTI) - .majorsDomain(softwareMajor) - .note("this is a test note") - .year(24) - .minCredit(77); - - abeekDao.save(abeek31.build()); - abeekDao.save(abeek32.build()); - abeekDao.save(abeek33.build()); - abeekDao.save(abeek34.build()); - abeekDao.save(abeek35.build()); - - //24학년도 데이터사이언스 - AbeekDomainBuilder abeek41 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.BSM) - .majorsDomain(dataScienceMajor) - .note("this is a test note") - .year(24) - .minCredit(15); - AbeekDomainBuilder abeek42 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.PROFESSIONAL_NON_MAJOR) - .majorsDomain(dataScienceMajor) - .note("this is a test note") - .year(24) - .minCredit(14); - AbeekDomainBuilder abeek43 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.DESIGN) - .majorsDomain(dataScienceMajor) - .note("this is a test note") - .year(24) - .minCredit(9); - AbeekDomainBuilder abeek44 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.MAJOR) - .majorsDomain(dataScienceMajor) - .note("this is a test note") - .year(24) - .minCredit(45); - AbeekDomainBuilder abeek45 = AbeekDomain.builder() - .abeekType(AbeekTypeConst.MINIMUM_CERTI) - .majorsDomain(dataScienceMajor) - .note("this is a test note") - .year(24) - .minCredit(74); - - abeekDao.save(abeek41.build()); - abeekDao.save(abeek42.build()); - abeekDao.save(abeek43.build()); - abeekDao.save(abeek44.build()); - abeekDao.save(abeek45.build()); - - //User - UserDomain user1 = UserDomain.builder() - .email("testEmail1@sju.ac.kr") - .name("조태현") - .password(passwordEncoder.encode("qwer")) - .studentId(admin1) - .majorsDomain(elecInfoMajor).build(); - userRepository.save(user1); - - UserDomain user2 = UserDomain.builder() - .email("testEmail2@sju.ac.kr") - .name("이희수") - .password(passwordEncoder.encode("qwer")) - .studentId(admin2) - .majorsDomain(dataScienceMajor).build(); - userRepository.save(user2); - - UserDomain user3 = UserDomain.builder() - .email("testEmail3@sju.ac.kr") - .name("홍지섭") - .password(passwordEncoder.encode("qwer")) - .studentId(admin3) - .majorsDomain(computerMajor).build(); - userRepository.save(user3); - - } - - -} diff --git a/src/main/java/com/example/gimmegonghakauth/config/SecurityConfig.java b/src/main/java/com/example/gimmegonghakauth/auth/config/SecurityConfig.java similarity index 98% rename from src/main/java/com/example/gimmegonghakauth/config/SecurityConfig.java rename to src/main/java/com/example/gimmegonghakauth/auth/config/SecurityConfig.java index 615a0af..8599749 100644 --- a/src/main/java/com/example/gimmegonghakauth/config/SecurityConfig.java +++ b/src/main/java/com/example/gimmegonghakauth/auth/config/SecurityConfig.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.config; +package com.example.gimmegonghakauth.auth.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/com/example/gimmegonghakauth/service/UserSecurityService.java b/src/main/java/com/example/gimmegonghakauth/auth/service/UserSecurityService.java similarity index 98% rename from src/main/java/com/example/gimmegonghakauth/service/UserSecurityService.java rename to src/main/java/com/example/gimmegonghakauth/auth/service/UserSecurityService.java index 759fcaa..00251c4 100644 --- a/src/main/java/com/example/gimmegonghakauth/service/UserSecurityService.java +++ b/src/main/java/com/example/gimmegonghakauth/auth/service/UserSecurityService.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.service; +package com.example.gimmegonghakauth.auth.service; import com.example.gimmegonghakauth.user.infrastructure.UserRepository; import com.example.gimmegonghakauth.user.domain.UserDomain; diff --git a/src/main/java/com/example/gimmegonghakauth/constant/AbeekTypeConst.java b/src/main/java/com/example/gimmegonghakauth/common/constant/AbeekTypeConst.java similarity index 88% rename from src/main/java/com/example/gimmegonghakauth/constant/AbeekTypeConst.java rename to src/main/java/com/example/gimmegonghakauth/common/constant/AbeekTypeConst.java index 3383420..d854a9c 100644 --- a/src/main/java/com/example/gimmegonghakauth/constant/AbeekTypeConst.java +++ b/src/main/java/com/example/gimmegonghakauth/common/constant/AbeekTypeConst.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.constant; +package com.example.gimmegonghakauth.common.constant; public enum AbeekTypeConst { diff --git a/src/main/java/com/example/gimmegonghakauth/constant/CourseCategoryConst.java b/src/main/java/com/example/gimmegonghakauth/common/constant/CourseCategoryConst.java similarity index 79% rename from src/main/java/com/example/gimmegonghakauth/constant/CourseCategoryConst.java rename to src/main/java/com/example/gimmegonghakauth/common/constant/CourseCategoryConst.java index 467a6bc..289838e 100644 --- a/src/main/java/com/example/gimmegonghakauth/constant/CourseCategoryConst.java +++ b/src/main/java/com/example/gimmegonghakauth/common/constant/CourseCategoryConst.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.constant; +package com.example.gimmegonghakauth.common.constant; public enum CourseCategoryConst { diff --git a/src/main/java/com/example/gimmegonghakauth/constant/UnivCertTypeConst.java b/src/main/java/com/example/gimmegonghakauth/common/constant/UnivCertTypeConst.java similarity index 83% rename from src/main/java/com/example/gimmegonghakauth/constant/UnivCertTypeConst.java rename to src/main/java/com/example/gimmegonghakauth/common/constant/UnivCertTypeConst.java index f683880..d16e796 100644 --- a/src/main/java/com/example/gimmegonghakauth/constant/UnivCertTypeConst.java +++ b/src/main/java/com/example/gimmegonghakauth/common/constant/UnivCertTypeConst.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.constant; +package com.example.gimmegonghakauth.common.constant; public enum UnivCertTypeConst { SEND_MAIL("이메일 발송"), diff --git a/src/main/java/com/example/gimmegonghakauth/constant/UnivcertErrorMessageConst.java b/src/main/java/com/example/gimmegonghakauth/common/constant/UnivcertErrorMessageConst.java similarity index 95% rename from src/main/java/com/example/gimmegonghakauth/constant/UnivcertErrorMessageConst.java rename to src/main/java/com/example/gimmegonghakauth/common/constant/UnivcertErrorMessageConst.java index 9379f5d..426dac3 100644 --- a/src/main/java/com/example/gimmegonghakauth/constant/UnivcertErrorMessageConst.java +++ b/src/main/java/com/example/gimmegonghakauth/common/constant/UnivcertErrorMessageConst.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.constant; +package com.example.gimmegonghakauth.common.constant; public enum UnivcertErrorMessageConst { diff --git a/src/main/java/com/example/gimmegonghakauth/constant/UnivcertUrlConst.java b/src/main/java/com/example/gimmegonghakauth/common/constant/UnivcertUrlConst.java similarity index 85% rename from src/main/java/com/example/gimmegonghakauth/constant/UnivcertUrlConst.java rename to src/main/java/com/example/gimmegonghakauth/common/constant/UnivcertUrlConst.java index 08a8669..05bea90 100644 --- a/src/main/java/com/example/gimmegonghakauth/constant/UnivcertUrlConst.java +++ b/src/main/java/com/example/gimmegonghakauth/common/constant/UnivcertUrlConst.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.constant; +package com.example.gimmegonghakauth.common.constant; public enum UnivcertUrlConst { diff --git a/src/main/java/com/example/gimmegonghakauth/controller/MainController.java b/src/main/java/com/example/gimmegonghakauth/common/controller/MainController.java similarity index 77% rename from src/main/java/com/example/gimmegonghakauth/controller/MainController.java rename to src/main/java/com/example/gimmegonghakauth/common/controller/MainController.java index 6d3ca50..ad8bcc4 100644 --- a/src/main/java/com/example/gimmegonghakauth/controller/MainController.java +++ b/src/main/java/com/example/gimmegonghakauth/common/controller/MainController.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.controller; +package com.example.gimmegonghakauth.common.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/com/example/gimmegonghakauth/domain/CoursesDomain.java b/src/main/java/com/example/gimmegonghakauth/common/domain/CoursesDomain.java similarity index 92% rename from src/main/java/com/example/gimmegonghakauth/domain/CoursesDomain.java rename to src/main/java/com/example/gimmegonghakauth/common/domain/CoursesDomain.java index 1cce40f..cbbb6ab 100644 --- a/src/main/java/com/example/gimmegonghakauth/domain/CoursesDomain.java +++ b/src/main/java/com/example/gimmegonghakauth/common/domain/CoursesDomain.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.domain; +package com.example.gimmegonghakauth.common.domain; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/src/main/java/com/example/gimmegonghakauth/domain/MajorsDomain.java b/src/main/java/com/example/gimmegonghakauth/common/domain/MajorsDomain.java similarity index 92% rename from src/main/java/com/example/gimmegonghakauth/domain/MajorsDomain.java rename to src/main/java/com/example/gimmegonghakauth/common/domain/MajorsDomain.java index b45cf8b..563a231 100644 --- a/src/main/java/com/example/gimmegonghakauth/domain/MajorsDomain.java +++ b/src/main/java/com/example/gimmegonghakauth/common/domain/MajorsDomain.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.domain; +package com.example.gimmegonghakauth.common.domain; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/src/main/java/com/example/gimmegonghakauth/dao/CoursesDao.java b/src/main/java/com/example/gimmegonghakauth/common/infrastructure/CoursesDao.java similarity index 83% rename from src/main/java/com/example/gimmegonghakauth/dao/CoursesDao.java rename to src/main/java/com/example/gimmegonghakauth/common/infrastructure/CoursesDao.java index 2fdbb10..796c84e 100644 --- a/src/main/java/com/example/gimmegonghakauth/dao/CoursesDao.java +++ b/src/main/java/com/example/gimmegonghakauth/common/infrastructure/CoursesDao.java @@ -1,6 +1,6 @@ -package com.example.gimmegonghakauth.dao; +package com.example.gimmegonghakauth.common.infrastructure; -import com.example.gimmegonghakauth.domain.CoursesDomain; +import com.example.gimmegonghakauth.common.domain.CoursesDomain; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/com/example/gimmegonghakauth/dao/MajorsDao.java b/src/main/java/com/example/gimmegonghakauth/common/infrastructure/MajorsDao.java similarity index 69% rename from src/main/java/com/example/gimmegonghakauth/dao/MajorsDao.java rename to src/main/java/com/example/gimmegonghakauth/common/infrastructure/MajorsDao.java index 7ef54a2..4064644 100644 --- a/src/main/java/com/example/gimmegonghakauth/dao/MajorsDao.java +++ b/src/main/java/com/example/gimmegonghakauth/common/infrastructure/MajorsDao.java @@ -1,6 +1,6 @@ -package com.example.gimmegonghakauth.dao; +package com.example.gimmegonghakauth.common.infrastructure; -import com.example.gimmegonghakauth.domain.MajorsDomain; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/example/gimmegonghakauth/common/service/InitData.java b/src/main/java/com/example/gimmegonghakauth/common/service/InitData.java new file mode 100644 index 0000000..a49cf1c --- /dev/null +++ b/src/main/java/com/example/gimmegonghakauth/common/service/InitData.java @@ -0,0 +1,240 @@ +package com.example.gimmegonghakauth.common.service; + +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.infrastructure.MajorsDao; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; +import com.example.gimmegonghakauth.status.domain.AbeekDomain; +import com.example.gimmegonghakauth.status.domain.AbeekDomain.AbeekDomainBuilder; +import com.example.gimmegonghakauth.status.domain.MajorName; +import com.example.gimmegonghakauth.status.infrastructure.AbeekDao; +import com.example.gimmegonghakauth.user.domain.UserDomain; +import com.example.gimmegonghakauth.user.infrastructure.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.annotation.Profile; +import org.springframework.context.event.EventListener; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component +@RequiredArgsConstructor +@Profile("!(prod || release)") +public class InitData { + + private final MajorsDao majorsDao; + private final AbeekDao abeekDao; + private final UserRepository userRepository; + private final PasswordEncoder passwordEncoder; + + @Value("${admin1}") + private Long admin1; + + @Value("${admin2}") + private Long admin2; + + @Value("${admin3}") + private Long admin3; + + @EventListener(ApplicationReadyEvent.class) + @Transactional + public void initDatabase() { + MajorsDomain computerMajor = MajorsDomain.builder() + .id(1L) + .major(MajorName.COMPUTER.getName()).build(); + MajorsDomain elecInfoMajor = MajorsDomain.builder() + .id(2L) + .major(MajorName.ELEC_INFO.getName()).build(); + MajorsDomain softwareMajor = MajorsDomain.builder() + .id(3L) + .major(MajorName.SOFTWARE.getName()).build(); + MajorsDomain dataScienceMajor = MajorsDomain.builder() + .id(4L) + .major(MajorName.DATA_SCIENCE.getName()).build(); + majorsDao.save(computerMajor); + majorsDao.save(elecInfoMajor); + majorsDao.save(softwareMajor); + majorsDao.save(dataScienceMajor); + + //24학년도 computerMajor + AbeekDomainBuilder abeek1 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.BSM) + .majorsDomain(computerMajor) + .note("this is a test note") + .year(24) + .minCredit(18); + AbeekDomainBuilder abeek2 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.PROFESSIONAL_NON_MAJOR) + .majorsDomain(computerMajor) + .note("this is a test note") + .year(24) + .minCredit(14); + AbeekDomainBuilder abeek3 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.DESIGN) + .majorsDomain(computerMajor) + .note("this is a test note") + .year(24) + .minCredit(10); + AbeekDomainBuilder abeek4 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.MAJOR) + .majorsDomain(computerMajor) + .note("this is a test note") + .year(24) + .minCredit(45); + AbeekDomainBuilder abeek5 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.MINIMUM_CERTI) + .majorsDomain(computerMajor) + .note("this is a test note") + .year(24) + .minCredit(77); + + abeekDao.save(abeek1.build()); + abeekDao.save(abeek2.build()); + abeekDao.save(abeek3.build()); + abeekDao.save(abeek4.build()); + abeekDao.save(abeek5.build()); + + //24학년도 전정통 + AbeekDomainBuilder abeek21 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.MSC) + .majorsDomain(elecInfoMajor) + .note("this is a test note") + .year(24) + .minCredit(27); + AbeekDomainBuilder abeek22 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.PROFESSIONAL_NON_MAJOR) + .majorsDomain(elecInfoMajor) + .note("this is a test note") + .year(24) + .minCredit(14); + AbeekDomainBuilder abeek23 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.DESIGN) + .majorsDomain(elecInfoMajor) + .note("this is a test note") + .year(24) + .minCredit(9); + AbeekDomainBuilder abeek24 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.MAJOR) + .majorsDomain(elecInfoMajor) + .note("this is a test note") + .year(24) + .minCredit(45); + AbeekDomainBuilder abeek25 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.MINIMUM_CERTI) + .majorsDomain(elecInfoMajor) + .note("this is a test note") + .year(24) + .minCredit(86); + + abeekDao.save(abeek21.build()); + abeekDao.save(abeek22.build()); + abeekDao.save(abeek23.build()); + abeekDao.save(abeek24.build()); + abeekDao.save(abeek25.build()); + + //24학년도 소프트웨어 + AbeekDomainBuilder abeek31 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.BSM) + .majorsDomain(softwareMajor) + .note("this is a test note") + .year(24) + .minCredit(18); + AbeekDomainBuilder abeek32 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.PROFESSIONAL_NON_MAJOR) + .majorsDomain(softwareMajor) + .note("this is a test note") + .year(24) + .minCredit(14); + AbeekDomainBuilder abeek33 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.DESIGN) + .majorsDomain(softwareMajor) + .note("this is a test note") + .year(24) + .minCredit(12); + AbeekDomainBuilder abeek34 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.MAJOR) + .majorsDomain(softwareMajor) + .note("this is a test note") + .year(24) + .minCredit(45); + AbeekDomainBuilder abeek35 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.MINIMUM_CERTI) + .majorsDomain(softwareMajor) + .note("this is a test note") + .year(24) + .minCredit(77); + + abeekDao.save(abeek31.build()); + abeekDao.save(abeek32.build()); + abeekDao.save(abeek33.build()); + abeekDao.save(abeek34.build()); + abeekDao.save(abeek35.build()); + + //24학년도 데이터사이언스 + AbeekDomainBuilder abeek41 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.BSM) + .majorsDomain(dataScienceMajor) + .note("this is a test note") + .year(24) + .minCredit(15); + AbeekDomainBuilder abeek42 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.PROFESSIONAL_NON_MAJOR) + .majorsDomain(dataScienceMajor) + .note("this is a test note") + .year(24) + .minCredit(14); + AbeekDomainBuilder abeek43 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.DESIGN) + .majorsDomain(dataScienceMajor) + .note("this is a test note") + .year(24) + .minCredit(9); + AbeekDomainBuilder abeek44 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.MAJOR) + .majorsDomain(dataScienceMajor) + .note("this is a test note") + .year(24) + .minCredit(45); + AbeekDomainBuilder abeek45 = AbeekDomain.builder() + .abeekType(AbeekTypeConst.MINIMUM_CERTI) + .majorsDomain(dataScienceMajor) + .note("this is a test note") + .year(24) + .minCredit(74); + + abeekDao.save(abeek41.build()); + abeekDao.save(abeek42.build()); + abeekDao.save(abeek43.build()); + abeekDao.save(abeek44.build()); + abeekDao.save(abeek45.build()); + + //User + UserDomain user1 = UserDomain.builder() + .email("testEmail1@sju.ac.kr") + .name("조태현") + .password(passwordEncoder.encode("qwer")) + .studentId(admin1) + .majorsDomain(elecInfoMajor).build(); + userRepository.save(user1); + + UserDomain user2 = UserDomain.builder() + .email("testEmail2@sju.ac.kr") + .name("이희수") + .password(passwordEncoder.encode("qwer")) + .studentId(admin2) + .majorsDomain(dataScienceMajor).build(); + userRepository.save(user2); + + UserDomain user3 = UserDomain.builder() + .email("testEmail3@sju.ac.kr") + .name("홍지섭") + .password(passwordEncoder.encode("qwer")) + .studentId(admin3) + .majorsDomain(computerMajor).build(); + userRepository.save(user3); + + } + + +} diff --git a/src/main/java/com/example/gimmegonghakauth/InitFileData.java b/src/main/java/com/example/gimmegonghakauth/common/service/InitFileData.java similarity index 73% rename from src/main/java/com/example/gimmegonghakauth/InitFileData.java rename to src/main/java/com/example/gimmegonghakauth/common/service/InitFileData.java index b9ffa61..023d31c 100644 --- a/src/main/java/com/example/gimmegonghakauth/InitFileData.java +++ b/src/main/java/com/example/gimmegonghakauth/common/service/InitFileData.java @@ -1,11 +1,11 @@ -package com.example.gimmegonghakauth; - -import com.example.gimmegonghakauth.constant.CourseCategoryConst; -import com.example.gimmegonghakauth.dao.CoursesDao; -import com.example.gimmegonghakauth.dao.GonghakCoursesDao; -import com.example.gimmegonghakauth.dao.MajorsDao; -import com.example.gimmegonghakauth.domain.CoursesDomain; -import com.example.gimmegonghakauth.domain.GonghakCoursesDomain; +package com.example.gimmegonghakauth.common.service; + +import com.example.gimmegonghakauth.common.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.common.infrastructure.CoursesDao; +import com.example.gimmegonghakauth.common.infrastructure.MajorsDao; +import com.example.gimmegonghakauth.common.domain.CoursesDomain; +import com.example.gimmegonghakauth.status.domain.GonghakCoursesDomain; +import com.example.gimmegonghakauth.status.infrastructure.GonghakCoursesDao; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; @@ -58,10 +58,10 @@ private void inputCoursesCsv(String csvFilePath) throws IOException { private CoursesDomain mapToCoursesDomain(String[] data) { return CoursesDomain.builder() - .courseId(Long.valueOf(data[0])) - .name(data[2]) - .credit(Integer.parseInt(data[3])) - .build(); + .courseId(Long.valueOf(data[0])) + .name(data[2]) + .credit(Integer.parseInt(data[3])) + .build(); } private void inputGonghakCoursesCsv(String csvFilePath) { @@ -113,13 +113,13 @@ private Optional mapToGonghakCoursesDomain(String[] data) } GonghakCoursesDomain gonghakCourse = GonghakCoursesDomain.builder() - .year(Integer.parseInt(data[0])) - .majorsDomain(majorsDao.findByMajor(data[2])) - .coursesDomain(courseDomain) - .courseCategory(CourseCategoryConst.valueOf(courseCategory)) - .passCategory(data[5].substring(0, 2)) - .designCredit(Double.parseDouble(data[8])) - .build(); + .year(Integer.parseInt(data[0])) + .majorsDomain(majorsDao.findByMajor(data[2])) + .coursesDomain(courseDomain) + .courseCategory(CourseCategoryConst.valueOf(courseCategory)) + .passCategory(data[5].substring(0, 2)) + .designCredit(Double.parseDouble(data[8])) + .build(); return Optional.of(gonghakCourse); } @@ -127,13 +127,13 @@ private Optional mapToGonghakCoursesDomain(String[] data) // 실제 DB csv file 입력용 private Optional mapToGonghakCourses(String[] data) { GonghakCoursesDomain gonghakCourse = GonghakCoursesDomain.builder() - .year(Integer.parseInt(data[1])) - .majorsDomain(majorsDao.findById(Long.parseLong(data[4])).get()) - .coursesDomain(coursesDao.findByCourseId(Long.parseLong(data[2]))) - .courseCategory(CourseCategoryConst.valueOf(data[5])) - .passCategory(data[6]) - .designCredit(Double.parseDouble(data[0])) - .build(); + .year(Integer.parseInt(data[1])) + .majorsDomain(majorsDao.findById(Long.parseLong(data[4])).get()) + .coursesDomain(coursesDao.findByCourseId(Long.parseLong(data[2]))) + .courseCategory(CourseCategoryConst.valueOf(data[5])) + .passCategory(data[6]) + .designCredit(Double.parseDouble(data[0])) + .build(); return Optional.of(gonghakCourse); } diff --git a/src/main/java/com/example/gimmegonghakauth/controller/CompletedCoursesController.java b/src/main/java/com/example/gimmegonghakauth/completed/controller/CompletedCoursesController.java similarity index 86% rename from src/main/java/com/example/gimmegonghakauth/controller/CompletedCoursesController.java rename to src/main/java/com/example/gimmegonghakauth/completed/controller/CompletedCoursesController.java index 797f4e4..32096ea 100644 --- a/src/main/java/com/example/gimmegonghakauth/controller/CompletedCoursesController.java +++ b/src/main/java/com/example/gimmegonghakauth/completed/controller/CompletedCoursesController.java @@ -1,15 +1,14 @@ -package com.example.gimmegonghakauth.controller; +package com.example.gimmegonghakauth.completed.controller; -import com.example.gimmegonghakauth.domain.CompletedCoursesDomain; -import com.example.gimmegonghakauth.exception.FileException; -import com.example.gimmegonghakauth.service.CompletedCoursesService; +import com.example.gimmegonghakauth.completed.domain.CompletedCoursesDomain; +import com.example.gimmegonghakauth.completed.service.exception.FileException; +import com.example.gimmegonghakauth.completed.service.CompletedCoursesService; import org.springframework.security.core.Authentication; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; diff --git a/src/main/java/com/example/gimmegonghakauth/domain/CompletedCoursesDomain.java b/src/main/java/com/example/gimmegonghakauth/completed/domain/CompletedCoursesDomain.java similarity index 91% rename from src/main/java/com/example/gimmegonghakauth/domain/CompletedCoursesDomain.java rename to src/main/java/com/example/gimmegonghakauth/completed/domain/CompletedCoursesDomain.java index 0151c0d..6a224a1 100644 --- a/src/main/java/com/example/gimmegonghakauth/domain/CompletedCoursesDomain.java +++ b/src/main/java/com/example/gimmegonghakauth/completed/domain/CompletedCoursesDomain.java @@ -1,5 +1,6 @@ -package com.example.gimmegonghakauth.domain; +package com.example.gimmegonghakauth.completed.domain; +import com.example.gimmegonghakauth.common.domain.CoursesDomain; import com.example.gimmegonghakauth.user.domain.UserDomain; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/src/main/java/com/example/gimmegonghakauth/dao/CompletedCoursesDao.java b/src/main/java/com/example/gimmegonghakauth/completed/infrastructure/CompletedCoursesDao.java similarity index 72% rename from src/main/java/com/example/gimmegonghakauth/dao/CompletedCoursesDao.java rename to src/main/java/com/example/gimmegonghakauth/completed/infrastructure/CompletedCoursesDao.java index 0a81fca..c2f6fe2 100644 --- a/src/main/java/com/example/gimmegonghakauth/dao/CompletedCoursesDao.java +++ b/src/main/java/com/example/gimmegonghakauth/completed/infrastructure/CompletedCoursesDao.java @@ -1,6 +1,6 @@ -package com.example.gimmegonghakauth.dao; +package com.example.gimmegonghakauth.completed.infrastructure; -import com.example.gimmegonghakauth.domain.CompletedCoursesDomain; +import com.example.gimmegonghakauth.completed.domain.CompletedCoursesDomain; import com.example.gimmegonghakauth.user.domain.UserDomain; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/example/gimmegonghakauth/dao/CustomCompletedCoursesDao.java b/src/main/java/com/example/gimmegonghakauth/completed/infrastructure/CustomCompletedCoursesDao.java similarity index 59% rename from src/main/java/com/example/gimmegonghakauth/dao/CustomCompletedCoursesDao.java rename to src/main/java/com/example/gimmegonghakauth/completed/infrastructure/CustomCompletedCoursesDao.java index 93ab8a4..a72dcf3 100644 --- a/src/main/java/com/example/gimmegonghakauth/dao/CustomCompletedCoursesDao.java +++ b/src/main/java/com/example/gimmegonghakauth/completed/infrastructure/CustomCompletedCoursesDao.java @@ -1,6 +1,6 @@ -package com.example.gimmegonghakauth.dao; +package com.example.gimmegonghakauth.completed.infrastructure; -import com.example.gimmegonghakauth.domain.CompletedCoursesDomain; +import com.example.gimmegonghakauth.completed.domain.CompletedCoursesDomain; import java.util.List; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/example/gimmegonghakauth/dao/CustomCompletedCoursesDaoImpl.java b/src/main/java/com/example/gimmegonghakauth/completed/infrastructure/CustomCompletedCoursesDaoImpl.java similarity index 88% rename from src/main/java/com/example/gimmegonghakauth/dao/CustomCompletedCoursesDaoImpl.java rename to src/main/java/com/example/gimmegonghakauth/completed/infrastructure/CustomCompletedCoursesDaoImpl.java index 325b058..360548e 100644 --- a/src/main/java/com/example/gimmegonghakauth/dao/CustomCompletedCoursesDaoImpl.java +++ b/src/main/java/com/example/gimmegonghakauth/completed/infrastructure/CustomCompletedCoursesDaoImpl.java @@ -1,6 +1,6 @@ -package com.example.gimmegonghakauth.dao; +package com.example.gimmegonghakauth.completed.infrastructure; -import com.example.gimmegonghakauth.domain.CompletedCoursesDomain; +import com.example.gimmegonghakauth.completed.domain.CompletedCoursesDomain; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; diff --git a/src/main/java/com/example/gimmegonghakauth/service/CompletedCoursesService.java b/src/main/java/com/example/gimmegonghakauth/completed/service/CompletedCoursesService.java similarity index 94% rename from src/main/java/com/example/gimmegonghakauth/service/CompletedCoursesService.java rename to src/main/java/com/example/gimmegonghakauth/completed/service/CompletedCoursesService.java index f442eab..c181a58 100644 --- a/src/main/java/com/example/gimmegonghakauth/service/CompletedCoursesService.java +++ b/src/main/java/com/example/gimmegonghakauth/completed/service/CompletedCoursesService.java @@ -1,12 +1,12 @@ -package com.example.gimmegonghakauth.service; +package com.example.gimmegonghakauth.completed.service; -import com.example.gimmegonghakauth.dao.CompletedCoursesDao; -import com.example.gimmegonghakauth.dao.CoursesDao; +import com.example.gimmegonghakauth.completed.infrastructure.CompletedCoursesDao; +import com.example.gimmegonghakauth.common.infrastructure.CoursesDao; import com.example.gimmegonghakauth.user.infrastructure.UserRepository; -import com.example.gimmegonghakauth.domain.CompletedCoursesDomain; -import com.example.gimmegonghakauth.domain.CoursesDomain; +import com.example.gimmegonghakauth.completed.domain.CompletedCoursesDomain; +import com.example.gimmegonghakauth.common.domain.CoursesDomain; import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.exception.FileException; +import com.example.gimmegonghakauth.completed.service.exception.FileException; import java.io.IOException; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/example/gimmegonghakauth/exception/FileException.java b/src/main/java/com/example/gimmegonghakauth/completed/service/exception/FileException.java similarity index 63% rename from src/main/java/com/example/gimmegonghakauth/exception/FileException.java rename to src/main/java/com/example/gimmegonghakauth/completed/service/exception/FileException.java index 6e33138..04216d6 100644 --- a/src/main/java/com/example/gimmegonghakauth/exception/FileException.java +++ b/src/main/java/com/example/gimmegonghakauth/completed/service/exception/FileException.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.exception; +package com.example.gimmegonghakauth.completed.service.exception; public class FileException extends RuntimeException { diff --git a/src/main/java/com/example/gimmegonghakauth/dto/GonghakCompletedCoursesDto.java b/src/main/java/com/example/gimmegonghakauth/dto/GonghakCompletedCoursesDto.java deleted file mode 100644 index 3e42f1e..0000000 --- a/src/main/java/com/example/gimmegonghakauth/dto/GonghakCompletedCoursesDto.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.example.gimmegonghakauth.dto; - -import com.example.gimmegonghakauth.domain.CoursesDomain; -import java.util.List; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -@Getter -@RequiredArgsConstructor -public class GonghakCompletedCoursesDto { - - private final List completedCourseIds; -} diff --git a/src/main/java/com/example/gimmegonghakauth/dto/GonghakUserDto.java b/src/main/java/com/example/gimmegonghakauth/dto/GonghakUserDto.java deleted file mode 100644 index 1a3ed1e..0000000 --- a/src/main/java/com/example/gimmegonghakauth/dto/GonghakUserDto.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.example.gimmegonghakauth.dto; - -import java.util.Map; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -@Getter -@RequiredArgsConstructor -public class GonghakUserDto { - - private final Map userStatus; -} diff --git a/src/main/java/com/example/gimmegonghakauth/service/recommend/ComputerMajorGonghakRecommendService.java b/src/main/java/com/example/gimmegonghakauth/service/recommend/ComputerMajorGonghakRecommendService.java deleted file mode 100644 index 55e6578..0000000 --- a/src/main/java/com/example/gimmegonghakauth/service/recommend/ComputerMajorGonghakRecommendService.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.example.gimmegonghakauth.service.recommend; - - -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import com.example.gimmegonghakauth.constant.CourseCategoryConst; -import com.example.gimmegonghakauth.dao.GonghakRepository; -import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.dto.GonghakRecommendCoursesDto; -import com.example.gimmegonghakauth.dto.GonghakStandardDto; -import com.example.gimmegonghakauth.dto.IncompletedCoursesDto; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@RequiredArgsConstructor -public class ComputerMajorGonghakRecommendService implements GonghakRecommendService { - - private final GonghakRepository gonghakRepository; - - @Override - @Transactional(readOnly = true) - public GonghakRecommendCoursesDto createRecommendCourses(UserDomain userDomain) { - GonghakRecommendCoursesDto gonghakRecommendCoursesDto = new GonghakRecommendCoursesDto(); - - // findStandard -> 학번 입학년도를 기준으로 해당 년도의 abeekType(영역별 구분),minCredit(영역별 인증학점) 불러온다. - Optional standard = gonghakRepository.findStandard(userDomain.getMajorsDomain()); - - // 수강하지 않은 과목 중 "전문 교양" 과목을 반환한다. - List professionalNonMajor = gonghakRepository.findUserIncompletedCourses( - CourseCategoryConst.전문교양, userDomain.getStudentId(), userDomain.getMajorsDomain() - ); - - // 수강하지 않은 과목 중 "전공" 과목을 반환한다. - List major = gonghakRepository.findUserIncompletedCourses( - CourseCategoryConst.전공, userDomain.getStudentId(), userDomain.getMajorsDomain() - ); - - // 수강하지 않은 과목 중 "BSM" 과목을 반환한다. - List bsm = gonghakRepository.findUserIncompletedCourses( - CourseCategoryConst.BSM, userDomain.getStudentId(), userDomain.getMajorsDomain() - ); - - // abeekType 별 추천 과목 List를 반환한다. - Map> coursesByAbeekTypeWithoutCompleteCourses = gonghakRecommendCoursesDto.getRecommendCoursesByAbeekType(); - Arrays.stream(AbeekTypeConst.values()).forEach( - abeekType -> { - List abeekRecommend = new ArrayList<>(); - if (standard.get().getStandards().containsKey(abeekType)) { - switch (abeekType) { - case BSM: - abeekRecommend.addAll(bsm); - break; - case MAJOR: - abeekRecommend.addAll(major); - break; - case DESIGN: - addOnlyDesignCreditOverZero(major, abeekRecommend); - break; - case PROFESSIONAL_NON_MAJOR: - abeekRecommend.addAll(professionalNonMajor); - break; - case NON_MAJOR: - abeekRecommend.addAll(professionalNonMajor); - break; - case MINIMUM_CERTI: - abeekRecommend.addAll(bsm); - abeekRecommend.addAll(professionalNonMajor); - abeekRecommend.addAll(major); - break; - } - coursesByAbeekTypeWithoutCompleteCourses.put(abeekType, abeekRecommend); - } - - - } - ); - - return gonghakRecommendCoursesDto; - } - - // 설계 과목(designCredit > 0)인 경우만 추가한다. - private static void addOnlyDesignCreditOverZero(List majorBasic, - List abeekRecommend) { - majorBasic.forEach( - incompletedCoursesDto -> { - if (incompletedCoursesDto.getDesignCredit() > 0) { - abeekRecommend.add(incompletedCoursesDto); - } - } - ); - } - -} diff --git a/src/main/java/com/example/gimmegonghakauth/service/recommend/ElecInfoMajorGonghakRecommendService.java b/src/main/java/com/example/gimmegonghakauth/service/recommend/ElecInfoMajorGonghakRecommendService.java deleted file mode 100644 index f403f9a..0000000 --- a/src/main/java/com/example/gimmegonghakauth/service/recommend/ElecInfoMajorGonghakRecommendService.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.example.gimmegonghakauth.service.recommend; - -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import com.example.gimmegonghakauth.constant.CourseCategoryConst; -import com.example.gimmegonghakauth.dao.GonghakRepository; -import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.dto.GonghakRecommendCoursesDto; -import com.example.gimmegonghakauth.dto.GonghakStandardDto; -import com.example.gimmegonghakauth.dto.IncompletedCoursesDto; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@RequiredArgsConstructor -public class ElecInfoMajorGonghakRecommendService implements GonghakRecommendService { - - private final GonghakRepository gonghakRepository; - - @Transactional(readOnly = true) - @Override - public GonghakRecommendCoursesDto createRecommendCourses(UserDomain userDomain) { - GonghakRecommendCoursesDto gonghakRecommendCoursesDto = new GonghakRecommendCoursesDto(); - - // findStandard -> 학번 입학년도를 기준으로 해당 년도의 abeekType(영역별 구분),minCredit(영역별 인증학점) 불러온다. - Optional standard = gonghakRepository.findStandard(userDomain.getMajorsDomain()); - - // 수강하지 않은 과목 중 "전문 교양" 과목을 반환한다. - List professionalNonMajor = gonghakRepository.findUserIncompletedCourses( - CourseCategoryConst.전문교양, userDomain.getStudentId(), userDomain.getMajorsDomain() - ); - - // 수강하지 않은 과목 중 "전공" 과목을 반환한다. - List major = gonghakRepository.findUserIncompletedCourses( - CourseCategoryConst.전공, userDomain.getStudentId(), userDomain.getMajorsDomain() - ); - - // 수강하지 않은 과목 중 "MSC" 과목을 반환한다. - List msc = gonghakRepository.findUserIncompletedCourses( - CourseCategoryConst.MSC, userDomain.getStudentId(), userDomain.getMajorsDomain() - ); - - // abeekType 별 추천 과목 List를 반환한다. - Map> coursesByAbeekTypeWithoutCompleteCourses = gonghakRecommendCoursesDto.getRecommendCoursesByAbeekType(); - Arrays.stream(AbeekTypeConst.values()).forEach( - abeekType -> { - List abeekRecommend = new ArrayList<>(); - if (standard.get().getStandards().containsKey(abeekType)) { - switch (abeekType) { - case MSC: - abeekRecommend.addAll(msc); - break; - case MAJOR: - abeekRecommend.addAll(major); - break; - case DESIGN: - addOnlyDesignCreditOverZero(major, abeekRecommend); - break; - case PROFESSIONAL_NON_MAJOR: - abeekRecommend.addAll(professionalNonMajor); - break; - case NON_MAJOR: - abeekRecommend.addAll(professionalNonMajor); - break; - case MINIMUM_CERTI: - abeekRecommend.addAll(msc); - abeekRecommend.addAll(major); - abeekRecommend.addAll(professionalNonMajor); - break; - } - coursesByAbeekTypeWithoutCompleteCourses.put(abeekType, abeekRecommend); - } - - } - ); - - return gonghakRecommendCoursesDto; - } - - // 설계 과목(designCredit > 0)인 경우만 추가한다. - private static void addOnlyDesignCreditOverZero(List majorBasic, - List abeekRecommend) { - majorBasic.forEach( - incompletedCoursesDto -> { - if (incompletedCoursesDto.getDesignCredit() > 0) { - abeekRecommend.add(incompletedCoursesDto); - } - } - ); - } - -} diff --git a/src/main/java/com/example/gimmegonghakauth/controller/StatusController.java b/src/main/java/com/example/gimmegonghakauth/status/controller/StatusController.java similarity index 82% rename from src/main/java/com/example/gimmegonghakauth/controller/StatusController.java rename to src/main/java/com/example/gimmegonghakauth/status/controller/StatusController.java index 02e66f3..934b407 100644 --- a/src/main/java/com/example/gimmegonghakauth/controller/StatusController.java +++ b/src/main/java/com/example/gimmegonghakauth/status/controller/StatusController.java @@ -1,13 +1,13 @@ -package com.example.gimmegonghakauth.controller; +package com.example.gimmegonghakauth.status.controller; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; import com.example.gimmegonghakauth.user.infrastructure.UserRepository; import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.dto.GonghakResultDto.ResultPointDto; -import com.example.gimmegonghakauth.dto.IncompletedCoursesDto; -import com.example.gimmegonghakauth.service.GonghakCalculateService; -import com.example.gimmegonghakauth.service.recommend.GonghakRecommendService; -import com.example.gimmegonghakauth.service.recommend.RecommendServiceSelectManager; +import com.example.gimmegonghakauth.status.service.dto.GonghakResultDto.ResultPointDto; +import com.example.gimmegonghakauth.status.service.dto.IncompletedCoursesDto; +import com.example.gimmegonghakauth.status.service.GonghakCalculateService; +import com.example.gimmegonghakauth.status.service.recommend.GonghakRecommendService; +import com.example.gimmegonghakauth.status.service.recommend.RecommendServiceSelectManager; import java.util.List; import java.util.Map; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/gimmegonghakauth/domain/AbeekDomain.java b/src/main/java/com/example/gimmegonghakauth/status/domain/AbeekDomain.java similarity index 88% rename from src/main/java/com/example/gimmegonghakauth/domain/AbeekDomain.java rename to src/main/java/com/example/gimmegonghakauth/status/domain/AbeekDomain.java index 48ec430..4349739 100644 --- a/src/main/java/com/example/gimmegonghakauth/domain/AbeekDomain.java +++ b/src/main/java/com/example/gimmegonghakauth/status/domain/AbeekDomain.java @@ -1,6 +1,7 @@ -package com.example.gimmegonghakauth.domain; +package com.example.gimmegonghakauth.status.domain; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; diff --git a/src/main/java/com/example/gimmegonghakauth/domain/GonghakCoursesDomain.java b/src/main/java/com/example/gimmegonghakauth/status/domain/GonghakCoursesDomain.java similarity index 85% rename from src/main/java/com/example/gimmegonghakauth/domain/GonghakCoursesDomain.java rename to src/main/java/com/example/gimmegonghakauth/status/domain/GonghakCoursesDomain.java index ac64fa6..c328ab0 100644 --- a/src/main/java/com/example/gimmegonghakauth/domain/GonghakCoursesDomain.java +++ b/src/main/java/com/example/gimmegonghakauth/status/domain/GonghakCoursesDomain.java @@ -1,6 +1,8 @@ -package com.example.gimmegonghakauth.domain; +package com.example.gimmegonghakauth.status.domain; -import com.example.gimmegonghakauth.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.common.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.common.domain.CoursesDomain; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; diff --git a/src/main/java/com/example/gimmegonghakauth/service/recommend/MajorName.java b/src/main/java/com/example/gimmegonghakauth/status/domain/MajorName.java similarity index 86% rename from src/main/java/com/example/gimmegonghakauth/service/recommend/MajorName.java rename to src/main/java/com/example/gimmegonghakauth/status/domain/MajorName.java index 58a9ccb..2b8e76e 100644 --- a/src/main/java/com/example/gimmegonghakauth/service/recommend/MajorName.java +++ b/src/main/java/com/example/gimmegonghakauth/status/domain/MajorName.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.service.recommend; +package com.example.gimmegonghakauth.status.domain; public enum MajorName { ELEC_INFO("전자정보통신공학과"), diff --git a/src/main/java/com/example/gimmegonghakauth/dao/AbeekDao.java b/src/main/java/com/example/gimmegonghakauth/status/infrastructure/AbeekDao.java similarity index 58% rename from src/main/java/com/example/gimmegonghakauth/dao/AbeekDao.java rename to src/main/java/com/example/gimmegonghakauth/status/infrastructure/AbeekDao.java index 1a36f20..02b91b5 100644 --- a/src/main/java/com/example/gimmegonghakauth/dao/AbeekDao.java +++ b/src/main/java/com/example/gimmegonghakauth/status/infrastructure/AbeekDao.java @@ -1,7 +1,7 @@ -package com.example.gimmegonghakauth.dao; +package com.example.gimmegonghakauth.status.infrastructure; -import com.example.gimmegonghakauth.domain.AbeekDomain; -import com.example.gimmegonghakauth.domain.MajorsDomain; +import com.example.gimmegonghakauth.status.domain.AbeekDomain; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -9,7 +9,7 @@ @Repository public interface AbeekDao extends JpaRepository { -// @Query("select new com.example.gimmegonghakauth.domain.AbeekDomain(AD.id, AD.majorsDomain, AD.year, AD.abeekType, AD.minCredit, AD.note) from AbeekDomain AD" +// @Query("select new com.example.gimmegonghakauth.status.domain.AbeekDomain(AD.id, AD.majorsDomain, AD.year, AD.abeekType, AD.minCredit, AD.note) from AbeekDomain AD" // + " where AD.year = :year and AD.majorsDomain = :majorsDomain") // List findAllByYearAndMajorsDomain(@Param("year") int year,@Param("majorsDomain") MajorsDomain majorsDomain); diff --git a/src/main/java/com/example/gimmegonghakauth/dao/GonghakCoursesDao.java b/src/main/java/com/example/gimmegonghakauth/status/infrastructure/GonghakCoursesDao.java similarity index 56% rename from src/main/java/com/example/gimmegonghakauth/dao/GonghakCoursesDao.java rename to src/main/java/com/example/gimmegonghakauth/status/infrastructure/GonghakCoursesDao.java index 3789a14..0994fa0 100644 --- a/src/main/java/com/example/gimmegonghakauth/dao/GonghakCoursesDao.java +++ b/src/main/java/com/example/gimmegonghakauth/status/infrastructure/GonghakCoursesDao.java @@ -1,10 +1,10 @@ -package com.example.gimmegonghakauth.dao; +package com.example.gimmegonghakauth.status.infrastructure; -import com.example.gimmegonghakauth.constant.CourseCategoryConst; -import com.example.gimmegonghakauth.domain.GonghakCoursesDomain; -import com.example.gimmegonghakauth.domain.MajorsDomain; -import com.example.gimmegonghakauth.dto.GonghakCoursesByMajorDto; -import com.example.gimmegonghakauth.dto.IncompletedCoursesDto; +import com.example.gimmegonghakauth.common.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.status.domain.GonghakCoursesDomain; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; +import com.example.gimmegonghakauth.status.service.dto.GonghakCoursesByMajorDto; +import com.example.gimmegonghakauth.status.service.dto.IncompletedCoursesDto; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -14,12 +14,12 @@ @Repository public interface GonghakCoursesDao extends JpaRepository { - @Query("select new com.example.gimmegonghakauth.dto.GonghakCoursesByMajorDto(GCD.coursesDomain.courseId, GCD.coursesDomain.name, GCD.year, GCD.courseCategory, GCD.passCategory, GCD.designCredit, GCD.coursesDomain.credit) from GonghakCoursesDomain GCD " + @Query("select new com.example.gimmegonghakauth.status.service.dto.GonghakCoursesByMajorDto(GCD.coursesDomain.courseId, GCD.coursesDomain.name, GCD.year, GCD.courseCategory, GCD.passCategory, GCD.designCredit, GCD.coursesDomain.credit) from GonghakCoursesDomain GCD " + "join CompletedCoursesDomain CCD on GCD.coursesDomain = CCD.coursesDomain " + "where CCD.userDomain.studentId =:studentId and GCD.majorsDomain.id = :majorsId and GCD.year = :year") List findUserCompletedCourses(@Param("studentId") Long studentId, @Param("majorsId") Long majorId, @Param("year") Long year); - @Query("select new com.example.gimmegonghakauth.dto.IncompletedCoursesDto(GCD.coursesDomain.name, GCD.courseCategory, GCD.coursesDomain.credit, GCD.designCredit) from GonghakCoursesDomain GCD " + @Query("select new com.example.gimmegonghakauth.status.service.dto.IncompletedCoursesDto(GCD.coursesDomain.name, GCD.courseCategory, GCD.coursesDomain.credit, GCD.designCredit) from GonghakCoursesDomain GCD " + "left join CompletedCoursesDomain CCD on CCD.coursesDomain = GCD.coursesDomain " + "where GCD.majorsDomain = :majorsDomain and GCD.year = :year and GCD.courseCategory = :courseCategory and CCD.id is null and :studentId is not null") List findUserIncompletedCourses(@Param("courseCategory") CourseCategoryConst courseCategory, @Param("studentId") Long studentId, @Param("majorsDomain") MajorsDomain majorsDomain, @Param("year") Long year); diff --git a/src/main/java/com/example/gimmegonghakauth/dao/GonghakDao.java b/src/main/java/com/example/gimmegonghakauth/status/infrastructure/GonghakDao.java similarity index 81% rename from src/main/java/com/example/gimmegonghakauth/dao/GonghakDao.java rename to src/main/java/com/example/gimmegonghakauth/status/infrastructure/GonghakDao.java index 581ca64..9bc01c4 100644 --- a/src/main/java/com/example/gimmegonghakauth/dao/GonghakDao.java +++ b/src/main/java/com/example/gimmegonghakauth/status/infrastructure/GonghakDao.java @@ -1,12 +1,12 @@ -package com.example.gimmegonghakauth.dao; +package com.example.gimmegonghakauth.status.infrastructure; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import com.example.gimmegonghakauth.constant.CourseCategoryConst; -import com.example.gimmegonghakauth.domain.AbeekDomain; -import com.example.gimmegonghakauth.domain.MajorsDomain; -import com.example.gimmegonghakauth.dto.GonghakCoursesByMajorDto; -import com.example.gimmegonghakauth.dto.GonghakStandardDto; -import com.example.gimmegonghakauth.dto.IncompletedCoursesDto; +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.status.domain.AbeekDomain; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; +import com.example.gimmegonghakauth.status.service.dto.GonghakCoursesByMajorDto; +import com.example.gimmegonghakauth.status.service.dto.GonghakStandardDto; +import com.example.gimmegonghakauth.status.service.dto.IncompletedCoursesDto; import java.util.List; import java.util.Map; import java.util.Optional; diff --git a/src/main/java/com/example/gimmegonghakauth/dao/GonghakRepository.java b/src/main/java/com/example/gimmegonghakauth/status/infrastructure/GonghakRepository.java similarity index 50% rename from src/main/java/com/example/gimmegonghakauth/dao/GonghakRepository.java rename to src/main/java/com/example/gimmegonghakauth/status/infrastructure/GonghakRepository.java index 5fa08ed..1e825e3 100644 --- a/src/main/java/com/example/gimmegonghakauth/dao/GonghakRepository.java +++ b/src/main/java/com/example/gimmegonghakauth/status/infrastructure/GonghakRepository.java @@ -1,11 +1,11 @@ -package com.example.gimmegonghakauth.dao; +package com.example.gimmegonghakauth.status.infrastructure; -import com.example.gimmegonghakauth.constant.CourseCategoryConst; -import com.example.gimmegonghakauth.domain.AbeekDomain; -import com.example.gimmegonghakauth.domain.MajorsDomain; -import com.example.gimmegonghakauth.dto.GonghakCoursesByMajorDto; -import com.example.gimmegonghakauth.dto.GonghakStandardDto; -import com.example.gimmegonghakauth.dto.IncompletedCoursesDto; +import com.example.gimmegonghakauth.common.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.status.domain.AbeekDomain; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; +import com.example.gimmegonghakauth.status.service.dto.GonghakCoursesByMajorDto; +import com.example.gimmegonghakauth.status.service.dto.GonghakStandardDto; +import com.example.gimmegonghakauth.status.service.dto.IncompletedCoursesDto; import java.util.List; import java.util.Optional; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/example/gimmegonghakauth/service/GonghakCalculateService.java b/src/main/java/com/example/gimmegonghakauth/status/service/GonghakCalculateService.java similarity index 69% rename from src/main/java/com/example/gimmegonghakauth/service/GonghakCalculateService.java rename to src/main/java/com/example/gimmegonghakauth/status/service/GonghakCalculateService.java index 9067e42..b8d3cae 100644 --- a/src/main/java/com/example/gimmegonghakauth/service/GonghakCalculateService.java +++ b/src/main/java/com/example/gimmegonghakauth/status/service/GonghakCalculateService.java @@ -1,12 +1,12 @@ -package com.example.gimmegonghakauth.service; - -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import com.example.gimmegonghakauth.dao.GonghakRepository; +package com.example.gimmegonghakauth.status.service; + +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.status.infrastructure.GonghakRepository; +import com.example.gimmegonghakauth.status.service.dto.GonghakCoursesByMajorDto; +import com.example.gimmegonghakauth.status.service.dto.GonghakResultDto; +import com.example.gimmegonghakauth.status.service.dto.GonghakResultDto.ResultPointDto; +import com.example.gimmegonghakauth.status.service.dto.GonghakStandardDto; import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.dto.GonghakCoursesByMajorDto; -import com.example.gimmegonghakauth.dto.GonghakResultDto; -import com.example.gimmegonghakauth.dto.GonghakResultDto.ResultPointDto; -import com.example.gimmegonghakauth.dto.GonghakStandardDto; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -27,25 +27,25 @@ public Optional getResultRatio(UserDomain userDomain) { // findStandard -> 학번 입학년도를 기준으로 해당 년도의 abeekType(영역별 구분),minCredit(영역별 인증학점) 불러온다. Optional standard = gonghakRepository.findStandard( - userDomain.getMajorsDomain()); + userDomain.getMajorsDomain()); // default user abeek 학점 상태 map Map userAbeekCredit = getUserAbeekCreditDefault( - standard.get().getStandards()); + standard.get().getStandards()); // user 공학 상태 테이블 // gonghakCourse 중 이수한 과목을 불러온다. List userCoursesByMajorByGonghakCoursesWithCompletedCourses = gonghakRepository.findUserCompletedCourses( - userDomain.getStudentId(), userDomain.getMajorsDomain()); + userDomain.getStudentId(), userDomain.getMajorsDomain()); // user // stackUserGonghakCredit -> abeekType에 맞게 이수한 총 학점을 계산한다. stackUserGonghakCredit(userCoursesByMajorByGonghakCoursesWithCompletedCourses, - userAbeekCredit); + userAbeekCredit); // getUserGonghakResultRatio -> 인증 상태(비율)를 계산한다. Map userResultRatio = getUserGonghakResultRatio( - userAbeekCredit, standard); + userAbeekCredit, standard); // 인증 상태(비율) return return Optional.of(new GonghakResultDto(userResultRatio)); @@ -53,7 +53,7 @@ public Optional getResultRatio(UserDomain userDomain) { // default user abeek 학점 상태 map을 만들어 반환한다. private Map getUserAbeekCreditDefault( - Map standards) { + Map standards) { Map userAbeekCredit = new ConcurrentHashMap<>(); Arrays.stream(AbeekTypeConst.values()).forEach(abeekTypeConst -> { if (standards.containsKey(abeekTypeConst)) { @@ -65,34 +65,34 @@ private Map getUserAbeekCreditDefault( // 인증 상태(비율)를 계산한다. private Map getUserGonghakResultRatio( - Map userAbeekCredit, - Optional standard) { + Map userAbeekCredit, + Optional standard) { Map userResultRatio = new ConcurrentHashMap<>(); Arrays.stream(AbeekTypeConst.values()).forEach(abeekTypeConst -> { - if (userAbeekCredit.containsKey(abeekTypeConst)) { - getRatio(userAbeekCredit, standard, abeekTypeConst, userResultRatio); + if (userAbeekCredit.containsKey(abeekTypeConst)) { + getRatio(userAbeekCredit, standard, abeekTypeConst, userResultRatio); + } } - } ); return userResultRatio; } private void getRatio(Map userAbeekCredit, - Optional standard, AbeekTypeConst abeekTypeConst, - Map userResultRatio) { + Optional standard, AbeekTypeConst abeekTypeConst, + Map userResultRatio) { userResultRatio.put( - abeekTypeConst, - new ResultPointDto(userAbeekCredit.get(abeekTypeConst), standard.get().getStandards() - .get(abeekTypeConst)) + abeekTypeConst, + new ResultPointDto(userAbeekCredit.get(abeekTypeConst), standard.get().getStandards() + .get(abeekTypeConst)) ); } // abeekType에 맞게 이수한 총 학점을 계산한다. private void stackUserGonghakCredit( - List userCoursesByMajorByGonghakCoursesWithCompletedCourses, - Map userAbeekCredit) { + List userCoursesByMajorByGonghakCoursesWithCompletedCourses, + Map userAbeekCredit) { userCoursesByMajorByGonghakCoursesWithCompletedCourses.forEach(gonghakCoursesByMajorDto -> { switch (gonghakCoursesByMajorDto.getCourseCategory()) { case 전공: @@ -100,11 +100,11 @@ private void stackUserGonghakCredit( break; case 전문교양: stackCredit(AbeekTypeConst.PROFESSIONAL_NON_MAJOR, gonghakCoursesByMajorDto, - userAbeekCredit); + userAbeekCredit); break; case 교양: stackCredit(AbeekTypeConst.NON_MAJOR, gonghakCoursesByMajorDto, - userAbeekCredit); + userAbeekCredit); break; case MSC: stackCredit(AbeekTypeConst.MSC, gonghakCoursesByMajorDto, userAbeekCredit); @@ -120,15 +120,15 @@ private void stackUserGonghakCredit( private void stackCredit(AbeekTypeConst abeekTypeConst, - GonghakCoursesByMajorDto gonghakCoursesByMajorDto, - Map userAbeekCredit) { + GonghakCoursesByMajorDto gonghakCoursesByMajorDto, + Map userAbeekCredit) { double inputCredit = getInputCredit(abeekTypeConst, gonghakCoursesByMajorDto); userAbeekCredit.put(abeekTypeConst, userAbeekCredit.get(abeekTypeConst) + inputCredit); } private double getInputCredit(AbeekTypeConst abeekTypeConst, - GonghakCoursesByMajorDto gonghakCoursesByMajorDto) { + GonghakCoursesByMajorDto gonghakCoursesByMajorDto) { if (abeekTypeConst == AbeekTypeConst.DESIGN) { return gonghakCoursesByMajorDto.getDesignCredit(); } else { diff --git a/src/main/java/com/example/gimmegonghakauth/dto/GonghakCoursesByMajorDto.java b/src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakCoursesByMajorDto.java similarity index 69% rename from src/main/java/com/example/gimmegonghakauth/dto/GonghakCoursesByMajorDto.java rename to src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakCoursesByMajorDto.java index e7397d7..a62bcef 100644 --- a/src/main/java/com/example/gimmegonghakauth/dto/GonghakCoursesByMajorDto.java +++ b/src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakCoursesByMajorDto.java @@ -1,9 +1,8 @@ -package com.example.gimmegonghakauth.dto; +package com.example.gimmegonghakauth.status.service.dto; -import com.example.gimmegonghakauth.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.common.constant.CourseCategoryConst; import lombok.Getter; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; @Getter @RequiredArgsConstructor diff --git a/src/main/java/com/example/gimmegonghakauth/dto/GonghakRecommendCoursesDto.java b/src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakRecommendCoursesDto.java similarity index 71% rename from src/main/java/com/example/gimmegonghakauth/dto/GonghakRecommendCoursesDto.java rename to src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakRecommendCoursesDto.java index d3651d4..6599fee 100644 --- a/src/main/java/com/example/gimmegonghakauth/dto/GonghakRecommendCoursesDto.java +++ b/src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakRecommendCoursesDto.java @@ -1,7 +1,6 @@ -package com.example.gimmegonghakauth.dto; +package com.example.gimmegonghakauth.status.service.dto; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import java.util.HashMap; +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/src/main/java/com/example/gimmegonghakauth/dto/GonghakResultDto.java b/src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakResultDto.java similarity index 75% rename from src/main/java/com/example/gimmegonghakauth/dto/GonghakResultDto.java rename to src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakResultDto.java index f5b3b9f..6883340 100644 --- a/src/main/java/com/example/gimmegonghakauth/dto/GonghakResultDto.java +++ b/src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakResultDto.java @@ -1,6 +1,6 @@ -package com.example.gimmegonghakauth.dto; +package com.example.gimmegonghakauth.status.service.dto; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; import java.util.Map; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/gimmegonghakauth/dto/GonghakStandardDto.java b/src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakStandardDto.java similarity index 56% rename from src/main/java/com/example/gimmegonghakauth/dto/GonghakStandardDto.java rename to src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakStandardDto.java index db7b12b..826fd79 100644 --- a/src/main/java/com/example/gimmegonghakauth/dto/GonghakStandardDto.java +++ b/src/main/java/com/example/gimmegonghakauth/status/service/dto/GonghakStandardDto.java @@ -1,11 +1,10 @@ -package com.example.gimmegonghakauth.dto; +package com.example.gimmegonghakauth.status.service.dto; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; import java.util.Map; import lombok.Getter; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; @Getter @RequiredArgsConstructor diff --git a/src/main/java/com/example/gimmegonghakauth/dto/IncompletedCoursesDto.java b/src/main/java/com/example/gimmegonghakauth/status/service/dto/IncompletedCoursesDto.java similarity index 61% rename from src/main/java/com/example/gimmegonghakauth/dto/IncompletedCoursesDto.java rename to src/main/java/com/example/gimmegonghakauth/status/service/dto/IncompletedCoursesDto.java index de4f60e..0610ab1 100644 --- a/src/main/java/com/example/gimmegonghakauth/dto/IncompletedCoursesDto.java +++ b/src/main/java/com/example/gimmegonghakauth/status/service/dto/IncompletedCoursesDto.java @@ -1,7 +1,6 @@ -package com.example.gimmegonghakauth.dto; +package com.example.gimmegonghakauth.status.service.dto; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import com.example.gimmegonghakauth.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.common.constant.CourseCategoryConst; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/gimmegonghakauth/status/service/recommend/ComputerMajorGonghakRecommendService.java b/src/main/java/com/example/gimmegonghakauth/status/service/recommend/ComputerMajorGonghakRecommendService.java new file mode 100644 index 0000000..31d55e2 --- /dev/null +++ b/src/main/java/com/example/gimmegonghakauth/status/service/recommend/ComputerMajorGonghakRecommendService.java @@ -0,0 +1,99 @@ +package com.example.gimmegonghakauth.status.service.recommend; + + +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.status.infrastructure.GonghakRepository; +import com.example.gimmegonghakauth.status.service.dto.GonghakRecommendCoursesDto; +import com.example.gimmegonghakauth.status.service.dto.GonghakStandardDto; +import com.example.gimmegonghakauth.status.service.dto.IncompletedCoursesDto; +import com.example.gimmegonghakauth.user.domain.UserDomain; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +public class ComputerMajorGonghakRecommendService implements GonghakRecommendService { + + private final GonghakRepository gonghakRepository; + + @Override + @Transactional(readOnly = true) + public GonghakRecommendCoursesDto createRecommendCourses(UserDomain userDomain) { + GonghakRecommendCoursesDto gonghakRecommendCoursesDto = new GonghakRecommendCoursesDto(); + + // findStandard -> 학번 입학년도를 기준으로 해당 년도의 abeekType(영역별 구분),minCredit(영역별 인증학점) 불러온다. + Optional standard = gonghakRepository.findStandard(userDomain.getMajorsDomain()); + + // 수강하지 않은 과목 중 "전문 교양" 과목을 반환한다. + List professionalNonMajor = gonghakRepository.findUserIncompletedCourses( + CourseCategoryConst.전문교양, userDomain.getStudentId(), userDomain.getMajorsDomain() + ); + + // 수강하지 않은 과목 중 "전공" 과목을 반환한다. + List major = gonghakRepository.findUserIncompletedCourses( + CourseCategoryConst.전공, userDomain.getStudentId(), userDomain.getMajorsDomain() + ); + + // 수강하지 않은 과목 중 "BSM" 과목을 반환한다. + List bsm = gonghakRepository.findUserIncompletedCourses( + CourseCategoryConst.BSM, userDomain.getStudentId(), userDomain.getMajorsDomain() + ); + + // abeekType 별 추천 과목 List를 반환한다. + Map> coursesByAbeekTypeWithoutCompleteCourses = gonghakRecommendCoursesDto.getRecommendCoursesByAbeekType(); + Arrays.stream(AbeekTypeConst.values()).forEach( + abeekType -> { + List abeekRecommend = new ArrayList<>(); + if (standard.get().getStandards().containsKey(abeekType)) { + switch (abeekType) { + case BSM: + abeekRecommend.addAll(bsm); + break; + case MAJOR: + abeekRecommend.addAll(major); + break; + case DESIGN: + addOnlyDesignCreditOverZero(major, abeekRecommend); + break; + case PROFESSIONAL_NON_MAJOR: + abeekRecommend.addAll(professionalNonMajor); + break; + case NON_MAJOR: + abeekRecommend.addAll(professionalNonMajor); + break; + case MINIMUM_CERTI: + abeekRecommend.addAll(bsm); + abeekRecommend.addAll(professionalNonMajor); + abeekRecommend.addAll(major); + break; + } + coursesByAbeekTypeWithoutCompleteCourses.put(abeekType, abeekRecommend); + } + + + } + ); + + return gonghakRecommendCoursesDto; + } + + // 설계 과목(designCredit > 0)인 경우만 추가한다. + private static void addOnlyDesignCreditOverZero(List majorBasic, + List abeekRecommend) { + majorBasic.forEach( + incompletedCoursesDto -> { + if (incompletedCoursesDto.getDesignCredit() > 0) { + abeekRecommend.add(incompletedCoursesDto); + } + } + ); + } + +} diff --git a/src/main/java/com/example/gimmegonghakauth/status/service/recommend/ElecInfoMajorGonghakRecommendService.java b/src/main/java/com/example/gimmegonghakauth/status/service/recommend/ElecInfoMajorGonghakRecommendService.java new file mode 100644 index 0000000..a886259 --- /dev/null +++ b/src/main/java/com/example/gimmegonghakauth/status/service/recommend/ElecInfoMajorGonghakRecommendService.java @@ -0,0 +1,97 @@ +package com.example.gimmegonghakauth.status.service.recommend; + +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.status.infrastructure.GonghakRepository; +import com.example.gimmegonghakauth.status.service.dto.GonghakRecommendCoursesDto; +import com.example.gimmegonghakauth.status.service.dto.GonghakStandardDto; +import com.example.gimmegonghakauth.status.service.dto.IncompletedCoursesDto; +import com.example.gimmegonghakauth.user.domain.UserDomain; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +public class ElecInfoMajorGonghakRecommendService implements GonghakRecommendService { + + private final GonghakRepository gonghakRepository; + + @Transactional(readOnly = true) + @Override + public GonghakRecommendCoursesDto createRecommendCourses(UserDomain userDomain) { + GonghakRecommendCoursesDto gonghakRecommendCoursesDto = new GonghakRecommendCoursesDto(); + + // findStandard -> 학번 입학년도를 기준으로 해당 년도의 abeekType(영역별 구분),minCredit(영역별 인증학점) 불러온다. + Optional standard = gonghakRepository.findStandard(userDomain.getMajorsDomain()); + + // 수강하지 않은 과목 중 "전문 교양" 과목을 반환한다. + List professionalNonMajor = gonghakRepository.findUserIncompletedCourses( + CourseCategoryConst.전문교양, userDomain.getStudentId(), userDomain.getMajorsDomain() + ); + + // 수강하지 않은 과목 중 "전공" 과목을 반환한다. + List major = gonghakRepository.findUserIncompletedCourses( + CourseCategoryConst.전공, userDomain.getStudentId(), userDomain.getMajorsDomain() + ); + + // 수강하지 않은 과목 중 "MSC" 과목을 반환한다. + List msc = gonghakRepository.findUserIncompletedCourses( + CourseCategoryConst.MSC, userDomain.getStudentId(), userDomain.getMajorsDomain() + ); + + // abeekType 별 추천 과목 List를 반환한다. + Map> coursesByAbeekTypeWithoutCompleteCourses = gonghakRecommendCoursesDto.getRecommendCoursesByAbeekType(); + Arrays.stream(AbeekTypeConst.values()).forEach( + abeekType -> { + List abeekRecommend = new ArrayList<>(); + if (standard.get().getStandards().containsKey(abeekType)) { + switch (abeekType) { + case MSC: + abeekRecommend.addAll(msc); + break; + case MAJOR: + abeekRecommend.addAll(major); + break; + case DESIGN: + addOnlyDesignCreditOverZero(major, abeekRecommend); + break; + case PROFESSIONAL_NON_MAJOR: + abeekRecommend.addAll(professionalNonMajor); + break; + case NON_MAJOR: + abeekRecommend.addAll(professionalNonMajor); + break; + case MINIMUM_CERTI: + abeekRecommend.addAll(msc); + abeekRecommend.addAll(major); + abeekRecommend.addAll(professionalNonMajor); + break; + } + coursesByAbeekTypeWithoutCompleteCourses.put(abeekType, abeekRecommend); + } + + } + ); + + return gonghakRecommendCoursesDto; + } + + // 설계 과목(designCredit > 0)인 경우만 추가한다. + private static void addOnlyDesignCreditOverZero(List majorBasic, + List abeekRecommend) { + majorBasic.forEach( + incompletedCoursesDto -> { + if (incompletedCoursesDto.getDesignCredit() > 0) { + abeekRecommend.add(incompletedCoursesDto); + } + } + ); + } + +} diff --git a/src/main/java/com/example/gimmegonghakauth/service/recommend/GonghakRecommendService.java b/src/main/java/com/example/gimmegonghakauth/status/service/recommend/GonghakRecommendService.java similarity index 55% rename from src/main/java/com/example/gimmegonghakauth/service/recommend/GonghakRecommendService.java rename to src/main/java/com/example/gimmegonghakauth/status/service/recommend/GonghakRecommendService.java index 6e25260..d39619c 100644 --- a/src/main/java/com/example/gimmegonghakauth/service/recommend/GonghakRecommendService.java +++ b/src/main/java/com/example/gimmegonghakauth/status/service/recommend/GonghakRecommendService.java @@ -1,7 +1,7 @@ -package com.example.gimmegonghakauth.service.recommend; +package com.example.gimmegonghakauth.status.service.recommend; +import com.example.gimmegonghakauth.status.service.dto.GonghakRecommendCoursesDto; import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.dto.GonghakRecommendCoursesDto; public interface GonghakRecommendService { GonghakRecommendCoursesDto createRecommendCourses(UserDomain userDomain); diff --git a/src/main/java/com/example/gimmegonghakauth/service/recommend/RecommendServiceSelectManager.java b/src/main/java/com/example/gimmegonghakauth/status/service/recommend/RecommendServiceSelectManager.java similarity index 72% rename from src/main/java/com/example/gimmegonghakauth/service/recommend/RecommendServiceSelectManager.java rename to src/main/java/com/example/gimmegonghakauth/status/service/recommend/RecommendServiceSelectManager.java index 0d1da05..378daf0 100644 --- a/src/main/java/com/example/gimmegonghakauth/service/recommend/RecommendServiceSelectManager.java +++ b/src/main/java/com/example/gimmegonghakauth/status/service/recommend/RecommendServiceSelectManager.java @@ -1,9 +1,9 @@ -package com.example.gimmegonghakauth.service.recommend; +package com.example.gimmegonghakauth.status.service.recommend; -import static com.example.gimmegonghakauth.service.recommend.MajorName.*; +import static com.example.gimmegonghakauth.status.domain.MajorName.ELEC_INFO; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; import com.example.gimmegonghakauth.user.infrastructure.UserRepository; -import com.example.gimmegonghakauth.domain.MajorsDomain; import lombok.RequiredArgsConstructor; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; @@ -20,12 +20,12 @@ public class RecommendServiceSelectManager { // 학과에 따른 추천 서비스를 설정한다. public GonghakRecommendService selectRecommendService(Long studentId) { MajorsDomain majorsDomain = userRepository.findByStudentId(studentId).get() - .getMajorsDomain(); + .getMajorsDomain(); if (majorsDomain.getMajor().contains(ELEC_INFO.getName())) { return applicationContext.getBean("elecInfoMajorGonghakRecommendService", - ElecInfoMajorGonghakRecommendService.class); + ElecInfoMajorGonghakRecommendService.class); } return applicationContext.getBean("computerMajorGonghakRecommendService", - ComputerMajorGonghakRecommendService.class); + ComputerMajorGonghakRecommendService.class); } } diff --git a/src/main/java/com/example/gimmegonghakauth/user/controller/UserController.java b/src/main/java/com/example/gimmegonghakauth/user/controller/UserController.java index b106945..a15c3c4 100644 --- a/src/main/java/com/example/gimmegonghakauth/user/controller/UserController.java +++ b/src/main/java/com/example/gimmegonghakauth/user/controller/UserController.java @@ -1,6 +1,6 @@ package com.example.gimmegonghakauth.user.controller; -import com.example.gimmegonghakauth.dao.MajorsDao; +import com.example.gimmegonghakauth.common.infrastructure.MajorsDao; import com.example.gimmegonghakauth.user.domain.UserDomain; import com.example.gimmegonghakauth.user.service.dto.ChangePasswordDto; import com.example.gimmegonghakauth.user.service.dto.UserJoinDto; diff --git a/src/main/java/com/example/gimmegonghakauth/user/domain/UserDomain.java b/src/main/java/com/example/gimmegonghakauth/user/domain/UserDomain.java index f602f8a..75f5353 100644 --- a/src/main/java/com/example/gimmegonghakauth/user/domain/UserDomain.java +++ b/src/main/java/com/example/gimmegonghakauth/user/domain/UserDomain.java @@ -1,7 +1,7 @@ package com.example.gimmegonghakauth.user.domain; -import com.example.gimmegonghakauth.domain.MajorsDomain; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; diff --git a/src/main/java/com/example/gimmegonghakauth/user/service/EmailVerificationService.java b/src/main/java/com/example/gimmegonghakauth/user/service/EmailVerificationService.java index 39f2eb0..9742a4b 100644 --- a/src/main/java/com/example/gimmegonghakauth/user/service/EmailVerificationService.java +++ b/src/main/java/com/example/gimmegonghakauth/user/service/EmailVerificationService.java @@ -1,7 +1,7 @@ package com.example.gimmegonghakauth.user.service; -import com.example.gimmegonghakauth.constant.UnivCertTypeConst; -import com.example.gimmegonghakauth.constant.UnivcertErrorMessageConst; +import com.example.gimmegonghakauth.common.constant.UnivCertTypeConst; +import com.example.gimmegonghakauth.common.constant.UnivcertErrorMessageConst; import com.fasterxml.jackson.databind.ObjectMapper; import com.univcert.api.UnivCert; import org.springframework.beans.factory.annotation.Value; diff --git a/src/main/java/com/example/gimmegonghakauth/user/service/UserService.java b/src/main/java/com/example/gimmegonghakauth/user/service/UserService.java index 6dc1a77..2f2f701 100644 --- a/src/main/java/com/example/gimmegonghakauth/user/service/UserService.java +++ b/src/main/java/com/example/gimmegonghakauth/user/service/UserService.java @@ -1,13 +1,13 @@ package com.example.gimmegonghakauth.user.service; -import com.example.gimmegonghakauth.dao.CompletedCoursesDao; +import com.example.gimmegonghakauth.completed.infrastructure.CompletedCoursesDao; import com.example.gimmegonghakauth.user.infrastructure.UserRepository; -import com.example.gimmegonghakauth.domain.CompletedCoursesDomain; -import com.example.gimmegonghakauth.domain.MajorsDomain; +import com.example.gimmegonghakauth.completed.domain.CompletedCoursesDomain; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; import com.example.gimmegonghakauth.user.domain.UserDomain; import com.example.gimmegonghakauth.user.service.dto.ChangePasswordDto; import com.example.gimmegonghakauth.user.service.dto.UserJoinDto; -import com.example.gimmegonghakauth.exception.UserNotFoundException; +import com.example.gimmegonghakauth.user.service.exception.UserNotFoundException; import com.example.gimmegonghakauth.user.service.port.UserEncoder; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/gimmegonghakauth/exception/UserNotFoundException.java b/src/main/java/com/example/gimmegonghakauth/user/service/exception/UserNotFoundException.java similarity index 73% rename from src/main/java/com/example/gimmegonghakauth/exception/UserNotFoundException.java rename to src/main/java/com/example/gimmegonghakauth/user/service/exception/UserNotFoundException.java index beb8afc..493754a 100644 --- a/src/main/java/com/example/gimmegonghakauth/exception/UserNotFoundException.java +++ b/src/main/java/com/example/gimmegonghakauth/user/service/exception/UserNotFoundException.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.exception; +package com.example.gimmegonghakauth.user.service.exception; public class UserNotFoundException extends RuntimeException { diff --git a/src/main/resources/submodule-properties b/src/main/resources/submodule-properties index 1418f5d..920fd67 160000 --- a/src/main/resources/submodule-properties +++ b/src/main/resources/submodule-properties @@ -1 +1 @@ -Subproject commit 1418f5d4c4368c33630b08d9086bbb46aaf54e91 +Subproject commit 920fd67beab95c36c8895217290a124b7058db0c diff --git a/src/test/java/com/example/gimmegonghakauth/Controller/UserControllerTest.java b/src/test/java/com/example/gimmegonghakauth/Controller/UserControllerTest.java index 1c4cd14..35bc5f7 100644 --- a/src/test/java/com/example/gimmegonghakauth/Controller/UserControllerTest.java +++ b/src/test/java/com/example/gimmegonghakauth/Controller/UserControllerTest.java @@ -5,7 +5,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import com.example.gimmegonghakauth.dao.MajorsDao; +import com.example.gimmegonghakauth.common.infrastructure.MajorsDao; import com.example.gimmegonghakauth.mock.FakeUserEncoder; import com.example.gimmegonghakauth.user.infrastructure.UserRepository; import com.example.gimmegonghakauth.user.domain.UserDomain; @@ -17,7 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.web.servlet.MockMvc; diff --git a/src/test/java/com/example/gimmegonghakauth/Service/CompletedCoursesServiceDataTest.java b/src/test/java/com/example/gimmegonghakauth/Service/CompletedCoursesServiceDataTest.java index 96c6b65..e7b206b 100644 --- a/src/test/java/com/example/gimmegonghakauth/Service/CompletedCoursesServiceDataTest.java +++ b/src/test/java/com/example/gimmegonghakauth/Service/CompletedCoursesServiceDataTest.java @@ -1,13 +1,13 @@ package com.example.gimmegonghakauth.Service; -import com.example.gimmegonghakauth.dao.CompletedCoursesDao; -import com.example.gimmegonghakauth.dao.CoursesDao; -import com.example.gimmegonghakauth.dao.MajorsDao; +import com.example.gimmegonghakauth.completed.infrastructure.CompletedCoursesDao; +import com.example.gimmegonghakauth.common.infrastructure.CoursesDao; +import com.example.gimmegonghakauth.common.infrastructure.MajorsDao; import com.example.gimmegonghakauth.user.infrastructure.UserRepository; -import com.example.gimmegonghakauth.domain.CompletedCoursesDomain; -import com.example.gimmegonghakauth.domain.CoursesDomain; +import com.example.gimmegonghakauth.completed.domain.CompletedCoursesDomain; +import com.example.gimmegonghakauth.common.domain.CoursesDomain; import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.service.CompletedCoursesService; +import com.example.gimmegonghakauth.completed.service.CompletedCoursesService; import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.BeforeEach; diff --git a/src/test/java/com/example/gimmegonghakauth/Service/GonghakCalculateServiceTest.java b/src/test/java/com/example/gimmegonghakauth/Service/GonghakCalculateServiceTest.java index 0868c43..f5d5cef 100644 --- a/src/test/java/com/example/gimmegonghakauth/Service/GonghakCalculateServiceTest.java +++ b/src/test/java/com/example/gimmegonghakauth/Service/GonghakCalculateServiceTest.java @@ -3,15 +3,15 @@ import static org.assertj.core.api.Assertions.assertThat; import com.example.gimmegonghakauth.Service.GonghakCalculateServiceTest.CalculateTestConfig; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import com.example.gimmegonghakauth.dao.AbeekDao; -import com.example.gimmegonghakauth.dao.GonghakCoursesDao; -import com.example.gimmegonghakauth.dao.GonghakDao; -import com.example.gimmegonghakauth.dao.GonghakRepository; -import com.example.gimmegonghakauth.domain.MajorsDomain; +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; +import com.example.gimmegonghakauth.status.infrastructure.AbeekDao; +import com.example.gimmegonghakauth.status.infrastructure.GonghakCoursesDao; +import com.example.gimmegonghakauth.status.infrastructure.GonghakDao; +import com.example.gimmegonghakauth.status.infrastructure.GonghakRepository; +import com.example.gimmegonghakauth.status.service.GonghakCalculateService; +import com.example.gimmegonghakauth.status.service.dto.GonghakResultDto.ResultPointDto; import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.dto.GonghakResultDto.ResultPointDto; -import com.example.gimmegonghakauth.service.GonghakCalculateService; import java.util.Map; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -37,58 +37,58 @@ class GonghakCalculateServiceTest { private GonghakCalculateService gonghakCalculateService; private static final MajorsDomain TEST_MAJORSDOMAIN = MajorsDomain.builder() - .id(1L) - .major("컴퓨터공학과").build(); + .id(1L) + .major("컴퓨터공학과").build(); private static final UserDomain TEST_USERDOMAIN = UserDomain.builder() - .email("testEmail") - .name("홍지섭") - .password("qwer") - .studentId(19011706L) - .majorsDomain(TEST_MAJORSDOMAIN).build(); + .email("testEmail") + .name("홍지섭") + .password("qwer") + .studentId(19011706L) + .majorsDomain(TEST_MAJORSDOMAIN).build(); @TestConfiguration @RequiredArgsConstructor - static class CalculateTestConfig{ + static class CalculateTestConfig { private final AbeekDao abeekDao; private final GonghakCoursesDao gonghakCoursesDao; @Bean - public GonghakRepository gonghakRepository(){ + public GonghakRepository gonghakRepository() { return new GonghakDao(abeekDao, gonghakCoursesDao); } @Bean - public GonghakCalculateService gonghakCalculateService(){ + public GonghakCalculateService gonghakCalculateService() { return new GonghakCalculateService(gonghakRepository()); } } @Test @DisplayName("check log gonghakCalculateServiceTest") - void logGonghakCalculateServiceTest(){ - Map userResultRatio = gonghakCalculateService.getResultRatio( - TEST_USERDOMAIN).get().getUserResultRatio(); + void logGonghakCalculateServiceTest() { + Map userResultRatio = gonghakCalculateService.getResultRatio( + TEST_USERDOMAIN).get().getUserResultRatio(); - log.info("userResultRatio = {}",userResultRatio); + log.info("userResultRatio = {}", userResultRatio); } @Test @DisplayName("컴퓨터공학과 GonghakCalculateService 계산 결과 체크") - void correctGonghakCalculateServiceTestCom(){ + void correctGonghakCalculateServiceTestCom() { Map userResultRatio = gonghakCalculateService.getResultRatio( - TEST_USERDOMAIN).get().getUserResultRatio(); + TEST_USERDOMAIN).get().getUserResultRatio(); userResultRatio.keySet().forEach( - abeekTypeConst -> { - Double userPoint = userResultRatio.get(abeekTypeConst).getUserPoint(); - assertThat(userPoint).isLessThanOrEqualTo(1); - assertThat(userPoint).isGreaterThanOrEqualTo(0); - } + abeekTypeConst -> { + Double userPoint = userResultRatio.get(abeekTypeConst).getUserPoint(); + assertThat(userPoint).isLessThanOrEqualTo(1); + assertThat(userPoint).isGreaterThanOrEqualTo(0); + } ); } - private double getExpectedCredit(int credit,Map standard,AbeekTypeConst abeekTypeConst) { - return Double.valueOf(String.format("%.4f",(double) credit / standard.get(abeekTypeConst))); + private double getExpectedCredit(int credit, Map standard, AbeekTypeConst abeekTypeConst) { + return Double.valueOf(String.format("%.4f", (double) credit / standard.get(abeekTypeConst))); } } diff --git a/src/test/java/com/example/gimmegonghakauth/Service/GonghakRecommendServiceTest.java b/src/test/java/com/example/gimmegonghakauth/Service/GonghakRecommendServiceTest.java index 96f6549..e3611e3 100644 --- a/src/test/java/com/example/gimmegonghakauth/Service/GonghakRecommendServiceTest.java +++ b/src/test/java/com/example/gimmegonghakauth/Service/GonghakRecommendServiceTest.java @@ -2,14 +2,14 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import com.example.gimmegonghakauth.user.infrastructure.UserRepository; +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.Service.dto.LoginDto; +import com.example.gimmegonghakauth.status.service.dto.IncompletedCoursesDto; +import com.example.gimmegonghakauth.status.service.recommend.ComputerMajorGonghakRecommendService; +import com.example.gimmegonghakauth.status.service.recommend.GonghakRecommendService; +import com.example.gimmegonghakauth.status.service.recommend.RecommendServiceSelectManager; import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.dto.IncompletedCoursesDto; -import com.example.gimmegonghakauth.dto.LoginDto; -import com.example.gimmegonghakauth.service.recommend.ComputerMajorGonghakRecommendService; -import com.example.gimmegonghakauth.service.recommend.GonghakRecommendService; -import com.example.gimmegonghakauth.service.recommend.RecommendServiceSelectManager; +import com.example.gimmegonghakauth.user.infrastructure.UserRepository; import java.util.List; import java.util.Map; import lombok.extern.slf4j.Slf4j; @@ -36,44 +36,45 @@ class GonghakRecommendServiceTest { @Test @DisplayName("유저의 학과에 맞는 recommendService 클래스 가져오기 확인 - 컴퓨터공학과") - void recommendServiceSelectManagerTest(){ + void recommendServiceSelectManagerTest() { LoginDto loginDto = new LoginDto(COM_TEST_STUDENT_ID); GonghakRecommendService gonghakRecommendService = recommendServiceSelectManager.selectRecommendService( - loginDto.getStudentId()); + loginDto.getStudentId()); assertThat(gonghakRecommendService).isInstanceOf( - ComputerMajorGonghakRecommendService.class); + ComputerMajorGonghakRecommendService.class); } @Test - void createRecommendCoursesTest(){ + void createRecommendCoursesTest() { UserDomain testUser = userRepository.findByStudentId(COM_TEST_STUDENT_ID).get(); GonghakRecommendService comGonghakRecommendService = recommendServiceSelectManager.selectRecommendService( - new LoginDto(COM_TEST_STUDENT_ID).getStudentId()); + new LoginDto(COM_TEST_STUDENT_ID).getStudentId()); Map> recommendCoursesByAbeekType = comGonghakRecommendService.createRecommendCourses( - testUser).getRecommendCoursesByAbeekType(); + testUser).getRecommendCoursesByAbeekType(); - log.info("recommendCoursesByAbeekType.keySet()= {}",recommendCoursesByAbeekType.keySet()); + log.info("recommendCoursesByAbeekType.keySet()= {}", recommendCoursesByAbeekType.keySet()); //[PROFESSIONAL_NON_MAJOR, BSM, DESIGN, MAJOR, MINIMUM_CERTI] recommendCoursesByAbeekType.keySet().forEach( - abeekTypeConst -> { - log.info("abeekTypeConst.name() = {}",abeekTypeConst.name()); - recommendCoursesByAbeekType.get(abeekTypeConst); - for (IncompletedCoursesDto incompletedCoursesDto : recommendCoursesByAbeekType.get(abeekTypeConst)) { - log.info("incompletedCoursesDto.getCourseName= {}",incompletedCoursesDto.getCourseName()); + abeekTypeConst -> { + log.info("abeekTypeConst.name() = {}", abeekTypeConst.name()); + recommendCoursesByAbeekType.get(abeekTypeConst); + for (IncompletedCoursesDto incompletedCoursesDto : recommendCoursesByAbeekType.get( + abeekTypeConst)) { + log.info("incompletedCoursesDto.getCourseName= {}", incompletedCoursesDto.getCourseName()); + } } - } ); assertThat(recommendCoursesByAbeekType.get(AbeekTypeConst.PROFESSIONAL_NON_MAJOR).size()).isNotEqualTo(0); assertThat(recommendCoursesByAbeekType.keySet()).containsOnly( - AbeekTypeConst.PROFESSIONAL_NON_MAJOR, - AbeekTypeConst.BSM, - AbeekTypeConst.DESIGN, - AbeekTypeConst.MAJOR, - AbeekTypeConst.MINIMUM_CERTI + AbeekTypeConst.PROFESSIONAL_NON_MAJOR, + AbeekTypeConst.BSM, + AbeekTypeConst.DESIGN, + AbeekTypeConst.MAJOR, + AbeekTypeConst.MINIMUM_CERTI ); } } diff --git a/src/test/java/com/example/gimmegonghakauth/Service/UserSecurityServiceTest.java b/src/test/java/com/example/gimmegonghakauth/Service/UserSecurityServiceTest.java index 0f52f70..3028cb8 100644 --- a/src/test/java/com/example/gimmegonghakauth/Service/UserSecurityServiceTest.java +++ b/src/test/java/com/example/gimmegonghakauth/Service/UserSecurityServiceTest.java @@ -6,10 +6,10 @@ import static org.mockito.Mockito.when; import com.example.gimmegonghakauth.user.infrastructure.UserRepository; -import com.example.gimmegonghakauth.domain.MajorsDomain; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; import com.example.gimmegonghakauth.user.domain.UserDomain; import com.example.gimmegonghakauth.user.domain.UserRole; -import com.example.gimmegonghakauth.service.UserSecurityService; +import com.example.gimmegonghakauth.auth.service.UserSecurityService; import java.util.Optional; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/main/java/com/example/gimmegonghakauth/dto/LoginDto.java b/src/test/java/com/example/gimmegonghakauth/Service/dto/LoginDto.java similarity index 86% rename from src/main/java/com/example/gimmegonghakauth/dto/LoginDto.java rename to src/test/java/com/example/gimmegonghakauth/Service/dto/LoginDto.java index 507bd98..77396d2 100644 --- a/src/main/java/com/example/gimmegonghakauth/dto/LoginDto.java +++ b/src/test/java/com/example/gimmegonghakauth/Service/dto/LoginDto.java @@ -1,4 +1,4 @@ -package com.example.gimmegonghakauth.dto; +package com.example.gimmegonghakauth.Service.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/test/java/com/example/gimmegonghakauth/dao/GonghakRepositoryTest.java b/src/test/java/com/example/gimmegonghakauth/dao/GonghakRepositoryTest.java index 41cba0e..54517ef 100644 --- a/src/test/java/com/example/gimmegonghakauth/dao/GonghakRepositoryTest.java +++ b/src/test/java/com/example/gimmegonghakauth/dao/GonghakRepositoryTest.java @@ -2,15 +2,19 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import com.example.gimmegonghakauth.constant.CourseCategoryConst; -import com.example.gimmegonghakauth.domain.CompletedCoursesDomain; -import com.example.gimmegonghakauth.domain.MajorsDomain; +import com.example.gimmegonghakauth.common.infrastructure.CoursesDao; +import com.example.gimmegonghakauth.common.infrastructure.MajorsDao; +import com.example.gimmegonghakauth.completed.domain.CompletedCoursesDomain; +import com.example.gimmegonghakauth.completed.infrastructure.CompletedCoursesDao; +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.constant.CourseCategoryConst; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; +import com.example.gimmegonghakauth.status.domain.MajorName; +import com.example.gimmegonghakauth.status.infrastructure.GonghakRepository; +import com.example.gimmegonghakauth.status.service.dto.GonghakCoursesByMajorDto; +import com.example.gimmegonghakauth.status.service.dto.GonghakStandardDto; +import com.example.gimmegonghakauth.status.service.dto.IncompletedCoursesDto; import com.example.gimmegonghakauth.user.domain.UserDomain; -import com.example.gimmegonghakauth.dto.GonghakCoursesByMajorDto; -import com.example.gimmegonghakauth.dto.GonghakStandardDto; -import com.example.gimmegonghakauth.dto.IncompletedCoursesDto; -import com.example.gimmegonghakauth.service.recommend.MajorName; import com.example.gimmegonghakauth.user.infrastructure.UserRepository; import java.util.ArrayList; import java.util.Arrays; @@ -60,31 +64,31 @@ void setInit() { void setMajor() { COM_TEST_MAJORDOMAIN = majorsDao.findByMajor(MajorName.COMPUTER.getName()); WRONG_TEST_MAJORDOMAIN = MajorsDomain.builder() - .id(5L) - .major("오징어먹물학과").build(); + .id(5L) + .major("오징어먹물학과").build(); } void setUserAndCompletedCourse() { UserDomain user = UserDomain.builder().studentId(19111111L) - .password("qwer").email("test@sju.com") - .majorsDomain(majorsDao.findByMajor("컴퓨터공학과")) - .name("testUser") - .build(); + .password("qwer").email("test@sju.com") + .majorsDomain(majorsDao.findByMajor("컴퓨터공학과")) + .name("testUser") + .build(); userRepository.save(user); CompletedCoursesDomain course1 = CompletedCoursesDomain.builder() - .coursesDomain(coursesDao.findByName("Capstone디자인(산학협력프로젝트)")) - .year(19) - .userDomain(user) - .semester("1학기") - .build(); + .coursesDomain(coursesDao.findByName("Capstone디자인(산학협력프로젝트)")) + .year(19) + .userDomain(user) + .semester("1학기") + .build(); CompletedCoursesDomain course2 = CompletedCoursesDomain.builder() - .coursesDomain(coursesDao.findByName("웹프로그래밍")) - .year(19) - .userDomain(user) - .semester("1학기") - .build(); + .coursesDomain(coursesDao.findByName("웹프로그래밍")) + .year(19) + .userDomain(user) + .semester("1학기") + .build(); completedCoursesDao.save(course1); completedCoursesDao.save(course2); @@ -96,23 +100,23 @@ void setUserAndCompletedCourse() { @DisplayName("dao 메서드 상태 출력") void displayDaoMethod() { List withoutCompleteCourses = gonghakRepository.findUserIncompletedCourses( - CourseCategoryConst.전공, COM_TEST_STUDENT_ID, COM_TEST_MAJORDOMAIN + CourseCategoryConst.전공, COM_TEST_STUDENT_ID, COM_TEST_MAJORDOMAIN ); withoutCompleteCourses.forEach( - incompletedCoursesDto -> { - log.info("withoutCompleteCourses = {}:", incompletedCoursesDto.getCourseName()); - } + incompletedCoursesDto -> { + log.info("withoutCompleteCourses = {}:", incompletedCoursesDto.getCourseName()); + } ); List withCompletedCourses = gonghakRepository.findUserCompletedCourses( - COM_TEST_STUDENT_ID, COM_TEST_MAJORDOMAIN + COM_TEST_STUDENT_ID, COM_TEST_MAJORDOMAIN ); withCompletedCourses.forEach( - gonghakCoursesByMajorDto -> { - log.info("withCompletedCourses = {}", gonghakCoursesByMajorDto.getCourseName()); - } + gonghakCoursesByMajorDto -> { + log.info("withCompletedCourses = {}", gonghakCoursesByMajorDto.getCourseName()); + } ); } @@ -121,12 +125,12 @@ void displayDaoMethod() { @DisplayName("GonghakStandardDto 5가지 상태 모두 포함되어있는지 확인") void findStandardKeySetTest() { Optional standard = gonghakRepository.findStandard( - COM_TEST_MAJORDOMAIN); + COM_TEST_MAJORDOMAIN); log.info("testStandard status ={}", standard.get().getStandards()); Map testStandard = standard.get().getStandards(); assertThat(testStandard.keySet()).contains(AbeekTypeConst.BSM, - AbeekTypeConst.PROFESSIONAL_NON_MAJOR, AbeekTypeConst.DESIGN, AbeekTypeConst.MAJOR, - AbeekTypeConst.MINIMUM_CERTI); + AbeekTypeConst.PROFESSIONAL_NON_MAJOR, AbeekTypeConst.DESIGN, AbeekTypeConst.MAJOR, + AbeekTypeConst.MINIMUM_CERTI); assertThat(testStandard.containsKey(AbeekTypeConst.MSC)).isEqualTo(false); } @@ -135,19 +139,19 @@ void findStandardKeySetTest() { @DisplayName("findUserCoursesByMajorByGonghakCoursesWithCompletedCourses 테스트 ") void findUserCoursesByMajorByGonghakCoursesWithCompletedCoursesTest() { List userDataForCalculate = gonghakRepository.findUserCompletedCourses( - COM_TEST_STUDENT_ID, COM_TEST_MAJORDOMAIN); + COM_TEST_STUDENT_ID, COM_TEST_MAJORDOMAIN); log.info("userDataForCalculate size = {}", userDataForCalculate.size()); for (GonghakCoursesByMajorDto course : userDataForCalculate) { log.info( - "Course ID: {}, Course Name: {}, Year: {}, Course Category: {}, Pass Category: {}, Design Credit: {}, Credit: {}", - course.getCourseId(), - course.getCourseName(), - course.getYear(), - course.getCourseCategory(), - course.getPassCategory(), - course.getDesignCredit(), - course.getCredit()); + "Course ID: {}, Course Name: {}, Year: {}, Course Category: {}, Pass Category: {}, Design Credit: {}, Credit: {}", + course.getCourseId(), + course.getCourseName(), + course.getYear(), + course.getCourseCategory(), + course.getPassCategory(), + course.getDesignCredit(), + course.getCredit()); } List passCategories = new ArrayList<>(); @@ -160,7 +164,7 @@ void findUserCoursesByMajorByGonghakCoursesWithCompletedCoursesTest() { assertThat(passCategories).containsAll(List.of("인필", "인선")); assertThat(courseCategories).containsAnyElementsOf( - List.of(CourseCategoryConst.전문교양, CourseCategoryConst.전공, CourseCategoryConst.BSM)); + List.of(CourseCategoryConst.전문교양, CourseCategoryConst.전공, CourseCategoryConst.BSM)); } @Test @@ -168,20 +172,20 @@ void findUserCoursesByMajorByGonghakCoursesWithCompletedCoursesTest() { void findUserCoursesByMajorByGonghakCoursesWithoutCompleteCoursesTest() { Arrays.stream(CourseCategoryConst.values()).forEach( - courseCategory -> { - List testCourses = gonghakRepository.findUserIncompletedCourses( - CourseCategoryConst.전공, - COM_TEST_STUDENT_ID, - COM_TEST_MAJORDOMAIN - ); - - testCourses.forEach( - incompletedCoursesDto -> { - assertThat(incompletedCoursesDto.getCourseCategory()).isEqualTo( - CourseCategoryConst.전공); - } - ); - } + courseCategory -> { + List testCourses = gonghakRepository.findUserIncompletedCourses( + CourseCategoryConst.전공, + COM_TEST_STUDENT_ID, + COM_TEST_MAJORDOMAIN + ); + + testCourses.forEach( + incompletedCoursesDto -> { + assertThat(incompletedCoursesDto.getCourseCategory()).isEqualTo( + CourseCategoryConst.전공); + } + ); + } ); } @@ -189,7 +193,7 @@ void findUserCoursesByMajorByGonghakCoursesWithoutCompleteCoursesTest() { @DisplayName("findStandard가 없을 때 - Wrong Major") void findStandardWrongMajorDomainTest() { Optional wrongStandard = gonghakRepository.findStandard( - WRONG_TEST_MAJORDOMAIN); + WRONG_TEST_MAJORDOMAIN); assertThat(wrongStandard.get().getStandards().isEmpty()).isEqualTo(true); } } diff --git a/src/test/java/com/example/gimmegonghakauth/domain/DomainTest.java b/src/test/java/com/example/gimmegonghakauth/domain/DomainTest.java index aa0b6e1..78873d3 100644 --- a/src/test/java/com/example/gimmegonghakauth/domain/DomainTest.java +++ b/src/test/java/com/example/gimmegonghakauth/domain/DomainTest.java @@ -3,13 +3,15 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import com.example.gimmegonghakauth.constant.AbeekTypeConst; -import com.example.gimmegonghakauth.dao.AbeekDao; -import com.example.gimmegonghakauth.dao.GonghakCoursesDao; -import com.example.gimmegonghakauth.dao.GonghakDao; -import com.example.gimmegonghakauth.dao.GonghakRepository; -import com.example.gimmegonghakauth.dao.MajorsDao; +import com.example.gimmegonghakauth.common.domain.MajorsDomain; +import com.example.gimmegonghakauth.common.constant.AbeekTypeConst; +import com.example.gimmegonghakauth.common.infrastructure.MajorsDao; import com.example.gimmegonghakauth.domain.DomainTest.DomainTestConfig; +import com.example.gimmegonghakauth.status.domain.AbeekDomain; +import com.example.gimmegonghakauth.status.infrastructure.AbeekDao; +import com.example.gimmegonghakauth.status.infrastructure.GonghakCoursesDao; +import com.example.gimmegonghakauth.status.infrastructure.GonghakDao; +import com.example.gimmegonghakauth.status.infrastructure.GonghakRepository; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.junit.jupiter.api.BeforeEach; @@ -42,28 +44,28 @@ public static class DomainTestConfig { private final GonghakCoursesDao gonghakCoursesDao; @Bean - public GonghakRepository gonghakRepository(){ + public GonghakRepository gonghakRepository() { return new GonghakDao(abeekDao, gonghakCoursesDao); } } private final MajorsDomain majorsDomain = MajorsDomain.builder() - .id(1L) - .major("건설환경공학과").build(); + .id(1L) + .major("건설환경공학과").build(); @Transactional @BeforeEach - void beforeEachInputTestData(){ + void beforeEachInputTestData() { MajorsDomain majorsDomain = MajorsDomain.builder() - .id(1L) - .major("건설환경공학과").build(); + .id(1L) + .major("건설환경공학과").build(); majorsDao.save(majorsDomain); } @Transactional @Test - void normalSaveTest(){ + void normalSaveTest() { //given AbeekDomain normalAbeekDomain = buildAbeekDomain(majorsDomain); @@ -80,21 +82,21 @@ void normalSaveTest(){ @Test @DisplayName("범위 밖의 학년") - void outOfRangeYear(){ + void outOfRangeYear() { AbeekDomain errorAbeekDomain = buildAbeekDomain(majorsDomain); errorAbeekDomain.setYear(25); assertThatThrownBy(() -> gonghakRepository.save(errorAbeekDomain)) - .isInstanceOf(RuntimeException.class); + .isInstanceOf(RuntimeException.class); } - private AbeekDomain buildAbeekDomain(MajorsDomain majorsDomain){ + private AbeekDomain buildAbeekDomain(MajorsDomain majorsDomain) { return AbeekDomain.builder() - .id(1L) - .majorsDomain(majorsDomain) - .year(19) - .abeekType(AbeekTypeConst.MAJOR) - .minCredit(20) - .note("이것은 테스트 abeek 도메인 입니다.").build(); + .id(1L) + .majorsDomain(majorsDomain) + .year(19) + .abeekType(AbeekTypeConst.MAJOR) + .minCredit(20) + .note("이것은 테스트 abeek 도메인 입니다.").build(); } } diff --git a/src/test/java/com/example/gimmegonghakauth/user/service/UserServiceTest.java b/src/test/java/com/example/gimmegonghakauth/user/service/UserServiceTest.java index 7058964..cfe85e3 100644 --- a/src/test/java/com/example/gimmegonghakauth/user/service/UserServiceTest.java +++ b/src/test/java/com/example/gimmegonghakauth/user/service/UserServiceTest.java @@ -3,9 +3,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import com.example.gimmegonghakauth.exception.UserNotFoundException; +import com.example.gimmegonghakauth.user.service.exception.UserNotFoundException; import com.example.gimmegonghakauth.user.domain.UserDomain; -import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;