diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/jpa/BaseTimeEntity.java b/src/main/java/com/pinHouse/server/core/entity/BaseTimeEntity.java similarity index 89% rename from src/main/java/com/pinHouse/server/platform/adapter/out/jpa/BaseTimeEntity.java rename to src/main/java/com/pinHouse/server/core/entity/BaseTimeEntity.java index e9bf836..d3e279e 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/jpa/BaseTimeEntity.java +++ b/src/main/java/com/pinHouse/server/core/entity/BaseTimeEntity.java @@ -1,4 +1,4 @@ -package com.pinHouse.server.platform.adapter.out.jpa; +package com.pinHouse.server.core.entity; import jakarta.persistence.EntityListeners; import jakarta.persistence.MappedSuperclass; diff --git a/src/main/java/com/pinHouse/server/platform/domain/location/Location.java b/src/main/java/com/pinHouse/server/core/entity/Location.java similarity index 90% rename from src/main/java/com/pinHouse/server/platform/domain/location/Location.java rename to src/main/java/com/pinHouse/server/core/entity/Location.java index ec4125e..c458ea0 100644 --- a/src/main/java/com/pinHouse/server/platform/domain/location/Location.java +++ b/src/main/java/com/pinHouse/server/core/entity/Location.java @@ -1,4 +1,4 @@ -package com.pinHouse.server.platform.domain.location; +package com.pinHouse.server.core.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/FacilityMongoAdapter.java b/src/main/java/com/pinHouse/server/platform/adapter/out/FacilityMongoAdapter.java deleted file mode 100644 index 4761c0f..0000000 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/FacilityMongoAdapter.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.pinHouse.server.platform.adapter.out; - -import com.pinHouse.server.platform.adapter.out.mongo.facility.*; -import com.pinHouse.server.platform.application.out.facility.FacilityPort; -import com.pinHouse.server.platform.domain.facility.*; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -import java.util.List; - -@Component -@RequiredArgsConstructor -public class FacilityMongoAdapter implements FacilityPort { - - /// 외부 의존성 - private final LibraryDocumentRepository libraryRepository; - private final ParkDocumentRepository parkRepository; - private final SportDocumentRepository sportRepository; - private final WalkingDocumentRepository walkingRepository; - private final AnimalDocumentRepository animalRepository; - - @Override - public List loadLibrariesNearBy(double longitude, double latitude, double radiusInKm) { - return libraryRepository.findByLocation(longitude, latitude,radiusInKm).stream() - .map(LibraryDocument::toDomain) - .toList(); - } - - @Override - public List loadParksNearBy(double longitude, double latitude, double radiusInKm) { - return parkRepository.findByLocation(longitude, latitude,radiusInKm).stream() - .map(ParkDocument::toDomain) - .toList(); - } - - @Override - public List loadSportsNearBy(double longitude, double latitude, double radiusInKm) { - return sportRepository.findByLocation(longitude, latitude,radiusInKm).stream() - .map(SportDocument::toDomain) - .toList(); - } - - @Override - public List loadWalkingsNearBy(double longitude, double latitude, double radiusInKm) { - return walkingRepository.findByLocation(longitude, latitude,radiusInKm).stream() - .map(WalkingDocument::toDomain) - .toList(); - } - - @Override - public List loadAnimalsNearBy(double longitude, double latitude, double radiusInKm) { - return animalRepository.findByLocation(longitude, latitude,radiusInKm).stream() - .map(AnimalDocument::toDomain) - .toList(); - } -} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/NoticeMongoAdapter.java b/src/main/java/com/pinHouse/server/platform/adapter/out/NoticeMongoAdapter.java deleted file mode 100644 index 4f317f5..0000000 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/NoticeMongoAdapter.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.pinHouse.server.platform.adapter.out; - -import com.pinHouse.server.platform.adapter.out.mongo.notice.NoticeDocument; -import com.pinHouse.server.platform.adapter.out.mongo.notice.NoticeDocumentRepository; -import com.pinHouse.server.platform.application.out.notice.NoticePort; -import com.pinHouse.server.platform.domain.notice.Notice; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.Optional; - -/** - * NoticePort의 구현체입니다. - * Repository를 주입받아 역할을 수행합니다. - */ - -@Slf4j -@Component -@RequiredArgsConstructor -public class NoticeMongoAdapter implements NoticePort { - - private final NoticeDocumentRepository repository; - - @Override - public Page loadNotices(Pageable pageable) { - return repository.findAll(pageable) - .map(NoticeDocument::toDomain); - } - - @Override - public Optional loadById(String noticeId) { - return repository.findByNoticeId(noticeId) - .map(NoticeDocument::toDomain); - } - - @Override - public List loadAllNotices() { - return repository.findAll().stream() - .map(NoticeDocument::toDomain) - .toList(); - } - -} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/jpa/user/UserJpaEntity.java b/src/main/java/com/pinHouse/server/platform/adapter/out/jpa/user/UserJpaEntity.java deleted file mode 100644 index a823dfb..0000000 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/jpa/user/UserJpaEntity.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.pinHouse.server.platform.adapter.out.jpa.user; - -import com.pinHouse.server.platform.adapter.out.jpa.BaseTimeEntity; -import com.pinHouse.server.platform.domain.user.Gender; -import com.pinHouse.server.platform.domain.user.Provider; -import com.pinHouse.server.platform.domain.user.Role; -import com.pinHouse.server.platform.domain.user.User; -import jakarta.persistence.*; -import lombok.*; - -import java.time.LocalDate; -import java.util.UUID; - -@Entity -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@Table(name = "users") -@AllArgsConstructor -@Builder -public class UserJpaEntity extends BaseTimeEntity { - - @Id - @Column(name = "id", nullable = false, columnDefinition = "BINARY(16)") - private UUID id; - - @Enumerated(EnumType.STRING) - private Provider provider; - - private String socialId; - - @Column(nullable = false) - private String name; - - @Column(nullable = false, unique = true) - private String email; - - @Column(name = "phone_number") - private String phoneNumber; - - @Enumerated(EnumType.STRING) - private Role role; - - @Enumerated(EnumType.STRING) - private Gender gender; - - private String profileImage; - - private LocalDate birthday; - - @PrePersist - public void generateUUID() { - if (this.id == null) { - this.id = UUID.randomUUID(); - } - } - - public static UserJpaEntity from(User user) { - return UserJpaEntity.builder() - .id(user.getId()) - .name(user.getName()) - .provider(user.getProvider()) - .socialId(user.getSocialId()) - .email(user.getEmail()) - .phoneNumber(user.getPhoneNumber()) - .role(user.getRole()) - .gender(user.getGender()) - .profileImage(user.getProfileImage()) - .birthday(user.getBirthday()) - .build(); - } - - public User toDomain() { - return User.builder() - .id(id) - .provider(provider) - .socialId(socialId) - .name(name) - .email(email) - .phoneNumber(phoneNumber) - .role(role) - .gender(gender) - .profileImage(profileImage) - .birthday(birthday) - .build(); - } - -} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/jpa/user/UserJpaRepository.java b/src/main/java/com/pinHouse/server/platform/adapter/out/jpa/user/UserJpaRepository.java deleted file mode 100644 index 0d082fc..0000000 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/jpa/user/UserJpaRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.pinHouse.server.platform.adapter.out.jpa.user; - -import com.pinHouse.server.platform.domain.user.Provider; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.Optional; -import java.util.UUID; - -@Repository -public interface UserJpaRepository extends JpaRepository { - Optional findByEmail(String email); - - Optional findById(UUID id); - - - Optional findByProviderAndSocialId(Provider social, String socialId); - -} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/NoticeDocumentRepository.java b/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/NoticeDocumentRepository.java deleted file mode 100644 index aa06921..0000000 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/NoticeDocumentRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.pinHouse.server.platform.adapter.out.mongo.notice; - -import org.springframework.data.mongodb.repository.MongoRepository; - -import java.util.Optional; - -public interface NoticeDocumentRepository extends MongoRepository { - - Optional findByNoticeId(String noticeId); - -} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/NoticeSupplyInfoDocument.java b/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/NoticeSupplyInfoDocument.java deleted file mode 100644 index 642e708..0000000 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/NoticeSupplyInfoDocument.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.pinHouse.server.platform.adapter.out.mongo.notice; - -import com.pinHouse.server.platform.domain.notice.NoticeSupplyInfo; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import org.springframework.data.mongodb.core.mapping.Field; - -@Getter -@NoArgsConstructor -@AllArgsConstructor -@Builder -public class NoticeSupplyInfoDocument { - - @Field("공급유형") - private String housingType; - - @Field("전용면적") - private String area; - - @Field("월임대료(원)") - private Integer monthlyRent; - - @Field("임대보증금(원)") - private DepositDocument deposit; - - @Field("모집호수") - private RecruitmentCountDocument recruitmentCount; - - public NoticeSupplyInfo toDomain() { - return NoticeSupplyInfo.builder() - .housingType(housingType) - .area(area) - .monthlyRent(monthlyRent) - .deposit(deposit.toDomain()) - .recruitmentCount(recruitmentCount.toDomain()) - .build(); - } -} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/RecruitmentCountDocument.java b/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/RecruitmentCountDocument.java deleted file mode 100644 index da949b5..0000000 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/RecruitmentCountDocument.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.pinHouse.server.platform.adapter.out.mongo.notice; - -import com.pinHouse.server.platform.domain.notice.NoticeSupplyInfo; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import org.springframework.data.mongodb.core.mapping.Field; - -@Getter -@NoArgsConstructor -@AllArgsConstructor -@Builder -public class RecruitmentCountDocument { - - @Field("계") - private Integer total; - - @Field("우선공급") - private Integer priority; - - @Field("일반공급") - private Integer general; - - public NoticeSupplyInfo.RecruitmentCount toDomain() { - return NoticeSupplyInfo.RecruitmentCount.builder() - .total(total) - .priority(priority) - .general(general) - .build(); - } -} - diff --git a/src/main/java/com/pinHouse/server/platform/application/in/NoticeInfraUseCase.java b/src/main/java/com/pinHouse/server/platform/application/in/NoticeInfraUseCase.java deleted file mode 100644 index 3bc27a3..0000000 --- a/src/main/java/com/pinHouse/server/platform/application/in/NoticeInfraUseCase.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.pinHouse.server.platform.application.in; - -import com.pinHouse.server.platform.adapter.in.web.dto.FacilityType; -import com.pinHouse.server.platform.domain.notice.Notice; -import com.pinHouse.server.platform.domain.notice.NoticeInfra; - -import java.util.List; - -/** - * - 공고 주변의 인프라 목록 조회할 인터페이스 - */ -public interface NoticeInfraUseCase { - - /// 조회 - // 주변의 인프라 개수 조회 - NoticeInfra getNoticeInfraById(String noticeId); - - // 원하는 인프라 바탕으로 많이 존재하는 공고 조회 - List getNoticesByInfraTypesWithAllMinCount(List facilityTypes); -} diff --git a/src/main/java/com/pinHouse/server/platform/application/out/facility/FacilityPort.java b/src/main/java/com/pinHouse/server/platform/application/out/facility/FacilityPort.java deleted file mode 100644 index c12281f..0000000 --- a/src/main/java/com/pinHouse/server/platform/application/out/facility/FacilityPort.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.pinHouse.server.platform.application.out.facility; - -import com.pinHouse.server.platform.domain.facility.*; - -import java.util.List; - -public interface FacilityPort { - - List loadLibrariesNearBy(double longitude, double latitude, double radiusInKm); - - List loadParksNearBy(double longitude, double latitude, double radiusInKm); - - List loadSportsNearBy(double longitude, double latitude, double radiusInKm); - - List loadWalkingsNearBy(double longitude, double latitude, double radiusInKm); - - List loadAnimalsNearBy(double longitude, double latitude, double radiusInKm); -} diff --git a/src/main/java/com/pinHouse/server/platform/application/out/notice/NoticePort.java b/src/main/java/com/pinHouse/server/platform/application/out/notice/NoticePort.java deleted file mode 100644 index f2f32e3..0000000 --- a/src/main/java/com/pinHouse/server/platform/application/out/notice/NoticePort.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.pinHouse.server.platform.application.out.notice; - -import com.pinHouse.server.platform.domain.notice.Notice; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - -import java.util.*; - -/** - * DB에 넣는 포트를 정의한 인터페이스입니다. - * CRUD의 기능을 수행합니다. - */ - -public interface NoticePort { - - /// 가져오기 - Page loadNotices(Pageable pageable); - - /// 상세 조회 - Optional loadById(String id); - - /// 모든 공고 가져오기 - List loadAllNotices(); - -} diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/rule/application/dto/request/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/rule/application/dto/request/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/rule/application/dto/response/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/rule/application/dto/response/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/rule/application/service/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/rule/application/service/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/rule/application/usecase/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/rule/application/usecase/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/rule/domain/entity/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/rule/domain/entity/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/rule/domain/repository/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/rule/domain/repository/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/rule/presentation/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/rule/presentation/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/rule/presentation/swagger/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/rule/presentation/swagger/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/school/application/dto/request/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/school/application/dto/request/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/school/application/dto/response/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/school/application/dto/response/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/school/application/service/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/school/application/service/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/school/application/usecase/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/school/application/usecase/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/school/domain/entity/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/school/domain/entity/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/school/domain/repository/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/school/domain/repository/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/school/presentation/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/school/presentation/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/diagnosis/school/presentation/swagger/.gitkeep b/src/main/java/com/pinHouse/server/platform/diagnosis/school/presentation/swagger/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/domain/BaseDomain.java b/src/main/java/com/pinHouse/server/platform/domain/BaseDomain.java deleted file mode 100644 index daa8c51..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/BaseDomain.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.pinHouse.server.platform.domain; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.time.LocalDateTime; - -@Getter -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public abstract class BaseDomain { - - private LocalDateTime createdAt; - private LocalDateTime updatedAt; - -} diff --git a/src/main/java/com/pinHouse/server/platform/domain/facility/Animal.java b/src/main/java/com/pinHouse/server/platform/domain/facility/Animal.java deleted file mode 100644 index 9cc8eea..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/facility/Animal.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.pinHouse.server.platform.domain.facility; - -import com.pinHouse.server.platform.domain.location.Location; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@AllArgsConstructor -@NoArgsConstructor -@Builder -public class Animal implements Facility{ - - /// 아이디 - private String id; - - /// 시설명 - private String name; - - /// 종류 - private String category; - - /// 좌표 - private Location location; - - /// 주소 - private String address; - - /// 휴무,운영 - private String restGuide; - - /// 운영시간 - private String operateTime; - - /// 가능여부 - private String petPossibleAt; - - /// 반려동물 크기 - private String enterPossiblePetSizeValue; - - /// 반려동물 제한사항 - private String petLimitMatterContent; - - /// 실내 입장 가능 여부 - private String inPlaceAcceptPossibleAt; - - /// 실외 입장 가능 여부 - private String outPlaceAcceptPossibleAt; - - /// 시설 안내 - private String facilityInfoDescription; - -} diff --git a/src/main/java/com/pinHouse/server/platform/domain/facility/Library.java b/src/main/java/com/pinHouse/server/platform/domain/facility/Library.java deleted file mode 100644 index 5909da5..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/facility/Library.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.pinHouse.server.platform.domain.facility; - -import com.pinHouse.server.platform.domain.location.Location; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@AllArgsConstructor -@NoArgsConstructor -@Builder -public class Library implements Facility{ - - private String id; - private Integer code; - private String name; - private String address; - private Location location; - private String area; - private String city; - private Integer number; - private String openTime; - private String closedDay; -} diff --git a/src/main/java/com/pinHouse/server/platform/domain/facility/Park.java b/src/main/java/com/pinHouse/server/platform/domain/facility/Park.java deleted file mode 100644 index 689c82b..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/facility/Park.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.pinHouse.server.platform.domain.facility; - -import com.pinHouse.server.platform.domain.location.Location; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -@Getter -@AllArgsConstructor -@Builder -public class Park implements Facility{ - - /// 아이디 - private String id; - - /// 공원 시스템 ID - private String parkId; - - /// 명칭 - private String name; - - /// 공원 분류 명칭 - private String category; - - /// PNU (법정동+지번코드) - private String pnu; - - /// 좌표 - private Location location; - - -} diff --git a/src/main/java/com/pinHouse/server/platform/domain/facility/Sport.java b/src/main/java/com/pinHouse/server/platform/domain/facility/Sport.java deleted file mode 100644 index 882111a..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/facility/Sport.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.pinHouse.server.platform.domain.facility; - -import com.pinHouse.server.platform.domain.location.Location; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@AllArgsConstructor -@NoArgsConstructor -@Builder -public class Sport implements Facility{ - - private String id; - - /** 시설 명칭 */ - private String name; - - /** 업종 명칭 */ - private String industryName; - - /** 시설 유형 명칭 */ - private String facilityTypeName; - - /** 시설 상태값 (예: 정상운영 등) */ - private String facilityStateValue; - - /** 도로명주소-1 */ - private String address; - - /// 좌표 - private Location location; - - /** 시설 운영 형태 값 */ - private String facilityOperStyleValue; - - /** 시설 기준일자(생성 기준일) */ - private String facilityCreationStandardDate; - - /** 국가 공공 시설 여부 */ - private String nationPublicFacilityAt; -} diff --git a/src/main/java/com/pinHouse/server/platform/domain/facility/Walking.java b/src/main/java/com/pinHouse/server/platform/domain/facility/Walking.java deleted file mode 100644 index 553febe..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/facility/Walking.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.pinHouse.server.platform.domain.facility; - -import com.pinHouse.server.platform.domain.location.Location; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@AllArgsConstructor -@NoArgsConstructor -@Builder -public class Walking implements Facility{ - - private String id; - - /// 코스 고유 식별자 - private String esntlId; - - ///걷기 코스 플래그명 (코스 대표 명칭) - private String walkingCourseFlagName; - - /// 걷기 코스명 - private String walkingCourseName; - - /// 코스 상세설명 */ - private String courseDescription; - - /// 행정구역명(시/군/구) */ - private String districtName; - - /// 코스 난이도 */ - private String courseLevelName; - - /// 코스 거리 구간명 (예: 10~15㎞미만) */ - private String courseLengthDescription; - - /// 상세 거리 (단위: km, 실수 값) */ - private Double courseDetailLengthKm; - - /** 추가 설명 (코스 특성, 지역 건강증진 등) */ - private String additionalDescription; - - /** 예상 소요 시간 (예: 4시간) */ - private String courseTime; - - /** 편의시설 및 옵션 안내 */ - private String optionDescription; - - /** 화장실 안내 */ - private String toiletDescription; - - /** 주변 편의점/휴게시설 안내 */ - private String convenienceName; - - /** 코스 시작/대표 주소 */ - private String address; - - /// 좌표 - private Location location; -} diff --git a/src/main/java/com/pinHouse/server/platform/domain/notice/Notice.java b/src/main/java/com/pinHouse/server/platform/domain/notice/Notice.java deleted file mode 100644 index fa4050d..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/notice/Notice.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.pinHouse.server.platform.domain.notice; - -import com.pinHouse.server.platform.domain.location.Location; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -import java.util.List; - -@Getter -@AllArgsConstructor -@Builder -public class Notice { - - private String id; - private String noticeId; - private String complexName; - private String status; - private String startDate; - private String supplier; - private String type; - private String title; - private String views; - private String endDate; - private String address; - private String region; - private Location location; - - private List supplyInfo; - - private String noticeUrl; - private String myHomePcUrl; - private String myHomeMobileUrl; - private String contact; - - private String winnerAnnouncementDate; - private String heatingMethod; - private String totalHouseholds; -} - - diff --git a/src/main/java/com/pinHouse/server/platform/domain/notice/NoticeCount.java b/src/main/java/com/pinHouse/server/platform/domain/notice/NoticeCount.java deleted file mode 100644 index 9b868f0..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/notice/NoticeCount.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.pinHouse.server.platform.domain.notice; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@AllArgsConstructor -@NoArgsConstructor -@Builder -public class NoticeCount { - - private String noticeId; - - private int libraryCount; - - private int animalCount; - - private int parkCount; - - private int sportCount; - - private int walkCount; - - /// 정적 팩토리 메서드 - public NoticeCount of(String noticeId, int libraryCount, int animalCount, int parkCount, int sportCount) { - return NoticeCount.builder() - .noticeId(noticeId) - .libraryCount(libraryCount) - .animalCount(animalCount) - .parkCount(parkCount) - .sportCount(sportCount) - .build(); - } -} diff --git a/src/main/java/com/pinHouse/server/platform/domain/notice/NoticeSupplyInfo.java b/src/main/java/com/pinHouse/server/platform/domain/notice/NoticeSupplyInfo.java deleted file mode 100644 index f9902fb..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/notice/NoticeSupplyInfo.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.pinHouse.server.platform.domain.notice; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -@Getter -@AllArgsConstructor -@Builder -public class NoticeSupplyInfo { - - private String housingType; // 공급유형 - private String area; // 전용면적 - private Integer monthlyRent; // 월임대료 - private Deposit deposit; // 임대보증금 세부 - private RecruitmentCount recruitmentCount; // 모집호수 - - @Getter - @AllArgsConstructor - @Builder - public static class Deposit { - private Integer total; - private Integer contract; - private Integer middle; - private Integer balance; - } - - @Getter - @AllArgsConstructor - @Builder - public static class RecruitmentCount { - private Integer total; - private Integer priority; - private Integer general; - } -} diff --git a/src/main/java/com/pinHouse/server/platform/domain/notification/Notification.java b/src/main/java/com/pinHouse/server/platform/domain/notification/Notification.java deleted file mode 100644 index 8c6ec25..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/notification/Notification.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.pinHouse.server.platform.domain.notification; - -import com.pinHouse.server.platform.domain.BaseDomain; - -public class Notification extends BaseDomain { -} diff --git a/src/main/java/com/pinHouse/server/platform/domain/user/Provider.java b/src/main/java/com/pinHouse/server/platform/domain/user/Provider.java deleted file mode 100644 index 4002a5a..0000000 --- a/src/main/java/com/pinHouse/server/platform/domain/user/Provider.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.pinHouse.server.platform.domain.user; - -public enum Provider { - KAKAO, NAVER -} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/NoticeSupplyDTO.java b/src/main/java/com/pinHouse/server/platform/housing/deposit/application/dto/response/NoticeSupplyDTO.java similarity index 88% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/NoticeSupplyDTO.java rename to src/main/java/com/pinHouse/server/platform/housing/deposit/application/dto/response/NoticeSupplyDTO.java index 9331e7f..6218dc2 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/NoticeSupplyDTO.java +++ b/src/main/java/com/pinHouse/server/platform/housing/deposit/application/dto/response/NoticeSupplyDTO.java @@ -1,6 +1,6 @@ -package com.pinHouse.server.platform.adapter.in.web.dto.response; +package com.pinHouse.server.platform.housing.deposit.application.dto.response; -import com.pinHouse.server.platform.domain.notice.NoticeSupplyInfo; +import com.pinHouse.server.platform.housing.deposit.domain.entity.NoticeSupply; import lombok.Builder; public record NoticeSupplyDTO() { @@ -14,7 +14,7 @@ public record NoticeSupplyResponse( Integer recruitment ) { /// 정적 팩토리 메서드 - public static NoticeSupplyResponse from(NoticeSupplyInfo notice) { + public static NoticeSupplyResponse from(NoticeSupply notice) { return NoticeSupplyResponse.builder() .housingType(notice.getHousingType()) .area(notice.getArea()) diff --git a/src/main/java/com/pinHouse/server/platform/application/service/NoticeService.java b/src/main/java/com/pinHouse/server/platform/housing/deposit/application/service/DepositService.java similarity index 58% rename from src/main/java/com/pinHouse/server/platform/application/service/NoticeService.java rename to src/main/java/com/pinHouse/server/platform/housing/deposit/application/service/DepositService.java index 3f45dc0..9bb7869 100644 --- a/src/main/java/com/pinHouse/server/platform/application/service/NoticeService.java +++ b/src/main/java/com/pinHouse/server/platform/housing/deposit/application/service/DepositService.java @@ -1,79 +1,23 @@ -package com.pinHouse.server.platform.application.service; +package com.pinHouse.server.platform.housing.deposit.application.service; import com.pinHouse.server.core.response.response.ErrorCode; -import com.pinHouse.server.core.response.response.pageable.PageRequest; -import com.pinHouse.server.platform.adapter.in.web.dto.response.NoticeDTO; -import com.pinHouse.server.platform.adapter.in.web.dto.response.NoticeSupplyDTO; -import com.pinHouse.server.platform.application.in.NoticeUseCase; -import com.pinHouse.server.platform.application.out.notice.NoticePort; -import com.pinHouse.server.platform.domain.notice.Notice; -import com.pinHouse.server.platform.domain.notice.NoticeSupplyInfo; +import com.pinHouse.server.platform.housing.deposit.application.dto.response.NoticeSupplyDTO; +import com.pinHouse.server.platform.housing.deposit.application.usecase.DepositUseCase; +import com.pinHouse.server.platform.housing.notice.domain.entity.Notice; +import com.pinHouse.server.platform.housing.deposit.domain.entity.NoticeSupply; +import com.pinHouse.server.platform.housing.notice.domain.repository.NoticeDocumentRepository; import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; import java.util.NoSuchElementException; @Service @Transactional @RequiredArgsConstructor -public class NoticeService implements NoticeUseCase { - - private final NoticePort port; - - /** - * 최신 공고 목록 조회를 위한 함수 입니다. - * @param pageRequest 페이지 기반 - */ - @Override - public Page getNotices(PageRequest pageRequest) { - - /// 페이징 변환 - Pageable pageable = getPageable(pageRequest); - - /// port 조회 - Page notices = port.loadNotices(pageable); - - /// DTO 변환 - List contents = notices.getContent(); - List responseList = NoticeDTO.NoticeListResponse.from(contents); - - return new PageImpl<>(responseList, pageable, contents.size()); - } - - /** - * 지역 기반 공고 목록 조회를 위한 함수 입니다. - * @param region 지역 - * @param pageRequest 페이지 기반 - */ - @Override - public Page getNoticesByRegion(String region, PageRequest pageRequest) { - - /// 페이징 변환 - Pageable pageable = getPageable(pageRequest); - - return null; - } - - /** - * 공고 상세 조회를 위한 함수 입니다. - * @param noticeId 조회할 공고 ID - */ - @Override - public NoticeDTO.NoticeDetailResponse getNoticeById(String noticeId) { - - /// 공고 조회 - Notice notice = getNotice(noticeId); - - /// DTO 변환 - return NoticeDTO.NoticeDetailResponse.from(notice); - } +public class DepositService implements DepositUseCase { + private final NoticeDocumentRepository repository; /** * 임대보증금과 월임대료 전환 옵션 계산 메서드 @@ -95,7 +39,7 @@ public NoticeSupplyDTO.NoticeLeaseOptionResponse getLeaseByPercent(String notice Notice notice = getNotice(noticeId); // 2. 공급 정보 필터링 - NoticeSupplyInfo matchedSupplyInfo = notice.getSupplyInfo().stream() + NoticeSupply matchedSupplyInfo = notice.getSupplyInfo().stream() .filter(info -> info.getHousingType().equalsIgnoreCase(type)) .findFirst() .orElseThrow(() -> new IllegalArgumentException("해당 유형(" + type + ")의 공급 정보가 없습니다.")); @@ -153,49 +97,22 @@ public NoticeSupplyDTO.NoticeLeaseOptionResponse getLeaseByPercent(String notice .from(notice.getNoticeId(), type, adjustedDeposit, adjustedRent); } - - - - /** - * 사용자가 원하는 공고 목록을 비교할 함수 입니다. - * @param noticeId1 비교할 첫번째 공고 ID - * @param noticeId2 비교할 두번째 공고 ID + * 연 3.5% 이자율 기준 월 전환 */ - @Override - public List compareNotices(String noticeId1, String noticeId2) { - return List.of(); + private double percentageRateFactor() { + return 0.035 / 12; } - - /// 공통 함수 모음 - /** * - ID를 바탕으로 공고를 조회하는 함수입니다. * @param noticeId 공고 ID * @return Notice 객체 */ private Notice getNotice(String noticeId) { - return port.loadById(noticeId) + return repository.findByNoticeId(noticeId) .orElseThrow(() -> new NoSuchElementException(ErrorCode.NOT_NOTICE.getMessage())); } - - /** - * 페이지 요청을 Pageable 변환하는 함수 입니다. - * @param pageRequest 페이지 요청 DTO - * @return Pageable - */ - private Pageable getPageable(PageRequest pageRequest) { - return org.springframework.data.domain.PageRequest.of(pageRequest.getPage() - 1, pageRequest.getSize(), Sort.by("id")); - } - - /** - * 연 3.5% 이자율 기준 월 전환 - */ - private double percentageRateFactor() { - return 0.035 / 12; - } - } diff --git a/src/main/java/com/pinHouse/server/platform/housing/deposit/application/usecase/DepositUseCase.java b/src/main/java/com/pinHouse/server/platform/housing/deposit/application/usecase/DepositUseCase.java new file mode 100644 index 0000000..904f1da --- /dev/null +++ b/src/main/java/com/pinHouse/server/platform/housing/deposit/application/usecase/DepositUseCase.java @@ -0,0 +1,11 @@ +package com.pinHouse.server.platform.housing.deposit.application.usecase; + +import com.pinHouse.server.platform.housing.deposit.application.dto.response.NoticeSupplyDTO; + +public interface DepositUseCase { + + /// 시뮬레이터 + NoticeSupplyDTO.NoticeLeaseOptionResponse getLeaseByPercent(String noticeId, String type, double percentage); + + +} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/DepositDocument.java b/src/main/java/com/pinHouse/server/platform/housing/deposit/domain/entity/Deposit.java similarity index 50% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/DepositDocument.java rename to src/main/java/com/pinHouse/server/platform/housing/deposit/domain/entity/Deposit.java index bb55df0..2dd842f 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/DepositDocument.java +++ b/src/main/java/com/pinHouse/server/platform/housing/deposit/domain/entity/Deposit.java @@ -1,6 +1,5 @@ -package com.pinHouse.server.platform.adapter.out.mongo.notice; +package com.pinHouse.server.platform.housing.deposit.domain.entity; -import com.pinHouse.server.platform.domain.notice.NoticeSupplyInfo; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -11,7 +10,7 @@ @NoArgsConstructor @AllArgsConstructor @Builder -public class DepositDocument { +public class Deposit { @Field("계") private Integer total; @@ -24,13 +23,4 @@ public class DepositDocument { @Field("잔금") private Integer balance; - - public NoticeSupplyInfo.Deposit toDomain() { - return NoticeSupplyInfo.Deposit.builder() - .total(total) - .contract(contract) - .middle(middle) - .balance(balance) - .build(); - } } diff --git a/src/main/java/com/pinHouse/server/platform/housing/deposit/domain/entity/NoticeSupply.java b/src/main/java/com/pinHouse/server/platform/housing/deposit/domain/entity/NoticeSupply.java new file mode 100644 index 0000000..6828c04 --- /dev/null +++ b/src/main/java/com/pinHouse/server/platform/housing/deposit/domain/entity/NoticeSupply.java @@ -0,0 +1,29 @@ +package com.pinHouse.server.platform.housing.deposit.domain.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.data.mongodb.core.mapping.Field; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class NoticeSupply { + + @Field("공급유형") + private String housingType; + + @Field("전용면적") + private String area; + + @Field("월임대료(원)") + private Integer monthlyRent; + + @Field("임대보증금(원)") + private Deposit deposit; + + @Field("모집호수") + private Recruitment recruitmentCount; +} diff --git a/src/main/java/com/pinHouse/server/platform/housing/deposit/domain/entity/Recruitment.java b/src/main/java/com/pinHouse/server/platform/housing/deposit/domain/entity/Recruitment.java new file mode 100644 index 0000000..6d6e6c6 --- /dev/null +++ b/src/main/java/com/pinHouse/server/platform/housing/deposit/domain/entity/Recruitment.java @@ -0,0 +1,24 @@ +package com.pinHouse.server.platform.housing.deposit.domain.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.data.mongodb.core.mapping.Field; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class Recruitment { + + @Field("계") + private Integer total; + + @Field("우선공급") + private Integer priority; + + @Field("일반공급") + private Integer general; +} + diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/DepositApi.java b/src/main/java/com/pinHouse/server/platform/housing/deposit/presentation/DepositApi.java similarity index 57% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/DepositApi.java rename to src/main/java/com/pinHouse/server/platform/housing/deposit/presentation/DepositApi.java index 565e92e..7f43c0b 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/DepositApi.java +++ b/src/main/java/com/pinHouse/server/platform/housing/deposit/presentation/DepositApi.java @@ -1,9 +1,9 @@ -package com.pinHouse.server.platform.adapter.in.web; +package com.pinHouse.server.platform.housing.deposit.presentation; import com.pinHouse.server.core.response.response.ApiResponse; -import com.pinHouse.server.platform.adapter.in.web.dto.response.NoticeSupplyDTO; -import com.pinHouse.server.platform.adapter.in.web.swagger.DepositApiSpec; -import com.pinHouse.server.platform.application.in.NoticeUseCase; +import com.pinHouse.server.platform.housing.deposit.application.dto.response.NoticeSupplyDTO; +import com.pinHouse.server.platform.housing.deposit.application.usecase.DepositUseCase; +import com.pinHouse.server.platform.housing.deposit.presentation.swagger.DepositApiSpec; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -15,7 +15,7 @@ @RequiredArgsConstructor public class DepositApi implements DepositApiSpec { - private final NoticeUseCase noticeService; + private final DepositUseCase service; @PutMapping("/{noticeId}") public ApiResponse update( @@ -24,7 +24,7 @@ public ApiResponse update( @RequestParam double percentage) { /// 서비스 호출 - NoticeSupplyDTO.NoticeLeaseOptionResponse lease = noticeService.getLeaseByPercent(noticeId, housingType, percentage); + NoticeSupplyDTO.NoticeLeaseOptionResponse lease = service.getLeaseByPercent(noticeId, housingType, percentage); return ApiResponse.ok(lease); diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/DepositApiSpec.java b/src/main/java/com/pinHouse/server/platform/housing/deposit/presentation/swagger/DepositApiSpec.java similarity index 84% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/DepositApiSpec.java rename to src/main/java/com/pinHouse/server/platform/housing/deposit/presentation/swagger/DepositApiSpec.java index 4e6bc9e..1dabb9f 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/DepositApiSpec.java +++ b/src/main/java/com/pinHouse/server/platform/housing/deposit/presentation/swagger/DepositApiSpec.java @@ -1,7 +1,7 @@ -package com.pinHouse.server.platform.adapter.in.web.swagger; +package com.pinHouse.server.platform.housing.deposit.presentation.swagger; import com.pinHouse.server.core.response.response.ApiResponse; -import com.pinHouse.server.platform.adapter.in.web.dto.response.NoticeSupplyDTO; +import com.pinHouse.server.platform.housing.deposit.application.dto.response.NoticeSupplyDTO; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.web.bind.annotation.PathVariable; diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/OdsayResponse.java b/src/main/java/com/pinHouse/server/platform/housing/distance/application/dto/response/OdsayResponse.java similarity index 96% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/OdsayResponse.java rename to src/main/java/com/pinHouse/server/platform/housing/distance/application/dto/response/OdsayResponse.java index b83a19d..43f5640 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/OdsayResponse.java +++ b/src/main/java/com/pinHouse/server/platform/housing/distance/application/dto/response/OdsayResponse.java @@ -1,4 +1,4 @@ -package com.pinHouse.server.platform.adapter.in.web.dto.response; +package com.pinHouse.server.platform.housing.distance.application.dto.response; import java.util.List; diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/external/distance/OdsayAdapter.java b/src/main/java/com/pinHouse/server/platform/housing/distance/application/service/OdsayService.java similarity index 87% rename from src/main/java/com/pinHouse/server/platform/adapter/out/external/distance/OdsayAdapter.java rename to src/main/java/com/pinHouse/server/platform/housing/distance/application/service/OdsayService.java index 86e43b3..9651a0d 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/external/distance/OdsayAdapter.java +++ b/src/main/java/com/pinHouse/server/platform/housing/distance/application/service/OdsayService.java @@ -1,6 +1,6 @@ -package com.pinHouse.server.platform.adapter.out.external.distance; +package com.pinHouse.server.platform.housing.distance.application.service; -import com.pinHouse.server.platform.application.out.distance.DistancePort; +import com.pinHouse.server.platform.housing.distance.application.usecase.DistanceUseCase; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -12,7 +12,7 @@ @Component @RequiredArgsConstructor -public class OdsayAdapter implements DistancePort { +public class OdsayService implements DistanceUseCase { @Value("${odsay.apiKey}") private String apiKey; diff --git a/src/main/java/com/pinHouse/server/platform/application/out/distance/DistancePort.java b/src/main/java/com/pinHouse/server/platform/housing/distance/application/usecase/DistanceUseCase.java similarity index 73% rename from src/main/java/com/pinHouse/server/platform/application/out/distance/DistancePort.java rename to src/main/java/com/pinHouse/server/platform/housing/distance/application/usecase/DistanceUseCase.java index 6b90cfd..048bcee 100644 --- a/src/main/java/com/pinHouse/server/platform/application/out/distance/DistancePort.java +++ b/src/main/java/com/pinHouse/server/platform/housing/distance/application/usecase/DistanceUseCase.java @@ -1,4 +1,4 @@ -package com.pinHouse.server.platform.application.out.distance; +package com.pinHouse.server.platform.housing.distance.application.usecase; import java.io.UnsupportedEncodingException; @@ -6,7 +6,7 @@ * [외부 거리계산]을 위한 인터페이스입니다. * */ -public interface DistancePort { +public interface DistanceUseCase { // 출발지의 위도와 도착지의 위도를 바탕으로 계산 String findPath(double startY, double startX, double endY, double endX) throws UnsupportedEncodingException; diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/DistanceApi.java b/src/main/java/com/pinHouse/server/platform/housing/distance/presentation/DistanceApi.java similarity index 55% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/DistanceApi.java rename to src/main/java/com/pinHouse/server/platform/housing/distance/presentation/DistanceApi.java index aeec857..4282c47 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/DistanceApi.java +++ b/src/main/java/com/pinHouse/server/platform/housing/distance/presentation/DistanceApi.java @@ -1,18 +1,18 @@ -package com.pinHouse.server.platform.adapter.in.web; +package com.pinHouse.server.platform.housing.distance.presentation; -import com.pinHouse.server.platform.adapter.in.web.swagger.DistanceApiSpec; -import com.pinHouse.server.platform.application.out.distance.DistancePort; +import com.pinHouse.server.platform.housing.distance.presentation.swaager.DistanceApiSpec; +import com.pinHouse.server.platform.housing.distance.application.usecase.DistanceUseCase; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.io.UnsupportedEncodingException; @RestController -@RequestMapping("/api/v1/distance") +@RequestMapping("/api/v1/notices/distance") @RequiredArgsConstructor public class DistanceApi implements DistanceApiSpec { - private final DistancePort distancePort; + private final DistanceUseCase distanceUseCase; @GetMapping() public String getDistance( @@ -22,7 +22,7 @@ public String getDistance( @RequestParam double endX ) throws UnsupportedEncodingException { - String path = distancePort.findPath(startY, startX, endY, endX); + String path = distanceUseCase.findPath(startY, startX, endY, endX); return path; } diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/DistanceApiSpec.java b/src/main/java/com/pinHouse/server/platform/housing/distance/presentation/swaager/DistanceApiSpec.java similarity index 94% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/DistanceApiSpec.java rename to src/main/java/com/pinHouse/server/platform/housing/distance/presentation/swaager/DistanceApiSpec.java index e11d649..6d462cc 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/DistanceApiSpec.java +++ b/src/main/java/com/pinHouse/server/platform/housing/distance/presentation/swaager/DistanceApiSpec.java @@ -1,4 +1,4 @@ -package com.pinHouse.server.platform.adapter.in.web.swagger; +package com.pinHouse.server.platform.housing.distance.presentation.swaager; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/FacilityType.java b/src/main/java/com/pinHouse/server/platform/housing/facility/application/dto/request/FacilityType.java similarity index 70% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/FacilityType.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/application/dto/request/FacilityType.java index 1f4c419..5550716 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/FacilityType.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/application/dto/request/FacilityType.java @@ -1,4 +1,4 @@ -package com.pinHouse.server.platform.adapter.in.web.dto; +package com.pinHouse.server.platform.housing.facility.application.dto.request; public enum FacilityType { diff --git a/src/main/java/com/pinHouse/server/platform/domain/notice/NoticeInfra.java b/src/main/java/com/pinHouse/server/platform/housing/facility/application/dto/response/FacilityResponse.java similarity index 83% rename from src/main/java/com/pinHouse/server/platform/domain/notice/NoticeInfra.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/application/dto/response/FacilityResponse.java index 7bf9c30..d903091 100644 --- a/src/main/java/com/pinHouse/server/platform/domain/notice/NoticeInfra.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/application/dto/response/FacilityResponse.java @@ -1,6 +1,7 @@ -package com.pinHouse.server.platform.domain.notice; +package com.pinHouse.server.platform.housing.facility.application.dto.response; -import com.pinHouse.server.platform.domain.facility.*; +import com.pinHouse.server.platform.housing.facility.domain.entity.*; +import com.pinHouse.server.platform.housing.notice.domain.entity.Notice; import lombok.Builder; import lombok.Getter; @@ -16,7 +17,7 @@ */ @Builder @Getter -public class NoticeInfra { +public class FacilityResponse { /** 공지사항 엔티티 */ private Notice notice; @@ -47,7 +48,7 @@ public class NoticeInfra { * @param parks 주변 공원 리스트 * @return NoticeInfra 도메인 객체 */ - public static NoticeInfra of( + public static FacilityResponse of( Notice notice, List libraries, List animals, @@ -55,7 +56,7 @@ public static NoticeInfra of( List walkings, List parks ) { - return NoticeInfra.builder() + return FacilityResponse.builder() .notice(notice) .libraries(libraries) .animals(animals) diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/InfraDTO.java b/src/main/java/com/pinHouse/server/platform/housing/facility/application/dto/response/InfraDTO.java similarity index 89% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/InfraDTO.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/application/dto/response/InfraDTO.java index ecc1f22..7d13c93 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/InfraDTO.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/application/dto/response/InfraDTO.java @@ -1,7 +1,6 @@ -package com.pinHouse.server.platform.adapter.in.web.dto.response; +package com.pinHouse.server.platform.housing.facility.application.dto.response; -import com.pinHouse.server.platform.domain.facility.*; -import com.pinHouse.server.platform.domain.notice.NoticeInfra; +import com.pinHouse.server.platform.housing.facility.domain.entity.*; import io.micrometer.common.lang.Nullable; import lombok.Builder; import java.util.List; @@ -172,13 +171,13 @@ public record NoticeInfraResponse( @Nullable List walkings ) { /** NoticeInfra → 응답 DTO로 일괄 변환 */ - public static NoticeInfraResponse from(NoticeInfra noticeInfra) { + public static NoticeInfraResponse from(FacilityResponse facilityResponse) { return NoticeInfraResponse.builder() - .libraries(LibraryResponse.from(noticeInfra.getLibraries())) - .animals(AnimalResponse.from(noticeInfra.getAnimals())) - .sports(SportResponse.from(noticeInfra.getSports())) - .parks(ParkResponse.from(noticeInfra.getParks())) - .walkings(WalkingResponse.from(noticeInfra.getWalkings())) + .libraries(LibraryResponse.from(facilityResponse.getLibraries())) + .animals(AnimalResponse.from(facilityResponse.getAnimals())) + .sports(SportResponse.from(facilityResponse.getSports())) + .parks(ParkResponse.from(facilityResponse.getParks())) + .walkings(WalkingResponse.from(facilityResponse.getWalkings())) .build(); } } diff --git a/src/main/java/com/pinHouse/server/platform/application/service/NoticeInfraService.java b/src/main/java/com/pinHouse/server/platform/housing/facility/application/service/FacilityService.java similarity index 55% rename from src/main/java/com/pinHouse/server/platform/application/service/NoticeInfraService.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/application/service/FacilityService.java index 0410bc2..3915bf2 100644 --- a/src/main/java/com/pinHouse/server/platform/application/service/NoticeInfraService.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/application/service/FacilityService.java @@ -1,13 +1,14 @@ -package com.pinHouse.server.platform.application.service; +package com.pinHouse.server.platform.housing.facility.application.service; import com.pinHouse.server.core.response.response.ErrorCode; -import com.pinHouse.server.platform.adapter.in.web.dto.FacilityType; -import com.pinHouse.server.platform.application.in.NoticeInfraUseCase; -import com.pinHouse.server.platform.application.out.facility.FacilityPort; -import com.pinHouse.server.platform.application.out.notice.NoticePort; -import com.pinHouse.server.platform.domain.facility.*; -import com.pinHouse.server.platform.domain.notice.Notice; -import com.pinHouse.server.platform.domain.notice.NoticeInfra; +import com.pinHouse.server.platform.housing.facility.application.dto.request.FacilityType; +import com.pinHouse.server.platform.housing.facility.application.usecase.FacilityUseCase; +import com.pinHouse.server.platform.housing.facility.domain.entity.*; +import com.pinHouse.server.platform.housing.facility.domain.entity.infra.Facility; +import com.pinHouse.server.platform.housing.facility.domain.repository.*; +import com.pinHouse.server.platform.housing.notice.application.usecase.NoticeUseCase; +import com.pinHouse.server.platform.housing.notice.domain.entity.Notice; +import com.pinHouse.server.platform.housing.facility.application.dto.response.FacilityResponse; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,13 +19,17 @@ @Service @Transactional @RequiredArgsConstructor -public class NoticeInfraService implements NoticeInfraUseCase { +public class FacilityService implements FacilityUseCase { /// 공고 의존성 - private final NoticePort noticePort; + private final NoticeUseCase noticeService; /// 인프라 의존성 - private final FacilityPort facilityPort; + private final LibraryDocumentRepository libraryRepository; + private final AnimalDocumentRepository animalRepository; + private final ParkDocumentRepository parkRepository; + private final WalkingDocumentRepository walkingRepository; + private final SportDocumentRepository sportRepository; /// 상수 private final double radiusKm = 1.5; @@ -36,47 +41,47 @@ public class NoticeInfraService implements NoticeInfraUseCase { /// 주변의 인프라 개수 조회 @Override - public NoticeInfra getNoticeInfraById(String noticeId) { + public FacilityResponse getNoticeInfraById(String noticeId) { /// 예외 처리 Notice notice = getNotice(noticeId); /// 주변에 존재하는 도서관 가져오기 - List libraries = facilityPort.loadLibrariesNearBy( + List libraries = libraryRepository.findByLocation( notice.getLocation().getLongitude(), notice.getLocation().getLatitude(), radiusInRadians); /// 주변에 존재하는 동물 관련 시설 가져오기 - List animals = facilityPort.loadAnimalsNearBy( + List animals = animalRepository.findByLocation( notice.getLocation().getLongitude(), notice.getLocation().getLatitude(), radiusInRadians); /// 주변에 존재하는 공원 정보 시설 가져오기 - List parks = facilityPort.loadParksNearBy( + List parks = parkRepository.findByLocation( notice.getLocation().getLongitude(), notice.getLocation().getLatitude(), radiusInRadians); /// 주변에 존재하는 산책로 관련 시설 가져오기 - List walkings = facilityPort.loadWalkingsNearBy( + List walkings = walkingRepository.findByLocation( notice.getLocation().getLongitude(), notice.getLocation().getLatitude(), radiusInRadians); /// 주변에 존재하는 스포츠 정보 시설 가져오기 - List sports = facilityPort.loadSportsNearBy( + List sports = sportRepository.findByLocation( notice.getLocation().getLongitude(), notice.getLocation().getLatitude(), radiusInRadians); /// 객체 생성 - return NoticeInfra.of(notice, libraries, animals, sports, walkings, parks); + return FacilityResponse.of(notice, libraries, animals, sports, walkings, parks); } // ================= @@ -84,7 +89,7 @@ public NoticeInfra getNoticeInfraById(String noticeId) { // ================= @Override public List getNoticesByInfraTypesWithAllMinCount(List facilityTypes) { - List allNotices = noticePort.loadAllNotices(); + List allNotices = noticeService.loadAllNotices(); return allNotices.stream() .filter(notice -> { @@ -94,11 +99,11 @@ public List getNoticesByInfraTypesWithAllMinCount(List fac // 모든 종류가 2개 이상이어야만 true 반환 return facilityTypes.stream().allMatch(facilityType -> { List facilityList = switch (facilityType) { - case LIBRARY -> facilityPort.loadLibrariesNearBy(lng, lat, radiusInRadians); - case PARK -> facilityPort.loadParksNearBy(lng, lat, radiusInRadians); - case ANIMAL -> facilityPort.loadAnimalsNearBy(lng, lat, radiusInRadians); - case WALKING -> facilityPort.loadWalkingsNearBy(lng, lat, radiusInRadians); - case SPORT -> facilityPort.loadSportsNearBy(lng, lat, radiusInRadians); + case LIBRARY -> libraryRepository.findByLocation(lng, lat, radiusInRadians); + case PARK -> parkRepository.findByLocation(lng, lat, radiusInRadians); + case ANIMAL -> animalRepository.findByLocation(lng, lat, radiusInRadians); + case WALKING -> walkingRepository.findByLocation(lng, lat, radiusInRadians); + case SPORT -> sportRepository.findByLocation(lng, lat, radiusInRadians); }; return facilityList.size() >= 2; }); @@ -112,7 +117,7 @@ public List getNoticesByInfraTypesWithAllMinCount(List fac // ================= private Notice getNotice(String noticeId) { - return noticePort.loadById(noticeId) + return noticeService.loadById(noticeId) .orElseThrow(() -> new NoSuchElementException(ErrorCode.NOT_NOTICE.getMessage())); } diff --git a/src/main/java/com/pinHouse/server/platform/housing/facility/application/usecase/FacilityUseCase.java b/src/main/java/com/pinHouse/server/platform/housing/facility/application/usecase/FacilityUseCase.java new file mode 100644 index 0000000..bbc26d8 --- /dev/null +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/application/usecase/FacilityUseCase.java @@ -0,0 +1,20 @@ +package com.pinHouse.server.platform.housing.facility.application.usecase; + +import com.pinHouse.server.platform.housing.facility.application.dto.request.FacilityType; +import com.pinHouse.server.platform.housing.notice.domain.entity.Notice; +import com.pinHouse.server.platform.housing.facility.application.dto.response.FacilityResponse; + +import java.util.List; + +/** + * - 공고 주변의 인프라 목록 조회할 인터페이스 + */ +public interface FacilityUseCase { + + /// 조회 + // 주변의 인프라 개수 조회 + FacilityResponse getNoticeInfraById(String noticeId); + + // 원하는 인프라 바탕으로 많이 존재하는 공고 조회 + List getNoticesByInfraTypesWithAllMinCount(List facilityTypes); +} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/AnimalDocument.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Animal.java similarity index 54% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/AnimalDocument.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Animal.java index 9579862..d9f67fd 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/AnimalDocument.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Animal.java @@ -1,7 +1,7 @@ -package com.pinHouse.server.platform.adapter.out.mongo.facility; +package com.pinHouse.server.platform.housing.facility.domain.entity; -import com.pinHouse.server.platform.domain.facility.Animal; -import com.pinHouse.server.platform.domain.location.Location; +import com.pinHouse.server.core.entity.Location; +import com.pinHouse.server.platform.housing.facility.domain.entity.infra.Facility; import jakarta.persistence.Id; import lombok.AllArgsConstructor; import lombok.Builder; @@ -17,7 +17,7 @@ @NoArgsConstructor @AllArgsConstructor @Builder -public class AnimalDocument { +public class Animal implements Facility { /** MongoDB ObjectId */ @Id @@ -26,22 +26,17 @@ public class AnimalDocument { /** 시설명 */ @Field("FCLTY_NM") - private String facilityName; + private String name; /** 3차 카테고리명 (ex. 펜션) */ @Field("CTGRY_THREE_NM") - private String categoryThreeName; + private String category; @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE) private Location location; - - /** 우편번호 */ - @Field("ZIP_NO") - private Integer zipNo; - /** 도로명주소 */ @Field("RDNMADR_NM") - private String roadAddressName; + private String address; /** 휴무/운영 안내 */ @Field("RSTDE_GUID_CN") @@ -74,30 +69,4 @@ public class AnimalDocument { /** 시설 안내/특징 */ @Field("FCLTY_INFO_DC") private String facilityInfoDescription; - - /** 반려동물 추가 요금 안내 */ - @Field("PET_ACP_ADIT_CHRGE_VALUE") - private String petAcceptAdditionalChargeValue; - - /// 도메인 변환 - public Animal toDomain(){ - return Animal.builder() - .name(facilityName) - .category(categoryThreeName) - .location(Location.builder() - .type(location.getType()) - .coordinates(location.getCoordinates()) - .build()) - .address(roadAddressName) - .restGuide(restGuide) - .operateTime(operateTime) - .petPossibleAt(petPossibleAt) - .enterPossiblePetSizeValue(enterPossiblePetSizeValue) - .petLimitMatterContent(petLimitMatterContent) - .inPlaceAcceptPossibleAt(inPlaceAcceptPossibleAt) - .outPlaceAcceptPossibleAt(outPlaceAcceptPossibleAt) - .facilityInfoDescription(facilityInfoDescription) - .build(); - } - } diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/LibraryDocument.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Library.java similarity index 56% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/LibraryDocument.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Library.java index ef44969..8f0fee1 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/LibraryDocument.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Library.java @@ -1,7 +1,7 @@ -package com.pinHouse.server.platform.adapter.out.mongo.facility; +package com.pinHouse.server.platform.housing.facility.domain.entity; -import com.pinHouse.server.platform.domain.facility.Library; -import com.pinHouse.server.platform.domain.location.Location; +import com.pinHouse.server.core.entity.Location; +import com.pinHouse.server.platform.housing.facility.domain.entity.infra.Facility; import jakarta.persistence.Id; import lombok.AllArgsConstructor; import lombok.Builder; @@ -20,7 +20,7 @@ @NoArgsConstructor @AllArgsConstructor @Builder -public class LibraryDocument { +public class Library implements Facility { /** * MongoDB unique identifier (_id) @@ -33,19 +33,19 @@ public class LibraryDocument { * Library code (도서관코드) */ @Field("LBRRY_CD") - private Integer libraryCode; + private Integer code; /** * Library name (도서관명) */ @Field("LBRRY_NM") - private String libraryName; + private String name; /** * Library address (도서관주소) */ @Field("LBRRY_ADDR") - private String libraryAddress; + private String address; @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE) private Location location; @@ -54,19 +54,19 @@ public class LibraryDocument { * Province/State name (광역지역명) */ @Field("ONE_AREA_NM") - private String regionName; + private String area; /** * City/District name (시군구명) */ @Field("TWO_AREA_NM") - private String cityName; + private String city; /** * Library number (도서관번호) */ @Field("LBRRY_NO") - private Integer libraryNumber; + private Integer number; /** * Opening hours (운영시간) @@ -79,26 +79,4 @@ public class LibraryDocument { */ @Field("CLOSEDON_DC") private String closedDays; - - /** - * Converts this document to the domain model. - * @return Library domain object - */ - public Library toDomain() { - return Library.builder() - .id(id) - .code(libraryCode) - .name(libraryName) - .address(libraryAddress) - .location(Location.builder() - .type(location.getType()) - .coordinates(location.getCoordinates()) - .build()) - .area(regionName) - .city(cityName) - .number(libraryNumber) - .openTime(openingTime) - .closedDay(closedDays) - .build(); - } } diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/ParkDocument.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Park.java similarity index 56% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/ParkDocument.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Park.java index a81cbe8..912c445 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/ParkDocument.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Park.java @@ -1,7 +1,7 @@ -package com.pinHouse.server.platform.adapter.out.mongo.facility; +package com.pinHouse.server.platform.housing.facility.domain.entity; -import com.pinHouse.server.platform.domain.facility.Park; -import com.pinHouse.server.platform.domain.location.Location; +import com.pinHouse.server.core.entity.Location; +import com.pinHouse.server.platform.housing.facility.domain.entity.infra.Facility; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.index.GeoSpatialIndexType; import org.springframework.data.mongodb.core.index.GeoSpatialIndexed; @@ -21,7 +21,7 @@ @NoArgsConstructor @AllArgsConstructor @Builder -public class ParkDocument { +public class Park implements Facility { @Id @Field("_id") @@ -33,11 +33,11 @@ public class ParkDocument { /** POI 명칭 */ @Field("POI_NM") - private String poiName; + private String name; /** 공원 분류 명칭 */ @Field("CL_NM") - private String categoryName; + private String category; /** PNU (법정동+지번코드) */ @Field("PNU") @@ -46,19 +46,4 @@ public class ParkDocument { @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE) private Location location; - /// 도메인 변환 - public Park toDomain() { - return Park.builder() - .id(id) - .parkId(parkId) - .name(poiName) - .category(categoryName) - .pnu(pnu) - .location(Location.builder() - .type(location.getType()) - .coordinates(location.getCoordinates()) - .build()) - .build(); - } - } diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/SportDocument.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Sport.java similarity index 82% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/SportDocument.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Sport.java index 3a98c5b..b79b0f5 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/SportDocument.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Sport.java @@ -1,7 +1,7 @@ -package com.pinHouse.server.platform.adapter.out.mongo.facility; +package com.pinHouse.server.platform.housing.facility.domain.entity; -import com.pinHouse.server.platform.domain.facility.Sport; -import com.pinHouse.server.platform.domain.location.Location; +import com.pinHouse.server.core.entity.Location; +import com.pinHouse.server.platform.housing.facility.domain.entity.infra.Facility; import jakarta.persistence.Id; import lombok.AllArgsConstructor; import lombok.Builder; @@ -17,7 +17,7 @@ @NoArgsConstructor @AllArgsConstructor @Builder -public class SportDocument { +public class Sport implements Facility { /** MongoDB ObjectId */ @Id @@ -26,7 +26,7 @@ public class SportDocument { /** 시설 명칭 */ @Field("FCLTY_NM") - private String facilityName; + private String name; /** 업종 명칭 */ @Field("INDUTY_NM") @@ -42,11 +42,7 @@ public class SportDocument { /** 도로명주소-1 */ @Field("RDNMADR_ONE_NM") - private String roadAddressOneName; - - /** 도로명주소-2 */ - @Field("RDNMADR_TWO_NM") - private String roadAddressTwoName; + private String address; @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE) private Location location; @@ -68,11 +64,11 @@ public class SportDocument { public Sport toDomain() { return Sport.builder() .id(id) - .name(facilityName) + .name(name) .industryName(industryName) .facilityTypeName(facilityTypeName) .facilityStateValue(facilityStateValue) - .address(roadAddressOneName) + .address(address) .location(Location.builder() .type(location.getType()) .coordinates(location.getCoordinates()) diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/WalkingDocument.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Walking.java similarity index 61% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/WalkingDocument.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Walking.java index f91a679..fc8d494 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/WalkingDocument.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/Walking.java @@ -1,7 +1,7 @@ -package com.pinHouse.server.platform.adapter.out.mongo.facility; +package com.pinHouse.server.platform.housing.facility.domain.entity; -import com.pinHouse.server.platform.domain.facility.Walking; -import com.pinHouse.server.platform.domain.location.Location; +import com.pinHouse.server.core.entity.Location; +import com.pinHouse.server.platform.housing.facility.domain.entity.infra.Facility; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.index.GeoSpatialIndexType; import org.springframework.data.mongodb.core.index.GeoSpatialIndexed; @@ -18,7 +18,7 @@ @NoArgsConstructor @AllArgsConstructor @Builder -public class WalkingDocument { +public class Walking implements Facility { /** MongoDB ObjectId */ @Id @@ -84,31 +84,4 @@ public class WalkingDocument { @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE) private Location location; - /// toDomain - public Walking toDomain() { - return Walking.builder() - .id(id) - .esntlId(esntlId) - .walkingCourseFlagName(walkingCourseFlagName) - .walkingCourseName(walkingCourseName) - .courseDescription(courseDescription) - .districtName(districtName) - .courseLevelName(courseLevelName) - .courseLengthDescription(courseLengthDescription) - .courseDetailLengthKm(courseDetailLengthKm) - .courseLevelName(courseLevelName) - .courseLengthDescription(courseLengthDescription) - .courseDetailLengthKm(courseDetailLengthKm) - .courseTime(courseTime) - .optionDescription(optionDescription) - .toiletDescription(toiletDescription) - .convenienceName(convenienceName) - .address(address) - .location(Location.builder() - .type(location.getType()) - .coordinates(location.getCoordinates()) - .build()) - .build(); - } - } diff --git a/src/main/java/com/pinHouse/server/platform/domain/facility/Facility.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/infra/Facility.java similarity index 57% rename from src/main/java/com/pinHouse/server/platform/domain/facility/Facility.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/infra/Facility.java index 5346e8f..984c5dd 100644 --- a/src/main/java/com/pinHouse/server/platform/domain/facility/Facility.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/entity/infra/Facility.java @@ -1,6 +1,6 @@ -package com.pinHouse.server.platform.domain.facility; +package com.pinHouse.server.platform.housing.facility.domain.entity.infra; -import com.pinHouse.server.platform.domain.location.Location; +import com.pinHouse.server.core.entity.Location; public interface Facility { diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/AnimalDocumentRepository.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/AnimalDocumentRepository.java similarity index 58% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/AnimalDocumentRepository.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/AnimalDocumentRepository.java index 5d7d842..56b4309 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/AnimalDocumentRepository.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/AnimalDocumentRepository.java @@ -1,14 +1,15 @@ -package com.pinHouse.server.platform.adapter.out.mongo.facility; +package com.pinHouse.server.platform.housing.facility.domain.repository; +import com.pinHouse.server.platform.housing.facility.domain.entity.Animal; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; import java.util.List; -public interface AnimalDocumentRepository extends MongoRepository { +public interface AnimalDocumentRepository extends MongoRepository { // 좌표 주변의 특정 반경이상 주소 검색 @Query(value = "{ 'location': { $geoWithin: { $centerSphere: [ [ ?0, ?1 ], ?2 ] } } }") - List findByLocation(double longitude, double latitude, double radiusInRadians); + List findByLocation(double longitude, double latitude, double radiusInRadians); } diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/LibraryDocumentRepository.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/LibraryDocumentRepository.java similarity index 58% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/LibraryDocumentRepository.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/LibraryDocumentRepository.java index 7e25140..65321c9 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/LibraryDocumentRepository.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/LibraryDocumentRepository.java @@ -1,14 +1,15 @@ -package com.pinHouse.server.platform.adapter.out.mongo.facility; +package com.pinHouse.server.platform.housing.facility.domain.repository; +import com.pinHouse.server.platform.housing.facility.domain.entity.Library; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; import java.util.List; -public interface LibraryDocumentRepository extends MongoRepository { +public interface LibraryDocumentRepository extends MongoRepository { // 좌표 주변의 특정 반경이상 주소 검색 @Query(value = "{ 'location': { $geoWithin: { $centerSphere: [ [ ?0, ?1 ], ?2 ] } } }") - List findByLocation(double longitude, double latitude, double radiusInRadians); + List findByLocation(double longitude, double latitude, double radiusInRadians); } diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/ParkDocumentRepository.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/ParkDocumentRepository.java similarity index 59% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/ParkDocumentRepository.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/ParkDocumentRepository.java index a831aa7..7d05ab1 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/ParkDocumentRepository.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/ParkDocumentRepository.java @@ -1,14 +1,15 @@ -package com.pinHouse.server.platform.adapter.out.mongo.facility; +package com.pinHouse.server.platform.housing.facility.domain.repository; +import com.pinHouse.server.platform.housing.facility.domain.entity.Park; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; import java.util.List; -public interface ParkDocumentRepository extends MongoRepository { +public interface ParkDocumentRepository extends MongoRepository { // 좌표 주변의 특정 반경이상 주소 검색 @Query(value = "{ 'location': { $geoWithin: { $centerSphere: [ [ ?0, ?1 ], ?2 ] } } }") - List findByLocation(double longitude, double latitude, double radiusInRadians); + List findByLocation(double longitude, double latitude, double radiusInRadians); } diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/SportDocumentRepository.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/SportDocumentRepository.java similarity index 59% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/SportDocumentRepository.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/SportDocumentRepository.java index 42cce39..b7671f5 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/SportDocumentRepository.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/SportDocumentRepository.java @@ -1,14 +1,15 @@ -package com.pinHouse.server.platform.adapter.out.mongo.facility; +package com.pinHouse.server.platform.housing.facility.domain.repository; +import com.pinHouse.server.platform.housing.facility.domain.entity.Sport; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; import java.util.List; -public interface SportDocumentRepository extends MongoRepository { +public interface SportDocumentRepository extends MongoRepository { // 좌표 주변의 특정 반경이상 주소 검색 @Query(value = "{ 'location': { $geoWithin: { $centerSphere: [ [ ?0, ?1 ], ?2 ] } } }") - List findByLocation(double longitude, double latitude, double radiusInRadians); + List findByLocation(double longitude, double latitude, double radiusInRadians); } diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/WalkingDocumentRepository.java b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/WalkingDocumentRepository.java similarity index 58% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/WalkingDocumentRepository.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/WalkingDocumentRepository.java index f795f21..a9dfb4b 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/facility/WalkingDocumentRepository.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/domain/repository/WalkingDocumentRepository.java @@ -1,13 +1,14 @@ -package com.pinHouse.server.platform.adapter.out.mongo.facility; +package com.pinHouse.server.platform.housing.facility.domain.repository; +import com.pinHouse.server.platform.housing.facility.domain.entity.Walking; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; import java.util.List; -public interface WalkingDocumentRepository extends MongoRepository { +public interface WalkingDocumentRepository extends MongoRepository { // 좌표 주변의 특정 반경이상 주소 검색 @Query(value = "{ 'location': { $geoWithin: { $centerSphere: [ [ ?0, ?1 ], ?2 ] } } }") - List findByLocation(double longitude, double latitude, double radiusInRadians); + List findByLocation(double longitude, double latitude, double radiusInRadians); } diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/NoticeInfraApi.java b/src/main/java/com/pinHouse/server/platform/housing/facility/presentation/FacilityApi.java similarity index 58% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/NoticeInfraApi.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/presentation/FacilityApi.java index 98d76ba..c23a992 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/NoticeInfraApi.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/presentation/FacilityApi.java @@ -1,13 +1,13 @@ -package com.pinHouse.server.platform.adapter.in.web; +package com.pinHouse.server.platform.housing.facility.presentation; import com.pinHouse.server.core.response.response.ApiResponse; -import com.pinHouse.server.platform.adapter.in.web.dto.FacilityType; -import com.pinHouse.server.platform.adapter.in.web.dto.response.InfraDTO; -import com.pinHouse.server.platform.adapter.in.web.dto.response.NoticeDTO; -import com.pinHouse.server.platform.adapter.in.web.swagger.NoticeInfraApiSpec; -import com.pinHouse.server.platform.application.in.NoticeInfraUseCase; -import com.pinHouse.server.platform.domain.notice.Notice; -import com.pinHouse.server.platform.domain.notice.NoticeInfra; +import com.pinHouse.server.platform.housing.facility.application.dto.request.FacilityType; +import com.pinHouse.server.platform.housing.facility.application.dto.response.InfraDTO; +import com.pinHouse.server.platform.housing.notice.application.dto.response.NoticeDTO; +import com.pinHouse.server.platform.housing.facility.presentation.swagger.FacilityApiSpec; +import com.pinHouse.server.platform.housing.facility.application.usecase.FacilityUseCase; +import com.pinHouse.server.platform.housing.notice.domain.entity.Notice; +import com.pinHouse.server.platform.housing.facility.application.dto.response.FacilityResponse; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -15,10 +15,10 @@ @RestController @RequestMapping("/api/v1/notices/infra") @RequiredArgsConstructor -public class NoticeInfraApi implements NoticeInfraApiSpec { +public class FacilityApi implements FacilityApiSpec { /// 서비스 의존성 - private final NoticeInfraUseCase service; + private final FacilityUseCase service; /// 주변 인프라 조회 @GetMapping("/{noticeId}") @@ -26,10 +26,10 @@ public ApiResponse showNotice( @PathVariable String noticeId) { /// 서비스 계층 - NoticeInfra noticeInfra = service.getNoticeInfraById(noticeId); + FacilityResponse facilityResponse = service.getNoticeInfraById(noticeId); /// DTO 수정 - InfraDTO.NoticeInfraResponse response = InfraDTO.NoticeInfraResponse.from(noticeInfra); + InfraDTO.NoticeInfraResponse response = InfraDTO.NoticeInfraResponse.from(facilityResponse); /// 응답 return ApiResponse.ok(response); diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/NoticeInfraApiSpec.java b/src/main/java/com/pinHouse/server/platform/housing/facility/presentation/swagger/FacilityApiSpec.java similarity index 76% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/NoticeInfraApiSpec.java rename to src/main/java/com/pinHouse/server/platform/housing/facility/presentation/swagger/FacilityApiSpec.java index e3d91e1..41a4b96 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/NoticeInfraApiSpec.java +++ b/src/main/java/com/pinHouse/server/platform/housing/facility/presentation/swagger/FacilityApiSpec.java @@ -1,9 +1,9 @@ -package com.pinHouse.server.platform.adapter.in.web.swagger; +package com.pinHouse.server.platform.housing.facility.presentation.swagger; import com.pinHouse.server.core.response.response.ApiResponse; -import com.pinHouse.server.platform.adapter.in.web.dto.FacilityType; -import com.pinHouse.server.platform.adapter.in.web.dto.response.InfraDTO; -import com.pinHouse.server.platform.adapter.in.web.dto.response.NoticeDTO; +import com.pinHouse.server.platform.housing.facility.application.dto.request.FacilityType; +import com.pinHouse.server.platform.housing.facility.application.dto.response.InfraDTO; +import com.pinHouse.server.platform.housing.notice.application.dto.response.NoticeDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -14,7 +14,7 @@ import java.util.List; @Tag(name = "공고 주변 인프라 API", description = "인프라를 바탕으로 조회하는 API 입니다.") -public interface NoticeInfraApiSpec { +public interface FacilityApiSpec { @Operation( summary = "공고 주변 인프라 조회 API", diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/NoticeDTO.java b/src/main/java/com/pinHouse/server/platform/housing/notice/application/dto/response/NoticeDTO.java similarity index 93% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/NoticeDTO.java rename to src/main/java/com/pinHouse/server/platform/housing/notice/application/dto/response/NoticeDTO.java index e35d0b0..60999d0 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/dto/response/NoticeDTO.java +++ b/src/main/java/com/pinHouse/server/platform/housing/notice/application/dto/response/NoticeDTO.java @@ -1,6 +1,7 @@ -package com.pinHouse.server.platform.adapter.in.web.dto.response; +package com.pinHouse.server.platform.housing.notice.application.dto.response; -import com.pinHouse.server.platform.domain.notice.Notice; +import com.pinHouse.server.platform.housing.deposit.application.dto.response.NoticeSupplyDTO; +import com.pinHouse.server.platform.housing.notice.domain.entity.Notice; import lombok.Builder; import java.util.List; diff --git a/src/main/java/com/pinHouse/server/platform/housing/notice/application/service/NoticeService.java b/src/main/java/com/pinHouse/server/platform/housing/notice/application/service/NoticeService.java new file mode 100644 index 0000000..a6df6ec --- /dev/null +++ b/src/main/java/com/pinHouse/server/platform/housing/notice/application/service/NoticeService.java @@ -0,0 +1,121 @@ +package com.pinHouse.server.platform.housing.notice.application.service; + +import com.pinHouse.server.core.response.response.ErrorCode; +import com.pinHouse.server.core.response.response.pageable.PageRequest; +import com.pinHouse.server.platform.housing.notice.application.dto.response.NoticeDTO; +import com.pinHouse.server.platform.housing.notice.application.usecase.NoticeUseCase; +import com.pinHouse.server.platform.housing.notice.domain.entity.Notice; +import com.pinHouse.server.platform.housing.notice.domain.repository.NoticeDocumentRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; + +@Service +@Transactional +@RequiredArgsConstructor +public class NoticeService implements NoticeUseCase { + + private final NoticeDocumentRepository repository; + + /** + * 최신 공고 목록 조회를 위한 함수 입니다. + * @param pageRequest 페이지 기반 + */ + @Override + public Page getNotices(PageRequest pageRequest) { + + /// 페이징 변환 + Pageable pageable = getPageable(pageRequest); + + /// port 조회 + Page notices = repository.findAll(pageable); + + /// DTO 변환 + List contents = notices.getContent(); + List responseList = NoticeDTO.NoticeListResponse.from(contents); + + return new PageImpl<>(responseList, pageable, contents.size()); + } + + /** + * 지역 기반 공고 목록 조회를 위한 함수 입니다. + * @param region 지역 + * @param pageRequest 페이지 기반 + */ + @Override + public Page getNoticesByRegion(String region, PageRequest pageRequest) { + + /// 페이징 변환 + Pageable pageable = getPageable(pageRequest); + + return null; + } + + /** + * 공고 상세 조회를 위한 함수 입니다. + * @param noticeId 조회할 공고 ID + */ + @Override + public NoticeDTO.NoticeDetailResponse getNoticeById(String noticeId) { + + /// 공고 조회 + Notice notice = getNotice(noticeId); + + /// DTO 변환 + return NoticeDTO.NoticeDetailResponse.from(notice); + } + + /** + * 사용자가 원하는 공고 목록을 비교할 함수 입니다. + * @param noticeId1 비교할 첫번째 공고 ID + * @param noticeId2 비교할 두번째 공고 ID + */ + @Override + public List compareNotices(String noticeId1, String noticeId2) { + return List.of(); + } + + /// 공통 함수 모음 + + /** + * - ID를 바탕으로 공고를 조회하는 함수입니다. + * @param noticeId 공고 ID + * @return Notice 객체 + */ + private Notice getNotice(String noticeId) { + return repository.findByNoticeId(noticeId) + .orElseThrow(() -> new NoSuchElementException(ErrorCode.NOT_NOTICE.getMessage())); + } + + + /** + * 페이지 요청을 Pageable 변환하는 함수 입니다. + * @param pageRequest 페이지 요청 DTO + * @return Pageable + */ + private Pageable getPageable(PageRequest pageRequest) { + return org.springframework.data.domain.PageRequest.of(pageRequest.getPage() - 1, pageRequest.getSize(), Sort.by("id")); + } + + /** + * 외부 사용 함수 + */ + @Override + public Optional loadById(String id) { + return repository.findById(id); + } + + @Override + public List loadAllNotices() { + return repository.findAll(); + } + +} diff --git a/src/main/java/com/pinHouse/server/platform/application/in/NoticeUseCase.java b/src/main/java/com/pinHouse/server/platform/housing/notice/application/usecase/NoticeUseCase.java similarity index 69% rename from src/main/java/com/pinHouse/server/platform/application/in/NoticeUseCase.java rename to src/main/java/com/pinHouse/server/platform/housing/notice/application/usecase/NoticeUseCase.java index eb5f909..4133cfb 100644 --- a/src/main/java/com/pinHouse/server/platform/application/in/NoticeUseCase.java +++ b/src/main/java/com/pinHouse/server/platform/housing/notice/application/usecase/NoticeUseCase.java @@ -1,12 +1,13 @@ -package com.pinHouse.server.platform.application.in; +package com.pinHouse.server.platform.housing.notice.application.usecase; import com.pinHouse.server.core.response.response.pageable.PageRequest; -import com.pinHouse.server.platform.adapter.in.web.dto.response.NoticeDTO; -import com.pinHouse.server.platform.adapter.in.web.dto.response.NoticeSupplyDTO; -import com.pinHouse.server.platform.domain.notice.Notice; +import com.pinHouse.server.platform.housing.notice.application.dto.response.NoticeDTO; +import com.pinHouse.server.platform.housing.notice.domain.entity.Notice; import org.springframework.data.domain.Page; import java.util.List; +import java.util.Optional; + /** * [공고 기반 조회] 인터페이스 * - 최신 기반, 공고의 목록 조회 @@ -28,12 +29,15 @@ public interface NoticeUseCase { // 상세 조회 NoticeDTO.NoticeDetailResponse getNoticeById(String noticeId); - /// 시뮬레이터 - NoticeSupplyDTO.NoticeLeaseOptionResponse getLeaseByPercent(String noticeId, String type, double percentage); - /// 비교 List compareNotices(String noticeId1, String noticeId2); + /// 외부 사용 + /// 상세 조회 + Optional loadById(String id); + + /// 모든 공고 가져오기 + List loadAllNotices(); } diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/NoticeDocument.java b/src/main/java/com/pinHouse/server/platform/housing/notice/domain/entity/Notice.java similarity index 55% rename from src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/NoticeDocument.java rename to src/main/java/com/pinHouse/server/platform/housing/notice/domain/entity/Notice.java index 724ecfb..7f0a337 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/mongo/notice/NoticeDocument.java +++ b/src/main/java/com/pinHouse/server/platform/housing/notice/domain/entity/Notice.java @@ -1,7 +1,7 @@ -package com.pinHouse.server.platform.adapter.out.mongo.notice; +package com.pinHouse.server.platform.housing.notice.domain.entity; -import com.pinHouse.server.platform.domain.location.Location; -import com.pinHouse.server.platform.domain.notice.Notice; +import com.pinHouse.server.core.entity.Location; +import com.pinHouse.server.platform.housing.deposit.domain.entity.NoticeSupply; import jakarta.persistence.Id; import lombok.AllArgsConstructor; import lombok.Builder; @@ -18,7 +18,7 @@ @NoArgsConstructor @AllArgsConstructor @Builder -public class NoticeDocument { +public class Notice { @Id private String id; @@ -60,7 +60,7 @@ public class NoticeDocument { private Location location; @Field("공급정보목록") - private List supplyInfo; + private List supplyInfo; @Field("모집공고URL") private String noticeUrl; @@ -82,36 +82,5 @@ public class NoticeDocument { @Field("총세대수") private String totalHouseholds; - - public Notice toDomain() { - return Notice.builder() - .id(noticeId) - .noticeId(noticeId) - .complexName(complexName) - .status(status) - .startDate(startDate) - .supplier(supplier) - .type(type) - .title(title) - .views(views) - .endDate(endDate) - .address(address) - .region(region) - .location(Location.builder() - .type(location.getType()) - .coordinates(location.getCoordinates()) - .build()) - .supplyInfo(supplyInfo.stream() - .map(NoticeSupplyInfoDocument::toDomain) - .toList()) - .noticeUrl(noticeUrl) - .myHomePcUrl(myHomePcUrl) - .myHomeMobileUrl(myHomeMobileUrl) - .contact(contact) - .winnerAnnouncementDate(winnerAnnouncementDate) - .heatingMethod(heatingMethod) - .totalHouseholds(totalHouseholds) - .build(); - } } diff --git a/src/main/java/com/pinHouse/server/platform/housing/notice/domain/repository/NoticeDocumentRepository.java b/src/main/java/com/pinHouse/server/platform/housing/notice/domain/repository/NoticeDocumentRepository.java new file mode 100644 index 0000000..bde80e2 --- /dev/null +++ b/src/main/java/com/pinHouse/server/platform/housing/notice/domain/repository/NoticeDocumentRepository.java @@ -0,0 +1,12 @@ +package com.pinHouse.server.platform.housing.notice.domain.repository; + +import com.pinHouse.server.platform.housing.notice.domain.entity.Notice; +import org.springframework.data.mongodb.repository.MongoRepository; + +import java.util.Optional; + +public interface NoticeDocumentRepository extends MongoRepository { + + Optional findByNoticeId(String noticeId); + +} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/NoticeApi.java b/src/main/java/com/pinHouse/server/platform/housing/notice/presentation/NoticeApi.java similarity index 82% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/NoticeApi.java rename to src/main/java/com/pinHouse/server/platform/housing/notice/presentation/NoticeApi.java index 9c6602f..d77e617 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/NoticeApi.java +++ b/src/main/java/com/pinHouse/server/platform/housing/notice/presentation/NoticeApi.java @@ -1,11 +1,11 @@ -package com.pinHouse.server.platform.adapter.in.web; +package com.pinHouse.server.platform.housing.notice.presentation; import com.pinHouse.server.core.response.response.ApiResponse; import com.pinHouse.server.core.response.response.pageable.PageRequest; import com.pinHouse.server.core.response.response.pageable.PageResponse; -import com.pinHouse.server.platform.adapter.in.web.dto.response.NoticeDTO; -import com.pinHouse.server.platform.adapter.in.web.swagger.NoticeApiSpec; -import com.pinHouse.server.platform.application.in.NoticeUseCase; +import com.pinHouse.server.platform.housing.notice.application.dto.response.NoticeDTO; +import com.pinHouse.server.platform.housing.notice.presentation.swagger.NoticeApiSpec; +import com.pinHouse.server.platform.housing.notice.application.usecase.NoticeUseCase; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/NoticeApiSpec.java b/src/main/java/com/pinHouse/server/platform/housing/notice/presentation/swagger/NoticeApiSpec.java similarity index 87% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/NoticeApiSpec.java rename to src/main/java/com/pinHouse/server/platform/housing/notice/presentation/swagger/NoticeApiSpec.java index 31f8925..69220d9 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/NoticeApiSpec.java +++ b/src/main/java/com/pinHouse/server/platform/housing/notice/presentation/swagger/NoticeApiSpec.java @@ -1,9 +1,9 @@ -package com.pinHouse.server.platform.adapter.in.web.swagger; +package com.pinHouse.server.platform.housing.notice.presentation.swagger; import com.pinHouse.server.core.response.response.ApiResponse; import com.pinHouse.server.core.response.response.pageable.PageRequest; import com.pinHouse.server.core.response.response.pageable.PageResponse; -import com.pinHouse.server.platform.adapter.in.web.dto.response.NoticeDTO; +import com.pinHouse.server.platform.housing.notice.application.dto.response.NoticeDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/com/pinHouse/server/platform/notification/application/dto/request/.gitkeep b/src/main/java/com/pinHouse/server/platform/notification/application/dto/request/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/notification/application/dto/response/.gitkeep b/src/main/java/com/pinHouse/server/platform/notification/application/dto/response/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/notification/application/service/.gitkeep b/src/main/java/com/pinHouse/server/platform/notification/application/service/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/notification/application/usecase/.gitkeep b/src/main/java/com/pinHouse/server/platform/notification/application/usecase/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/notification/domain/entity/.gitkeep b/src/main/java/com/pinHouse/server/platform/notification/domain/entity/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/notification/domain/repository/.gitkeep b/src/main/java/com/pinHouse/server/platform/notification/domain/repository/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/notification/presentation/swagger/.gitkeep b/src/main/java/com/pinHouse/server/platform/notification/presentation/swagger/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/pinHouse/server/platform/adapter/out/UserJpaAdapter.java b/src/main/java/com/pinHouse/server/platform/user/application/service/UserService.java similarity index 50% rename from src/main/java/com/pinHouse/server/platform/adapter/out/UserJpaAdapter.java rename to src/main/java/com/pinHouse/server/platform/user/application/service/UserService.java index 29559a0..6e70ea2 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/out/UserJpaAdapter.java +++ b/src/main/java/com/pinHouse/server/platform/user/application/service/UserService.java @@ -1,10 +1,9 @@ -package com.pinHouse.server.platform.adapter.out; +package com.pinHouse.server.platform.user.application.service; -import com.pinHouse.server.platform.adapter.out.jpa.user.UserJpaEntity; -import com.pinHouse.server.platform.adapter.out.jpa.user.UserJpaRepository; -import com.pinHouse.server.platform.application.out.user.UserPort; -import com.pinHouse.server.platform.domain.user.Provider; -import com.pinHouse.server.platform.domain.user.User; +import com.pinHouse.server.platform.user.domain.entity.User; +import com.pinHouse.server.platform.user.domain.repository.UserJpaRepository; +import com.pinHouse.server.platform.user.application.usecase.UserUseCase; +import com.pinHouse.server.platform.user.domain.entity.Provider; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -13,16 +12,13 @@ @Component @RequiredArgsConstructor -public class UserJpaAdapter implements UserPort { +public class UserService implements UserUseCase { private final UserJpaRepository repository; @Override public User saveUser(User user) { - var entity = UserJpaEntity.from(user); - - return repository.save(entity) - .toDomain(); + return repository.save(user); } @Override @@ -32,19 +28,17 @@ public boolean checkExistingById(UUID userId) { @Override public Optional loadUserById(UUID userId) { - return repository.findById(userId) - .map(UserJpaEntity::toDomain); + return repository.findById(userId); } @Override public boolean existsByEmail(String email) { - Optional userJpaEntity = repository.findByEmail(email); + Optional userJpaEntity = repository.findByEmail(email); return userJpaEntity.isPresent(); } @Override public Optional loadUserBySocialAndSocialId(Provider social, String socialId) { - return repository.findByProviderAndSocialId(social, socialId) - .map(UserJpaEntity::toDomain); + return repository.findByProviderAndSocialId(social, socialId); } } diff --git a/src/main/java/com/pinHouse/server/platform/application/out/user/UserPort.java b/src/main/java/com/pinHouse/server/platform/user/application/usecase/UserUseCase.java similarity index 57% rename from src/main/java/com/pinHouse/server/platform/application/out/user/UserPort.java rename to src/main/java/com/pinHouse/server/platform/user/application/usecase/UserUseCase.java index ac72137..cbd36fb 100644 --- a/src/main/java/com/pinHouse/server/platform/application/out/user/UserPort.java +++ b/src/main/java/com/pinHouse/server/platform/user/application/usecase/UserUseCase.java @@ -1,12 +1,12 @@ -package com.pinHouse.server.platform.application.out.user; +package com.pinHouse.server.platform.user.application.usecase; -import com.pinHouse.server.platform.domain.user.Provider; -import com.pinHouse.server.platform.domain.user.User; +import com.pinHouse.server.platform.user.domain.entity.Provider; +import com.pinHouse.server.platform.user.domain.entity.User; import java.util.Optional; import java.util.UUID; -public interface UserPort { +public interface UserUseCase { Optional loadUserById(UUID Id); diff --git a/src/main/java/com/pinHouse/server/platform/domain/user/Gender.java b/src/main/java/com/pinHouse/server/platform/user/domain/entity/Gender.java similarity index 92% rename from src/main/java/com/pinHouse/server/platform/domain/user/Gender.java rename to src/main/java/com/pinHouse/server/platform/user/domain/entity/Gender.java index ea9a1b8..32d9c86 100644 --- a/src/main/java/com/pinHouse/server/platform/domain/user/Gender.java +++ b/src/main/java/com/pinHouse/server/platform/user/domain/entity/Gender.java @@ -1,4 +1,4 @@ -package com.pinHouse.server.platform.domain.user; +package com.pinHouse.server.platform.user.domain.entity; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/pinHouse/server/platform/user/domain/entity/Provider.java b/src/main/java/com/pinHouse/server/platform/user/domain/entity/Provider.java new file mode 100644 index 0000000..9dc3afa --- /dev/null +++ b/src/main/java/com/pinHouse/server/platform/user/domain/entity/Provider.java @@ -0,0 +1,5 @@ +package com.pinHouse.server.platform.user.domain.entity; + +public enum Provider { + KAKAO, NAVER +} diff --git a/src/main/java/com/pinHouse/server/platform/domain/user/Role.java b/src/main/java/com/pinHouse/server/platform/user/domain/entity/Role.java similarity index 77% rename from src/main/java/com/pinHouse/server/platform/domain/user/Role.java rename to src/main/java/com/pinHouse/server/platform/user/domain/entity/Role.java index 4f8be8b..14e0853 100644 --- a/src/main/java/com/pinHouse/server/platform/domain/user/Role.java +++ b/src/main/java/com/pinHouse/server/platform/user/domain/entity/Role.java @@ -1,4 +1,4 @@ -package com.pinHouse.server.platform.domain.user; +package com.pinHouse.server.platform.user.domain.entity; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/pinHouse/server/platform/domain/user/User.java b/src/main/java/com/pinHouse/server/platform/user/domain/entity/User.java similarity index 73% rename from src/main/java/com/pinHouse/server/platform/domain/user/User.java rename to src/main/java/com/pinHouse/server/platform/user/domain/entity/User.java index cfc4092..7998b75 100644 --- a/src/main/java/com/pinHouse/server/platform/domain/user/User.java +++ b/src/main/java/com/pinHouse/server/platform/user/domain/entity/User.java @@ -1,36 +1,57 @@ -package com.pinHouse.server.platform.domain.user; +package com.pinHouse.server.platform.user.domain.entity; import com.pinHouse.server.core.util.BirthDayUtil; +import com.pinHouse.server.core.entity.BaseTimeEntity; import com.pinHouse.server.security.oauth2.domain.OAuth2UserInfo; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; +import jakarta.persistence.*; +import lombok.*; import java.time.LocalDate; import java.util.UUID; -/** - * 사용할 유저 도메인 입니다. - */ +@Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) +@Table(name = "users") @AllArgsConstructor -@SuperBuilder -public class User { +@Builder +public class User extends BaseTimeEntity { + @Id + @Column(name = "id", nullable = false, columnDefinition = "BINARY(16)") private UUID id; + + @Enumerated(EnumType.STRING) private Provider provider; + private String socialId; + + @Column(nullable = false) private String name; + + @Column(nullable = false, unique = true) private String email; + + @Column(name = "phone_number") private String phoneNumber; + + @Enumerated(EnumType.STRING) private Role role; - private String profileImage; + + @Enumerated(EnumType.STRING) private Gender gender; + + private String profileImage; + private LocalDate birthday; + @PrePersist + public void generateUUID() { + if (this.id == null) { + this.id = UUID.randomUUID(); + } + } + /// 정적 팩토리 메서드 public static User of(OAuth2UserInfo userInfo) { return User.builder() @@ -66,5 +87,4 @@ public static User of( .build(); } - } diff --git a/src/main/java/com/pinHouse/server/platform/user/domain/repository/UserJpaRepository.java b/src/main/java/com/pinHouse/server/platform/user/domain/repository/UserJpaRepository.java new file mode 100644 index 0000000..ef4999f --- /dev/null +++ b/src/main/java/com/pinHouse/server/platform/user/domain/repository/UserJpaRepository.java @@ -0,0 +1,20 @@ +package com.pinHouse.server.platform.user.domain.repository; + +import com.pinHouse.server.platform.user.domain.entity.Provider; +import com.pinHouse.server.platform.user.domain.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; +import java.util.UUID; + +@Repository +public interface UserJpaRepository extends JpaRepository { + Optional findByEmail(String email); + + Optional findById(UUID id); + + + Optional findByProviderAndSocialId(Provider social, String socialId); + +} diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/DevAuthApi.java b/src/main/java/com/pinHouse/server/platform/user/presentation/DevAuthApi.java similarity index 81% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/DevAuthApi.java rename to src/main/java/com/pinHouse/server/platform/user/presentation/DevAuthApi.java index 4dee3ca..5427f9e 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/DevAuthApi.java +++ b/src/main/java/com/pinHouse/server/platform/user/presentation/DevAuthApi.java @@ -1,12 +1,12 @@ -package com.pinHouse.server.platform.adapter.in.web; +package com.pinHouse.server.platform.user.presentation; import com.pinHouse.server.core.response.response.ApiResponse; import com.pinHouse.server.core.response.response.ErrorCode; -import com.pinHouse.server.platform.adapter.in.web.swagger.DevAuthApiSpec; -import com.pinHouse.server.platform.application.out.user.UserPort; -import com.pinHouse.server.platform.domain.user.Provider; -import com.pinHouse.server.platform.domain.user.Role; -import com.pinHouse.server.platform.domain.user.User; +import com.pinHouse.server.platform.user.domain.entity.User; +import com.pinHouse.server.platform.user.presentation.swagger.DevAuthApiSpec; +import com.pinHouse.server.platform.user.application.usecase.UserUseCase; +import com.pinHouse.server.platform.user.domain.entity.Provider; +import com.pinHouse.server.platform.user.domain.entity.Role; import com.pinHouse.server.security.jwt.service.JwtTokenUseCase; import com.pinHouse.server.security.oauth2.domain.PrincipalDetails; import jakarta.servlet.http.HttpServletResponse; @@ -27,7 +27,7 @@ @RequiredArgsConstructor public class DevAuthApi implements DevAuthApiSpec { - private final UserPort userPort; + private final UserUseCase userUseCase; private final JwtTokenUseCase tokenService; // 테스트용으로 만든 UUID @@ -41,13 +41,13 @@ public ApiResponse devLogin(HttpServletResponse httpServletResponse) { /// 테스트용 유저 정보 수정 User user; - if (userPort.checkExistingById(id)) { - user = userPort.loadUserById(id) + if (userUseCase.checkExistingById(id)) { + user = userUseCase.loadUserById(id) .orElseThrow(() -> new NoSuchElementException(ErrorCode.USER_NOT_FOUND.getMessage())); } else { User dev = createDev(); - user = userPort.saveUser(dev); + user = userUseCase.saveUser(dev); } /// PrincipalDetails 생성 (시스템에 따라 다름) diff --git a/src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/DevAuthApiSpec.java b/src/main/java/com/pinHouse/server/platform/user/presentation/swagger/DevAuthApiSpec.java similarity index 90% rename from src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/DevAuthApiSpec.java rename to src/main/java/com/pinHouse/server/platform/user/presentation/swagger/DevAuthApiSpec.java index c041dd1..30bb961 100644 --- a/src/main/java/com/pinHouse/server/platform/adapter/in/web/swagger/DevAuthApiSpec.java +++ b/src/main/java/com/pinHouse/server/platform/user/presentation/swagger/DevAuthApiSpec.java @@ -1,4 +1,4 @@ -package com.pinHouse.server.platform.adapter.in.web.swagger; +package com.pinHouse.server.platform.user.presentation.swagger; import com.pinHouse.server.core.response.response.ApiResponse; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/com/pinHouse/server/security/config/RequestMatcherHolder.java b/src/main/java/com/pinHouse/server/security/config/RequestMatcherHolder.java index ea3b124..c1806a3 100644 --- a/src/main/java/com/pinHouse/server/security/config/RequestMatcherHolder.java +++ b/src/main/java/com/pinHouse/server/security/config/RequestMatcherHolder.java @@ -1,6 +1,6 @@ package com.pinHouse.server.security.config; -import com.pinHouse.server.platform.domain.user.Role; +import com.pinHouse.server.platform.user.domain.entity.Role; import io.micrometer.common.lang.Nullable; import org.springframework.http.HttpMethod; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; diff --git a/src/main/java/com/pinHouse/server/security/config/SecurityConfig.java b/src/main/java/com/pinHouse/server/security/config/SecurityConfig.java index f9a2a6d..aafb215 100644 --- a/src/main/java/com/pinHouse/server/security/config/SecurityConfig.java +++ b/src/main/java/com/pinHouse/server/security/config/SecurityConfig.java @@ -15,8 +15,8 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.web.cors.CorsConfigurationSource; -import static com.pinHouse.server.platform.domain.user.Role.ADMIN; -import static com.pinHouse.server.platform.domain.user.Role.USER; +import static com.pinHouse.server.platform.user.domain.entity.Role.ADMIN; +import static com.pinHouse.server.platform.user.domain.entity.Role.USER; /** * Spring Security 설정 클래스 diff --git a/src/main/java/com/pinHouse/server/security/jwt/util/JwtTokenExtractor.java b/src/main/java/com/pinHouse/server/security/jwt/util/JwtTokenExtractor.java index c910d8c..2551334 100644 --- a/src/main/java/com/pinHouse/server/security/jwt/util/JwtTokenExtractor.java +++ b/src/main/java/com/pinHouse/server/security/jwt/util/JwtTokenExtractor.java @@ -1,8 +1,8 @@ package com.pinHouse.server.security.jwt.util; import com.pinHouse.server.core.response.response.ErrorCode; -import com.pinHouse.server.platform.application.out.user.UserPort; -import com.pinHouse.server.platform.domain.user.User; +import com.pinHouse.server.platform.user.application.usecase.UserUseCase; +import com.pinHouse.server.platform.user.domain.entity.User; import com.pinHouse.server.security.jwt.exception.JwtAuthenticationException; import com.pinHouse.server.security.oauth2.domain.PrincipalDetails; import io.jsonwebtoken.*; @@ -35,7 +35,7 @@ public class JwtTokenExtractor { private SecretKey secretKey; /// 의존성 - private final UserPort userPort; + private final UserUseCase userUseCase; private final CookieUtil cookieUtil; @@ -108,7 +108,7 @@ public Authentication getAuthentication(String token) { UUID userId = UUID.fromString(claimUserId); // 해당 userId로 Member를 조회 - User user = userPort.loadUserById(userId) + User user = userUseCase.loadUserById(userId) .orElseThrow(() -> new JwtAuthenticationException(ErrorCode.USER_NOT_FOUND_IN_COOKIE.getMessage())); PrincipalDetails details = PrincipalDetails.of(user); diff --git a/src/main/java/com/pinHouse/server/security/oauth2/domain/PrincipalDetails.java b/src/main/java/com/pinHouse/server/security/oauth2/domain/PrincipalDetails.java index 66e8f54..be023dc 100644 --- a/src/main/java/com/pinHouse/server/security/oauth2/domain/PrincipalDetails.java +++ b/src/main/java/com/pinHouse/server/security/oauth2/domain/PrincipalDetails.java @@ -1,6 +1,6 @@ package com.pinHouse.server.security.oauth2.domain; -import com.pinHouse.server.platform.domain.user.User; +import com.pinHouse.server.platform.user.domain.entity.User; import lombok.Builder; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/pinHouse/server/security/oauth2/service/OAuth2UserService.java b/src/main/java/com/pinHouse/server/security/oauth2/service/OAuth2UserService.java index 12ca9e7..b6a2c04 100644 --- a/src/main/java/com/pinHouse/server/security/oauth2/service/OAuth2UserService.java +++ b/src/main/java/com/pinHouse/server/security/oauth2/service/OAuth2UserService.java @@ -1,9 +1,9 @@ package com.pinHouse.server.security.oauth2.service; -import com.pinHouse.server.platform.application.out.user.UserPort; -import com.pinHouse.server.platform.domain.user.Gender; -import com.pinHouse.server.platform.domain.user.Provider; -import com.pinHouse.server.platform.domain.user.User; +import com.pinHouse.server.platform.user.application.usecase.UserUseCase; +import com.pinHouse.server.platform.user.domain.entity.Gender; +import com.pinHouse.server.platform.user.domain.entity.Provider; +import com.pinHouse.server.platform.user.domain.entity.User; import com.pinHouse.server.security.oauth2.domain.OAuth2UserInfo; import com.pinHouse.server.security.oauth2.domain.PrincipalDetails; import com.pinHouse.server.security.oauth2.domain.kakao.KakaoUserInfo; @@ -28,7 +28,7 @@ @RequiredArgsConstructor public class OAuth2UserService extends DefaultOAuth2UserService { - private final UserPort userPort; + private final UserUseCase userUseCase; /** * 소셜 로그인 유저 가져오기 @@ -57,7 +57,7 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2Authentic userInfo = createOAuth2User(registrationId, oAuth2UserAttributes); Provider social = Provider.valueOf(userInfo.getProvider()); - Optional existUser = userPort.loadUserBySocialAndSocialId(social, userInfo.getProviderId()); + Optional existUser = userUseCase.loadUserBySocialAndSocialId(social, userInfo.getProviderId()); /// 존재한다면 로그인 if (existUser.isPresent()) { @@ -82,7 +82,7 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2Authentic Gender.getGender(userInfo.getGender()) ); - User savedNewUser = userPort.saveUser(user); + User savedNewUser = userUseCase.saveUser(user); return PrincipalDetails.of(savedNewUser, oAuth2UserAttributes); }