diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 5e6072d3f..633ca8b7a 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -28,23 +28,49 @@ jobs: - name: make application.yml if: contains(github.ref, 'main') || contains(github.ref, 'dev') run: | - cd ./src/main/resources + cd ./Clubber-External/src/main/resources touch ./application.yml echo "${{ secrets.YML }}" > ./application.yml shell: bash + - name: make application.yml (Internal) + if: contains(github.ref, 'main') || contains(github.ref, 'dev') + run: | + cd ./Clubber-Internal/src/main/resources + touch ./application.yml + echo "${{ secrets.INTERNAL_YML }}" > ./application.yml + shell: bash + - name: make application-dev.yml if: contains(github.ref, 'dev') run: | - cd ./src/main/resources + cd ./Clubber-External/src/main/resources touch ./application-dev.yml echo "${{ secrets.YML_DEV }}" > ./application-dev.yml shell: bash + # [Internal] application-dev.yml + - name: make application-dev.yml (Internal) + if: contains(github.ref, 'dev') + run: | + cd ./Clubber-Internal/src/main/resources + touch ./application-dev.yml + echo "${{ secrets.INTERNAL_YML_DEV }}" > ./application-dev.yml + shell: bash + - name: make application-prod.yml if: contains(github.ref, 'main') run: | - cd ./src/main/resources + cd ./Clubber-External/src/main/resources + touch ./application-prod.yml + echo "${{ secrets.YML_PROD }}" > ./application-prod.yml + shell: bash + + # [Internal] application-prod.yml + - name: make application-prod.yml (Internal) + if: contains(github.ref, 'main') + run: | + cd ./Clubber-Internal/src/main/resources touch ./application-prod.yml echo "${{ secrets.YML_PROD }}" > ./application-prod.yml shell: bash @@ -53,12 +79,16 @@ jobs: run: chmod +x gradlew - name: Build with Gradle - run: ./gradlew clean build -x test + run: ./gradlew :Clubber-External:clean build -x test + # [Internal] Build + - name: Build with Gradle (Internal) + run: ./gradlew :Clubber-Internal:clean build -x test - name: docker build and push to dev if: contains(github.ref, 'dev') run: | + cd Clubber-External docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} docker build -f Dockerfile.dev -t ${{ secrets.DOCKER_REPO }}/clubber-backend-dev . docker push ${{ secrets.DOCKER_REPO }}/clubber-backend-dev @@ -66,10 +96,20 @@ jobs: - name: docker build and push to dev nginx if: contains(github.ref, 'dev') run: | + cd Clubber-External docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} docker build -f Dockerfile.nginx.dev -t ${{ secrets.DOCKER_REPO }}/clubber-nginx-dev . docker push ${{ secrets.DOCKER_REPO }}/clubber-nginx-dev + # [Internal] Docker Build & Push (Dev) + - name: docker build and push to dev (Internal) + if: contains(github.ref, 'dev') + run: | + cd Clubber-Internal + docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + docker build -f Dockerfile.dev -t ${{ secrets.DOCKER_REPO }}/clubber-internal-dev . + docker push ${{ secrets.DOCKER_REPO }}/clubber-internal-dev + - name: docker build and push to prod if: contains(github.ref, 'main') run: | @@ -84,6 +124,15 @@ jobs: docker build -f Dockerfile.nginx.prod -t ${{ secrets.DOCKER_REPO }}/clubber-nginx-prod . docker push ${{ secrets.DOCKER_REPO }}/clubber-nginx-prod + # [Internal] Docker Build & Push (Prod) + - name: docker build and push to prod (Internal) + if: contains(github.ref, 'main') + run: | + cd Clubber-Internal + docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + docker build -f Dockerfile.prod -t ${{ secrets.DOCKER_REPO }}/clubber-internal-prod . + docker push ${{ secrets.DOCKER_REPO }}/clubber-internal-prod + - name: Copy docker-compose.yml to EC2 DEV if: contains(github.ref, 'dev') uses: appleboy/scp-action@master @@ -115,6 +164,7 @@ jobs: cd /home/ubuntu sudo docker rm -f $(docker ps -qa) sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-backend-dev + sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-internal-dev sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-front-dev sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-nginx-dev sudo docker-compose -f docker-compose-dev.yml up -d @@ -131,6 +181,7 @@ jobs: cd /home/ubuntu sudo docker rm -f $(docker ps -qa) sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-backend-prod + sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-internal-prod # [Internal] sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-front-prod sudo docker pull ${{ secrets.DOCKER_REPO }}/clubber-nginx-prod sudo docker-compose -f docker-compose-prod.yml up -d diff --git a/.gitignore b/.gitignore index 34f9c9311..26a8f23f2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 #YML filese -src/main/resources/*.yml +application*.yml src/main/resources/data.sql # User-specific stuff @@ -180,4 +180,7 @@ gradle-app.setting *.idea -# End of https://www.toptal.com/developers/gitignore/api/intellij,gradle,java \ No newline at end of file +**/build/generated/sources/querydsl/ss + +# End of https://www.toptal.com/developers/gitignore/api/intellij,gradle,java +Clubber-Domain/Clubber-Domain.iml diff --git a/Clubber-Common/Clubber-Common.iml b/Clubber-Common/Clubber-Common.iml new file mode 100644 index 000000000..c90834f2d --- /dev/null +++ b/Clubber-Common/Clubber-Common.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Clubber-Common/build.gradle b/Clubber-Common/build.gradle new file mode 100644 index 000000000..5fd67f337 --- /dev/null +++ b/Clubber-Common/build.gradle @@ -0,0 +1,7 @@ +jar { + enabled = true +} + +bootJar { + enabled = false +} \ No newline at end of file diff --git a/src/main/java/com/clubber/ClubberServer/global/common/consts/ClubberStatic.java b/Clubber-Common/src/main/java/com/clubber/common/consts/ClubberStatic.java similarity index 94% rename from src/main/java/com/clubber/ClubberServer/global/common/consts/ClubberStatic.java rename to Clubber-Common/src/main/java/com/clubber/common/consts/ClubberStatic.java index 343ccea39..33091d011 100644 --- a/src/main/java/com/clubber/ClubberServer/global/common/consts/ClubberStatic.java +++ b/Clubber-Common/src/main/java/com/clubber/common/consts/ClubberStatic.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.common.consts; +package com.clubber.common.consts; import lombok.AccessLevel; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/global/dto/ErrorResponse.java b/Clubber-Common/src/main/java/com/clubber/common/dto/ErrorResponse.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/global/dto/ErrorResponse.java rename to Clubber-Common/src/main/java/com/clubber/common/dto/ErrorResponse.java index 94233f0ed..7a5345813 100644 --- a/src/main/java/com/clubber/ClubberServer/global/dto/ErrorResponse.java +++ b/Clubber-Common/src/main/java/com/clubber/common/dto/ErrorResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.global.dto; +package com.clubber.common.dto; -import com.clubber.ClubberServer.global.exception.ErrorReason; +import com.clubber.common.exception.ErrorReason; import java.time.LocalDateTime; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/dto/SuccessResponse.java b/Clubber-Common/src/main/java/com/clubber/common/dto/SuccessResponse.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/global/dto/SuccessResponse.java rename to Clubber-Common/src/main/java/com/clubber/common/dto/SuccessResponse.java index 0e805b188..5de702104 100644 --- a/src/main/java/com/clubber/ClubberServer/global/dto/SuccessResponse.java +++ b/Clubber-Common/src/main/java/com/clubber/common/dto/SuccessResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.dto; +package com.clubber.common.dto; import java.time.LocalDateTime; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/exception/BaseErrorCode.java b/Clubber-Common/src/main/java/com/clubber/common/exception/BaseErrorCode.java similarity index 56% rename from src/main/java/com/clubber/ClubberServer/global/exception/BaseErrorCode.java rename to Clubber-Common/src/main/java/com/clubber/common/exception/BaseErrorCode.java index 4010f3a6a..b9ee76c8e 100644 --- a/src/main/java/com/clubber/ClubberServer/global/exception/BaseErrorCode.java +++ b/Clubber-Common/src/main/java/com/clubber/common/exception/BaseErrorCode.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.exception; +package com.clubber.common.exception; public interface BaseErrorCode { diff --git a/src/main/java/com/clubber/ClubberServer/global/exception/BaseException.java b/Clubber-Common/src/main/java/com/clubber/common/exception/BaseException.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/global/exception/BaseException.java rename to Clubber-Common/src/main/java/com/clubber/common/exception/BaseException.java index 44d4f9d80..d9ab8c791 100644 --- a/src/main/java/com/clubber/ClubberServer/global/exception/BaseException.java +++ b/Clubber-Common/src/main/java/com/clubber/common/exception/BaseException.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.exception; +package com.clubber.common.exception; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/exception/EnumTypeNotValidException.java b/Clubber-Common/src/main/java/com/clubber/common/exception/EnumTypeNotValidException.java similarity index 82% rename from src/main/java/com/clubber/ClubberServer/global/exception/EnumTypeNotValidException.java rename to Clubber-Common/src/main/java/com/clubber/common/exception/EnumTypeNotValidException.java index 7537818a5..2560e5a34 100644 --- a/src/main/java/com/clubber/ClubberServer/global/exception/EnumTypeNotValidException.java +++ b/Clubber-Common/src/main/java/com/clubber/common/exception/EnumTypeNotValidException.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.exception; +package com.clubber.common.exception; public class EnumTypeNotValidException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/global/exception/ErrorReason.java b/Clubber-Common/src/main/java/com/clubber/common/exception/ErrorReason.java similarity index 77% rename from src/main/java/com/clubber/ClubberServer/global/exception/ErrorReason.java rename to Clubber-Common/src/main/java/com/clubber/common/exception/ErrorReason.java index 5e8fe142c..f3552d4e8 100644 --- a/src/main/java/com/clubber/ClubberServer/global/exception/ErrorReason.java +++ b/Clubber-Common/src/main/java/com/clubber/common/exception/ErrorReason.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.exception; +package com.clubber.common.exception; import lombok.Builder; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/exception/GlobalErrorCode.java b/Clubber-Common/src/main/java/com/clubber/common/exception/GlobalErrorCode.java similarity index 94% rename from src/main/java/com/clubber/ClubberServer/global/exception/GlobalErrorCode.java rename to Clubber-Common/src/main/java/com/clubber/common/exception/GlobalErrorCode.java index 854be6452..a3daccb2e 100644 --- a/src/main/java/com/clubber/ClubberServer/global/exception/GlobalErrorCode.java +++ b/Clubber-Common/src/main/java/com/clubber/common/exception/GlobalErrorCode.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.exception; +package com.clubber.common.exception; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumDefaultMapperType.java b/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumDefaultMapperType.java similarity index 58% rename from src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumDefaultMapperType.java rename to Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumDefaultMapperType.java index 574dce8fe..96c2443f1 100644 --- a/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumDefaultMapperType.java +++ b/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumDefaultMapperType.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.mapper.enums; +package com.clubber.common.mapper.enums; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; +import com.clubber.common.vo.enums.EnumMapperVO; public interface EnumDefaultMapperType extends EnumMapperType { diff --git a/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumFaqMapperType.java b/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumFaqMapperType.java new file mode 100644 index 000000000..3f6d9836b --- /dev/null +++ b/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumFaqMapperType.java @@ -0,0 +1,14 @@ +package com.clubber.common.mapper.enums; + +import com.clubber.common.vo.enums.EnumFaQMapperVO; +import com.clubber.common.vo.enums.EnumMapperVO; + +public interface EnumFaqMapperType extends EnumMapperType { + + String getAnswer(); + + @Override + default EnumMapperVO createVO() { + return new EnumFaQMapperVO(this); + } +} diff --git a/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumImageMapperType.java b/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumImageMapperType.java new file mode 100644 index 000000000..66d265e35 --- /dev/null +++ b/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumImageMapperType.java @@ -0,0 +1,15 @@ +package com.clubber.common.mapper.enums; + +import com.clubber.common.vo.enums.EnumImageMapperVO; +import com.clubber.common.vo.enums.EnumMapperVO; + +public interface EnumImageMapperType extends EnumMapperType { + + String getImageUrl(); + + @Override + default EnumMapperVO createVO() { + return new EnumImageMapperVO(this); + } +} + diff --git a/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumMapper.java b/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumMapper.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumMapper.java rename to Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumMapper.java index 3ce2cc881..c91b861ea 100644 --- a/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumMapper.java +++ b/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumMapper.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.mapper.enums; +package com.clubber.common.mapper.enums; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; +import com.clubber.common.vo.enums.EnumMapperVO; import lombok.NoArgsConstructor; import java.util.*; diff --git a/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumMapperType.java b/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumMapperType.java new file mode 100644 index 000000000..a54b3babe --- /dev/null +++ b/Clubber-Common/src/main/java/com/clubber/common/mapper/enums/EnumMapperType.java @@ -0,0 +1,13 @@ +package com.clubber.common.mapper.enums; + +import com.clubber.common.vo.enums.EnumMapperVO; + +public interface EnumMapperType { + + String getCode(); + + String getTitle(); + + EnumMapperVO createVO(); +} + diff --git a/src/main/java/com/clubber/ClubberServer/global/vo/enums/EnumFaQMapperVO.java b/Clubber-Common/src/main/java/com/clubber/common/vo/enums/EnumFaQMapperVO.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/global/vo/enums/EnumFaQMapperVO.java rename to Clubber-Common/src/main/java/com/clubber/common/vo/enums/EnumFaQMapperVO.java index 7fd72788f..33499497c 100644 --- a/src/main/java/com/clubber/ClubberServer/global/vo/enums/EnumFaQMapperVO.java +++ b/Clubber-Common/src/main/java/com/clubber/common/vo/enums/EnumFaQMapperVO.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.vo.enums; +package com.clubber.common.vo.enums; -import com.clubber.ClubberServer.global.mapper.enums.EnumFaqMapperType; +import com.clubber.common.mapper.enums.EnumFaqMapperType; import lombok.Getter; @Getter diff --git a/src/main/java/com/clubber/ClubberServer/global/vo/enums/EnumImageMapperVO.java b/Clubber-Common/src/main/java/com/clubber/common/vo/enums/EnumImageMapperVO.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/global/vo/enums/EnumImageMapperVO.java rename to Clubber-Common/src/main/java/com/clubber/common/vo/enums/EnumImageMapperVO.java index a4806b7b2..b4de3f785 100644 --- a/src/main/java/com/clubber/ClubberServer/global/vo/enums/EnumImageMapperVO.java +++ b/Clubber-Common/src/main/java/com/clubber/common/vo/enums/EnumImageMapperVO.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.vo.enums; +package com.clubber.common.vo.enums; -import com.clubber.ClubberServer.global.mapper.enums.EnumImageMapperType; +import com.clubber.common.mapper.enums.EnumImageMapperType; import lombok.Getter; @Getter diff --git a/src/main/java/com/clubber/ClubberServer/global/vo/enums/EnumMapperVO.java b/Clubber-Common/src/main/java/com/clubber/common/vo/enums/EnumMapperVO.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/global/vo/enums/EnumMapperVO.java rename to Clubber-Common/src/main/java/com/clubber/common/vo/enums/EnumMapperVO.java index 7f83127b7..b17f24c43 100644 --- a/src/main/java/com/clubber/ClubberServer/global/vo/enums/EnumMapperVO.java +++ b/Clubber-Common/src/main/java/com/clubber/common/vo/enums/EnumMapperVO.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.vo.enums; +package com.clubber.common.vo.enums; -import com.clubber.ClubberServer.global.mapper.enums.EnumMapperType; +import com.clubber.common.mapper.enums.EnumMapperType; import lombok.Getter; @Getter diff --git a/Clubber-Domain/build.gradle b/Clubber-Domain/build.gradle new file mode 100644 index 000000000..7ff51028e --- /dev/null +++ b/Clubber-Domain/build.gradle @@ -0,0 +1,17 @@ +dependencies{ + implementation project(":Clubber-Common") + implementation 'com.fasterxml.jackson.core:jackson-databind' + implementation 'com.fasterxml.jackson.core:jackson-core' + implementation 'com.fasterxml.jackson.core:jackson-annotations' + + //TODO QueryDSL Projections & 외부 DTO 의존성 제거 + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' +} + +jar { + enabled = true +} + +bootJar { + enabled = false +} \ No newline at end of file diff --git a/src/main/java/com/clubber/ClubberServer/domain/common/BaseEntity.java b/Clubber-Domain/src/main/java/com/clubber/domain/common/BaseEntity.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/common/BaseEntity.java rename to Clubber-Domain/src/main/java/com/clubber/domain/common/BaseEntity.java index d848adab3..57447685c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/common/BaseEntity.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/common/BaseEntity.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.common; +package com.clubber.domain.common; import jakarta.persistence.Column; import jakarta.persistence.EntityListeners; diff --git a/src/main/java/com/clubber/ClubberServer/global/vo/image/ImageVO.java b/Clubber-Domain/src/main/java/com/clubber/domain/common/vo/ImageVO.java similarity index 80% rename from src/main/java/com/clubber/ClubberServer/global/vo/image/ImageVO.java rename to Clubber-Domain/src/main/java/com/clubber/domain/common/vo/ImageVO.java index dca032eb3..cbb0b6461 100644 --- a/src/main/java/com/clubber/ClubberServer/global/vo/image/ImageVO.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/common/vo/ImageVO.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.vo.image; +package com.clubber.domain.common.vo; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.IMAGE_SERVER; +import static com.clubber.common.consts.ClubberStatic.IMAGE_SERVER; import com.fasterxml.jackson.annotation.JsonValue; import jakarta.persistence.Embeddable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/Admin.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/Admin.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/domain/admin/domain/Admin.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/Admin.java index 170fef031..fd21f9d0b 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/Admin.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/Admin.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.admin.domain; +package com.clubber.domain.domains.admin.domain; -import com.clubber.ClubberServer.domain.admin.exception.AdminAlreadyDeletedException; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.domain.user.domain.AccountRole; -import com.clubber.ClubberServer.domain.user.domain.AccountState; +import com.clubber.domain.domains.admin.exception.AdminAlreadyDeletedException; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.domains.user.domain.AccountRole; +import com.clubber.domain.domains.user.domain.AccountState; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import lombok.*; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminPasswordFindAuth.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminPasswordFindAuth.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminPasswordFindAuth.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminPasswordFindAuth.java index 0309c688c..03d11ed77 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminPasswordFindAuth.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminPasswordFindAuth.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.admin.domain; +package com.clubber.domain.domains.admin.domain; -import com.clubber.ClubberServer.domain.admin.exception.AdminAlreadyEmailVerifiedException; -import com.clubber.ClubberServer.domain.admin.exception.AdminInvalidAuthCodeException; +import com.clubber.domain.domains.admin.exception.AdminAlreadyEmailVerifiedException; +import com.clubber.domain.domains.admin.exception.AdminInvalidAuthCodeException; import lombok.Builder; import lombok.Getter; import org.springframework.data.annotation.Id; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminRefreshToken.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminRefreshToken.java similarity index 94% rename from src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminRefreshToken.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminRefreshToken.java index fecf54621..d102e81f3 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminRefreshToken.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminRefreshToken.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.domain; +package com.clubber.domain.domains.admin.domain; import lombok.Builder; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminSignupAuth.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminSignupAuth.java similarity index 80% rename from src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminSignupAuth.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminSignupAuth.java index 8a5b270f4..ef0bdc556 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminSignupAuth.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminSignupAuth.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.admin.domain; +package com.clubber.domain.domains.admin.domain; -import com.clubber.ClubberServer.domain.admin.exception.AdminAlreadyEmailVerifiedException; -import com.clubber.ClubberServer.domain.admin.exception.AdminInvalidAuthCodeException; +import com.clubber.domain.domains.admin.exception.AdminAlreadyEmailVerifiedException; +import com.clubber.domain.domains.admin.exception.AdminInvalidAuthCodeException; import lombok.Builder; import lombok.Getter; import org.springframework.data.annotation.Id; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminUpdateEmailAuth.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminUpdateEmailAuth.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminUpdateEmailAuth.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminUpdateEmailAuth.java index 44bc601d6..6d38f4a29 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminUpdateEmailAuth.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminUpdateEmailAuth.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.admin.domain; +package com.clubber.domain.domains.admin.domain; -import com.clubber.ClubberServer.domain.admin.exception.AdminAlreadyEmailVerifiedException; -import com.clubber.ClubberServer.domain.admin.exception.AdminInvalidAuthCodeException; +import com.clubber.domain.domains.admin.exception.AdminAlreadyEmailVerifiedException; +import com.clubber.domain.domains.admin.exception.AdminInvalidAuthCodeException; import lombok.Builder; import lombok.Getter; import org.springframework.data.annotation.Id; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminUsernameFindAuth.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminUsernameFindAuth.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminUsernameFindAuth.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminUsernameFindAuth.java index 4ccb7e31a..125d3f0d7 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/AdminUsernameFindAuth.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/AdminUsernameFindAuth.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.admin.domain; +package com.clubber.domain.domains.admin.domain; -import com.clubber.ClubberServer.domain.admin.exception.AdminAlreadyEmailVerifiedException; -import com.clubber.ClubberServer.domain.admin.exception.AdminInvalidAuthCodeException; +import com.clubber.domain.domains.admin.exception.AdminAlreadyEmailVerifiedException; +import com.clubber.domain.domains.admin.exception.AdminInvalidAuthCodeException; import lombok.Builder; import lombok.Getter; import org.springframework.data.annotation.Id; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/Contact.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/Contact.java similarity index 93% rename from src/main/java/com/clubber/ClubberServer/domain/admin/domain/Contact.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/Contact.java index c0a486868..c07cfa589 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/Contact.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/Contact.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.domain; +package com.clubber.domain.domains.admin.domain; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/PendingAdminInfo.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/PendingAdminInfo.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/admin/domain/PendingAdminInfo.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/PendingAdminInfo.java index e9d95275c..77c2a4aaf 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/domain/PendingAdminInfo.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/domain/PendingAdminInfo.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.admin.domain; +package com.clubber.domain.domains.admin.domain; -import com.clubber.ClubberServer.domain.club.domain.*; -import com.clubber.ClubberServer.domain.common.BaseEntity; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.domains.club.domain.*; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import lombok.*; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminAlreadyDeletedException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminAlreadyDeletedException.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminAlreadyDeletedException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminAlreadyDeletedException.java index c1d172047..8147c52af 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminAlreadyDeletedException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminAlreadyDeletedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.exception; +package com.clubber.domain.domains.admin.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class AdminAlreadyDeletedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminAlreadyEmailVerifiedException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminAlreadyEmailVerifiedException.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminAlreadyEmailVerifiedException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminAlreadyEmailVerifiedException.java index afb3aa67d..cdedc29ff 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminAlreadyEmailVerifiedException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminAlreadyEmailVerifiedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.exception; +package com.clubber.domain.domains.admin.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class AdminAlreadyEmailVerifiedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminEqualsPreviousPasswordExcpetion.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminEqualsPreviousPasswordExcpetion.java similarity index 69% rename from src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminEqualsPreviousPasswordExcpetion.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminEqualsPreviousPasswordExcpetion.java index e63a192c8..79d75ded9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminEqualsPreviousPasswordExcpetion.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminEqualsPreviousPasswordExcpetion.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.exception; +package com.clubber.domain.domains.admin.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class AdminEqualsPreviousPasswordExcpetion extends BaseException { public static final BaseException EXCEPTION = new AdminEqualsPreviousPasswordExcpetion(); diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminErrorCode.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminErrorCode.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminErrorCode.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminErrorCode.java index 832b781aa..1ab471b3a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminErrorCode.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminErrorCode.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.admin.exception; +package com.clubber.domain.domains.admin.exception; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.ErrorReason; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.ErrorReason; import lombok.AllArgsConstructor; import org.springframework.http.HttpStatus; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminInvalidAuthCodeException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminInvalidAuthCodeException.java similarity index 52% rename from src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminInvalidAuthCodeException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminInvalidAuthCodeException.java index a62e2a17a..827b33dc1 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminInvalidAuthCodeException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminInvalidAuthCodeException.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.admin.exception; +package com.clubber.domain.domains.admin.exception; -import static com.clubber.ClubberServer.domain.admin.exception.AdminErrorCode.ADMIN_INVALID_AUTH_CODE; +import static com.clubber.domain.domains.admin.exception.AdminErrorCode.ADMIN_INVALID_AUTH_CODE; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class AdminInvalidAuthCodeException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminInvalidCurrentPasswordException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminInvalidCurrentPasswordException.java similarity index 70% rename from src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminInvalidCurrentPasswordException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminInvalidCurrentPasswordException.java index f955394af..399c48d0a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminInvalidCurrentPasswordException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminInvalidCurrentPasswordException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.exception; +package com.clubber.domain.domains.admin.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class AdminInvalidCurrentPasswordException extends BaseException { public static final BaseException EXCEPTION = new AdminInvalidCurrentPasswordException(); diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminLoginFailedException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminLoginFailedException.java similarity index 51% rename from src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminLoginFailedException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminLoginFailedException.java index 0fe50bc0f..ed34e27d1 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminLoginFailedException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminLoginFailedException.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.admin.exception; +package com.clubber.domain.domains.admin.exception; -import static com.clubber.ClubberServer.domain.admin.exception.AdminErrorCode.ADMIN_LOGIN_FAILED; +import static com.clubber.domain.domains.admin.exception.AdminErrorCode.ADMIN_LOGIN_FAILED; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class AdminLoginFailedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminNotFoundException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminNotFoundException.java index bb4902f88..621b8e9b0 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminNotFoundException.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.admin.exception; +package com.clubber.domain.domains.admin.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class AdminNotFoundException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminUsernameNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminUsernameNotFoundException.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminUsernameNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminUsernameNotFoundException.java index cc542522b..3ecb803eb 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/AdminUsernameNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/AdminUsernameNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.exception; +package com.clubber.domain.domains.admin.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class AdminUsernameNotFoundException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/InvalidApprovedStatusException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/InvalidApprovedStatusException.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/admin/exception/InvalidApprovedStatusException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/InvalidApprovedStatusException.java index 1bb924bec..47581955a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/exception/InvalidApprovedStatusException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/exception/InvalidApprovedStatusException.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.admin.exception; +package com.clubber.domain.domains.admin.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class InvalidApprovedStatusException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminPasswordFindAuthRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminPasswordFindAuthRepository.java similarity index 55% rename from src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminPasswordFindAuthRepository.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminPasswordFindAuthRepository.java index 66bc3ac5a..4082943f9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminPasswordFindAuthRepository.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminPasswordFindAuthRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.repository; +package com.clubber.domain.domains.admin.repository; -import com.clubber.ClubberServer.domain.admin.domain.AdminPasswordFindAuth; +import com.clubber.domain.domains.admin.domain.AdminPasswordFindAuth; import org.springframework.data.repository.CrudRepository; public interface AdminPasswordFindAuthRepository extends CrudRepository { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminRefreshTokenRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminRefreshTokenRepository.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminRefreshTokenRepository.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminRefreshTokenRepository.java index 36b9a112f..5ca160af8 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminRefreshTokenRepository.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminRefreshTokenRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.repository; +package com.clubber.domain.domains.admin.repository; -import com.clubber.ClubberServer.domain.admin.domain.AdminRefreshToken; +import com.clubber.domain.domains.admin.domain.AdminRefreshToken; import org.springframework.data.repository.CrudRepository; import java.util.Optional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminRepository.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminRepository.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminRepository.java index 625248a94..2ca089900 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminRepository.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminRepository.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.admin.repository; +package com.clubber.domain.domains.admin.repository; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.user.domain.AccountState; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.user.domain.AccountState; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminSignupAuthRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminSignupAuthRepository.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminSignupAuthRepository.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminSignupAuthRepository.java index b7f3fdfa2..31c259229 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminSignupAuthRepository.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminSignupAuthRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.repository; +package com.clubber.domain.domains.admin.repository; -import com.clubber.ClubberServer.domain.admin.domain.AdminSignupAuth; +import com.clubber.domain.domains.admin.domain.AdminSignupAuth; import java.util.Optional; import org.springframework.data.repository.CrudRepository; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminUpdateEmailAuthRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminUpdateEmailAuthRepository.java similarity index 55% rename from src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminUpdateEmailAuthRepository.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminUpdateEmailAuthRepository.java index d6dc80775..1fb723b84 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminUpdateEmailAuthRepository.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminUpdateEmailAuthRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.repository; +package com.clubber.domain.domains.admin.repository; -import com.clubber.ClubberServer.domain.admin.domain.AdminUpdateEmailAuth; +import com.clubber.domain.domains.admin.domain.AdminUpdateEmailAuth; import org.springframework.data.repository.CrudRepository; public interface AdminUpdateEmailAuthRepository extends CrudRepository { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminUsernameFindAuthRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminUsernameFindAuthRepository.java similarity index 55% rename from src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminUsernameFindAuthRepository.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminUsernameFindAuthRepository.java index 589033b19..0185c85b8 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/AdminUsernameFindAuthRepository.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/AdminUsernameFindAuthRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.repository; +package com.clubber.domain.domains.admin.repository; -import com.clubber.ClubberServer.domain.admin.domain.AdminUsernameFindAuth; +import com.clubber.domain.domains.admin.domain.AdminUsernameFindAuth; import org.springframework.data.repository.CrudRepository; public interface AdminUsernameFindAuthRepository extends CrudRepository { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/PendingAdminInfoRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/PendingAdminInfoRepository.java similarity index 62% rename from src/main/java/com/clubber/ClubberServer/domain/admin/repository/PendingAdminInfoRepository.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/PendingAdminInfoRepository.java index d275b3957..b97cdccad 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/repository/PendingAdminInfoRepository.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/admin/repository/PendingAdminInfoRepository.java @@ -1,6 +1,8 @@ -package com.clubber.ClubberServer.domain.admin.repository; +package com.clubber.domain.domains.admin.repository; -import com.clubber.ClubberServer.domain.admin.domain.PendingAdminInfo; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; + +import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; @@ -9,4 +11,6 @@ public interface PendingAdminInfoRepository extends JpaRepository findByUsername(String username); + + List findByIsApproved(boolean isApproved); } diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Club.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Club.java new file mode 100644 index 000000000..73b93d2d5 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Club.java @@ -0,0 +1,103 @@ +package com.clubber.domain.domains.club.domain; + +import com.clubber.domain.domains.club.exception.*; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.common.vo.ImageVO; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; +import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; +import org.hibernate.type.SqlTypes; + +@Builder +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class Club extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @NotNull + @Column(unique = true) + private String name; + + @NotNull + @JdbcTypeCode(SqlTypes.VARCHAR) + @Enumerated(EnumType.STRING) + @Builder.Default + private ClubType clubType = ClubType.ETC; + + @Column(length = 1000) + private String introduction; + + @NotNull + @JdbcTypeCode(SqlTypes.VARCHAR) + @Enumerated(EnumType.STRING) + @Builder.Default + private Hashtag hashtag = Hashtag.ETC; + + @NotNull + @JdbcTypeCode(SqlTypes.VARCHAR) + @Enumerated(EnumType.STRING) + @Builder.Default + private Division division = Division.ETC; + + @NotNull + @JdbcTypeCode(SqlTypes.VARCHAR) + @Enumerated(EnumType.STRING) + @Builder.Default + private College college = College.ETC; + + @NotNull + @JdbcTypeCode(SqlTypes.VARCHAR) + @Enumerated(EnumType.STRING) + @Builder.Default + private Department department = Department.ETC; + + @Embedded + private ImageVO imageUrl; + + private boolean isDeleted = false; + + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "clubInfo_id") + private ClubInfo clubInfo; + + @Builder.Default + private boolean isAgreeToReview = true; + + private boolean isAgreeToProvideInfo = false; + + public void updateClub(String imageKey, String introduction) { + this.imageUrl = ImageVO.valueOf(imageKey); + this.introduction = introduction; + } + + public void delete() { + if (this.isDeleted) { + throw ClubAlreadyDeletedException.EXCEPTION; + } + this.isDeleted = true; + } + + public void validateAgreeToReview() { + if (!isAgreeToReview) + throw ClubNotAgreeToProvideReviewException.EXCEPTION; + } + + public void disableReview() { + if (!isAgreeToReview) { + throw ClubReviewAlreadyDisabledException.EXCEPTION; + } + this.isAgreeToReview = false; + } + + public void enableReview() { + if (isAgreeToReview) { + throw ClubReviewAlreadyEnabledException.EXCEPTION; + } + this.isAgreeToReview = true; + } +} \ No newline at end of file diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/domain/ClubInfo.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/ClubInfo.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/club/domain/ClubInfo.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/ClubInfo.java index c2b52ba12..9afe204c9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/domain/ClubInfo.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/ClubInfo.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.domain; +package com.clubber.domain.domains.club.domain; -import com.clubber.ClubberServer.domain.common.BaseEntity; +import com.clubber.domain.common.BaseEntity; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/domain/ClubType.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/ClubType.java similarity index 76% rename from src/main/java/com/clubber/ClubberServer/domain/club/domain/ClubType.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/ClubType.java index e121737c0..2239b7960 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/domain/ClubType.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/ClubType.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.domain; +package com.clubber.domain.domains.club.domain; -import com.clubber.ClubberServer.global.mapper.enums.EnumDefaultMapperType; +import com.clubber.common.mapper.enums.EnumDefaultMapperType; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/domain/College.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/College.java similarity index 94% rename from src/main/java/com/clubber/ClubberServer/domain/club/domain/College.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/College.java index 93fe19cea..12dcf600b 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/domain/College.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/College.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.domain; +package com.clubber.domain.domains.club.domain; -import com.clubber.ClubberServer.global.mapper.enums.EnumDefaultMapperType; +import com.clubber.common.mapper.enums.EnumDefaultMapperType; import java.util.EnumSet; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/domain/Department.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Department.java similarity index 95% rename from src/main/java/com/clubber/ClubberServer/domain/club/domain/Department.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Department.java index 0f8d719c9..8ca33bf19 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/domain/Department.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Department.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.domain; +package com.clubber.domain.domains.club.domain; -import com.clubber.ClubberServer.global.mapper.enums.EnumDefaultMapperType; +import com.clubber.common.mapper.enums.EnumDefaultMapperType; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/domain/Division.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Division.java similarity index 80% rename from src/main/java/com/clubber/ClubberServer/domain/club/domain/Division.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Division.java index d421a0d3a..4b082a3a1 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/domain/Division.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Division.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.domain; +package com.clubber.domain.domains.club.domain; -import com.clubber.ClubberServer.global.mapper.enums.EnumDefaultMapperType; +import com.clubber.common.mapper.enums.EnumDefaultMapperType; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/domain/Hashtag.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Hashtag.java similarity index 82% rename from src/main/java/com/clubber/ClubberServer/domain/club/domain/Hashtag.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Hashtag.java index 26ef7de91..9240682e9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/domain/Hashtag.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/domain/Hashtag.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.club.domain; +package com.clubber.domain.domains.club.domain; -import com.clubber.ClubberServer.global.mapper.enums.EnumImageMapperType; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.common.mapper.enums.EnumImageMapperType; +import com.clubber.domain.common.vo.ImageVO; import lombok.AllArgsConstructor; @AllArgsConstructor diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubAlreadyDeletedException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubAlreadyDeletedException.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubAlreadyDeletedException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubAlreadyDeletedException.java index 0d7b6048b..483bcb039 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubAlreadyDeletedException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubAlreadyDeletedException.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.club.exception; +package com.clubber.domain.domains.club.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class ClubAlreadyDeletedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubErrorCode.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubErrorCode.java similarity index 74% rename from src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubErrorCode.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubErrorCode.java index e3126f49a..179745fce 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubErrorCode.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubErrorCode.java @@ -1,14 +1,16 @@ -package com.clubber.ClubberServer.domain.club.exception; +package com.clubber.domain.domains.club.exception; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.ErrorReason; -import lombok.AllArgsConstructor; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.ErrorReason; +import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; -@AllArgsConstructor +@RequiredArgsConstructor public enum ClubErrorCode implements BaseErrorCode { CLUB_ALREADY_DELETED(HttpStatus.BAD_REQUEST.value(), "CLUB_400_1", "이미 삭제된 동아리입니다."), + CLUB_REVIEW_ALREADY_DISABLED(HttpStatus.BAD_REQUEST.value(), "CLUB_400_2", "이미 리뷰 제공 기능이 비활성화 상태입니다."), + CLUB_REVIEW_ALREADY_ENABLED(HttpStatus.BAD_REQUEST.value(), "CLUB_400_3", "이미 리뷰 제공 기능이 활성화된 상태입니다"), CLUB_NOT_AGREED_TO_PROVIDE_INFO(HttpStatus.FORBIDDEN.value(), "CLUB_403_1", "정보 제공에 동의하지 않은 동아리입니다."), CLUB_NOT_AGREE_TO_PROVIDE_REVIEW(HttpStatus.FORBIDDEN.value(), "CLUB_403_2", "리뷰 제공에 동의하지 않은 동아리입니다."), SEARCHED_CLUB_NOT_FOUND(HttpStatus.NOT_FOUND.value(), "CLUB_404_1", "검색하신 동아리 및 소모임은 존재하지 않습니다."), @@ -17,8 +19,6 @@ public enum ClubErrorCode implements BaseErrorCode { CLUBID_NOT_FOUND(HttpStatus.NOT_FOUND.value(), "CLUB_404_4", "해당 clubid을 가진 동아리가 존재하지 않습니다."), HASHTAG_NOT_FOUND(HttpStatus.NOT_FOUND.value(), "CLUB_404_5", "해당 hashtag에 속한 동아리가 존재하지 않습니다."); - - private final Integer status; private final String code; private final String reason; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubIdNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubIdNotFoundException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubIdNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubIdNotFoundException.java index 4aca3b8ac..ce830398a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubIdNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubIdNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.exception; +package com.clubber.domain.domains.club.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class ClubIdNotFoundException extends BaseException { public static final BaseException EXCEPTION = new ClubIdNotFoundException(); diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubNotAgreeToProvideInfoException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubNotAgreeToProvideInfoException.java similarity index 70% rename from src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubNotAgreeToProvideInfoException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubNotAgreeToProvideInfoException.java index 3f2582e3d..b2d9b1a60 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubNotAgreeToProvideInfoException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubNotAgreeToProvideInfoException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.exception; +package com.clubber.domain.domains.club.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class ClubNotAgreeToProvideInfoException extends BaseException{ public static final BaseException EXCEPTION = new ClubNotAgreeToProvideInfoException(); diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubNotAgreeToProvideReviewException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubNotAgreeToProvideReviewException.java similarity index 70% rename from src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubNotAgreeToProvideReviewException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubNotAgreeToProvideReviewException.java index 597de039a..2ef67d138 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubNotAgreeToProvideReviewException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubNotAgreeToProvideReviewException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.exception; +package com.clubber.domain.domains.club.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class ClubNotAgreeToProvideReviewException extends BaseException { public static final BaseException EXCEPTION = new ClubNotAgreeToProvideReviewException(); diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubNotFoundException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubNotFoundException.java index e1c1f006f..a73fd7f7c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/exception/ClubNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.exception; +package com.clubber.domain.domains.club.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class ClubNotFoundException extends BaseException{ public static final BaseException EXCEPTION = new ClubNotFoundException(); diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubReviewAlreadyDisabledException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubReviewAlreadyDisabledException.java new file mode 100644 index 000000000..6e6c7e2f5 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubReviewAlreadyDisabledException.java @@ -0,0 +1,11 @@ +package com.clubber.domain.domains.club.exception; + +import com.clubber.common.exception.BaseException; + +public class ClubReviewAlreadyDisabledException extends BaseException { + public static BaseException EXCEPTION = new ClubReviewAlreadyDisabledException(); + + private ClubReviewAlreadyDisabledException() { + super(ClubErrorCode.CLUB_REVIEW_ALREADY_DISABLED); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubReviewAlreadyEnabledException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubReviewAlreadyEnabledException.java new file mode 100644 index 000000000..18269fc8c --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/ClubReviewAlreadyEnabledException.java @@ -0,0 +1,11 @@ +package com.clubber.domain.domains.club.exception; + +import com.clubber.common.exception.BaseException; + +public class ClubReviewAlreadyEnabledException extends BaseException { + public static final BaseException EXCEPTION = new ClubReviewAlreadyEnabledException(); + + private ClubReviewAlreadyEnabledException() { + super(ClubErrorCode.CLUB_REVIEW_ALREADY_ENABLED); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/exception/DepartmentNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/DepartmentNotFoundException.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/club/exception/DepartmentNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/DepartmentNotFoundException.java index 0cb569fc7..694d23044 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/exception/DepartmentNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/DepartmentNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.exception; +package com.clubber.domain.domains.club.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class DepartmentNotFoundException extends BaseException { public static final BaseException EXCEPTION = new DepartmentNotFoundException(); diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/exception/DivisionNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/DivisionNotFoundException.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/club/exception/DivisionNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/DivisionNotFoundException.java index 825082300..3da0af668 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/exception/DivisionNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/DivisionNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.exception; +package com.clubber.domain.domains.club.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class DivisionNotFoundException extends BaseException { public static final BaseException EXCEPTION = new DivisionNotFoundException(); diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/exception/HashtagNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/HashtagNotFoundException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/club/exception/HashtagNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/HashtagNotFoundException.java index 38fbe1faf..24f4005f9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/exception/HashtagNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/exception/HashtagNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.exception; +package com.clubber.domain.domains.club.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class HashtagNotFoundException extends BaseException { public static final BaseException EXCEPTION = new HashtagNotFoundException(); diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubInfoRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/repository/ClubInfoRepository.java similarity index 54% rename from src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubInfoRepository.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/repository/ClubInfoRepository.java index 75dab39b6..2e3a44e52 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubInfoRepository.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/repository/ClubInfoRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.repository; +package com.clubber.domain.domains.club.repository; -import com.clubber.ClubberServer.domain.club.domain.ClubInfo; +import com.clubber.domain.domains.club.domain.ClubInfo; import org.springframework.data.jpa.repository.JpaRepository; public interface ClubInfoRepository extends JpaRepository { diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/repository/ClubRepository.java similarity index 90% rename from src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubRepository.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/club/repository/ClubRepository.java index a633a90f3..ac061c002 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubRepository.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/club/repository/ClubRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.repository; +package com.clubber.domain.domains.club.repository; -import com.clubber.ClubberServer.domain.club.domain.*; +import com.clubber.domain.domains.club.domain.*; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -8,7 +8,7 @@ import java.util.List; import java.util.Optional; -public interface ClubRepository extends JpaRepository, ClubCustomRepository{ +public interface ClubRepository extends JpaRepository{ List findByDivisionAndIsDeleted(Division division, boolean isDeleted); diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/domain/Favorite.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/domain/Favorite.java similarity index 75% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/domain/Favorite.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/domain/Favorite.java index 36236024f..13f820489 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/domain/Favorite.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/domain/Favorite.java @@ -1,13 +1,13 @@ -package com.clubber.ClubberServer.domain.favorite.domain; - -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.exception.ClubNotFoundException; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.domain.favorite.exception.FavoriteAlreadyDeleteException; -import com.clubber.ClubberServer.domain.favorite.exception.FavoriteNotMatchClubException; -import com.clubber.ClubberServer.domain.favorite.exception.FavoriteNotMatchUserException; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.domain.user.exception.UserNotFoundException; +package com.clubber.domain.domains.favorite.domain; + +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.exception.ClubNotFoundException; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.domains.favorite.exception.FavoriteAlreadyDeleteException; +import com.clubber.domain.domains.favorite.exception.FavoriteNotMatchClubException; +import com.clubber.domain.domains.favorite.exception.FavoriteNotMatchUserException; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.domains.user.exception.UserNotFoundException; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; @@ -17,7 +17,7 @@ import java.util.Objects; -import static com.clubber.ClubberServer.domain.user.domain.AccountState.INACTIVE; +import static com.clubber.domain.domains.user.domain.AccountState.INACTIVE; @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/ClubAlreadyRegisterdFavoriteException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/ClubAlreadyRegisterdFavoriteException.java similarity index 69% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/exception/ClubAlreadyRegisterdFavoriteException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/ClubAlreadyRegisterdFavoriteException.java index 82c45036f..abf6d3a67 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/ClubAlreadyRegisterdFavoriteException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/ClubAlreadyRegisterdFavoriteException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.favorite.exception; +package com.clubber.domain.domains.favorite.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class ClubAlreadyRegisterdFavoriteException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteAlreadyDeleteException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteAlreadyDeleteException.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteAlreadyDeleteException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteAlreadyDeleteException.java index 4d609ac0b..1becd752d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteAlreadyDeleteException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteAlreadyDeleteException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.favorite.exception; +package com.clubber.domain.domains.favorite.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class FavoriteAlreadyDeleteException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteErrorCode.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteErrorCode.java similarity index 85% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteErrorCode.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteErrorCode.java index 0ac349307..757d4f5ed 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteErrorCode.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteErrorCode.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.favorite.exception; +package com.clubber.domain.domains.favorite.exception; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.ErrorReason; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.ErrorReason; import lombok.AllArgsConstructor; import org.springframework.http.HttpStatus; diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteNotFoundException.java similarity index 65% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteNotFoundException.java index ffcc337b2..60a241db4 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.favorite.exception; +package com.clubber.domain.domains.favorite.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class FavoriteNotFoundException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteNotMatchClubException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteNotMatchClubException.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteNotMatchClubException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteNotMatchClubException.java index 1adde5670..c64ae69e7 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteNotMatchClubException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteNotMatchClubException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.favorite.exception; +package com.clubber.domain.domains.favorite.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class FavoriteNotMatchClubException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteNotMatchUserException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteNotMatchUserException.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteNotMatchUserException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteNotMatchUserException.java index 855fcd0dc..cfe23c7bc 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/exception/FavoriteNotMatchUserException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/favorite/exception/FavoriteNotMatchUserException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.favorite.exception; +package com.clubber.domain.domains.favorite.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class FavoriteNotMatchUserException extends BaseException { diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/domain/Report.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/domain/Report.java new file mode 100644 index 000000000..ebf466c7e --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/domain/Report.java @@ -0,0 +1,71 @@ +package com.clubber.domain.domains.report.domain; + +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.domains.report.exception.ReviewAlreadyHiddenException; +import com.clubber.domain.domains.review.domain.Review; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.JdbcTypeCode; +import org.hibernate.type.SqlTypes; + +@Getter +@Entity +@Builder +@AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Report extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "review_id") + @NotNull + private Review review; + + @NotNull + @JdbcTypeCode(SqlTypes.VARCHAR) + @Enumerated(EnumType.STRING) + private ReportReason reportReason; + + private String detailReason; + + @JdbcTypeCode(SqlTypes.VARCHAR) + @Enumerated(EnumType.STRING) + @NotNull + @Builder.Default + private ReportStatus reportStatus = ReportStatus.PENDING; + + @Builder.Default + private boolean isDeleted = false; + + public static Report of(Review review, ReportReason reportReason, String detailReason) { + return Report.builder() + .review(review) + .reportReason(reportReason) + .detailReason(detailReason) + .build(); + } + + public void changeStatus(ReportStatus status) { + if (reportStatus != ReportStatus.PENDING) { + throw ReviewAlreadyHiddenException.EXCEPTION; + } + reportStatus = status; + } + +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/domain/ReportReason.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/domain/ReportReason.java new file mode 100644 index 000000000..711cc847e --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/domain/ReportReason.java @@ -0,0 +1,25 @@ +package com.clubber.domain.domains.report.domain; + +import com.clubber.common.mapper.enums.EnumDefaultMapperType; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum ReportReason implements EnumDefaultMapperType { + ABUSE("욕설 및 비방"), + FALSE_INFORMATION("허위 정보"), + ADVERTISEMENT_SPAM("광고 및 스팸"), + PERSONAL_INFORMATION("개인정보 포함"), + OTHER("기타"); + + private final String title; + + @Override + public String getCode() { + return name(); + } + + @Override + public String getTitle() { + return title; + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/domain/ReportStatus.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/domain/ReportStatus.java new file mode 100644 index 000000000..9b12eb95b --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/domain/ReportStatus.java @@ -0,0 +1,24 @@ +package com.clubber.domain.domains.report.domain; + +import com.clubber.common.mapper.enums.EnumDefaultMapperType; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum ReportStatus implements EnumDefaultMapperType { + PENDING("대기"), + APPROVED("승인"), + REJECTED("거절"); + + private final String title; + + @Override + public String getCode() { + return name(); + } + + @Override + public String getTitle() { + return title; + } + +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReportErrorCode.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReportErrorCode.java new file mode 100644 index 000000000..82b80a183 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReportErrorCode.java @@ -0,0 +1,31 @@ +package com.clubber.domain.domains.report.exception; + +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.ErrorReason; +import lombok.AllArgsConstructor; +import org.springframework.http.HttpStatus; + +@AllArgsConstructor +public enum ReportErrorCode implements BaseErrorCode { + + REVIEW_REPORT_ALREADY_HIDDEN(HttpStatus.BAD_REQUEST.value(), "REVIEW_REPORT_400_1", + "이미 숨김 처리된 리뷰입니다."), + DETAIL_REASON_REQUIRED(HttpStatus.BAD_REQUEST.value(), "REVIEW_REPORT_400_2", + "신고 사유를 입력해야합니다."), + REVIEW_REPORT_NOT_FOUND(HttpStatus.NOT_FOUND.value(), "REVIEW_REPORT_404_1", + "존재하지 않는 신고내역입니다."); + + + private final Integer status; + private final String code; + private final String reason; + + @Override + public ErrorReason getErrorReason() { + return ErrorReason.builder() + .status(status) + .code(code) + .reason(reason) + .build(); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReportNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReportNotFoundException.java new file mode 100644 index 000000000..06eff5c98 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReportNotFoundException.java @@ -0,0 +1,12 @@ +package com.clubber.domain.domains.report.exception; + +import com.clubber.common.exception.BaseException; + +public class ReportNotFoundException extends BaseException { + + public static final BaseException EXCEPTION = new ReportNotFoundException(); + + public ReportNotFoundException() { + super(ReportErrorCode.REVIEW_REPORT_NOT_FOUND); + } +} \ No newline at end of file diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReviewAlreadyHiddenException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReviewAlreadyHiddenException.java new file mode 100644 index 000000000..2f7004b98 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReviewAlreadyHiddenException.java @@ -0,0 +1,14 @@ +package com.clubber.domain.domains.report.exception; + +import com.clubber.common.exception.BaseException; + +public class ReviewAlreadyHiddenException extends BaseException { + + public static final BaseException EXCEPTION = new ReviewAlreadyHiddenException(); + + public ReviewAlreadyHiddenException() { + super(ReportErrorCode.REVIEW_REPORT_NOT_FOUND); + } +} + + diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReviewDetailReasonRequiredException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReviewDetailReasonRequiredException.java new file mode 100644 index 000000000..4fa3a316e --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/exception/ReviewDetailReasonRequiredException.java @@ -0,0 +1,12 @@ +package com.clubber.domain.domains.report.exception; + +import com.clubber.common.exception.BaseException; + +public class ReviewDetailReasonRequiredException extends BaseException { + + public static final BaseException EXCEPTION = new ReviewDetailReasonRequiredException(); + + public ReviewDetailReasonRequiredException() { + super(ReportErrorCode.DETAIL_REASON_REQUIRED); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/implement/ReportReader.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/implement/ReportReader.java new file mode 100644 index 000000000..22e6a6773 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/implement/ReportReader.java @@ -0,0 +1,41 @@ +package com.clubber.domain.domains.report.implement; + +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.report.domain.ReportStatus; +import com.clubber.domain.domains.report.exception.ReportNotFoundException; +import com.clubber.domain.domains.report.repository.ReportRepository; +import com.clubber.domain.domains.report.vo.GetOneReportResponse; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class ReportReader { + + private final ReportRepository reportRepository; + + public Report findById(Long id) { + return reportRepository.findByIdAndIsDeletedFalse(id) + .orElseThrow(() -> ReportNotFoundException.EXCEPTION); + } + + public Page findReportsPage(Pageable pageable){ + return reportRepository.findReports(pageable); + } + + public Report findByIdAndStatus(Long id, ReportStatus status) { + return reportRepository.findByIdAndIsDeletedFalseAndReportStatus(id, status) + .orElseThrow(() -> ReportNotFoundException.EXCEPTION); + } + + public List findByReviewId(Long reviewId) { + return reportRepository.findByReviewIdAndIsDeletedFalse(reviewId); + } + + public List findAlwaysNextReport(Long reportId, Long reviewId){ + return reportRepository.findNextReport(reportId,reviewId); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/implement/ReportValidator.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/implement/ReportValidator.java new file mode 100644 index 000000000..f24dd4e2f --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/implement/ReportValidator.java @@ -0,0 +1,22 @@ +package com.clubber.domain.domains.report.implement; + +import com.clubber.domain.domains.report.domain.ReportStatus; +import com.clubber.domain.domains.report.exception.ReportNotFoundException; +import com.clubber.domain.domains.report.repository.ReportRepository; +import com.clubber.domain.domains.review.domain.Review; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class ReportValidator { + private final ReportRepository reportRepository; + + public void hasPendingReport(Review review) { + if (!reportRepository.existsByReviewAndReportStatusAndIsDeletedFalse(review, + ReportStatus.PENDING)){ + throw ReportNotFoundException.EXCEPTION; + } + } + +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/repository/ReportCustomRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/repository/ReportCustomRepository.java new file mode 100644 index 000000000..19b3a0190 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/repository/ReportCustomRepository.java @@ -0,0 +1,15 @@ +package com.clubber.domain.domains.report.repository; + +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.report.vo.GetOneReportResponse; +import java.util.List; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +public interface ReportCustomRepository { + + List findNextReport(Long reportId, Long reviewId); + + Page findReports(Pageable pageable); + +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/repository/ReportCustomRepositoryImpl.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/repository/ReportCustomRepositoryImpl.java new file mode 100644 index 000000000..4272606fd --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/repository/ReportCustomRepositoryImpl.java @@ -0,0 +1,119 @@ +package com.clubber.domain.domains.report.repository; + +import static com.clubber.domain.domains.report.domain.QReport.report; + +import com.clubber.domain.domains.club.domain.QClub; +import com.clubber.domain.domains.report.domain.QReport; +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.report.vo.GetOneReportResponse; +import com.clubber.domain.domains.review.domain.QReview; +import com.querydsl.core.Tuple; +import com.querydsl.core.group.GroupBy; +import com.querydsl.core.types.dsl.BooleanExpression; +import com.querydsl.jpa.JPAExpressions; +import com.querydsl.jpa.impl.JPAQuery; +import com.querydsl.jpa.impl.JPAQueryFactory; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.support.PageableExecutionUtils; + +@RequiredArgsConstructor +public class ReportCustomRepositoryImpl implements ReportCustomRepository { + + private final JPAQueryFactory queryFactory; + + @Override + public List findNextReport(Long reportId, Long reviewId) { + return queryFactory.selectFrom(report) + .where( + report.isDeleted.eq(false), + report.review.id.eq(reviewId), + ltReportId(reportId) + ) + .orderBy(report.id.desc()) + .limit(2) + .fetch(); + } + + private BooleanExpression ltReportId(Long reportId) { + if (reportId == null) { + return null; + } + return report.id.lt(reportId); + } + + @Override + public Page findReports(Pageable pageable) { + + QReport report = QReport.report; + QReport newer = new QReport("newer"); + QReport rc = new QReport("rc"); + QReview review = QReview.review; + QClub club = QClub.club; + + List latest = queryFactory + .selectFrom(report) + .join(report.review, review).fetchJoin() + .join(review.club, club).fetchJoin() + .where( + report.isDeleted.eq(false), + JPAExpressions.selectOne().from(newer) + .where( + newer.isDeleted.eq(false), + newer.review.id.eq(report.review.id), + newer.createdAt.gt(report.createdAt) + .or(newer.createdAt.eq(report.createdAt) + .and(newer.id.gt(report.id))) + ).notExists() + ) + .orderBy(report.createdAt.desc(), report.id.desc()) + .offset(pageable.getOffset()) + .limit(pageable.getPageSize()) + .fetch(); + + List reviewIds = latest.stream() + .map(r -> r.getReview().getId()) + .toList(); + + final Map countMap; + if (reviewIds.isEmpty()) { + countMap = Map.of(); + } else { + List cntTuples = queryFactory + .select(rc.review.id, rc.id.count()) + .from(rc) + .where( + rc.isDeleted.eq(false), + rc.review.id.in(reviewIds) + ) + .groupBy(rc.review.id) + .fetch(); + + countMap = cntTuples.stream() + .collect(Collectors.toMap( + t -> t.get(rc.review.id), + t -> t.get(rc.id.count()) + )); + } + + List responses = latest.stream() + .map(r -> GetOneReportResponse.of( + r, + countMap.getOrDefault(r.getReview().getId(), 0L).intValue() + )) + .toList(); + + JPAQuery countQuery = queryFactory + .select(report.review.id.countDistinct()) + .from(report) + .where(report.isDeleted.eq(false)); + + return PageableExecutionUtils.getPage(responses, pageable, countQuery::fetchOne); + } + +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/repository/ReportRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/repository/ReportRepository.java new file mode 100644 index 000000000..431fa41a5 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/repository/ReportRepository.java @@ -0,0 +1,17 @@ +package com.clubber.domain.domains.report.repository; + +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.report.domain.ReportStatus; +import com.clubber.domain.domains.review.domain.Review; +import java.util.List; +import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ReportRepository extends JpaRepository, ReportCustomRepository { + + Optional findByIdAndIsDeletedFalse(Long id); + Optional findByIdAndIsDeletedFalseAndReportStatus(Long id, ReportStatus reportStatus); + List findByReviewIdAndIsDeletedFalse(Long reviewId); + boolean existsByReviewAndReportStatusAndIsDeletedFalse(Review review, ReportStatus reportStatus); + boolean existsByReviewAndIsDeletedFalse(Review review); +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/vo/GetOneReportResponse.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/vo/GetOneReportResponse.java new file mode 100644 index 000000000..8fdd184e3 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/report/vo/GetOneReportResponse.java @@ -0,0 +1,49 @@ +package com.clubber.domain.domains.report.vo; + +import com.clubber.domain.domains.report.domain.Report; +import io.swagger.v3.oas.annotations.media.Schema; +import java.time.LocalDateTime; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class GetOneReportResponse { + + @Schema(description = "리뷰 id", example = "1") + private final Long reviewId; + + @Schema(description = "동아리명", example = "클러버") + private final String clubName; + + @Schema(description = "신고 횟수", example = "2") + private final Integer reportedNum; + + @Schema(description = "리뷰 내용", example = "좋아요") + private final String content; + + @Schema(description = "신고사유", example = "허위 정보") + private final String reportReason; + + @Schema(description = "신고일", example = "2025-07-06T10:00:00") + private final LocalDateTime reportedAt; + + @Schema(description = "처리 상태", example = "승인") + private final String reportStatus; + + + public static GetOneReportResponse of(Report report, Integer reportedNum) { + return GetOneReportResponse.builder() + .reviewId(report.getReview().getId()) + .clubName(report.getReview().getClub().getName()) + .reportedNum(reportedNum) + .content(report.getReview().getContent()) + .reportReason(report.getReportReason().getTitle()) + .reportedAt(report.getCreatedAt()) + .reportStatus(report.getReportStatus().getTitle()) + .build(); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/Keyword.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/Keyword.java new file mode 100644 index 000000000..37dbf1619 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/Keyword.java @@ -0,0 +1,82 @@ +package com.clubber.domain.domains.review.domain; + +import com.clubber.common.mapper.enums.EnumDefaultMapperType; +import com.fasterxml.jackson.annotation.JsonCreator; + +import java.util.Arrays; + +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum Keyword implements EnumDefaultMapperType { + // 활동 스타일 + ACTIVE("🔥 활동이 활발해요"), + FREE("🔥 자유로워요"), + SYSTEMATIC("🔥 체계적으로 운영돼요"), + AUTONOMOUS("🔥 자율성이 높아요"), + STABLE("🔥 운영이 탄탄해요"), + + // 분위기 + FRIENDLY("👥 친목활동이 많아요"), + COMFORTABLE("🔥 편안한 분위기에요"), + HIERARCHICAL("🔥 선후배 관계가 수평적이에요"), + WELCOMING("🔥 처음 와도 잘 적응 할 수 있어요"), + TEAM_ACTIVITY("🔥 조 활동이 있어요"), + + // 활동 + DIVERSE_ACTIVITY("🔥 활동이 다양해요"), + PRACTICAL("🔥 실무/프로젝트 중심이에요"), + MAJOR_RELATED("🔥 전공과 연계돼요"), + CAREER_HELPFUL("🔥 대외활동/커리어에 도움이 됐어요"), + REGULAR_MEETING("🔥 정기 모임이 있어요"), + + // 비용 + LOW_FEE("💵 회비가 저렴해요"), + FAIR_FEE("💵 회비가 적당해요"), + NO_FEE("💵 회비가 아깝지 않아요"), + FUNDED("💵 활동비가 충분히 지원돼요"), + + // 운영진 + GOOD_MANAGEMENT("🔥 운영진이 일을 잘해요"), + GOOD_COMMUNICATION("🔥 소통이 원활해요"), + TRANSPARENT("🔥 투명하게 운영돼요"), + RESPONSIBLE("🔥 회장이 책임감이 있어요"), + + // 시간/참여도 + LOW_TIME("🔥 활동 시간이 적어요"), + EXAM_FRIENDLY("🔥 시험 기간에 배려해줘요"), + FLEXIBLE_ATTENDANCE("🔥 참여가 자유로워요"), + HIGH_ATTENDANCE("🔥 참여 비중이 높아요"), + + // 가입/선발 + INTERVIEW("🔥 면접이 있어요"), + REQUIRE_SPEC("🔥 스펙이 필요해요"), + SELF_INTRO("🔥 자기소개서를 제출했어요"), + LOW_COMPETITION("🔥 진입장벽이 낮아요"), + + // 구성원 + MIXED_GRADES("🔥 다양한 학년이 섞여 있어요"), + MOSTLY_FRESHMEN("🔥 대부분 1학년이에요"), + SMALL_GROUP("🔥 소규모 동아리에요"), + LARGE_GROUP("🔥 대규모 동아리에요"); + + private final String title; + + @JsonCreator + public static Keyword from(String req) { + return Arrays.stream(Keyword.values()) + .filter(keyword -> keyword.getCode().equals(req)) + .findAny() + .orElse(null); + } + + @Override + public String getCode() { + return name(); + } + + @Override + public String getTitle() { + return title; + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReportStatus.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReportStatus.java new file mode 100644 index 000000000..5f8793ff9 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReportStatus.java @@ -0,0 +1,6 @@ +package com.clubber.domain.domains.review.domain; + +public enum ReportStatus { + HIDDEN, + VISIBLE +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/Review.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/Review.java new file mode 100644 index 000000000..0c6965bb5 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/Review.java @@ -0,0 +1,103 @@ +package com.clubber.domain.domains.review.domain; + +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.review.exception.ReviewAlreadyDeletedException; +import com.clubber.domain.domains.user.domain.User; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; +import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; +import org.hibernate.type.SqlTypes; + +import java.util.ArrayList; +import java.util.List; + +@Builder +@AllArgsConstructor(access = AccessLevel.PROTECTED) +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +@Table(indexes = @Index(name = "idx_review_club_id_approved_status_id_desc", + columnList = "club_id, approved_status, id desc")) +public class Review extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "club_id") + @NotNull + private Club club; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + @NotNull + private User user; + + private String content; + + @JdbcTypeCode(SqlTypes.VARCHAR) + @Enumerated(EnumType.STRING) + @NotNull + @Builder.Default + private ReportStatus reportStatus = ReportStatus.VISIBLE; + + @Builder.Default + private boolean isDeleted = false; + + @Builder.Default + @OneToMany(mappedBy = "review", cascade = CascadeType.ALL) + private List reviewKeywords = new ArrayList<>(); + + @Builder.Default + @OneToMany(mappedBy = "review", cascade = CascadeType.ALL) + private List reviewLikes = new ArrayList<>(); + + @Builder.Default + @OneToMany(mappedBy = "review", cascade = CascadeType.ALL) + private List reviewReports = new ArrayList<>(); + + @OneToOne(mappedBy = "review") + private ReviewReply reviewReply; + + public static Review of(User user, Club club, String content) { + return Review.builder() + .user(user) + .club(club) + .content(content) + .build(); + } + + //양방향 매핑 메서드 + public void addKeywords(List keywords) { + keywords.forEach(keyword -> { + ReviewKeyword reviewKeyword = ReviewKeyword.of(keyword, this); + this.reviewKeywords.add(reviewKeyword); + }); + } + + public void updateContent(String content) { + this.content = content; + } + + public void delete() { + if (isDeleted) { + throw ReviewAlreadyDeletedException.EXCEPTION; + } + this.isDeleted = true; + } + + public void hide() { + this.reportStatus = ReportStatus.HIDDEN; + } + + public String getContentForPublic() { + if (reportStatus == ReportStatus.HIDDEN) { + return null; + } + return content; + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewFilterType.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewFilterType.java new file mode 100644 index 000000000..b745e7294 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewFilterType.java @@ -0,0 +1,5 @@ +package com.clubber.domain.domains.review.domain; + +public enum ReviewFilterType { + NOT_REPLYED +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/domain/ReviewKeyword.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewKeyword.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/review/domain/ReviewKeyword.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewKeyword.java index cee8631f1..d8bd7dcf4 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/domain/ReviewKeyword.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewKeyword.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.review.domain; +package com.clubber.domain.domains.review.domain; -import com.clubber.ClubberServer.domain.common.BaseEntity; +import com.clubber.domain.common.BaseEntity; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewKeywordCategory.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewKeywordCategory.java new file mode 100644 index 000000000..ad6df0c0c --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewKeywordCategory.java @@ -0,0 +1,80 @@ +package com.clubber.domain.domains.review.domain; + +import com.clubber.common.mapper.enums.EnumDefaultMapperType; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +import java.util.EnumSet; +import java.util.Set; + +import static com.clubber.domain.domains.review.domain.Keyword.*; + +@Getter +@RequiredArgsConstructor +public enum ReviewKeywordCategory implements EnumDefaultMapperType { + + ACTIVITY_STYLE("활동 스타일", EnumSet.of( + ACTIVE, + FREE, + SYSTEMATIC, + AUTONOMOUS, + STABLE + )), + CULTURE("분위기", EnumSet.of( + FRIENDLY, + COMFORTABLE, + HIERARCHICAL, + WELCOMING, + TEAM_ACTIVITY + )), + ACTIVITY("활동", EnumSet.of( + DIVERSE_ACTIVITY, + PRACTICAL, + MAJOR_RELATED, + CAREER_HELPFUL, + REGULAR_MEETING + )), + COST("비용", EnumSet.of( + LOW_FEE, + FAIR_FEE, + NO_FEE, + FUNDED + )), + MANAGE("운영진", EnumSet.of( + GOOD_MANAGEMENT, + GOOD_COMMUNICATION, + TRANSPARENT, + RESPONSIBLE + )), + TIME_AND_ENGAGEMENT("시간/참여도", EnumSet.of( + LOW_TIME, + EXAM_FRIENDLY, + FLEXIBLE_ATTENDANCE, + HIGH_ATTENDANCE + )), + RECRUITMENT("가입/선발", EnumSet.of( + INTERVIEW, + REQUIRE_SPEC, + SELF_INTRO, + LOW_COMPETITION + )), + MEMBER("구성원", EnumSet.of( + MIXED_GRADES, + MOSTLY_FRESHMEN, + SMALL_GROUP, + LARGE_GROUP + )); + + private final String title; + private final Set reviewKeywords; + + @Override + public String getCode() { + return name(); + } + + @Override + public String getTitle() { + return title; + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewLike.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewLike.java new file mode 100644 index 000000000..cdfafb6fa --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewLike.java @@ -0,0 +1,31 @@ +package com.clubber.domain.domains.review.domain; + +import com.clubber.domain.domains.user.domain.User; +import jakarta.persistence.*; +import lombok.*; + +@Builder +@AllArgsConstructor(access = AccessLevel.PROTECTED) +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class ReviewLike { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + private User user; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "review_id") + private Review review; + + @Builder.Default + private boolean isDeleted = false; + + public void delete() { + isDeleted = true; + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewReply.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewReply.java new file mode 100644 index 000000000..281773d0e --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewReply.java @@ -0,0 +1,31 @@ +package com.clubber.domain.domains.review.domain; + +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.domains.admin.domain.Admin; +import jakarta.persistence.*; +import lombok.*; + +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +@Builder +@Entity +public class ReviewReply extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String content; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "admin_id") + private Admin admin; + + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "review_id") + private Review review; + + @Builder.Default + private boolean isDeleted = false; +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewSortType.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewSortType.java new file mode 100644 index 000000000..ee1d79e16 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/domain/ReviewSortType.java @@ -0,0 +1,5 @@ +package com.clubber.domain.domains.review.domain; + +public enum ReviewSortType { + LIKE, ASC, DESC +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewAlreadyDeletedException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewAlreadyDeletedException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewAlreadyDeletedException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewAlreadyDeletedException.java index 6f600f1bd..f1c575a0c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewAlreadyDeletedException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewAlreadyDeletedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.review.exception; +package com.clubber.domain.domains.review.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class ReviewAlreadyDeletedException extends BaseException { diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewAlreadyHiddenException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewAlreadyHiddenException.java new file mode 100644 index 000000000..cdf15817e --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewAlreadyHiddenException.java @@ -0,0 +1,13 @@ +package com.clubber.domain.domains.review.exception; + +import com.clubber.common.exception.BaseException; + +public class ReviewAlreadyHiddenException extends BaseException { + + public static final BaseException EXCEPTION = new ReviewAlreadyHiddenException(); + + public ReviewAlreadyHiddenException() { + super(ReviewErrorCode.REVIEW_ALREADY_HIDDEN); + } +} + diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewAlreadyLikedException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewAlreadyLikedException.java new file mode 100644 index 000000000..19464b623 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewAlreadyLikedException.java @@ -0,0 +1,11 @@ +package com.clubber.domain.domains.review.exception; + +import com.clubber.common.exception.BaseException; + +public class ReviewAlreadyLikedException extends BaseException { + public static final BaseException EXCEPTION = new ReviewAlreadyLikedException(); + + public ReviewAlreadyLikedException() { + super(ReviewErrorCode.REVIEW_ALREADY_LIKED); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewClubNotMatchException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewClubNotMatchException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewClubNotMatchException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewClubNotMatchException.java index 67ea351eb..83e6b52ee 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewClubNotMatchException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewClubNotMatchException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.review.exception; +package com.clubber.domain.domains.review.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class ReviewClubNotMatchException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewEnumNotMatchedException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewEnumNotMatchedException.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewEnumNotMatchedException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewEnumNotMatchedException.java index 72ed837d0..ff7da818b 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewEnumNotMatchedException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewEnumNotMatchedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.review.exception; +package com.clubber.domain.domains.review.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class ReviewEnumNotMatchedException extends BaseException { diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewErrorCode.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewErrorCode.java new file mode 100644 index 000000000..82a9a9e29 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewErrorCode.java @@ -0,0 +1,37 @@ +package com.clubber.domain.domains.review.exception; + +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.ErrorReason; +import lombok.AllArgsConstructor; +import org.springframework.http.HttpStatus; + +@AllArgsConstructor +public enum ReviewErrorCode implements BaseErrorCode { + USER_ALREADY_REVIEWED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_1", "이미 리뷰를 등록한 동아리입니다."), + REVIEW_CLUB_NOT_MATCHED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_2", "리뷰와 동아리가 일치하지 않습니다"), + REVIEW_KEYWORD_ENUM_NOT_MATCHED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_3", + "잘못된 리뷰 키워드 값입니다."), + USER_REVIEWS_NOT_FOUND(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_4", "적절하지 않은 리뷰 ID입니다."), + REVIEW_ALREADY_DELETED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_5", "이미 삭제된 리뷰입니다."), + REVIEW_ALREADY_VERIFIED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_6", "이미 인증된 리뷰입니다."), + REVIEW_USER_NOT_MATCHED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_7", "리뷰의 작성자와 일치하지 않습니다"), + REVIEW_ALREADY_LIKED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_8", "이미 좋아요를 표시한 리뷰입니다."), + REVIEW_SELF_REPORT_NOT_ALLOWED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_9", "자신이 작성한 리뷰는 신고할 수 없습니다."), + REVIEW_ALREADY_HIDDEN(HttpStatus.BAD_REQUEST.value(),"REVIEW_400_10", "이미 숨김 처리된 리뷰입니다."), + REVIEW_HAS_REPORT(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_11", "해당 리뷰에 대한 신고 내역이 존재하므로 수정이 불가능합니다."), + REVIEW_NOT_FOUND(HttpStatus.NO_CONTENT.value(), "REVIEW_404_1", "존재하지 않는 리뷰입니다."), + REVIEW_LIKE_NOT_FOUND(HttpStatus.NO_CONTENT.value(), "REVIEW_404_2", "좋아요하지 않은 리뷰입니다"); + + private final Integer status; + private final String code; + private final String reason; + + @Override + public ErrorReason getErrorReason() { + return ErrorReason.builder() + .status(status) + .code(code) + .reason(reason) + .build(); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewHasReportException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewHasReportException.java new file mode 100644 index 000000000..fa062693f --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewHasReportException.java @@ -0,0 +1,11 @@ +package com.clubber.domain.domains.review.exception; + +import com.clubber.common.exception.BaseException; + +public class ReviewHasReportException extends BaseException { + public static final BaseException EXCEPTION = new ReviewHasReportException(); + + private ReviewHasReportException() { + super(ReviewErrorCode.REVIEW_HAS_REPORT); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewLikeNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewLikeNotFoundException.java new file mode 100644 index 000000000..5be0171b9 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewLikeNotFoundException.java @@ -0,0 +1,12 @@ +package com.clubber.domain.domains.review.exception; + +import com.clubber.common.exception.BaseException; + +public class ReviewLikeNotFoundException extends BaseException { + + public static final BaseException EXCEPTION = new ReviewLikeNotFoundException(); + + private ReviewLikeNotFoundException() { + super(ReviewErrorCode.REVIEW_LIKE_NOT_FOUND); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewNotFoundException.java similarity index 50% rename from src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewNotFoundException.java index 602e9f7de..d00cc31c8 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewNotFoundException.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.review.exception; +package com.clubber.domain.domains.review.exception; -import static com.clubber.ClubberServer.domain.review.exception.ReviewErrorCode.REVIEW_NOT_FOUND; +import static com.clubber.domain.domains.review.exception.ReviewErrorCode.REVIEW_NOT_FOUND; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class ReviewNotFoundException extends BaseException { diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewSelfReportNotAllowedException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewSelfReportNotAllowedException.java new file mode 100644 index 000000000..86417bb09 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewSelfReportNotAllowedException.java @@ -0,0 +1,13 @@ +package com.clubber.domain.domains.review.exception; + +import com.clubber.common.exception.BaseException; + +public class ReviewSelfReportNotAllowedException extends BaseException { + + public static final BaseException EXCEPTION = new ReviewSelfReportNotAllowedException(); + + public ReviewSelfReportNotAllowedException() { + super(ReviewErrorCode.REVIEW_SELF_REPORT_NOT_ALLOWED); + } + +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewUserNotMatchException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewUserNotMatchException.java new file mode 100644 index 000000000..356fb070b --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/ReviewUserNotMatchException.java @@ -0,0 +1,11 @@ +package com.clubber.domain.domains.review.exception; + +import com.clubber.common.exception.BaseException; + +public class ReviewUserNotMatchException extends BaseException { + public static final BaseException EXCEPTION = new ReviewUserNotMatchException(); + + public ReviewUserNotMatchException() { + super(ReviewErrorCode.REVIEW_USER_NOT_MATCHED); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/exception/UserAlreadyReviewedException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/UserAlreadyReviewedException.java similarity index 53% rename from src/main/java/com/clubber/ClubberServer/domain/review/exception/UserAlreadyReviewedException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/UserAlreadyReviewedException.java index ddef7c49c..b1a54f6d8 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/exception/UserAlreadyReviewedException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/UserAlreadyReviewedException.java @@ -1,12 +1,12 @@ -package com.clubber.ClubberServer.domain.review.exception; +package com.clubber.domain.domains.review.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class UserAlreadyReviewedException extends BaseException { public static final BaseException EXCEPTION = new UserAlreadyReviewedException(); private UserAlreadyReviewedException() { - super(ReviewErrorCode.USER_ALREADY_REVIEWD); + super(ReviewErrorCode.USER_ALREADY_REVIEWED); } } diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/exception/UserReviewsNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/UserReviewsNotFoundException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/review/exception/UserReviewsNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/UserReviewsNotFoundException.java index fd6bf8542..5a6bd9e84 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/exception/UserReviewsNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/exception/UserReviewsNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.review.exception; +package com.clubber.domain.domains.review.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class UserReviewsNotFoundException extends BaseException { diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/implement/ReviewReader.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/implement/ReviewReader.java new file mode 100644 index 000000000..5fe77d67d --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/implement/ReviewReader.java @@ -0,0 +1,28 @@ +package com.clubber.domain.domains.review.implement; + +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.domain.ReviewLike; +import com.clubber.domain.domains.review.exception.ReviewLikeNotFoundException; +import com.clubber.domain.domains.review.exception.ReviewNotFoundException; +import com.clubber.domain.domains.review.repository.ReviewLikeRepository; +import com.clubber.domain.domains.review.repository.ReviewRepository; +import com.clubber.domain.domains.user.domain.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class ReviewReader { + private final ReviewRepository reviewRepository; + private final ReviewLikeRepository reviewLikeRepository; + + public Review findById(Long id) { + return reviewRepository.findByIdAndIsDeletedFalse(id) + .orElseThrow(() -> ReviewNotFoundException.EXCEPTION); + } + + public ReviewLike findUserReviewLike(Review review, User user) { + return reviewLikeRepository.findByReviewAndUserAndIsDeletedFalse(review, user) + .orElseThrow(() -> ReviewLikeNotFoundException.EXCEPTION); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/implement/ReviewValidator.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/implement/ReviewValidator.java new file mode 100644 index 000000000..a00827e83 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/implement/ReviewValidator.java @@ -0,0 +1,72 @@ +package com.clubber.domain.domains.review.implement; + +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.report.domain.ReportReason; +import com.clubber.domain.domains.report.exception.ReviewDetailReasonRequiredException; +import com.clubber.domain.domains.report.repository.ReportRepository; +import com.clubber.domain.domains.review.domain.ReportStatus; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.exception.*; +import com.clubber.domain.domains.review.repository.ReviewLikeRepository; +import com.clubber.domain.domains.review.repository.ReviewRepository; +import com.clubber.domain.domains.user.domain.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class ReviewValidator { + + private final ReviewLikeRepository reviewLikeRepository; + private final ReviewRepository reviewRepository; + private final ReportRepository reportRepository; + + public void validateReviewUser(User user, Review review) { + if (!review.getUser().equals(user)) { + throw ReviewUserNotMatchException.EXCEPTION; + } + } + + public void validateReviewClub(Club club, Review review) { + if (!review.getClub().equals(club)) { + throw ReviewClubNotMatchException.EXCEPTION; + } + } + + public void validateReviewExists(User user, Review review) { + boolean isExists = reviewLikeRepository.existsByReviewAndUserAndIsDeletedFalse(review, + user); + if (isExists) { + throw ReviewAlreadyLikedException.EXCEPTION; + } + } + + public void validateReviewExists(Club club, User user) { + if (reviewRepository.existsByClubAndUser(club, user)) { + throw UserAlreadyReviewedException.EXCEPTION; + } + } + + public void validateReviewReportExists(Review review) { + if (reportRepository.existsByReviewAndIsDeletedFalse(review)){ + throw ReviewHasReportException.EXCEPTION; + } + } + + public void validateNotSelfReview(User user, Review review) { + if (review.getUser().equals(user)) { + throw ReviewSelfReportNotAllowedException.EXCEPTION; + } + } + public void validateReportReason(ReportReason reportReason, String detailReason){ + if (reportReason == ReportReason.OTHER && detailReason == null){ + throw ReviewDetailReasonRequiredException.EXCEPTION; + } + } + + public void validateReviewStatus(Review review){ + if (review.getReportStatus()== ReportStatus.HIDDEN){ + throw ReviewAlreadyHiddenException.EXCEPTION; + } + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewCustomRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewCustomRepository.java new file mode 100644 index 000000000..ea40f9791 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewCustomRepository.java @@ -0,0 +1,30 @@ +package com.clubber.domain.domains.review.repository; + +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.domain.ReviewFilterType; +import com.clubber.domain.domains.review.domain.ReviewSortType; +import com.clubber.domain.domains.review.vo.ClubReviewResponse; +import com.clubber.domain.domains.user.domain.User; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +public interface ReviewCustomRepository { + + List queryReviewByUserOrderByIdDesc(User user); + + Page queryReviewByClub(Club club, User loginUser, Pageable pageable, ReviewSortType sortType); + + Page queryReviewByClubAndFilterType(Club club, ReviewFilterType filterType, Pageable pageable); + + List queryReviewNoOffsetByClub(Club club, Pageable pageable, Long reviewId); + + boolean existsByClubAndUser(Club club, User user); + + void softDeleteReviewByClubId(Long clubId); + + List queryNextReviewReport(Long reviewId, Long nowReviewReportId); +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewCustomRepositoryImpl.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewCustomRepositoryImpl.java new file mode 100644 index 000000000..5ecff05a6 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewCustomRepositoryImpl.java @@ -0,0 +1,216 @@ +package com.clubber.domain.domains.review.repository; + +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.review.domain.*; +import com.clubber.domain.domains.review.util.ReviewUtil; +import com.clubber.domain.domains.review.vo.ClubReviewResponse; +import com.clubber.domain.domains.review.vo.ReviewReplyResponse; +import com.clubber.domain.domains.user.domain.User; +import com.querydsl.core.Tuple; +import com.querydsl.core.types.OrderSpecifier; +import com.querydsl.core.types.dsl.BooleanExpression; +import com.querydsl.jpa.impl.JPAQuery; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.support.PageableExecutionUtils; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static com.clubber.domain.domains.club.domain.QClub.club; +import static com.clubber.domain.domains.report.domain.QReport.report; +import static com.clubber.domain.domains.review.domain.QReview.review; +import static com.clubber.domain.domains.review.domain.QReviewKeyword.reviewKeyword; +import static com.clubber.domain.domains.review.domain.QReviewLike.reviewLike; +import static com.clubber.domain.domains.review.domain.QReviewReply.reviewReply; +import static com.clubber.domain.domains.user.domain.QUser.user; + +@RequiredArgsConstructor +public class ReviewCustomRepositoryImpl implements ReviewCustomRepository { + + private final JPAQueryFactory queryFactory; + + @Override + public List queryReviewByUserOrderByIdDesc(User user) { + return queryFactory.selectFrom(review) + .join(review.reviewKeywords, reviewKeyword).fetchJoin() + .join(review.club, club).fetchJoin() + .where(review.user.eq(user) + .and(review.isDeleted.eq(false))) + .orderBy(review.id.desc()) + .fetch(); + } + + @Override + public Page queryReviewByClub(Club club, User loginUser, Pageable pageable, ReviewSortType sortType) { + + List tuples = queryFactory + .select(review, reviewLike.count()) + .from(review) + .leftJoin(review.reviewLikes, reviewLike) + .on(reviewLike.isDeleted.eq(false)) + .where(review.club.id.eq(club.getId()) + .and(review.isDeleted.eq(false))) + .groupBy(review) + .orderBy(getOrderSpecifier(sortType, review, reviewLike)) + .offset(pageable.getOffset()) + .limit(pageable.getPageSize()) + .fetch(); + + List reviewIds = tuples.stream() + .map(t -> t.get(review).getId()) + .toList(); + + Map likeCountMap = tuples.stream() + .collect(Collectors.toMap( + t -> t.get(review).getId(), + t -> t.get(reviewLike.count()) + )); + + + List likedReviewIds = queryFactory.select(reviewLike.review.id) + .from(reviewLike) + .where(reviewLike.user.id.eq(loginUser.getId()) + .and(reviewLike.isDeleted.eq(false)) + .and(reviewLike.review.id.in(reviewIds)) + ) + .fetch(); + + List reviews = queryFactory.selectFrom(review) + .join(review.reviewKeywords, reviewKeyword).fetchJoin() + .join(review.user, user).fetchJoin() + .where(review.id.in(reviewIds)) + .fetch(); + + // Tuple 순서에 맞게 재정렬 + Map reviewMap = reviews.stream() + .collect(Collectors.toMap(Review::getId, r -> r)); + + List sortedReviews = reviewIds.stream() + .map(reviewMap::get) + .toList(); + + List responses = sortedReviews.stream() + .map(r -> ClubReviewResponse.of( + r, + ReviewUtil.extractKeywords(r), + likeCountMap.getOrDefault(r.getId(), 0L), + likedReviewIds.contains(r.getId()), + ReviewReplyResponse.of(r.getReviewReply()) + + )) + .toList(); + + JPAQuery countQuery = queryFactory + .select(review.count()) + .from(review) + .where(review.club.id.eq(club.getId()) + .and(review.isDeleted.eq(false))); + + return PageableExecutionUtils.getPage(responses, pageable, countQuery::fetchOne); + } + + public Page queryReviewByClubAndFilterType(Club club, ReviewFilterType reviewFilterType, Pageable pageable) { + List reviews = queryFactory.selectFrom(review) + .leftJoin(review.reviewReply, reviewReply) + .where(review.club.id.eq(club.getId()) + .and(eqReviewReplyNull(reviewFilterType)) + .and(review.isDeleted.eq(false)) + ) + .offset(pageable.getOffset()) + .limit(pageable.getPageSize()) + .orderBy(review.id.desc()) + .fetch(); + + JPAQuery countQuery = queryFactory + .select(review.count()) + .from(review) + .leftJoin(review.reviewReply, reviewReply) + .where(review.club.id.eq(club.getId()) + .and(eqReviewReplyNull(reviewFilterType)) + .and(review.isDeleted.eq(false)) + ); + + return PageableExecutionUtils.getPage(reviews, pageable, countQuery::fetchOne); + } + + //TODO EXISTS 쿼리 고려 + private BooleanExpression eqReviewReplyNull(ReviewFilterType filterType) { + if (filterType == ReviewFilterType.NOT_REPLYED) { + return review.reviewReply.isNull(); + } + return null; + } + + private static OrderSpecifier getOrderSpecifier( + ReviewSortType sortType, + QReview review, + QReviewLike reviewLike + ) { + return switch (sortType) { + case ASC -> review.id.asc(); + case DESC -> review.id.desc(); + case LIKE -> reviewLike.count().coalesce(0L).desc(); + }; + } + + @Override + public List queryReviewNoOffsetByClub(Club club, Pageable pageable, Long reviewId) { + return queryFactory.selectFrom(review) + .where(review.club.id.eq(club.getId()), + ltReviewId(reviewId)) + .orderBy(review.id.desc()) + .limit(pageable.getPageSize() + 1) + .fetch(); + } + + private BooleanExpression ltReviewId(Long reviewId) { + if (reviewId == null) { + return null; + } + return review.id.lt(reviewId); + } + + @Override + public boolean existsByClubAndUser(Club club, User user) { + return queryFactory.selectOne() + .from(review) + .where(review.club.id.eq(club.getId()) + .and(review.user.id.eq(user.getId())) + .and(review.isDeleted.eq(false)) + ) + .fetchFirst() != null; + } + + @Override + public void softDeleteReviewByClubId(Long clubId) { + queryFactory.update(review) + .set(review.isDeleted, true) + .where( + review.club.id.eq(clubId), review.isDeleted.eq(false) + ) + .execute(); + } + + public List queryNextReviewReport(Long reviewId, Long nowReviewReportId) { + return queryFactory.selectFrom(report) + .join(report.review, review).fetchJoin() + .where(report.review.id.eq(reviewId) + .and(report.isDeleted.eq(false)) + .and(ltReviewReportId(nowReviewReportId))) + .limit(2) + .orderBy(report.id.desc()) + .fetch(); + } + + private BooleanExpression ltReviewReportId(Long nowReviewReportId) { + if (nowReviewReportId == null) { + return null; + } + return report.id.lt(nowReviewReportId); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewKeywordCustomRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewKeywordCustomRepository.java similarity index 50% rename from src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewKeywordCustomRepository.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewKeywordCustomRepository.java index 8a7f240c5..f2bd6018c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewKeywordCustomRepository.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewKeywordCustomRepository.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.review.repository; +package com.clubber.domain.domains.review.repository; -import com.clubber.ClubberServer.domain.review.dto.KeywordCountStatDto; +import com.clubber.domain.domains.review.vo.KeywordCountStatDto; import java.util.List; public interface ReviewKeywordCustomRepository { - List queryReviewKeywordStatsByClubId(Long clubId); + List queryReviewKeywordStatsByClubId(Long clubId, int limit); } diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewKeywordCustomRepositoryImpl.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewKeywordCustomRepositoryImpl.java new file mode 100644 index 000000000..f9a70defd --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewKeywordCustomRepositoryImpl.java @@ -0,0 +1,38 @@ +package com.clubber.domain.domains.review.repository; + +import com.clubber.domain.domains.review.domain.ReportStatus; +import com.clubber.domain.domains.review.vo.KeywordCountStatDto; +import com.querydsl.core.types.Projections; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; + +import java.util.List; + +import static com.clubber.domain.domains.review.domain.QReview.review; +import static com.clubber.domain.domains.review.domain.QReviewKeyword.reviewKeyword; + +@RequiredArgsConstructor +public class ReviewKeywordCustomRepositoryImpl implements ReviewKeywordCustomRepository { + + private final JPAQueryFactory queryFactory; + + @Override + public List queryReviewKeywordStatsByClubId(Long clubId, int limit) { + return queryFactory + .select(Projections.constructor( + KeywordCountStatDto.class, + reviewKeyword.keyword, + reviewKeyword.count().as("count")) + ) + .from(reviewKeyword) + .where(review.club.id.eq(clubId) + .and(review.reportStatus.eq(ReportStatus.VISIBLE) + .and(review.isDeleted.eq(false))) + ) + .join(reviewKeyword.review, review) + .groupBy(reviewKeyword.keyword) + .orderBy(reviewKeyword.count().desc()) + .limit(limit) + .fetch(); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewKeywordRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewKeywordRepository.java new file mode 100644 index 000000000..714e56726 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewKeywordRepository.java @@ -0,0 +1,7 @@ +package com.clubber.domain.domains.review.repository; + +import com.clubber.domain.domains.review.domain.ReviewKeyword; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ReviewKeywordRepository extends JpaRepository, ReviewKeywordCustomRepository { +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewLikeRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewLikeRepository.java new file mode 100644 index 000000000..0c522a5fa --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewLikeRepository.java @@ -0,0 +1,13 @@ +package com.clubber.domain.domains.review.repository; + +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.domain.ReviewLike; +import com.clubber.domain.domains.user.domain.User; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface ReviewLikeRepository extends JpaRepository { + boolean existsByReviewAndUserAndIsDeletedFalse(Review review, User user); + Optional findByReviewAndUserAndIsDeletedFalse(Review review, User user); +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewReplyRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewReplyRepository.java new file mode 100644 index 000000000..1b0d5e0e6 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewReplyRepository.java @@ -0,0 +1,7 @@ +package com.clubber.domain.domains.review.repository; + +import com.clubber.domain.domains.review.domain.ReviewReply; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ReviewReplyRepository extends JpaRepository { +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewRepository.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewRepository.java new file mode 100644 index 000000000..46d432d02 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/repository/ReviewRepository.java @@ -0,0 +1,15 @@ +package com.clubber.domain.domains.review.repository; + +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.review.domain.Review; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + +public interface ReviewRepository extends JpaRepository, ReviewCustomRepository { + + Optional findByIdAndIsDeletedFalse(Long id); + + List findByClubOrderByIdDesc(Club club); +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/util/ReviewUtil.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/util/ReviewUtil.java new file mode 100644 index 000000000..80d527022 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/util/ReviewUtil.java @@ -0,0 +1,45 @@ +package com.clubber.domain.domains.review.util; + +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.domain.ReviewKeyword; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.util.StringUtils; + +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class ReviewUtil { + + public static Set extractKeywords(Review review) { + return review.getReviewKeywords() + .stream() + .map(ReviewKeyword::getKeywordTitle) + .collect(Collectors.toCollection(LinkedHashSet::new)); + } + +// public static Long getLastReviewId(List reviews, Pageable pageable) { +// if (SliceUtil.hasNext(reviews, pageable)) { +// return SliceUtil.getLastContent(reviews).getId(); +// } +// return null; +// } + + public static String checkBlankContent(String content) { + if (hasContent(content)) { + return content; + } + return null; + } + + public static boolean hasContent(String content) { + if (StringUtils.hasText(content)) { + return true; + } + return false; + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/ClubReviewResponse.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/ClubReviewResponse.java new file mode 100644 index 000000000..b939e89d6 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/ClubReviewResponse.java @@ -0,0 +1,61 @@ +package com.clubber.domain.domains.review.vo; + +import com.clubber.domain.domains.review.domain.ReportStatus; +import com.clubber.domain.domains.review.domain.Review; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +import java.time.LocalDateTime; +import java.util.Set; + +@Getter +@Builder(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class ClubReviewResponse { + + @Schema(description = "리뷰 id", example = "1") + private final Long reviewId; + + @Schema(description = "유저 id", example = "1") + private final Long userId; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy.MM.dd", timezone = "Asia/Seoul") + @Schema(description = "리뷰 작성 일자", example = "2024.01.01", type = "string") + private final LocalDateTime dateTime; + + @Schema(description = "작성한 리뷰 키워드") + private final Set keywords; + + @Schema(description = "해당 동아리 된 한줄평 중 승인된 한줄평의 내용", example = "활동이 재밌어요") + private final String content; + + @Schema(description = "리뷰 좋아요 수") + private final Long likes; + + @Schema(description = "리뷰 좋아요 여부") + private final boolean isLiked; + + @Schema(description = "신고 상태") + private final ReportStatus reportStatus; + + @Schema(description = "리뷰 답글") + private final ReviewReplyResponse reviewReply; + + public static ClubReviewResponse of(Review review, Set keywords, Long likes, boolean isLiked, ReviewReplyResponse reviewReply) { + return ClubReviewResponse.builder() + .keywords(keywords) + .reviewId(review.getId()) + .userId(review.getUser().getId()) + .dateTime(review.getCreatedAt()) + .content(review.getContentForPublic()) + .likes(likes) + .isLiked(isLiked) + .reportStatus(review.getReportStatus()) + .reviewReply(reviewReply) + .build(); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/KeywordCountStatDto.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/KeywordCountStatDto.java new file mode 100644 index 000000000..828c0cc53 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/KeywordCountStatDto.java @@ -0,0 +1,6 @@ +package com.clubber.domain.domains.review.vo; + +import com.clubber.domain.domains.review.domain.Keyword; + +public record KeywordCountStatDto(Keyword keyword, Long count) { +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/KeywordStatsVO.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/KeywordStatsVO.java new file mode 100644 index 000000000..f69114a80 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/KeywordStatsVO.java @@ -0,0 +1,50 @@ +package com.clubber.domain.domains.review.vo; + +import com.clubber.domain.domains.review.domain.Keyword; + +import java.util.Arrays; +import java.util.EnumMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import lombok.Getter; + +public class KeywordStatsVO { + + //키워드 통계 반환 시 Key가 String이지만 추후 확장성을 위해 EnumMap으로 관리한다. + private final Map keywordMap = new EnumMap<>(Keyword.class); + + @Getter + private final Map keywordMapAsStingKey; + + public KeywordStatsVO(List keywordCountStatDtoList, int limit) { + initializeKeywordMap(); + updateKeywordStat(keywordCountStatDtoList); + keywordMapAsStingKey = convertKeywordMapAsStringKey(limit); + } + + private void initializeKeywordMap() { + Arrays.stream(Keyword.values()) + .forEach(keyword -> keywordMap.put(keyword, 0L)); + } + + private void updateKeywordStat(List keywordCountStatDtoList) { + for (KeywordCountStatDto keywordCountStatDTO : keywordCountStatDtoList) { + keywordMap.put(keywordCountStatDTO.keyword(), keywordCountStatDTO.count()); + } + } + + private Map convertKeywordMapAsStringKey(int limit) { + return keywordMap.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(limit) + .collect(Collectors.toMap( + entry -> entry.getKey().getTitle(), + Map.Entry::getValue, + (oldValue, newValue) -> oldValue, + LinkedHashMap::new) + ); + } +} diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/ReviewReplyResponse.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/ReviewReplyResponse.java new file mode 100644 index 000000000..b3b43b673 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/review/vo/ReviewReplyResponse.java @@ -0,0 +1,27 @@ +package com.clubber.domain.domains.review.vo; + +import com.clubber.domain.domains.review.domain.ReviewReply; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; + +import java.time.LocalDateTime; +import java.util.Optional; + +public record ReviewReplyResponse( + @Schema(description = "답글 id") + Long id, + @Schema(description = "리뷰 답글", example = "감사합니다.") + String content, + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM-dd") + LocalDateTime updateAt +) { + public static ReviewReplyResponse of(ReviewReply reviewReply) { + return Optional.ofNullable(reviewReply) + .map(r -> new ReviewReplyResponse( + r.getId(), + r.getContent(), + r.getCreatedAt() + )) + .orElse(null); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/domain/AccountRole.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/AccountRole.java similarity index 51% rename from src/main/java/com/clubber/ClubberServer/domain/user/domain/AccountRole.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/AccountRole.java index 8a1e66e47..72c50c590 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/domain/AccountRole.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/AccountRole.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.user.domain; +package com.clubber.domain.domains.user.domain; public enum AccountRole { USER, ADMIN, SUPER_ADMIN diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/domain/AccountState.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/AccountState.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/domain/user/domain/AccountState.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/AccountState.java index 2e6ca0f35..40d88859c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/domain/AccountState.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/AccountState.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.user.domain; +package com.clubber.domain.domains.user.domain; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/SnsType.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/SnsType.java new file mode 100644 index 000000000..311947fa2 --- /dev/null +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/SnsType.java @@ -0,0 +1,5 @@ +package com.clubber.domain.domains.user.domain; + +public enum SnsType { + KAKAO +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/domain/User.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/User.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/domain/user/domain/User.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/User.java index 7b21a79d4..db68bbffa 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/domain/User.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/domain/User.java @@ -1,14 +1,14 @@ -package com.clubber.ClubberServer.domain.user.domain; +package com.clubber.domain.domains.user.domain; import java.util.ArrayList; import java.util.List; +import com.clubber.domain.domains.favorite.domain.Favorite; import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.type.SqlTypes; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.user.exception.UserAlreadyDeletedException; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.domains.user.exception.UserAlreadyDeletedException; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/exception/InvalidTokenException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/InvalidTokenException.java similarity index 64% rename from src/main/java/com/clubber/ClubberServer/domain/user/exception/InvalidTokenException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/InvalidTokenException.java index 65269f45a..cc7397cb8 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/exception/InvalidTokenException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/InvalidTokenException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.user.exception; +package com.clubber.domain.domains.user.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class InvalidTokenException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/exception/RefreshTokenExpiredException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/RefreshTokenExpiredException.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/user/exception/RefreshTokenExpiredException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/RefreshTokenExpiredException.java index 81799760b..2e441821e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/exception/RefreshTokenExpiredException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/RefreshTokenExpiredException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.user.exception; +package com.clubber.domain.domains.user.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RefreshTokenExpiredException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/exception/TokenExpiredException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/TokenExpiredException.java similarity index 64% rename from src/main/java/com/clubber/ClubberServer/domain/user/exception/TokenExpiredException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/TokenExpiredException.java index da9da5833..c8f2c9b50 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/exception/TokenExpiredException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/TokenExpiredException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.user.exception; +package com.clubber.domain.domains.user.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class TokenExpiredException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/exception/UserAlreadyDeletedException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/UserAlreadyDeletedException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/user/exception/UserAlreadyDeletedException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/UserAlreadyDeletedException.java index b07ac3a53..5e7729143 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/exception/UserAlreadyDeletedException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/UserAlreadyDeletedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.user.exception; +package com.clubber.domain.domains.user.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class UserAlreadyDeletedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/exception/UserErrorCode.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/UserErrorCode.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/domain/user/exception/UserErrorCode.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/UserErrorCode.java index 47f16cdf3..f7229630d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/exception/UserErrorCode.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/UserErrorCode.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.user.exception; +package com.clubber.domain.domains.user.exception; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.ErrorReason; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.ErrorReason; import lombok.AllArgsConstructor; import org.springframework.http.HttpStatus; diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/exception/UserNotFoundException.java b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/UserNotFoundException.java similarity index 64% rename from src/main/java/com/clubber/ClubberServer/domain/user/exception/UserNotFoundException.java rename to Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/UserNotFoundException.java index 1cc8a093a..6ded90036 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/exception/UserNotFoundException.java +++ b/Clubber-Domain/src/main/java/com/clubber/domain/domains/user/exception/UserNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.user.exception; +package com.clubber.domain.domains.user.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class UserNotFoundException extends BaseException { diff --git a/Clubber-External/Clubber-External.iml b/Clubber-External/Clubber-External.iml new file mode 100644 index 000000000..c90834f2d --- /dev/null +++ b/Clubber-External/Clubber-External.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Dockerfile.dev b/Clubber-External/Dockerfile.dev similarity index 82% rename from Dockerfile.dev rename to Clubber-External/Dockerfile.dev index 0eb4ff19d..fac03beb6 100644 --- a/Dockerfile.dev +++ b/Clubber-External/Dockerfile.dev @@ -3,7 +3,7 @@ FROM openjdk:17-alpine # curl 설치 RUN apk add --no-cache curl -ARG JAR_FILE=build/libs/*.jar +ARG JAR_FILE=build/libs/Clubber-External.jar COPY ${JAR_FILE} app.jar ARG PROFILE=dev diff --git a/Dockerfile.nginx.dev b/Clubber-External/Dockerfile.nginx.dev similarity index 100% rename from Dockerfile.nginx.dev rename to Clubber-External/Dockerfile.nginx.dev diff --git a/Dockerfile.nginx.prod b/Clubber-External/Dockerfile.nginx.prod similarity index 100% rename from Dockerfile.nginx.prod rename to Clubber-External/Dockerfile.nginx.prod diff --git a/Dockerfile.prod b/Clubber-External/Dockerfile.prod similarity index 78% rename from Dockerfile.prod rename to Clubber-External/Dockerfile.prod index 7787ffc46..5b9fbe814 100644 --- a/Dockerfile.prod +++ b/Clubber-External/Dockerfile.prod @@ -1,6 +1,6 @@ FROM openjdk:17-alpine -ARG JAR_FILE=build/libs/*.jar +ARG JAR_FILE=build/libs/Clubber-External.jar COPY ${JAR_FILE} app.jar ARG PROFILE=prod diff --git a/Clubber-External/build.gradle b/Clubber-External/build.gradle new file mode 100644 index 000000000..c1400ede5 --- /dev/null +++ b/Clubber-External/build.gradle @@ -0,0 +1,20 @@ +dependencies{ + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'io.jsonwebtoken:jjwt-api:0.11.5' + implementation 'io.jsonwebtoken:jjwt-impl:0.11.5' + implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5' + //TODO infra 모듈 분리 + implementation 'org.springframework.cloud:spring-cloud-starter-openfeign:4.1.0' + implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' + implementation 'org.springframework.boot:spring-boot-starter-mail' + + //swagger + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' + + //spring-boot-actuator + implementation 'org.springframework.boot:spring-boot-starter-actuator' + runtimeOnly 'io.micrometer:micrometer-registry-prometheus' + + implementation project(":Clubber-Domain") + implementation project(":Clubber-Common") +} \ No newline at end of file diff --git a/src/main/java/com/clubber/ClubberServer/ClubberServerApplication.java b/Clubber-External/src/main/java/com/clubber/ClubberServerApplication.java similarity index 74% rename from src/main/java/com/clubber/ClubberServer/ClubberServerApplication.java rename to Clubber-External/src/main/java/com/clubber/ClubberServerApplication.java index 1c024bd45..a0f70e92f 100644 --- a/src/main/java/com/clubber/ClubberServer/ClubberServerApplication.java +++ b/Clubber-External/src/main/java/com/clubber/ClubberServerApplication.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer; +package com.clubber; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.ConfigurationPropertiesScan; -@ConfigurationPropertiesScan(basePackages = "com.clubber.ClubberServer.global.properties") +@ConfigurationPropertiesScan(basePackages = "com.clubber.global.properties") @SpringBootApplication public class ClubberServerApplication { diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/controller/AdminController.java b/Clubber-External/src/main/java/com/clubber/domain/admin/controller/AdminController.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/domain/admin/controller/AdminController.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/controller/AdminController.java index 1ef3aa314..39c2a5c1c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/controller/AdminController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/controller/AdminController.java @@ -1,12 +1,12 @@ -package com.clubber.ClubberServer.domain.admin.controller; - -import com.clubber.ClubberServer.domain.admin.dto.*; -import com.clubber.ClubberServer.domain.admin.service.AdminAccountService; -import com.clubber.ClubberServer.domain.admin.service.AdminAuthService; -import com.clubber.ClubberServer.domain.admin.service.AdminClubService; -import com.clubber.ClubberServer.domain.auth.service.helper.CookieHelper; -import com.clubber.ClubberServer.domain.club.dto.GetClubResponse; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; +package com.clubber.domain.admin.controller; + +import com.clubber.domain.admin.dto.*; +import com.clubber.domain.admin.service.AdminAccountService; +import com.clubber.domain.admin.service.AdminAuthService; +import com.clubber.domain.admin.service.AdminClubService; +import com.clubber.domain.auth.service.helper.CookieHelper; +import com.clubber.domain.club.dto.GetClubResponse; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/controller/AdminEmailAuthController.java b/Clubber-External/src/main/java/com/clubber/domain/admin/controller/AdminEmailAuthController.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/admin/controller/AdminEmailAuthController.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/controller/AdminEmailAuthController.java index b40233dae..f3e59fbf0 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/controller/AdminEmailAuthController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/controller/AdminEmailAuthController.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.admin.controller; +package com.clubber.domain.admin.controller; -import com.clubber.ClubberServer.domain.admin.dto.*; -import com.clubber.ClubberServer.domain.admin.facade.AdminEmailAuthFacade; -import com.clubber.ClubberServer.domain.admin.service.AdminEmailAuthService; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; +import com.clubber.domain.admin.dto.*; +import com.clubber.domain.admin.facade.AdminEmailAuthFacade; +import com.clubber.domain.admin.service.AdminEmailAuthService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; diff --git a/Clubber-External/src/main/java/com/clubber/domain/admin/controller/AdminReviewController.java b/Clubber-External/src/main/java/com/clubber/domain/admin/controller/AdminReviewController.java new file mode 100644 index 000000000..c9f7ac82e --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/controller/AdminReviewController.java @@ -0,0 +1,51 @@ +package com.clubber.domain.admin.controller; + +import com.clubber.domain.admin.dto.GetAdminsReviewsResponse; +import com.clubber.domain.domains.review.domain.ReviewFilterType; +import com.clubber.domain.review.dto.CreateReviewApplyRequest; +import com.clubber.domain.review.dto.GetClubReviewAgreedStatusResponse; +import com.clubber.domain.review.service.AdminReviewService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/v1/admins/reviews") +@Tag(name = "[동아리 계정 리뷰 관련 API]", description = "🔐동아리 계정") +public class AdminReviewController { + + private final AdminReviewService adminReviewService; + + @Operation(summary = "동아리 계정 마이페이지 리뷰 목록") + @GetMapping + public GetAdminsReviewsResponse getAdminsReviews(Pageable pageable, @RequestParam(required = false)ReviewFilterType filterType) { + return adminReviewService.getAdminsReviews(pageable, filterType); + } + + @Operation(summary = "리뷰 답글 달기") + @PostMapping("/reply/{id}") + public void createReplyReview(@PathVariable Long id, @RequestBody CreateReviewApplyRequest request) { + adminReviewService.createReviewApply(id, request); + } + + @Operation(summary = "리뷰 활성화 상태 조회") + @GetMapping("/enabled") + public GetClubReviewAgreedStatusResponse getReviewEnabledStatus() { + return adminReviewService.getReviewEnabledStatus(); + } + + @Operation(summary = "동아리 리뷰 기능 거절 (리뷰 제공 OFF)") + @PatchMapping("/disable") + public void disableClubReview() { + adminReviewService.disableClubReview(); + } + + @Operation(summary = "동아리 리뷰 기능 승인 (리뷰 제공 ON)") + @PatchMapping("/enable") + public void enableClubReview() { + adminReviewService.enableClubReview(); + } +} diff --git a/Clubber-External/src/main/java/com/clubber/domain/admin/dto/AdminReviewResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/AdminReviewResponse.java new file mode 100644 index 000000000..dd62cb8b7 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/AdminReviewResponse.java @@ -0,0 +1,45 @@ +package com.clubber.domain.admin.dto; + +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.vo.ReviewReplyResponse; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +import java.time.LocalDateTime; +import java.util.Set; + +@Getter +@Builder(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class AdminReviewResponse { + + @Schema(description = "리뷰 id", example = "1") + private final Long reviewId; + + @Schema(description = "작성한 리뷰 키워드", + example = "[\"CULTURE\", \"FEE\", \"ACTIVITY\", \"CAREER\", \"MANAGE\"]") + private final Set keywords; + + @Schema(description = "리뷰 한줄평", example = "분위기가 좋아요") + private final String content; + + @Schema(description = "리뷰 작성 일자", example = "2024.01.01", type = "string") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy.MM.dd", timezone = "Asia/Seoul") + private final LocalDateTime dateTime; + + private ReviewReplyResponse reviewReply; + + public static AdminReviewResponse of(Review review, Set keywords, ReviewReplyResponse reviewReply) { + return AdminReviewResponse.builder() + .reviewId(review.getId()) + .keywords(keywords) + .content(review.getContent()) + .dateTime(review.getCreatedAt()) + .reviewReply(reviewReply) + .build(); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminAuthResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminAuthResponse.java similarity index 65% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminAuthResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminAuthResponse.java index af2b901d6..a2d924dca 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminAuthResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminAuthResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.admin.domain.AdminSignupAuth; +import com.clubber.domain.domains.admin.domain.AdminSignupAuth; public record CreateAdminAuthResponse( String email diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminPasswordFindRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminPasswordFindRequest.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminPasswordFindRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminPasswordFindRequest.java index b4c4877b0..0d065ac33 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminPasswordFindRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminPasswordFindRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignUpRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignUpRequest.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignUpRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignUpRequest.java index 08a1a57ff..7957656e6 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignUpRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignUpRequest.java @@ -1,11 +1,11 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.admin.domain.Contact; -import com.clubber.ClubberServer.domain.admin.domain.PendingAdminInfo; -import com.clubber.ClubberServer.domain.club.domain.ClubType; -import com.clubber.ClubberServer.domain.club.domain.College; -import com.clubber.ClubberServer.domain.club.domain.Department; -import com.clubber.ClubberServer.global.validator.enums.Enum; +import com.clubber.domain.domains.admin.domain.Contact; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; +import com.clubber.domain.domains.club.domain.ClubType; +import com.clubber.domain.domains.club.domain.College; +import com.clubber.domain.domains.club.domain.Department; +import com.clubber.global.validator.enums.Enum; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignUpResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignUpResponse.java similarity index 73% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignUpResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignUpResponse.java index f7291bed4..f68617476 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignUpResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignUpResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.admin.domain.Contact; -import com.clubber.ClubberServer.domain.admin.domain.PendingAdminInfo; +import com.clubber.domain.domains.admin.domain.Contact; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignupAuthRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignupAuthRequest.java similarity index 90% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignupAuthRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignupAuthRequest.java index aab8c6537..9ba330bec 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignupAuthRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignupAuthRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignupAuthVerifyRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignupAuthVerifyRequest.java similarity index 93% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignupAuthVerifyRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignupAuthVerifyRequest.java index eac70fadc..e660780d4 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminSignupAuthVerifyRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminSignupAuthVerifyRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminUpdateEmailAuthRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminUpdateEmailAuthRequest.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminUpdateEmailAuthRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminUpdateEmailAuthRequest.java index e445e3281..36220c6a7 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminUpdateEmailAuthRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminUpdateEmailAuthRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminUsernameFindAuthRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminUsernameFindAuthRequest.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminUsernameFindAuthRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminUsernameFindAuthRequest.java index c95a4e3e1..916a26055 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminUsernameFindAuthRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminUsernameFindAuthRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminsLoginRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminsLoginRequest.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminsLoginRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminsLoginRequest.java index 0ad884893..a0976e899 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminsLoginRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminsLoginRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminsLoginResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminsLoginResponse.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminsLoginResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminsLoginResponse.java index 7b02bde66..9cb297d70 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/CreateAdminsLoginResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/CreateAdminsLoginResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.Admin; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminPendingReviewsSliceResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminPendingReviewsSliceResponse.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminPendingReviewsSliceResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminPendingReviewsSliceResponse.java index 92f9316fd..608d32ac6 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminPendingReviewsSliceResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminPendingReviewsSliceResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.global.common.slice.SliceResponse; +import com.clubber.global.common.slice.SliceResponse; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminUsernameCheckDuplicateResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminUsernameCheckDuplicateResponse.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminUsernameCheckDuplicateResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminUsernameCheckDuplicateResponse.java index d89617f6c..86601f9c7 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminUsernameCheckDuplicateResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminUsernameCheckDuplicateResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; public record GetAdminUsernameCheckDuplicateResponse( String username, diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminUsernameFindRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminUsernameFindRequest.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminUsernameFindRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminUsernameFindRequest.java index afa869c5c..d43045487 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminUsernameFindRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminUsernameFindRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminUsernameFindResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminUsernameFindResponse.java similarity index 55% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminUsernameFindResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminUsernameFindResponse.java index ba9016a61..e78a77e48 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminUsernameFindResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminUsernameFindResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; public record GetAdminUsernameFindResponse(String username) { } diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminsPendingReviews.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminsPendingReviews.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminsPendingReviews.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminsPendingReviews.java index d2a4ce3ad..87cc0a8b9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminsPendingReviews.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminsPendingReviews.java @@ -1,11 +1,10 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.review.domain.Review; +import com.clubber.domain.domains.review.domain.Review; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; -import java.util.List; -import java.util.stream.Collectors; + import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminsProfileResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminsProfileResponse.java similarity index 73% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminsProfileResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminsProfileResponse.java index 5ac619f78..d5c4466a9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminsProfileResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminsProfileResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.domain.Contact; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.Contact; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminsReviewsResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminsReviewsResponse.java similarity index 80% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminsReviewsResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminsReviewsResponse.java index 8a176a41a..6d8cb6995 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/GetAdminsReviewsResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/GetAdminsReviewsResponse.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.global.common.page.PageResponse; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.global.common.page.PageResponse; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminAuthResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminAuthResponse.java similarity index 53% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminAuthResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminAuthResponse.java index c746cd39c..5a5275928 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminAuthResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminAuthResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; public record UpdateAdminAuthResponse( String email diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminContactRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminContactRequest.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminContactRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminContactRequest.java index 350aa5b3e..0e68f3d08 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminContactRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminContactRequest.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.admin.domain.Contact; +import com.clubber.domain.domains.admin.domain.Contact; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminContactResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminContactResponse.java new file mode 100644 index 000000000..b9306e307 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminContactResponse.java @@ -0,0 +1,9 @@ +package com.clubber.domain.admin.dto; + +import com.clubber.domain.domains.admin.domain.Contact; + +public record UpdateAdminContactResponse( + Long adminId, + Contact contact +) { +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminEmailRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminEmailRequest.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminEmailRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminEmailRequest.java index 93cf8ffe3..0127f8696 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminEmailRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminEmailRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminEmailResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminEmailResponse.java similarity index 63% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminEmailResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminEmailResponse.java index 46da1ff98..546eca2ae 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminEmailResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminEmailResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; public record UpdateAdminEmailResponse( Long adminId, diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminPasswordFindAuthVerifyRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminPasswordFindAuthVerifyRequest.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminPasswordFindAuthVerifyRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminPasswordFindAuthVerifyRequest.java index 524594ef9..a742ca246 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminPasswordFindAuthVerifyRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminPasswordFindAuthVerifyRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminResetPasswordRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminResetPasswordRequest.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminResetPasswordRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminResetPasswordRequest.java index 595c02d3a..26d2b3f87 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminResetPasswordRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminResetPasswordRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminUpdateEmailAuthVerifyRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminUpdateEmailAuthVerifyRequest.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminUpdateEmailAuthVerifyRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminUpdateEmailAuthVerifyRequest.java index 48332cfc0..777f97151 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminUpdateEmailAuthVerifyRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminUpdateEmailAuthVerifyRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminUsernameFindAuthVerifyRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminUsernameFindAuthVerifyRequest.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminUsernameFindAuthVerifyRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminUsernameFindAuthVerifyRequest.java index fbd5661ce..bc557b1af 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminUsernameFindAuthVerifyRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminUsernameFindAuthVerifyRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsPasswordRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminsPasswordRequest.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsPasswordRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminsPasswordRequest.java index 2245b8ef4..a74ee35c9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsPasswordRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminsPasswordRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsPasswordResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminsPasswordResponse.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsPasswordResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminsPasswordResponse.java index b2195dfac..03b1fcb28 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsPasswordResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminsPasswordResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.Admin; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsReviewVerifyResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminsReviewVerifyResponse.java similarity index 72% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsReviewVerifyResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminsReviewVerifyResponse.java index 5963ae2a9..4cfb6856a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsReviewVerifyResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateAdminsReviewVerifyResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.review.domain.Review; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.review.domain.Review; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateClubPageRequest.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateClubPageRequest.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateClubPageRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateClubPageRequest.java index d5d8077f5..cb6937fa9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateClubPageRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateClubPageRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; import jakarta.validation.constraints.Size; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateClubPageResponse.java b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateClubPageResponse.java similarity index 81% rename from src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateClubPageResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateClubPageResponse.java index 86e787c6c..e5dc7971a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateClubPageResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/dto/UpdateClubPageResponse.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.admin.dto; +package com.clubber.domain.admin.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.domain.ClubInfo; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.domain.ClubInfo; +import com.clubber.domain.common.vo.ImageVO; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/facade/AdminEmailAuthFacade.java b/Clubber-External/src/main/java/com/clubber/domain/admin/facade/AdminEmailAuthFacade.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/domain/admin/facade/AdminEmailAuthFacade.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/facade/AdminEmailAuthFacade.java index 8414a933a..dbfe960fb 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/facade/AdminEmailAuthFacade.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/facade/AdminEmailAuthFacade.java @@ -1,12 +1,12 @@ -package com.clubber.ClubberServer.domain.admin.facade; +package com.clubber.domain.admin.facade; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.domain.AdminSignupAuth; -import com.clubber.ClubberServer.domain.admin.dto.*; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.admin.service.AdminEmailAuthService; -import com.clubber.ClubberServer.global.infrastructure.outer.mail.MailService; -import com.clubber.ClubberServer.global.util.RandomAuthCodeUtil; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.AdminSignupAuth; +import com.clubber.domain.admin.dto.*; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.admin.service.AdminEmailAuthService; +import com.clubber.global.infrastructure.outer.mail.MailService; +import com.clubber.global.util.RandomAuthCodeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminAppender.java b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminAppender.java similarity index 82% rename from src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminAppender.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminAppender.java index 4eb45df42..5cfa020b0 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminAppender.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminAppender.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.admin.implement; +package com.clubber.domain.admin.implement; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.domain.Contact; -import com.clubber.ClubberServer.domain.club.domain.Club; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.Contact; +import com.clubber.domain.domains.club.domain.Club; import lombok.RequiredArgsConstructor; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminReader.java b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminReader.java similarity index 73% rename from src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminReader.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminReader.java index 2f5f0e8f7..30b1add3f 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminReader.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminReader.java @@ -1,15 +1,15 @@ -package com.clubber.ClubberServer.domain.admin.implement; +package com.clubber.domain.admin.implement; -import static com.clubber.ClubberServer.domain.user.domain.AccountState.ACTIVE; +import static com.clubber.domain.domains.user.domain.AccountState.ACTIVE; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.exception.AdminLoginFailedException; -import com.clubber.ClubberServer.domain.admin.exception.AdminNotFoundException; -import com.clubber.ClubberServer.domain.admin.exception.AdminUsernameNotFoundException; -import com.clubber.ClubberServer.domain.admin.repository.AdminRepository; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.user.domain.AccountState; -import com.clubber.ClubberServer.global.config.security.SecurityUtils; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.exception.AdminLoginFailedException; +import com.clubber.domain.domains.admin.exception.AdminNotFoundException; +import com.clubber.domain.domains.admin.exception.AdminUsernameNotFoundException; +import com.clubber.domain.domains.admin.repository.AdminRepository; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.user.domain.AccountState; +import com.clubber.global.config.security.SecurityUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminTokenAppender.java b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminTokenAppender.java similarity index 69% rename from src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminTokenAppender.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminTokenAppender.java index 8dc902dc8..8dfa128b1 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminTokenAppender.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminTokenAppender.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.admin.implement; +package com.clubber.domain.admin.implement; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.domain.AdminRefreshToken; -import com.clubber.ClubberServer.domain.admin.repository.AdminRefreshTokenRepository; -import com.clubber.ClubberServer.global.jwt.vo.TokenVO; -import com.clubber.ClubberServer.global.jwt.JwtTokenUtil; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.AdminRefreshToken; +import com.clubber.domain.domains.admin.repository.AdminRefreshTokenRepository; +import com.clubber.global.jwt.vo.TokenVO; +import com.clubber.global.jwt.JwtTokenUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminTokenReader.java b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminTokenReader.java similarity index 70% rename from src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminTokenReader.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminTokenReader.java index 0d57c9150..20c097d10 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminTokenReader.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminTokenReader.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.admin.implement; +package com.clubber.domain.admin.implement; -import com.clubber.ClubberServer.domain.admin.domain.AdminRefreshToken; -import com.clubber.ClubberServer.domain.admin.repository.AdminRefreshTokenRepository; -import com.clubber.ClubberServer.domain.user.exception.RefreshTokenExpiredException; -import com.clubber.ClubberServer.global.jwt.JwtTokenUtil; +import com.clubber.domain.domains.admin.domain.AdminRefreshToken; +import com.clubber.domain.domains.admin.repository.AdminRefreshTokenRepository; +import com.clubber.domain.domains.user.exception.RefreshTokenExpiredException; +import com.clubber.global.jwt.JwtTokenUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminValidator.java b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminValidator.java similarity index 69% rename from src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminValidator.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminValidator.java index 2231b3d4f..c5992b850 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/AdminValidator.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/AdminValidator.java @@ -1,10 +1,9 @@ -package com.clubber.ClubberServer.domain.admin.implement; +package com.clubber.domain.admin.implement; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.exception.AdminEqualsPreviousPasswordExcpetion; -import com.clubber.ClubberServer.domain.admin.exception.AdminInvalidAuthCodeException; -import com.clubber.ClubberServer.domain.admin.exception.AdminInvalidCurrentPasswordException; -import com.clubber.ClubberServer.domain.admin.exception.AdminLoginFailedException; +import com.clubber.domain.domains.admin.exception.AdminEqualsPreviousPasswordExcpetion; +import com.clubber.domain.domains.admin.exception.AdminInvalidAuthCodeException; +import com.clubber.domain.domains.admin.exception.AdminInvalidCurrentPasswordException; +import com.clubber.domain.domains.admin.exception.AdminLoginFailedException; import lombok.RequiredArgsConstructor; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/PendingAdminInfoManager.java b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/PendingAdminInfoManager.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/domain/admin/implement/PendingAdminInfoManager.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/implement/PendingAdminInfoManager.java index 7c594aec4..314345815 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/PendingAdminInfoManager.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/PendingAdminInfoManager.java @@ -1,14 +1,14 @@ -package com.clubber.ClubberServer.domain.admin.implement; +package com.clubber.domain.admin.implement; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.domain.PendingAdminInfo; -import com.clubber.ClubberServer.domain.admin.dto.CreateAdminSignUpRequest; -import com.clubber.ClubberServer.domain.admin.mapper.PendingAdminMapper; -import com.clubber.ClubberServer.domain.admin.repository.AdminRepository; -import com.clubber.ClubberServer.domain.admin.repository.PendingAdminInfoRepository; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.domain.ClubType; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; +import com.clubber.domain.admin.dto.CreateAdminSignUpRequest; +import com.clubber.domain.admin.mapper.PendingAdminMapper; +import com.clubber.domain.domains.admin.repository.AdminRepository; +import com.clubber.domain.domains.admin.repository.PendingAdminInfoRepository; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.domain.ClubType; +import com.clubber.domain.domains.club.repository.ClubRepository; import lombok.RequiredArgsConstructor; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/PendingAdminInfoReader.java b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/PendingAdminInfoReader.java similarity index 72% rename from src/main/java/com/clubber/ClubberServer/domain/admin/implement/PendingAdminInfoReader.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/implement/PendingAdminInfoReader.java index 7bb1095e8..174541051 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/implement/PendingAdminInfoReader.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/implement/PendingAdminInfoReader.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.admin.implement; +package com.clubber.domain.admin.implement; -import com.clubber.ClubberServer.domain.admin.domain.PendingAdminInfo; -import com.clubber.ClubberServer.domain.admin.exception.AdminNotFoundException; -import com.clubber.ClubberServer.domain.admin.repository.PendingAdminInfoRepository; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; +import com.clubber.domain.domains.admin.exception.AdminNotFoundException; +import com.clubber.domain.domains.admin.repository.PendingAdminInfoRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/Clubber-External/src/main/java/com/clubber/domain/admin/mapper/AdminReviewMapper.java b/Clubber-External/src/main/java/com/clubber/domain/admin/mapper/AdminReviewMapper.java new file mode 100644 index 000000000..3a1bd695a --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/mapper/AdminReviewMapper.java @@ -0,0 +1,59 @@ +package com.clubber.domain.admin.mapper; + +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.dto.AdminReviewResponse; +import com.clubber.domain.admin.dto.GetAdminsPendingReviews; +import com.clubber.domain.admin.dto.GetAdminsReviewsResponse; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.util.ReviewUtil; +import com.clubber.domain.domains.review.vo.ReviewReplyResponse; +import com.clubber.global.common.page.PageResponse; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import org.springframework.data.domain.Page; +import org.springframework.stereotype.Component; + +@Component +public class AdminReviewMapper { + +// // 리뷰 조회 (관리자) + public GetAdminsReviewsResponse getGetAdminReviewsResponse( + Admin admin, Club club, Page reviews) { + PageResponse adminsReviewDetailsPageResponse = getAdminsReviewResponse( + reviews); + return GetAdminsReviewsResponse.of(admin, club, adminsReviewDetailsPageResponse); + } + + private static PageResponse getAdminsReviewResponse( + Page reviewPages) { + Page getAdminReviewsPageResponse = reviewPages.map( + review -> { + Set keywords = ReviewUtil.extractKeywords(review); + ReviewReplyResponse reviewReply = ReviewReplyResponse.of(review.getReviewReply()); + return AdminReviewResponse.of(review, keywords, reviewReply); + }); + return PageResponse.of(getAdminReviewsPageResponse); + } + +// //대기 상태 리뷰 조회 (관리자, No-offset) +// public GetAdminPendingReviewsSliceResponse getGetAdminPendingReviewSliceResponse( +// List reviews, Pageable pageable) { +// List getAdminPendingReviewList = getGetAdminPendingReviewList( +// reviews); +// SliceResponse getAdminsPendingReviewsSliceResponse = SliceUtil.valueOf( +// getAdminPendingReviewList, pageable); +// Long lastReviewId = ReviewUtil.getLastReviewId(reviews, pageable); +// return GetAdminPendingReviewsSliceResponse.of(getAdminsPendingReviewsSliceResponse, +// lastReviewId); +// } + + //대기 상태 리뷰 조회 (관리자) + public List getGetAdminPendingReviewList(List reviews) { + return reviews.stream() + .map(GetAdminsPendingReviews::from) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/mapper/PendingAdminMapper.java b/Clubber-External/src/main/java/com/clubber/domain/admin/mapper/PendingAdminMapper.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/domain/admin/mapper/PendingAdminMapper.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/mapper/PendingAdminMapper.java index 11a6291b9..720f9ec06 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/mapper/PendingAdminMapper.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/mapper/PendingAdminMapper.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.admin.mapper; +package com.clubber.domain.admin.mapper; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.domain.PendingAdminInfo; -import com.clubber.ClubberServer.domain.club.domain.Club; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; +import com.clubber.domain.domains.club.domain.Club; import org.springframework.stereotype.Component; @Component diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminAccountService.java b/Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminAccountService.java similarity index 85% rename from src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminAccountService.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminAccountService.java index 3955c6a0f..d7ab62a0f 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminAccountService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminAccountService.java @@ -1,15 +1,15 @@ -package com.clubber.ClubberServer.domain.admin.service; - -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.domain.PendingAdminInfo; -import com.clubber.ClubberServer.domain.admin.dto.*; -import com.clubber.ClubberServer.domain.admin.implement.AdminAppender; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.admin.implement.AdminValidator; -import com.clubber.ClubberServer.domain.admin.implement.PendingAdminInfoManager; -import com.clubber.ClubberServer.domain.admin.util.AdminUtil; -import com.clubber.ClubberServer.global.event.signup.SignUpAlarmEventPublisher; -import com.clubber.ClubberServer.global.event.withdraw.SoftDeleteEventPublisher; +package com.clubber.domain.admin.service; + +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; +import com.clubber.domain.admin.dto.*; +import com.clubber.domain.admin.implement.AdminAppender; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.admin.implement.AdminValidator; +import com.clubber.domain.admin.implement.PendingAdminInfoManager; +import com.clubber.domain.admin.util.AdminUtil; +import com.clubber.global.event.signup.SignUpAlarmEventPublisher; +import com.clubber.global.event.withdraw.SoftDeleteEventPublisher; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminAuthService.java b/Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminAuthService.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminAuthService.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminAuthService.java index 692239242..f3c014515 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminAuthService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminAuthService.java @@ -1,14 +1,14 @@ -package com.clubber.ClubberServer.domain.admin.service; +package com.clubber.domain.admin.service; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.dto.CreateAdminsLoginRequest; -import com.clubber.ClubberServer.domain.admin.dto.CreateAdminsLoginResponse; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.admin.implement.AdminTokenAppender; -import com.clubber.ClubberServer.domain.admin.implement.AdminTokenReader; -import com.clubber.ClubberServer.domain.admin.implement.AdminValidator; -import com.clubber.ClubberServer.global.jwt.vo.TokenVO; -import com.clubber.ClubberServer.global.config.security.SecurityUtils; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.dto.CreateAdminsLoginRequest; +import com.clubber.domain.admin.dto.CreateAdminsLoginResponse; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.admin.implement.AdminTokenAppender; +import com.clubber.domain.admin.implement.AdminTokenReader; +import com.clubber.domain.admin.implement.AdminValidator; +import com.clubber.global.jwt.vo.TokenVO; +import com.clubber.global.config.security.SecurityUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminClubService.java b/Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminClubService.java similarity index 64% rename from src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminClubService.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminClubService.java index 44edadb8d..1cf2e230d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminClubService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminClubService.java @@ -1,14 +1,14 @@ -package com.clubber.ClubberServer.domain.admin.service; - -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.dto.UpdateClubPageRequest; -import com.clubber.ClubberServer.domain.admin.dto.UpdateClubPageResponse; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.domain.ClubInfo; -import com.clubber.ClubberServer.domain.club.dto.GetClubInfoResponse; -import com.clubber.ClubberServer.domain.club.dto.GetClubResponse; -import com.clubber.ClubberServer.global.util.ImageUtil; +package com.clubber.domain.admin.service; + +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.dto.UpdateClubPageRequest; +import com.clubber.domain.admin.dto.UpdateClubPageResponse; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.domain.ClubInfo; +import com.clubber.domain.club.dto.GetClubInfoResponse; +import com.clubber.domain.club.dto.GetClubResponse; +import com.clubber.global.util.ImageUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminEmailAuthService.java b/Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminEmailAuthService.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminEmailAuthService.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminEmailAuthService.java index fd648e596..f55368c31 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminEmailAuthService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/service/AdminEmailAuthService.java @@ -1,16 +1,16 @@ -package com.clubber.ClubberServer.domain.admin.service; - -import com.clubber.ClubberServer.domain.admin.domain.*; -import com.clubber.ClubberServer.domain.admin.dto.CreateAdminSignupAuthVerifyRequest; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminPasswordFindAuthVerifyRequest; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminUpdateEmailAuthVerifyRequest; -import com.clubber.ClubberServer.domain.admin.exception.AdminInvalidAuthCodeException; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.admin.implement.AdminValidator; -import com.clubber.ClubberServer.domain.admin.repository.AdminPasswordFindAuthRepository; -import com.clubber.ClubberServer.domain.admin.repository.AdminSignupAuthRepository; -import com.clubber.ClubberServer.domain.admin.repository.AdminUpdateEmailAuthRepository; -import com.clubber.ClubberServer.domain.admin.repository.AdminUsernameFindAuthRepository; +package com.clubber.domain.admin.service; + +import com.clubber.domain.admin.dto.CreateAdminSignupAuthVerifyRequest; +import com.clubber.domain.admin.dto.UpdateAdminPasswordFindAuthVerifyRequest; +import com.clubber.domain.admin.dto.UpdateAdminUpdateEmailAuthVerifyRequest; +import com.clubber.domain.domains.admin.domain.*; +import com.clubber.domain.domains.admin.exception.AdminInvalidAuthCodeException; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.admin.implement.AdminValidator; +import com.clubber.domain.domains.admin.repository.AdminPasswordFindAuthRepository; +import com.clubber.domain.domains.admin.repository.AdminSignupAuthRepository; +import com.clubber.domain.domains.admin.repository.AdminUpdateEmailAuthRepository; +import com.clubber.domain.domains.admin.repository.AdminUsernameFindAuthRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/util/AdminUtil.java b/Clubber-External/src/main/java/com/clubber/domain/admin/util/AdminUtil.java similarity index 72% rename from src/main/java/com/clubber/ClubberServer/domain/admin/util/AdminUtil.java rename to Clubber-External/src/main/java/com/clubber/domain/admin/util/AdminUtil.java index 2474d9fb4..c676ed522 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/util/AdminUtil.java +++ b/Clubber-External/src/main/java/com/clubber/domain/admin/util/AdminUtil.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.admin.util; +package com.clubber.domain.admin.util; public class AdminUtil { public static String maskUsername(String username) { diff --git a/src/main/java/com/clubber/ClubberServer/domain/auth/controller/AuthController.java b/Clubber-External/src/main/java/com/clubber/domain/auth/controller/AuthController.java similarity index 85% rename from src/main/java/com/clubber/ClubberServer/domain/auth/controller/AuthController.java rename to Clubber-External/src/main/java/com/clubber/domain/auth/controller/AuthController.java index aa8ba65a9..85bc0ec94 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/auth/controller/AuthController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/auth/controller/AuthController.java @@ -1,13 +1,10 @@ -package com.clubber.ClubberServer.domain.auth.controller; +package com.clubber.domain.auth.controller; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.*; - -import com.clubber.ClubberServer.domain.auth.facade.UserRegisterFacade; -import com.clubber.ClubberServer.domain.auth.facade.UserWithdrawFacade; -import com.clubber.ClubberServer.domain.auth.dto.KakaoOauthResponse; -import com.clubber.ClubberServer.domain.auth.service.helper.CookieHelper; -import com.clubber.ClubberServer.domain.auth.service.AuthService; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; +import com.clubber.domain.auth.facade.UserRegisterFacade; +import com.clubber.domain.auth.facade.UserWithdrawFacade; +import com.clubber.domain.auth.dto.KakaoOauthResponse; +import com.clubber.domain.auth.service.AuthService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.enums.ParameterIn; @@ -16,7 +13,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -25,6 +21,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import static com.clubber.common.consts.ClubberStatic.*; + @Slf4j @RestController @RequestMapping("/api/v1/auths") diff --git a/src/main/java/com/clubber/ClubberServer/domain/auth/domain/UserRefreshToken.java b/Clubber-External/src/main/java/com/clubber/domain/auth/domain/UserRefreshToken.java similarity index 94% rename from src/main/java/com/clubber/ClubberServer/domain/auth/domain/UserRefreshToken.java rename to Clubber-External/src/main/java/com/clubber/domain/auth/domain/UserRefreshToken.java index 1a37781b1..c5fff6d7e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/auth/domain/UserRefreshToken.java +++ b/Clubber-External/src/main/java/com/clubber/domain/auth/domain/UserRefreshToken.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.auth.domain; +package com.clubber.domain.auth.domain; import lombok.Builder; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/domain/auth/dto/KakaoOauthResponse.java b/Clubber-External/src/main/java/com/clubber/domain/auth/dto/KakaoOauthResponse.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/domain/auth/dto/KakaoOauthResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/auth/dto/KakaoOauthResponse.java index 59122c518..48b44cdb9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/auth/dto/KakaoOauthResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/auth/dto/KakaoOauthResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.auth.dto; +package com.clubber.domain.auth.dto; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.user.domain.User; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/auth/facade/UserRegisterFacade.java b/Clubber-External/src/main/java/com/clubber/domain/auth/facade/UserRegisterFacade.java similarity index 54% rename from src/main/java/com/clubber/ClubberServer/domain/auth/facade/UserRegisterFacade.java rename to Clubber-External/src/main/java/com/clubber/domain/auth/facade/UserRegisterFacade.java index 31f41e157..e46d3b6ff 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/auth/facade/UserRegisterFacade.java +++ b/Clubber-External/src/main/java/com/clubber/domain/auth/facade/UserRegisterFacade.java @@ -1,17 +1,17 @@ -package com.clubber.ClubberServer.domain.auth.facade; - -import com.clubber.ClubberServer.domain.auth.dto.KakaoOauthResponse; -import com.clubber.ClubberServer.domain.auth.service.AuthService; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.client.KakaoInfoClient; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.client.KakaoOauthClient; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto.KakaoOAuthRequest; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto.KakaoTokenResponse; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto.KakaoUserInfoResponse; -import com.clubber.ClubberServer.global.properties.KakaoProperties; +package com.clubber.domain.auth.facade; + +import com.clubber.domain.auth.dto.KakaoOauthResponse; +import com.clubber.domain.auth.service.AuthService; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.client.KakaoInfoClient; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.client.KakaoOauthClient; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.dto.KakaoOAuthRequest; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.dto.KakaoTokenResponse; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.dto.KakaoUserInfoResponse; +import com.clubber.global.properties.KakaoProperties; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.BEARER; +import static com.clubber.common.consts.ClubberStatic.BEARER; @Component @RequiredArgsConstructor diff --git a/src/main/java/com/clubber/ClubberServer/domain/auth/facade/UserWithdrawFacade.java b/Clubber-External/src/main/java/com/clubber/domain/auth/facade/UserWithdrawFacade.java similarity index 57% rename from src/main/java/com/clubber/ClubberServer/domain/auth/facade/UserWithdrawFacade.java rename to Clubber-External/src/main/java/com/clubber/domain/auth/facade/UserWithdrawFacade.java index b2e204c81..8ae086e4e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/auth/facade/UserWithdrawFacade.java +++ b/Clubber-External/src/main/java/com/clubber/domain/auth/facade/UserWithdrawFacade.java @@ -1,11 +1,11 @@ -package com.clubber.ClubberServer.domain.auth.facade; +package com.clubber.domain.auth.facade; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto.UnlinkKaKaoTarget; -import com.clubber.ClubberServer.domain.auth.service.AuthService; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.domain.user.implement.UserReader; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.client.KakaoInfoClient; -import com.clubber.ClubberServer.global.properties.KakaoProperties; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.dto.UnlinkKaKaoTarget; +import com.clubber.domain.auth.service.AuthService; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.user.implement.UserReader; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.client.KakaoInfoClient; +import com.clubber.global.properties.KakaoProperties; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/auth/implement/UserTokenAppender.java b/Clubber-External/src/main/java/com/clubber/domain/auth/implement/UserTokenAppender.java similarity index 69% rename from src/main/java/com/clubber/ClubberServer/domain/auth/implement/UserTokenAppender.java rename to Clubber-External/src/main/java/com/clubber/domain/auth/implement/UserTokenAppender.java index d830fa201..b72a74fd5 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/auth/implement/UserTokenAppender.java +++ b/Clubber-External/src/main/java/com/clubber/domain/auth/implement/UserTokenAppender.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.auth.implement; +package com.clubber.domain.auth.implement; -import com.clubber.ClubberServer.domain.auth.domain.UserRefreshToken; -import com.clubber.ClubberServer.domain.auth.repository.UserRefreshTokenRepository; -import com.clubber.ClubberServer.global.jwt.vo.TokenVO; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.global.jwt.JwtTokenUtil; +import com.clubber.domain.auth.domain.UserRefreshToken; +import com.clubber.domain.auth.repository.UserRefreshTokenRepository; +import com.clubber.global.jwt.vo.TokenVO; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.global.jwt.JwtTokenUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/auth/implement/UserTokenReader.java b/Clubber-External/src/main/java/com/clubber/domain/auth/implement/UserTokenReader.java similarity index 63% rename from src/main/java/com/clubber/ClubberServer/domain/auth/implement/UserTokenReader.java rename to Clubber-External/src/main/java/com/clubber/domain/auth/implement/UserTokenReader.java index 69531e5f3..19d0baf64 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/auth/implement/UserTokenReader.java +++ b/Clubber-External/src/main/java/com/clubber/domain/auth/implement/UserTokenReader.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.auth.implement; +package com.clubber.domain.auth.implement; -import com.clubber.ClubberServer.domain.auth.domain.UserRefreshToken; -import com.clubber.ClubberServer.domain.auth.repository.UserRefreshTokenRepository; -import com.clubber.ClubberServer.domain.user.exception.RefreshTokenExpiredException; -import com.clubber.ClubberServer.global.jwt.JwtTokenUtil; +import com.clubber.domain.auth.domain.UserRefreshToken; +import com.clubber.domain.auth.repository.UserRefreshTokenRepository; +import com.clubber.domain.domains.user.exception.RefreshTokenExpiredException; +import com.clubber.global.jwt.JwtTokenUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/auth/repository/UserRefreshTokenRepository.java b/Clubber-External/src/main/java/com/clubber/domain/auth/repository/UserRefreshTokenRepository.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/auth/repository/UserRefreshTokenRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/auth/repository/UserRefreshTokenRepository.java index 65974a1fa..aa1b37934 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/auth/repository/UserRefreshTokenRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/auth/repository/UserRefreshTokenRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.auth.repository; +package com.clubber.domain.auth.repository; -import com.clubber.ClubberServer.domain.auth.domain.UserRefreshToken; +import com.clubber.domain.auth.domain.UserRefreshToken; import org.springframework.data.repository.CrudRepository; import java.util.Optional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/auth/service/AuthService.java b/Clubber-External/src/main/java/com/clubber/domain/auth/service/AuthService.java similarity index 71% rename from src/main/java/com/clubber/ClubberServer/domain/auth/service/AuthService.java rename to Clubber-External/src/main/java/com/clubber/domain/auth/service/AuthService.java index 9be68cb41..57040b18d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/auth/service/AuthService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/auth/service/AuthService.java @@ -1,14 +1,14 @@ -package com.clubber.ClubberServer.domain.auth.service; - -import com.clubber.ClubberServer.domain.auth.dto.KakaoOauthResponse; -import com.clubber.ClubberServer.domain.auth.implement.UserTokenAppender; -import com.clubber.ClubberServer.domain.auth.implement.UserTokenReader; -import com.clubber.ClubberServer.global.jwt.vo.TokenVO; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.domain.user.repository.UserRepository; -import com.clubber.ClubberServer.domain.user.implement.UserReader; -import com.clubber.ClubberServer.global.config.security.SecurityUtils; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto.KakaoUserInfoResponse; +package com.clubber.domain.auth.service; + +import com.clubber.domain.auth.dto.KakaoOauthResponse; +import com.clubber.domain.auth.implement.UserTokenAppender; +import com.clubber.domain.auth.implement.UserTokenReader; +import com.clubber.global.jwt.vo.TokenVO; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.user.repository.UserRepository; +import com.clubber.domain.user.implement.UserReader; +import com.clubber.global.config.security.SecurityUtils; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.dto.KakaoUserInfoResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/clubber/ClubberServer/domain/auth/service/helper/CookieHelper.java b/Clubber-External/src/main/java/com/clubber/domain/auth/service/helper/CookieHelper.java similarity index 90% rename from src/main/java/com/clubber/ClubberServer/domain/auth/service/helper/CookieHelper.java rename to Clubber-External/src/main/java/com/clubber/domain/auth/service/helper/CookieHelper.java index 9fe015529..bd9775d08 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/auth/service/helper/CookieHelper.java +++ b/Clubber-External/src/main/java/com/clubber/domain/auth/service/helper/CookieHelper.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.auth.service.helper; +package com.clubber.domain.auth.service.helper; -import com.clubber.ClubberServer.global.helper.SpringEnvironmentHelper; -import com.clubber.ClubberServer.global.properties.JwtProperties; +import com.clubber.global.helper.SpringEnvironmentHelper; +import com.clubber.global.properties.JwtProperties; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseCookie; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/controller/CalendarAdminController.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/controller/CalendarAdminController.java similarity index 82% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/controller/CalendarAdminController.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/controller/CalendarAdminController.java index 6537987a6..ef7e8fbce 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/controller/CalendarAdminController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/controller/CalendarAdminController.java @@ -1,11 +1,11 @@ -package com.clubber.ClubberServer.domain.calendar.controller; - -import com.clubber.ClubberServer.domain.calendar.domain.CalendarStatus; -import com.clubber.ClubberServer.domain.calendar.domain.OrderStatus; -import com.clubber.ClubberServer.domain.calendar.dto.*; -import com.clubber.ClubberServer.domain.calendar.service.CalendarAdminService; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.global.common.page.PageResponse; +package com.clubber.domain.calendar.controller; + +import com.clubber.domain.calendar.domain.CalendarStatus; +import com.clubber.domain.calendar.domain.OrderStatus; +import com.clubber.domain.calendar.dto.*; +import com.clubber.domain.calendar.service.CalendarAdminService; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.global.common.page.PageResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/controller/CalendarController.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/controller/CalendarController.java similarity index 75% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/controller/CalendarController.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/controller/CalendarController.java index 268803394..d287f3a54 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/controller/CalendarController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/controller/CalendarController.java @@ -1,9 +1,12 @@ -package com.clubber.ClubberServer.domain.calendar.controller; - -import com.clubber.ClubberServer.domain.calendar.dto.*; -import com.clubber.ClubberServer.domain.calendar.service.CalendarService; -import com.clubber.ClubberServer.global.common.slice.SliceResponse; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; +package com.clubber.domain.calendar.controller; + +import com.clubber.domain.calendar.dto.GetCalendarInListResponse; +import com.clubber.domain.calendar.dto.GetCalendarResponse; +import com.clubber.domain.calendar.dto.GetNextAlwaysCalendarRequest; +import com.clubber.domain.calendar.dto.GetTodayCalendarResponse; +import com.clubber.domain.calendar.service.CalendarService; +import com.clubber.global.common.slice.SliceResponse; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/domain/Calendar.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/domain/Calendar.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/domain/Calendar.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/domain/Calendar.java index 3d9279130..a8d2f266e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/domain/Calendar.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/domain/Calendar.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.calendar.domain; +package com.clubber.domain.calendar.domain; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.domain.user.domain.AccountRole; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.domain.domains.user.domain.AccountRole; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/domain/CalendarStatus.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/domain/CalendarStatus.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/domain/CalendarStatus.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/domain/CalendarStatus.java index 7725f9da7..835e05b13 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/domain/CalendarStatus.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/domain/CalendarStatus.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.calendar.domain; +package com.clubber.domain.calendar.domain; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.global.mapper.enums.EnumDefaultMapperType; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.common.mapper.enums.EnumDefaultMapperType; import lombok.AllArgsConstructor; import java.time.LocalDateTime; diff --git a/Clubber-External/src/main/java/com/clubber/domain/calendar/domain/OrderStatus.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/domain/OrderStatus.java new file mode 100644 index 000000000..c035e4187 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/domain/OrderStatus.java @@ -0,0 +1,5 @@ +package com.clubber.domain.calendar.domain; + +public enum OrderStatus { + ASC +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/CreateCalendarRequest.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/CreateCalendarRequest.java similarity index 81% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/CreateCalendarRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/CreateCalendarRequest.java index ece51a45f..6c0a91f48 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/CreateCalendarRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/CreateCalendarRequest.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.domain.user.domain.AccountRole; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.domain.domains.user.domain.AccountRole; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/CreateCalendarResponse.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/CreateCalendarResponse.java similarity index 76% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/CreateCalendarResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/CreateCalendarResponse.java index e9026311c..7849c3d53 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/CreateCalendarResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/CreateCalendarResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.domain.Calendar; import io.swagger.v3.oas.annotations.media.Schema; public record CreateCalendarResponse( diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetAlwaysCalendarResponse.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetAlwaysCalendarResponse.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetAlwaysCalendarResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetAlwaysCalendarResponse.java index ff8f7a27a..2fe90360e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetAlwaysCalendarResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetAlwaysCalendarResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.recruit.domain.RecruitType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarDuplicateRequest.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarDuplicateRequest.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarDuplicateRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarDuplicateRequest.java index 0f3f3d058..9b637aa95 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarDuplicateRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarDuplicateRequest.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.recruit.domain.RecruitType; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarDuplicateResponse.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarDuplicateResponse.java similarity index 67% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarDuplicateResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarDuplicateResponse.java index 578a82898..dd12e7717 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarDuplicateResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarDuplicateResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.recruit.domain.RecruitType; import io.swagger.v3.oas.annotations.media.Schema; public record GetCalendarDuplicateResponse( diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarInListResponse.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarInListResponse.java similarity index 95% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarInListResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarInListResponse.java index 072285597..fd5c2f56e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarInListResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarInListResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarResponse.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarResponse.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarResponse.java index 20256db73..57e925bf2 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarResponse.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.domain.user.domain.AccountRole; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.domain.domains.user.domain.AccountRole; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarResponseWithLinkedStatus.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarResponseWithLinkedStatus.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarResponseWithLinkedStatus.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarResponseWithLinkedStatus.java index 898f5cc19..dd5d4f5cf 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetCalendarResponseWithLinkedStatus.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetCalendarResponseWithLinkedStatus.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.domain.user.domain.AccountRole; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.domain.domains.user.domain.AccountRole; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetNextAlwaysCalendarRequest.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetNextAlwaysCalendarRequest.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetNextAlwaysCalendarRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetNextAlwaysCalendarRequest.java index bd95a5449..fe9929d06 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetNextAlwaysCalendarRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetNextAlwaysCalendarRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; import jakarta.validation.constraints.*; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetNonAlwaysCalendarResponse.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetNonAlwaysCalendarResponse.java similarity index 93% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetNonAlwaysCalendarResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetNonAlwaysCalendarResponse.java index c3c59538a..507cd8a3b 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetNonAlwaysCalendarResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetNonAlwaysCalendarResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.domain.Calendar; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetTodayCalendarResponse.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetTodayCalendarResponse.java similarity index 77% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetTodayCalendarResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetTodayCalendarResponse.java index 938ffa112..081f20802 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/GetTodayCalendarResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/GetTodayCalendarResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; +import com.clubber.domain.domains.club.domain.Club; import io.swagger.v3.oas.annotations.media.Schema; public record GetTodayCalendarResponse( diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/UpdateCalendarRequest.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/UpdateCalendarRequest.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/dto/UpdateCalendarRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/dto/UpdateCalendarRequest.java index a50578c88..a230e2956 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/dto/UpdateCalendarRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/dto/UpdateCalendarRequest.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.calendar.dto; +package com.clubber.domain.calendar.dto; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.recruit.domain.RecruitType; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarErrorCode.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarErrorCode.java similarity index 81% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarErrorCode.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarErrorCode.java index 8b4d12d8f..890035ca0 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarErrorCode.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarErrorCode.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.calendar.exception; +package com.clubber.domain.calendar.exception; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.ErrorReason; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.ErrorReason; import lombok.AllArgsConstructor; import org.springframework.http.HttpStatus; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarInvalidMonthException.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarInvalidMonthException.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarInvalidMonthException.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarInvalidMonthException.java index f9797a3a7..94ccf1479 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarInvalidMonthException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarInvalidMonthException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.calendar.exception; +package com.clubber.domain.calendar.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class CalendarInvalidMonthException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarNotFoundException.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarNotFoundException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarNotFoundException.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarNotFoundException.java index 061882752..c6817ae94 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarNotFoundException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.calendar.exception; +package com.clubber.domain.calendar.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class CalendarNotFoundException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarPostUnauthorizedException.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarPostUnauthorizedException.java similarity index 69% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarPostUnauthorizedException.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarPostUnauthorizedException.java index ac7b3f9aa..03e29bf67 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/exception/CalendarPostUnauthorizedException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/exception/CalendarPostUnauthorizedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.calendar.exception; +package com.clubber.domain.calendar.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class CalendarPostUnauthorizedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarAppender.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarAppender.java similarity index 74% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarAppender.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarAppender.java index 6ca21a05b..53f772cc0 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarAppender.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarAppender.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.calendar.implement; +package com.clubber.domain.calendar.implement; -import com.clubber.ClubberServer.domain.calendar.dto.UpdateCalendarRequest; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.repository.CalendarRepository; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.calendar.dto.UpdateCalendarRequest; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.repository.CalendarRepository; +import com.clubber.domain.recruit.domain.RecruitType; import java.time.LocalDateTime; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarMapper.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarMapper.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarMapper.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarMapper.java index e40d292c1..8b05d555f 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarMapper.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarMapper.java @@ -1,14 +1,14 @@ -package com.clubber.ClubberServer.domain.calendar.implement; +package com.clubber.domain.calendar.implement; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.dto.*; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitReader; -import com.clubber.ClubberServer.domain.user.domain.AccountRole; -import com.clubber.ClubberServer.global.common.page.PageResponse; -import com.clubber.ClubberServer.global.common.slice.SliceResponse; -import com.clubber.ClubberServer.global.util.SliceUtil; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.dto.*; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.implement.RecruitReader; +import com.clubber.domain.domains.user.domain.AccountRole; +import com.clubber.global.common.page.PageResponse; +import com.clubber.global.common.slice.SliceResponse; +import com.clubber.global.util.SliceUtil; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarReader.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarReader.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarReader.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarReader.java index ac9d0ca2b..3f49eefe6 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarReader.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarReader.java @@ -1,14 +1,14 @@ -package com.clubber.ClubberServer.domain.calendar.implement; +package com.clubber.domain.calendar.implement; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.domain.CalendarStatus; -import com.clubber.ClubberServer.domain.calendar.domain.OrderStatus; -import com.clubber.ClubberServer.domain.calendar.dto.GetAlwaysCalendarResponse; -import com.clubber.ClubberServer.domain.calendar.dto.GetCalendarDuplicateRequest; -import com.clubber.ClubberServer.domain.calendar.exception.CalendarNotFoundException; -import com.clubber.ClubberServer.domain.calendar.repository.CalendarRepository; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.domain.CalendarStatus; +import com.clubber.domain.calendar.domain.OrderStatus; +import com.clubber.domain.calendar.dto.GetAlwaysCalendarResponse; +import com.clubber.domain.calendar.dto.GetCalendarDuplicateRequest; +import com.clubber.domain.calendar.exception.CalendarNotFoundException; +import com.clubber.domain.calendar.repository.CalendarRepository; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.RecruitType; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarValidator.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarValidator.java similarity index 55% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarValidator.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarValidator.java index fb1be2782..866cbab90 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/implement/CalendarValidator.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/implement/CalendarValidator.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.calendar.implement; +package com.clubber.domain.calendar.implement; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.exception.CalendarPostUnauthorizedException; -import com.clubber.ClubberServer.domain.calendar.exception.CalendarInvalidMonthException; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.exception.CalendarPostUnauthorizedException; +import com.clubber.domain.calendar.exception.CalendarInvalidMonthException; import org.springframework.stereotype.Component; @Component diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarCustomRepository.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarCustomRepository.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarCustomRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarCustomRepository.java index d4a26d69a..e39a5f565 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarCustomRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarCustomRepository.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.calendar.repository; +package com.clubber.domain.calendar.repository; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.domain.CalendarStatus; -import com.clubber.ClubberServer.domain.calendar.domain.OrderStatus; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.domain.CalendarStatus; +import com.clubber.domain.calendar.domain.OrderStatus; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.RecruitType; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarCustomRepositoryImpl.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarCustomRepositoryImpl.java similarity index 90% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarCustomRepositoryImpl.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarCustomRepositoryImpl.java index f8d7a013b..fd9eb61eb 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarCustomRepositoryImpl.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarCustomRepositoryImpl.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.calendar.repository; +package com.clubber.domain.calendar.repository; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.domain.CalendarStatus; -import com.clubber.ClubberServer.domain.calendar.domain.OrderStatus; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.domain.CalendarStatus; +import com.clubber.domain.calendar.domain.OrderStatus; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.RecruitType; import com.querydsl.core.types.Expression; import com.querydsl.core.types.Order; import com.querydsl.core.types.OrderSpecifier; @@ -19,8 +19,8 @@ import java.time.LocalDateTime; import java.util.List; -import static com.clubber.ClubberServer.domain.calendar.domain.QCalendar.calendar; -import static com.clubber.ClubberServer.domain.recruit.domain.RecruitType.ALWAYS; +import static com.clubber.domain.calendar.domain.QCalendar.calendar; +import static com.clubber.domain.recruit.domain.RecruitType.ALWAYS; @RequiredArgsConstructor public class CalendarCustomRepositoryImpl implements CalendarCustomRepository { diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarFilterType.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarFilterType.java similarity index 57% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarFilterType.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarFilterType.java index 1e64610ba..099d4805b 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarFilterType.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarFilterType.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.calendar.repository; +package com.clubber.domain.calendar.repository; public enum CalendarFilterType { ALL, diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarRepository.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarRepository.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarRepository.java index 1d4a9a1ba..b1c4e3de9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/repository/CalendarRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/repository/CalendarRepository.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.calendar.repository; +package com.clubber.domain.calendar.repository; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.dto.GetAlwaysCalendarResponse; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.dto.GetAlwaysCalendarResponse; +import com.clubber.domain.recruit.domain.RecruitType; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -22,7 +22,7 @@ List findCalendarsWithinDateRange(LocalDateTime startOfMonth, LocalDateTime startOfNextMonth, List recruitTypes); - @Query("SELECT new com.clubber.ClubberServer.domain.calendar.dto.GetAlwaysCalendarResponse( " + + @Query("SELECT new com.clubber.domain.calendar.dto.GetAlwaysCalendarResponse( " + "c.club.id, c.club.name,CAST(COUNT(c)-1 AS long)) " + "FROM Calendar c " + "WHERE c.recruitType = :recruitType " + diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/service/CalendarAdminService.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/service/CalendarAdminService.java similarity index 72% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/service/CalendarAdminService.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/service/CalendarAdminService.java index 89d6db068..9c83a3252 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/service/CalendarAdminService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/service/CalendarAdminService.java @@ -1,18 +1,18 @@ -package com.clubber.ClubberServer.domain.calendar.service; +package com.clubber.domain.calendar.service; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.domain.CalendarStatus; -import com.clubber.ClubberServer.domain.calendar.domain.OrderStatus; -import com.clubber.ClubberServer.domain.calendar.dto.*; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarAppender; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarMapper; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarReader; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarValidator; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.global.common.page.PageResponse; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.domain.CalendarStatus; +import com.clubber.domain.calendar.domain.OrderStatus; +import com.clubber.domain.calendar.dto.*; +import com.clubber.domain.calendar.implement.CalendarAppender; +import com.clubber.domain.calendar.implement.CalendarMapper; +import com.clubber.domain.calendar.implement.CalendarReader; +import com.clubber.domain.calendar.implement.CalendarValidator; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.global.common.page.PageResponse; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/service/CalendarService.java b/Clubber-External/src/main/java/com/clubber/domain/calendar/service/CalendarService.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/domain/calendar/service/CalendarService.java rename to Clubber-External/src/main/java/com/clubber/domain/calendar/service/CalendarService.java index e17aa3e74..069e48d7c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/service/CalendarService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/calendar/service/CalendarService.java @@ -1,13 +1,13 @@ -package com.clubber.ClubberServer.domain.calendar.service; +package com.clubber.domain.calendar.service; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.dto.*; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarMapper; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarReader; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarValidator; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.global.common.slice.SliceResponse; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.dto.*; +import com.clubber.domain.calendar.implement.CalendarMapper; +import com.clubber.domain.calendar.implement.CalendarReader; +import com.clubber.domain.calendar.implement.CalendarValidator; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.global.common.slice.SliceResponse; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/controller/ClubCategoryController.java b/Clubber-External/src/main/java/com/clubber/domain/club/controller/ClubCategoryController.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/domain/club/controller/ClubCategoryController.java rename to Clubber-External/src/main/java/com/clubber/domain/club/controller/ClubCategoryController.java index 86b756652..1ab01306e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/controller/ClubCategoryController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/controller/ClubCategoryController.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.club.controller; +package com.clubber.domain.club.controller; -import com.clubber.ClubberServer.domain.club.domain.College; -import com.clubber.ClubberServer.domain.club.dto.CollegeResponse; -import com.clubber.ClubberServer.domain.club.service.ClubCategoryService; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; +import com.clubber.domain.domains.club.domain.College; +import com.clubber.domain.club.dto.CollegeResponse; +import com.clubber.domain.club.service.ClubCategoryService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; +import com.clubber.common.vo.enums.EnumMapperVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/controller/ClubController.java b/Clubber-External/src/main/java/com/clubber/domain/club/controller/ClubController.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/domain/club/controller/ClubController.java rename to Clubber-External/src/main/java/com/clubber/domain/club/controller/ClubController.java index 4307c2fa7..f7373c05d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/controller/ClubController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/controller/ClubController.java @@ -1,11 +1,11 @@ -package com.clubber.ClubberServer.domain.club.controller; +package com.clubber.domain.club.controller; -import com.clubber.ClubberServer.domain.club.domain.Department; -import com.clubber.ClubberServer.domain.club.domain.Division; -import com.clubber.ClubberServer.domain.club.domain.Hashtag; -import com.clubber.ClubberServer.domain.club.dto.*; -import com.clubber.ClubberServer.domain.club.service.ClubService; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; +import com.clubber.domain.club.dto.*; +import com.clubber.domain.domains.club.domain.Department; +import com.clubber.domain.domains.club.domain.Division; +import com.clubber.domain.domains.club.domain.Hashtag; +import com.clubber.domain.club.service.ClubService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/CollegeResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/CollegeResponse.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/CollegeResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/CollegeResponse.java index ba03f595a..449c394ae 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/CollegeResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/CollegeResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.College; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; +import com.clubber.domain.domains.club.domain.College; +import com.clubber.common.vo.enums.EnumMapperVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/DepartmentSmallDto.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/DepartmentSmallDto.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/DepartmentSmallDto.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/DepartmentSmallDto.java index 3051424d3..93319bcd8 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/DepartmentSmallDto.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/DepartmentSmallDto.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Department; +import com.clubber.domain.domains.club.domain.Department; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubByDivisionResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubByDivisionResponse.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubByDivisionResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubByDivisionResponse.java index c77f2f08e..0b6730f84 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubByDivisionResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubByDivisionResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Division; +import com.clubber.domain.domains.club.domain.Division; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubByHashTagResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubByHashTagResponse.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubByHashTagResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubByHashTagResponse.java index 34580681b..083e58535 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubByHashTagResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubByHashTagResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.common.vo.ImageVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubInfoResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubInfoResponse.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubInfoResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubInfoResponse.java index 8d18462b6..38b96d7e3 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubInfoResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubInfoResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.ClubInfo; +import com.clubber.domain.domains.club.domain.ClubInfo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubIntoCardResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubIntoCardResponse.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubIntoCardResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubIntoCardResponse.java index 443f8ee2f..67b1573da 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubIntoCardResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubIntoCardResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.common.vo.ImageVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubPopularResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubPopularResponse.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubPopularResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubPopularResponse.java index 93e416745..c09f43eac 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubPopularResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubPopularResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; +import com.clubber.domain.domains.club.domain.Club; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubResponse.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubResponse.java index 198e9ffd6..88079595e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.common.vo.ImageVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubSearchResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubSearchResponse.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubSearchResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubSearchResponse.java index 49bd03224..9ae832603 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubSearchResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubSearchResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.common.vo.ImageVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubsByHashTagResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubsByHashTagResponse.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubsByHashTagResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubsByHashTagResponse.java index 6f53f17fc..e9b4d0250 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubsByHashTagResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubsByHashTagResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Hashtag; +import com.clubber.domain.domains.club.domain.Hashtag; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.List; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubsSearchForSignUpResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubsSearchForSignUpResponse.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubsSearchForSignUpResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubsSearchForSignUpResponse.java index cf80748f1..95fcb0f40 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubsSearchForSignUpResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubsSearchForSignUpResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; +import com.clubber.domain.domains.club.domain.Club; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubsSearchResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubsSearchResponse.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubsSearchResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubsSearchResponse.java index 9b25457d7..2fd3b1281 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetClubsSearchResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetClubsSearchResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetOfficialClubGroupResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetOfficialClubGroupResponse.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetOfficialClubGroupResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetOfficialClubGroupResponse.java index 8c5b6954c..70653041a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetOfficialClubGroupResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetOfficialClubGroupResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.ClubType; +import com.clubber.domain.domains.club.domain.ClubType; import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetOfficialClubResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetOfficialClubResponse.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetOfficialClubResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetOfficialClubResponse.java index 00fbf12b1..44c8c337e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetOfficialClubResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetOfficialClubResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.common.vo.ImageVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetSummaryClubGroupResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetSummaryClubGroupResponse.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetSummaryClubGroupResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetSummaryClubGroupResponse.java index 3f21d6267..1f294850b 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetSummaryClubGroupResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetSummaryClubGroupResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Division; +import com.clubber.domain.domains.club.domain.Division; import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetSummaryClubResponse.java b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetSummaryClubResponse.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/domain/club/dto/GetSummaryClubResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/club/dto/GetSummaryClubResponse.java index 05b980048..8ddbfe07f 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/dto/GetSummaryClubResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/dto/GetSummaryClubResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.dto; +package com.clubber.domain.club.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; +import com.clubber.domain.domains.club.domain.Club; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/implement/ClubAppender.java b/Clubber-External/src/main/java/com/clubber/domain/club/implement/ClubAppender.java similarity index 62% rename from src/main/java/com/clubber/ClubberServer/domain/club/implement/ClubAppender.java rename to Clubber-External/src/main/java/com/clubber/domain/club/implement/ClubAppender.java index 39303c5eb..607fec379 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/implement/ClubAppender.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/implement/ClubAppender.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.club.implement; +package com.clubber.domain.club.implement; -import com.clubber.ClubberServer.domain.club.domain.ClubInfo; +import com.clubber.domain.domains.club.domain.ClubInfo; import org.springframework.stereotype.Component; @Component diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/implement/ClubReader.java b/Clubber-External/src/main/java/com/clubber/domain/club/implement/ClubReader.java similarity index 80% rename from src/main/java/com/clubber/ClubberServer/domain/club/implement/ClubReader.java rename to Clubber-External/src/main/java/com/clubber/domain/club/implement/ClubReader.java index 9bd1d2bea..3b924f21a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/implement/ClubReader.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/implement/ClubReader.java @@ -1,11 +1,8 @@ -package com.clubber.ClubberServer.domain.club.implement; +package com.clubber.domain.club.implement; -import com.clubber.ClubberServer.domain.club.domain.*; -import com.clubber.ClubberServer.domain.club.exception.ClubNotFoundException; -import com.clubber.ClubberServer.domain.club.exception.DepartmentNotFoundException; -import com.clubber.ClubberServer.domain.club.exception.DivisionNotFoundException; -import com.clubber.ClubberServer.domain.club.exception.HashtagNotFoundException; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; +import com.clubber.domain.domains.club.domain.*; +import com.clubber.domain.domains.club.exception.ClubNotFoundException; +import com.clubber.domain.domains.club.repository.ClubRepository; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/service/ClubCategoryService.java b/Clubber-External/src/main/java/com/clubber/domain/club/service/ClubCategoryService.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/domain/club/service/ClubCategoryService.java rename to Clubber-External/src/main/java/com/clubber/domain/club/service/ClubCategoryService.java index e698a1e55..9a95b501d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/service/ClubCategoryService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/service/ClubCategoryService.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.club.service; +package com.clubber.domain.club.service; -import com.clubber.ClubberServer.domain.club.domain.College; -import com.clubber.ClubberServer.domain.club.dto.CollegeResponse; -import com.clubber.ClubberServer.global.mapper.enums.EnumMapper; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; +import com.clubber.domain.domains.club.domain.College; +import com.clubber.domain.club.dto.CollegeResponse; +import com.clubber.common.mapper.enums.EnumMapper; +import com.clubber.common.vo.enums.EnumMapperVO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/service/ClubService.java b/Clubber-External/src/main/java/com/clubber/domain/club/service/ClubService.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/club/service/ClubService.java rename to Clubber-External/src/main/java/com/clubber/domain/club/service/ClubService.java index 8e92c18ec..8ee48e180 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/club/service/ClubService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/club/service/ClubService.java @@ -1,9 +1,10 @@ -package com.clubber.ClubberServer.domain.club.service; +package com.clubber.domain.club.service; -import com.clubber.ClubberServer.domain.club.domain.*; -import com.clubber.ClubberServer.domain.club.dto.*; -import com.clubber.ClubberServer.domain.club.implement.ClubAppender; -import com.clubber.ClubberServer.domain.club.implement.ClubReader; +import com.clubber.domain.club.dto.*; +import com.clubber.domain.club.implement.ClubAppender; +import com.clubber.domain.club.implement.ClubReader; +import com.clubber.domain.domains.club.domain.*; +import com.clubber.domain.review.dto.GetClubReviewAgreedStatusResponse; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -43,9 +44,6 @@ public DepartmentSmallDto getClubsByDepartment(Department department) { @Transactional public GetClubResponse getClubsIndividualPage(Long clubId) { Club club = clubReader.findById(clubId); - - club.validateAgreeToProvideInfo(); - ClubInfo clubInfo = club.getClubInfo(); clubAppender.increaseClubTotalView(clubInfo); return GetClubResponse.of(club, GetClubInfoResponse.from(clubInfo)); @@ -123,4 +121,10 @@ public List searchForSignUp(String clubName) { .map(GetClubsSearchForSignUpResponse::from) .collect(Collectors.toList()); } + + @Transactional(readOnly = true) + public GetClubReviewAgreedStatusResponse getClubReviewAgreedStatus(Long clubId) { + Club club = clubReader.findById(clubId); + return GetClubReviewAgreedStatusResponse.from(club); + } } \ No newline at end of file diff --git a/src/main/java/com/clubber/ClubberServer/domain/example/ExampleController.java b/Clubber-External/src/main/java/com/clubber/domain/example/ExampleController.java similarity index 63% rename from src/main/java/com/clubber/ClubberServer/domain/example/ExampleController.java rename to Clubber-External/src/main/java/com/clubber/domain/example/ExampleController.java index 4fc511009..9ea1389dd 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/example/ExampleController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/example/ExampleController.java @@ -1,13 +1,13 @@ -package com.clubber.ClubberServer.domain.example; - -import com.clubber.ClubberServer.domain.admin.exception.AdminErrorCode; -import com.clubber.ClubberServer.domain.club.exception.ClubErrorCode; -import com.clubber.ClubberServer.domain.favorite.exception.FavoriteErrorCode; -import com.clubber.ClubberServer.domain.notice.exception.NoticeErrorCode; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitErrorCode; -import com.clubber.ClubberServer.domain.review.exception.ReviewErrorCode; -import com.clubber.ClubberServer.domain.user.exception.UserErrorCode; -import com.clubber.ClubberServer.global.config.swagger.ApiErrorCodeExample; +package com.clubber.domain.example; + +import com.clubber.domain.domains.admin.exception.AdminErrorCode; +import com.clubber.domain.domains.club.exception.ClubErrorCode; +import com.clubber.domain.domains.favorite.exception.FavoriteErrorCode; +import com.clubber.domain.notice.exception.NoticeErrorCode; +import com.clubber.domain.recruit.exception.RecruitErrorCode; +import com.clubber.domain.domains.review.exception.ReviewErrorCode; +import com.clubber.domain.domains.user.exception.UserErrorCode; +import com.clubber.global.config.swagger.ApiErrorCodeExample; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/src/main/java/com/clubber/ClubberServer/domain/faq/controller/FaqController.java b/Clubber-External/src/main/java/com/clubber/domain/faq/controller/FaqController.java similarity index 74% rename from src/main/java/com/clubber/ClubberServer/domain/faq/controller/FaqController.java rename to Clubber-External/src/main/java/com/clubber/domain/faq/controller/FaqController.java index fc443ec32..b45146cbd 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/faq/controller/FaqController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/faq/controller/FaqController.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.faq.controller; +package com.clubber.domain.faq.controller; -import com.clubber.ClubberServer.domain.faq.service.FaqService; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; +import com.clubber.domain.faq.service.FaqService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; +import com.clubber.common.vo.enums.EnumMapperVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/faq/domain/Faq.java b/Clubber-External/src/main/java/com/clubber/domain/faq/domain/Faq.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/faq/domain/Faq.java rename to Clubber-External/src/main/java/com/clubber/domain/faq/domain/Faq.java index 5aea67fa2..d48fc4b70 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/faq/domain/Faq.java +++ b/Clubber-External/src/main/java/com/clubber/domain/faq/domain/Faq.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.faq.domain; +package com.clubber.domain.faq.domain; -import com.clubber.ClubberServer.global.mapper.enums.EnumFaqMapperType; +import com.clubber.common.mapper.enums.EnumFaqMapperType; import lombok.AllArgsConstructor; @AllArgsConstructor diff --git a/src/main/java/com/clubber/ClubberServer/domain/faq/dto/GetFaqsResponse.java b/Clubber-External/src/main/java/com/clubber/domain/faq/dto/GetFaqsResponse.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/faq/dto/GetFaqsResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/faq/dto/GetFaqsResponse.java index 0215604e2..8e2d362cd 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/faq/dto/GetFaqsResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/faq/dto/GetFaqsResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.faq.dto; +package com.clubber.domain.faq.dto; -import com.clubber.ClubberServer.domain.faq.domain.Faq; +import com.clubber.domain.faq.domain.Faq; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/faq/service/FaqService.java b/Clubber-External/src/main/java/com/clubber/domain/faq/service/FaqService.java similarity index 61% rename from src/main/java/com/clubber/ClubberServer/domain/faq/service/FaqService.java rename to Clubber-External/src/main/java/com/clubber/domain/faq/service/FaqService.java index 78d05eeaa..ec5a456be 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/faq/service/FaqService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/faq/service/FaqService.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.faq.service; +package com.clubber.domain.faq.service; -import com.clubber.ClubberServer.global.mapper.enums.EnumMapper; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; +import com.clubber.common.mapper.enums.EnumMapper; +import com.clubber.common.vo.enums.EnumMapperVO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/controller/FavoriteController.java b/Clubber-External/src/main/java/com/clubber/domain/favorite/controller/FavoriteController.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/controller/FavoriteController.java rename to Clubber-External/src/main/java/com/clubber/domain/favorite/controller/FavoriteController.java index 805a92987..853492da4 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/controller/FavoriteController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/favorite/controller/FavoriteController.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.favorite.controller; +package com.clubber.domain.favorite.controller; -import com.clubber.ClubberServer.domain.favorite.dto.FavoriteResponse; -import com.clubber.ClubberServer.domain.favorite.service.FavoriteService; +import com.clubber.domain.favorite.dto.FavoriteResponse; +import com.clubber.domain.favorite.service.FavoriteService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/dto/FavoriteResponse.java b/Clubber-External/src/main/java/com/clubber/domain/favorite/dto/FavoriteResponse.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/dto/FavoriteResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/favorite/dto/FavoriteResponse.java index 52efd9875..ba3f4aaad 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/dto/FavoriteResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/favorite/dto/FavoriteResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.favorite.dto; +package com.clubber.domain.favorite.dto; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; +import com.clubber.domain.domains.favorite.domain.Favorite; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/dto/GetFavoriteDetailsResponse.java b/Clubber-External/src/main/java/com/clubber/domain/favorite/dto/GetFavoriteDetailsResponse.java similarity index 81% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/dto/GetFavoriteDetailsResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/favorite/dto/GetFavoriteDetailsResponse.java index 8b126e338..db3c3f8b6 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/dto/GetFavoriteDetailsResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/favorite/dto/GetFavoriteDetailsResponse.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.favorite.dto; +package com.clubber.domain.favorite.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.common.vo.ImageVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/implement/FavoriteAppender.java b/Clubber-External/src/main/java/com/clubber/domain/favorite/implement/FavoriteAppender.java similarity index 65% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/implement/FavoriteAppender.java rename to Clubber-External/src/main/java/com/clubber/domain/favorite/implement/FavoriteAppender.java index 3387001a2..395d2d19d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/implement/FavoriteAppender.java +++ b/Clubber-External/src/main/java/com/clubber/domain/favorite/implement/FavoriteAppender.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.favorite.implement; +package com.clubber.domain.favorite.implement; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.favorite.repository.FavoriteRepository; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.favorite.repository.FavoriteRepository; +import com.clubber.domain.domains.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/implement/FavoriteReader.java b/Clubber-External/src/main/java/com/clubber/domain/favorite/implement/FavoriteReader.java similarity index 72% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/implement/FavoriteReader.java rename to Clubber-External/src/main/java/com/clubber/domain/favorite/implement/FavoriteReader.java index 9a7328b9a..9dafcab66 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/implement/FavoriteReader.java +++ b/Clubber-External/src/main/java/com/clubber/domain/favorite/implement/FavoriteReader.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.favorite.implement; +package com.clubber.domain.favorite.implement; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.favorite.exception.FavoriteNotFoundException; -import com.clubber.ClubberServer.domain.favorite.repository.FavoriteRepository; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.domains.favorite.exception.FavoriteNotFoundException; +import com.clubber.domain.favorite.repository.FavoriteRepository; +import com.clubber.domain.domains.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/implement/FavoriteValidator.java b/Clubber-External/src/main/java/com/clubber/domain/favorite/implement/FavoriteValidator.java similarity index 50% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/implement/FavoriteValidator.java rename to Clubber-External/src/main/java/com/clubber/domain/favorite/implement/FavoriteValidator.java index 5d970bec1..101c1920f 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/implement/FavoriteValidator.java +++ b/Clubber-External/src/main/java/com/clubber/domain/favorite/implement/FavoriteValidator.java @@ -1,10 +1,9 @@ -package com.clubber.ClubberServer.domain.favorite.implement; +package com.clubber.domain.favorite.implement; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.favorite.exception.ClubAlreadyRegisterdFavoriteException; -import com.clubber.ClubberServer.domain.favorite.repository.FavoriteRepository; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.favorite.exception.ClubAlreadyRegisterdFavoriteException; +import com.clubber.domain.favorite.repository.FavoriteRepository; +import com.clubber.domain.domains.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/repository/FavoriteCustomRepository.java b/Clubber-External/src/main/java/com/clubber/domain/favorite/repository/FavoriteCustomRepository.java similarity index 73% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/repository/FavoriteCustomRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/favorite/repository/FavoriteCustomRepository.java index 03b9e17bc..3d9ba562a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/repository/FavoriteCustomRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/favorite/repository/FavoriteCustomRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.favorite.repository; +package com.clubber.domain.favorite.repository; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; +import com.clubber.domain.domains.favorite.domain.Favorite; import java.util.List; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/repository/FavoriteCustomRepositoryImpl.java b/Clubber-External/src/main/java/com/clubber/domain/favorite/repository/FavoriteCustomRepositoryImpl.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/repository/FavoriteCustomRepositoryImpl.java rename to Clubber-External/src/main/java/com/clubber/domain/favorite/repository/FavoriteCustomRepositoryImpl.java index 176c2ab8b..fe822aa14 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/repository/FavoriteCustomRepositoryImpl.java +++ b/Clubber-External/src/main/java/com/clubber/domain/favorite/repository/FavoriteCustomRepositoryImpl.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.favorite.repository; +package com.clubber.domain.favorite.repository; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; +import com.clubber.domain.domains.favorite.domain.Favorite; import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; import lombok.RequiredArgsConstructor; @@ -10,8 +10,8 @@ import java.util.List; -import static com.clubber.ClubberServer.domain.club.domain.QClub.club; -import static com.clubber.ClubberServer.domain.favorite.domain.QFavorite.favorite; +import static com.clubber.domain.domains.club.domain.QClub.club; +import static com.clubber.domain.domains.favorite.domain.QFavorite.favorite; @RequiredArgsConstructor public class FavoriteCustomRepositoryImpl implements FavoriteCustomRepository { diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/repository/FavoriteRepository.java b/Clubber-External/src/main/java/com/clubber/domain/favorite/repository/FavoriteRepository.java similarity index 63% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/repository/FavoriteRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/favorite/repository/FavoriteRepository.java index e0697bdbf..068ff7ff9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/repository/FavoriteRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/favorite/repository/FavoriteRepository.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.favorite.repository; +package com.clubber.domain.favorite.repository; import java.util.List; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.domains.user.domain.User; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/clubber/ClubberServer/domain/favorite/service/FavoriteService.java b/Clubber-External/src/main/java/com/clubber/domain/favorite/service/FavoriteService.java similarity index 63% rename from src/main/java/com/clubber/ClubberServer/domain/favorite/service/FavoriteService.java rename to Clubber-External/src/main/java/com/clubber/domain/favorite/service/FavoriteService.java index 84b82d2ae..4808a38d4 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/favorite/service/FavoriteService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/favorite/service/FavoriteService.java @@ -1,15 +1,15 @@ -package com.clubber.ClubberServer.domain.favorite.service; - -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.implement.ClubReader; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.favorite.dto.FavoriteResponse; -import com.clubber.ClubberServer.domain.favorite.implement.FavoriteAppender; -import com.clubber.ClubberServer.domain.favorite.implement.FavoriteReader; -import com.clubber.ClubberServer.domain.favorite.implement.FavoriteValidator; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.domain.user.implement.UserReader; -import com.clubber.ClubberServer.global.config.security.SecurityUtils; +package com.clubber.domain.favorite.service; + +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.club.implement.ClubReader; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.favorite.dto.FavoriteResponse; +import com.clubber.domain.favorite.implement.FavoriteAppender; +import com.clubber.domain.favorite.implement.FavoriteReader; +import com.clubber.domain.favorite.implement.FavoriteValidator; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.user.implement.UserReader; +import com.clubber.global.config.security.SecurityUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/image/controller/ImageController.java b/Clubber-External/src/main/java/com/clubber/domain/image/controller/ImageController.java similarity index 82% rename from src/main/java/com/clubber/ClubberServer/domain/image/controller/ImageController.java rename to Clubber-External/src/main/java/com/clubber/domain/image/controller/ImageController.java index 6997bc6d9..722e4a817 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/image/controller/ImageController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/image/controller/ImageController.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.image.controller; +package com.clubber.domain.image.controller; -import com.clubber.ClubberServer.domain.image.dto.CreateImagePresignedUrlResponse; -import com.clubber.ClubberServer.domain.image.dto.CreateRecruitsImagePresigneUrlRequest; -import com.clubber.ClubberServer.domain.image.service.S3UploadPresignedService; -import com.clubber.ClubberServer.global.config.s3.ImageFileExtension; +import com.clubber.domain.image.dto.CreateImagePresignedUrlResponse; +import com.clubber.domain.image.dto.CreateRecruitsImagePresigneUrlRequest; +import com.clubber.domain.image.service.S3UploadPresignedService; +import com.clubber.global.config.s3.ImageFileExtension; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import java.util.List; diff --git a/src/main/java/com/clubber/ClubberServer/domain/image/dto/CreateImagePresignedUrlResponse.java b/Clubber-External/src/main/java/com/clubber/domain/image/dto/CreateImagePresignedUrlResponse.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/image/dto/CreateImagePresignedUrlResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/image/dto/CreateImagePresignedUrlResponse.java index af1ac6f06..d4ed5f73f 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/image/dto/CreateImagePresignedUrlResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/image/dto/CreateImagePresignedUrlResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.image.dto; +package com.clubber.domain.image.dto; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.common.vo.ImageVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/image/dto/CreateRecruitsImagePresigneUrlRequest.java b/Clubber-External/src/main/java/com/clubber/domain/image/dto/CreateRecruitsImagePresigneUrlRequest.java similarity index 73% rename from src/main/java/com/clubber/ClubberServer/domain/image/dto/CreateRecruitsImagePresigneUrlRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/image/dto/CreateRecruitsImagePresigneUrlRequest.java index bc404e83d..87f6ee261 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/image/dto/CreateRecruitsImagePresigneUrlRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/image/dto/CreateRecruitsImagePresigneUrlRequest.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.image.dto; +package com.clubber.domain.image.dto; -import com.clubber.ClubberServer.global.config.s3.ImageFileExtension; +import com.clubber.global.config.s3.ImageFileExtension; import java.util.ArrayList; import java.util.List; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/image/service/S3UploadPresignedService.java b/Clubber-External/src/main/java/com/clubber/domain/image/service/S3UploadPresignedService.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/image/service/S3UploadPresignedService.java rename to Clubber-External/src/main/java/com/clubber/domain/image/service/S3UploadPresignedService.java index 41a8d90c3..eea048831 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/image/service/S3UploadPresignedService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/image/service/S3UploadPresignedService.java @@ -1,17 +1,17 @@ -package com.clubber.ClubberServer.domain.image.service; +package com.clubber.domain.image.service; import com.amazonaws.HttpMethod; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.Headers; import com.amazonaws.services.s3.model.CannedAccessControlList; import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.club.exception.ClubNotFoundException; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; -import com.clubber.ClubberServer.domain.image.dto.CreateImagePresignedUrlResponse; -import com.clubber.ClubberServer.domain.image.dto.CreateRecruitsImagePresigneUrlRequest; -import com.clubber.ClubberServer.global.config.s3.ImageFileExtension; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.domains.club.exception.ClubNotFoundException; +import com.clubber.domain.domains.club.repository.ClubRepository; +import com.clubber.domain.image.dto.CreateImagePresignedUrlResponse; +import com.clubber.domain.image.dto.CreateRecruitsImagePresigneUrlRequest; +import com.clubber.global.config.s3.ImageFileExtension; import java.net.URL; import java.util.Date; import java.util.List; diff --git a/src/main/java/com/clubber/ClubberServer/domain/notice/controller/NoticeController.java b/Clubber-External/src/main/java/com/clubber/domain/notice/controller/NoticeController.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/domain/notice/controller/NoticeController.java rename to Clubber-External/src/main/java/com/clubber/domain/notice/controller/NoticeController.java index 195b96a29..0f6787fd3 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/notice/controller/NoticeController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/notice/controller/NoticeController.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.notice.controller; +package com.clubber.domain.notice.controller; -import com.clubber.ClubberServer.domain.notice.dto.GetNoticeResponse; -import com.clubber.ClubberServer.domain.notice.dto.GetNoticesAtMainResponse; -import com.clubber.ClubberServer.domain.notice.service.NoticeService; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; -import com.clubber.ClubberServer.global.common.page.PageResponse; +import com.clubber.domain.notice.dto.GetNoticeResponse; +import com.clubber.domain.notice.dto.GetNoticesAtMainResponse; +import com.clubber.domain.notice.service.NoticeService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; +import com.clubber.global.common.page.PageResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/notice/domain/Notice.java b/Clubber-External/src/main/java/com/clubber/domain/notice/domain/Notice.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/domain/notice/domain/Notice.java rename to Clubber-External/src/main/java/com/clubber/domain/notice/domain/Notice.java index bc7bbb8ff..6915fa22c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/notice/domain/Notice.java +++ b/Clubber-External/src/main/java/com/clubber/domain/notice/domain/Notice.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.notice.domain; +package com.clubber.domain.notice.domain; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.domain.owner.domain.Owner; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.owner.domain.Owner; +import com.clubber.domain.common.vo.ImageVO; import jakarta.persistence.*; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/notice/dto/GetNoticeResponse.java b/Clubber-External/src/main/java/com/clubber/domain/notice/dto/GetNoticeResponse.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/notice/dto/GetNoticeResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/notice/dto/GetNoticeResponse.java index 1d9bfef77..391f989ad 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/notice/dto/GetNoticeResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/notice/dto/GetNoticeResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.notice.dto; +package com.clubber.domain.notice.dto; -import com.clubber.ClubberServer.domain.notice.domain.Notice; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.notice.domain.Notice; +import com.clubber.domain.common.vo.ImageVO; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/src/main/java/com/clubber/ClubberServer/domain/notice/dto/GetNoticesAtMainResponse.java b/Clubber-External/src/main/java/com/clubber/domain/notice/dto/GetNoticesAtMainResponse.java similarity index 90% rename from src/main/java/com/clubber/ClubberServer/domain/notice/dto/GetNoticesAtMainResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/notice/dto/GetNoticesAtMainResponse.java index 25a11cb16..327b85594 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/notice/dto/GetNoticesAtMainResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/notice/dto/GetNoticesAtMainResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.notice.dto; +package com.clubber.domain.notice.dto; -import com.clubber.ClubberServer.domain.notice.domain.Notice; +import com.clubber.domain.notice.domain.Notice; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/notice/exception/NoticeErrorCode.java b/Clubber-External/src/main/java/com/clubber/domain/notice/exception/NoticeErrorCode.java similarity index 76% rename from src/main/java/com/clubber/ClubberServer/domain/notice/exception/NoticeErrorCode.java rename to Clubber-External/src/main/java/com/clubber/domain/notice/exception/NoticeErrorCode.java index a192ed5bf..50387d0dd 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/notice/exception/NoticeErrorCode.java +++ b/Clubber-External/src/main/java/com/clubber/domain/notice/exception/NoticeErrorCode.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.notice.exception; +package com.clubber.domain.notice.exception; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.ErrorReason; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.ErrorReason; import lombok.AllArgsConstructor; import org.springframework.http.HttpStatus; diff --git a/src/main/java/com/clubber/ClubberServer/domain/notice/exception/NoticeNotFoundException.java b/Clubber-External/src/main/java/com/clubber/domain/notice/exception/NoticeNotFoundException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/notice/exception/NoticeNotFoundException.java rename to Clubber-External/src/main/java/com/clubber/domain/notice/exception/NoticeNotFoundException.java index 58f5e1651..3b17bb2eb 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/notice/exception/NoticeNotFoundException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/notice/exception/NoticeNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.notice.exception; +package com.clubber.domain.notice.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class NoticeNotFoundException extends BaseException { public static final BaseException EXCEPTION = new NoticeNotFoundException(); diff --git a/src/main/java/com/clubber/ClubberServer/domain/notice/mapper/NoticeMapper.java b/Clubber-External/src/main/java/com/clubber/domain/notice/mapper/NoticeMapper.java similarity index 65% rename from src/main/java/com/clubber/ClubberServer/domain/notice/mapper/NoticeMapper.java rename to Clubber-External/src/main/java/com/clubber/domain/notice/mapper/NoticeMapper.java index 7fb7f5e2e..3723440e6 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/notice/mapper/NoticeMapper.java +++ b/Clubber-External/src/main/java/com/clubber/domain/notice/mapper/NoticeMapper.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.notice.mapper; +package com.clubber.domain.notice.mapper; -import com.clubber.ClubberServer.domain.notice.domain.Notice; -import com.clubber.ClubberServer.domain.notice.dto.GetNoticeResponse; -import com.clubber.ClubberServer.domain.notice.dto.GetNoticesAtMainResponse; -import com.clubber.ClubberServer.global.common.page.PageResponse; +import com.clubber.domain.notice.domain.Notice; +import com.clubber.domain.notice.dto.GetNoticeResponse; +import com.clubber.domain.notice.dto.GetNoticesAtMainResponse; +import com.clubber.global.common.page.PageResponse; import org.springframework.data.domain.Page; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/notice/repository/NoticeRepository.java b/Clubber-External/src/main/java/com/clubber/domain/notice/repository/NoticeRepository.java similarity index 74% rename from src/main/java/com/clubber/ClubberServer/domain/notice/repository/NoticeRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/notice/repository/NoticeRepository.java index e75bdcc6a..0df96d283 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/notice/repository/NoticeRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/notice/repository/NoticeRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.notice.repository; +package com.clubber.domain.notice.repository; -import com.clubber.ClubberServer.domain.notice.domain.Notice; +import com.clubber.domain.notice.domain.Notice; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/clubber/ClubberServer/domain/notice/service/NoticeService.java b/Clubber-External/src/main/java/com/clubber/domain/notice/service/NoticeService.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/notice/service/NoticeService.java rename to Clubber-External/src/main/java/com/clubber/domain/notice/service/NoticeService.java index 8495bedba..1e4f25497 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/notice/service/NoticeService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/notice/service/NoticeService.java @@ -1,12 +1,12 @@ -package com.clubber.ClubberServer.domain.notice.service; - -import com.clubber.ClubberServer.domain.notice.domain.Notice; -import com.clubber.ClubberServer.domain.notice.dto.GetNoticeResponse; -import com.clubber.ClubberServer.domain.notice.dto.GetNoticesAtMainResponse; -import com.clubber.ClubberServer.domain.notice.exception.NoticeNotFoundException; -import com.clubber.ClubberServer.domain.notice.mapper.NoticeMapper; -import com.clubber.ClubberServer.domain.notice.repository.NoticeRepository; -import com.clubber.ClubberServer.global.common.page.PageResponse; +package com.clubber.domain.notice.service; + +import com.clubber.domain.notice.domain.Notice; +import com.clubber.domain.notice.dto.GetNoticeResponse; +import com.clubber.domain.notice.dto.GetNoticesAtMainResponse; +import com.clubber.domain.notice.exception.NoticeNotFoundException; +import com.clubber.domain.notice.mapper.NoticeMapper; +import com.clubber.domain.notice.repository.NoticeRepository; +import com.clubber.global.common.page.PageResponse; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/owner/domain/Owner.java b/Clubber-External/src/main/java/com/clubber/domain/owner/domain/Owner.java similarity index 82% rename from src/main/java/com/clubber/ClubberServer/domain/owner/domain/Owner.java rename to Clubber-External/src/main/java/com/clubber/domain/owner/domain/Owner.java index 9d6c7d929..dd08e0a58 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/owner/domain/Owner.java +++ b/Clubber-External/src/main/java/com/clubber/domain/owner/domain/Owner.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.owner.domain; +package com.clubber.domain.owner.domain; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.domain.user.domain.AccountRole; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.domains.user.domain.AccountRole; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/owner/service/OwnerService.java b/Clubber-External/src/main/java/com/clubber/domain/owner/service/OwnerService.java similarity index 70% rename from src/main/java/com/clubber/ClubberServer/domain/owner/service/OwnerService.java rename to Clubber-External/src/main/java/com/clubber/domain/owner/service/OwnerService.java index e25b63f87..517d1bc1d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/owner/service/OwnerService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/owner/service/OwnerService.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.owner.service; +package com.clubber.domain.owner.service; -import com.clubber.ClubberServer.domain.admin.domain.PendingAdminInfo; -import com.clubber.ClubberServer.domain.admin.implement.PendingAdminInfoManager; -import com.clubber.ClubberServer.domain.admin.implement.PendingAdminInfoReader; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; +import com.clubber.domain.admin.implement.PendingAdminInfoManager; +import com.clubber.domain.admin.implement.PendingAdminInfoReader; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/controller/AdminRecruitController.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/controller/AdminRecruitController.java similarity index 85% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/controller/AdminRecruitController.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/controller/AdminRecruitController.java index 1c37c0cc7..7ac1eddbd 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/controller/AdminRecruitController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/controller/AdminRecruitController.java @@ -1,10 +1,8 @@ -package com.clubber.ClubberServer.domain.recruit.controller; +package com.clubber.domain.recruit.controller; - -import com.clubber.ClubberServer.domain.recruit.dto.*; -import com.clubber.ClubberServer.domain.recruit.dto.DeleteRecruitByIdResponse; -import com.clubber.ClubberServer.domain.recruit.service.RecruitService; -import com.clubber.ClubberServer.global.common.page.PageResponse; +import com.clubber.domain.recruit.dto.*; +import com.clubber.domain.recruit.service.RecruitService; +import com.clubber.global.common.page.PageResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/controller/RecruitCommentController.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/controller/RecruitCommentController.java similarity index 75% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/controller/RecruitCommentController.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/controller/RecruitCommentController.java index 86b71f3b2..f72d5ea20 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/controller/RecruitCommentController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/controller/RecruitCommentController.java @@ -1,11 +1,11 @@ -package com.clubber.ClubberServer.domain.recruit.controller; +package com.clubber.domain.recruit.controller; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.DeleteRecruitCommentResponse; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.GetRecruitCommentResponse; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.PostRecruitCommentRequest; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.PostRecruitCommentResponse; -import com.clubber.ClubberServer.domain.recruit.service.RecruitCommentService; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; +import com.clubber.domain.recruit.dto.recruitComment.DeleteRecruitCommentResponse; +import com.clubber.domain.recruit.dto.recruitComment.GetRecruitCommentResponse; +import com.clubber.domain.recruit.dto.recruitComment.PostRecruitCommentRequest; +import com.clubber.domain.recruit.dto.recruitComment.PostRecruitCommentResponse; +import com.clubber.domain.recruit.service.RecruitCommentService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/controller/RecruitController.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/controller/RecruitController.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/controller/RecruitController.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/controller/RecruitController.java index 251ad7e5c..cee24673d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/controller/RecruitController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/controller/RecruitController.java @@ -1,10 +1,11 @@ -package com.clubber.ClubberServer.domain.recruit.controller; - -import com.clubber.ClubberServer.domain.recruit.dto.*; -import com.clubber.ClubberServer.domain.recruit.dto.mainPage.GetRecruitsMainPageResponse; -import com.clubber.ClubberServer.domain.recruit.service.RecruitService; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; -import com.clubber.ClubberServer.global.common.page.PageResponse; +package com.clubber.domain.recruit.controller; + +import com.clubber.domain.recruit.dto.GetOneRecruitInListResponse; +import com.clubber.domain.recruit.dto.GetOneRecruitWithClubResponse; +import com.clubber.domain.recruit.dto.mainPage.GetRecruitsMainPageResponse; +import com.clubber.domain.recruit.service.RecruitService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; +import com.clubber.global.common.page.PageResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -25,7 +26,7 @@ public class RecruitController { @DisableSwaggerSecurity @Operation(summary = "특정 동아리 모집글 조회") public PageResponse getRecruitsByClubId(@PathVariable("clubId")Long clubId, - @PageableDefault(size = 5) Pageable pageable){ + @PageableDefault(size = 5) Pageable pageable){ return recruitService.getRecruitsByClubId(clubId,pageable); } diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/controller/RecruitLinkedCalendarController.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/controller/RecruitLinkedCalendarController.java similarity index 80% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/controller/RecruitLinkedCalendarController.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/controller/RecruitLinkedCalendarController.java index 62726c975..72fe3b4d5 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/controller/RecruitLinkedCalendarController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/controller/RecruitLinkedCalendarController.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.recruit.controller; +package com.clubber.domain.recruit.controller; -import com.clubber.ClubberServer.domain.recruit.dto.CreateLinkedCalendarRequest; -import com.clubber.ClubberServer.domain.recruit.dto.CreateLinkedCalendarResponse; -import com.clubber.ClubberServer.domain.recruit.service.RecruitLinkedCalendarService; +import com.clubber.domain.recruit.dto.CreateLinkedCalendarRequest; +import com.clubber.domain.recruit.dto.CreateLinkedCalendarResponse; +import com.clubber.domain.recruit.service.RecruitLinkedCalendarService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/domain/Recruit.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/domain/Recruit.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/domain/Recruit.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/domain/Recruit.java index a6ef0700b..69225c3e7 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/domain/Recruit.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/domain/Recruit.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.recruit.domain; +package com.clubber.domain.recruit.domain; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.domain.CalendarStatus; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitAlreadyCalendarUnlinkedException; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.domain.CalendarStatus; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.recruit.exception.RecruitAlreadyCalendarUnlinkedException; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/domain/RecruitComment.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/domain/RecruitComment.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/domain/RecruitComment.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/domain/RecruitComment.java index bd411bf42..2f4a462aa 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/domain/RecruitComment.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/domain/RecruitComment.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.recruit.domain; +package com.clubber.domain.recruit.domain; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.domains.user.domain.User; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/domain/RecruitImage.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/domain/RecruitImage.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/domain/RecruitImage.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/domain/RecruitImage.java index d13edcc9d..23532a083 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/domain/RecruitImage.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/domain/RecruitImage.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.recruit.domain; +package com.clubber.domain.recruit.domain; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.common.BaseEntity; +import com.clubber.domain.common.vo.ImageVO; import jakarta.persistence.*; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/domain/RecruitType.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/domain/RecruitType.java similarity index 75% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/domain/RecruitType.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/domain/RecruitType.java index c10906f47..d60a8096d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/domain/RecruitType.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/domain/RecruitType.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.domain; +package com.clubber.domain.recruit.domain; -import com.clubber.ClubberServer.global.mapper.enums.EnumDefaultMapperType; +import com.clubber.common.mapper.enums.EnumDefaultMapperType; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/CreateLinkedCalendarRequest.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/CreateLinkedCalendarRequest.java similarity index 85% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/CreateLinkedCalendarRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/CreateLinkedCalendarRequest.java index 0d3b34cf1..9d7f6f1ee 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/CreateLinkedCalendarRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/CreateLinkedCalendarRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/CreateLinkedCalendarResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/CreateLinkedCalendarResponse.java similarity index 64% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/CreateLinkedCalendarResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/CreateLinkedCalendarResponse.java index 97c91af53..b186cc555 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/CreateLinkedCalendarResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/CreateLinkedCalendarResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; public record CreateLinkedCalendarResponse( Long recruitId, diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/DeleteRecruitByIdResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/DeleteRecruitByIdResponse.java similarity index 94% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/DeleteRecruitByIdResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/DeleteRecruitByIdResponse.java index 5475ab4f9..7776ccc49 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/DeleteRecruitByIdResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/DeleteRecruitByIdResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.common.vo.ImageVO; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneAdminRecruitResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneAdminRecruitResponse.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneAdminRecruitResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneAdminRecruitResponse.java index 1dea71b1a..9bd613646 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneAdminRecruitResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneAdminRecruitResponse.java @@ -1,8 +1,7 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; -import com.clubber.ClubberServer.domain.calendar.domain.CalendarStatus; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.common.vo.ImageVO; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneRecruitInListResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneRecruitInListResponse.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneRecruitInListResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneRecruitInListResponse.java index 364753450..6306b8268 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneRecruitInListResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneRecruitInListResponse.java @@ -1,9 +1,8 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.common.vo.ImageVO; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; import java.time.LocalDateTime; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneRecruitResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneRecruitResponse.java similarity index 93% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneRecruitResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneRecruitResponse.java index 948394920..406c390f1 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneRecruitResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneRecruitResponse.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.common.vo.ImageVO; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneRecruitWithClubResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneRecruitWithClubResponse.java similarity index 93% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneRecruitWithClubResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneRecruitWithClubResponse.java index e82ebd28d..aa7f53a03 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetOneRecruitWithClubResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetOneRecruitWithClubResponse.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.common.vo.ImageVO; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetRecruitResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetRecruitResponse.java similarity index 93% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetRecruitResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetRecruitResponse.java index 58fc17bd6..bfc781959 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/GetRecruitResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/GetRecruitResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.Recruit; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/PostRecruitRequest.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/PostRecruitRequest.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/PostRecruitRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/PostRecruitRequest.java index 658754001..055b4ca6f 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/PostRecruitRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/PostRecruitRequest.java @@ -1,15 +1,15 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitType; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import java.time.LocalDateTime; import java.util.List; -import lombok.AccessLevel; + import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/PostRecruitResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/PostRecruitResponse.java similarity index 90% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/PostRecruitResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/PostRecruitResponse.java index 7492d7933..407a39169 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/PostRecruitResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/PostRecruitResponse.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.common.vo.ImageVO; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; + import java.time.LocalDateTime; import java.util.List; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/UpdateRecruitRequest.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/UpdateRecruitRequest.java similarity index 93% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/UpdateRecruitRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/UpdateRecruitRequest.java index 846a2aafd..24185a943 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/UpdateRecruitRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/UpdateRecruitRequest.java @@ -1,13 +1,13 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.recruit.domain.RecruitType; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import java.time.LocalDateTime; import java.util.List; -import lombok.AccessLevel; + import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/UpdateRecruitResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/UpdateRecruitResponse.java similarity index 95% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/UpdateRecruitResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/UpdateRecruitResponse.java index aad3b4c8c..6198a46e5 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/UpdateRecruitResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/UpdateRecruitResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.dto; +package com.clubber.domain.recruit.dto; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.Recruit; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/mainPage/GetOneRecruitMainPageResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/mainPage/GetOneRecruitMainPageResponse.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/mainPage/GetOneRecruitMainPageResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/mainPage/GetOneRecruitMainPageResponse.java index 5687ad35f..d77cdbb51 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/mainPage/GetOneRecruitMainPageResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/mainPage/GetOneRecruitMainPageResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.recruit.dto.mainPage; +package com.clubber.domain.recruit.dto.mainPage; -import com.clubber.ClubberServer.domain.calendar.domain.CalendarStatus; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; +import com.clubber.domain.calendar.domain.CalendarStatus; +import com.clubber.domain.recruit.domain.Recruit; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/mainPage/GetRecruitsMainPageResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/mainPage/GetRecruitsMainPageResponse.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/mainPage/GetRecruitsMainPageResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/mainPage/GetRecruitsMainPageResponse.java index dbe831264..1391c9712 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/mainPage/GetRecruitsMainPageResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/mainPage/GetRecruitsMainPageResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.domain.recruit.dto.mainPage; +package com.clubber.domain.recruit.dto.mainPage; import java.util.List; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/DeleteRecruitCommentResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/DeleteRecruitCommentResponse.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/DeleteRecruitCommentResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/DeleteRecruitCommentResponse.java index 663e5563a..5c734517c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/DeleteRecruitCommentResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/DeleteRecruitCommentResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.dto.recruitComment; +package com.clubber.domain.recruit.dto.recruitComment; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.domain.RecruitComment; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/GetRecruitCommentResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/GetRecruitCommentResponse.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/GetRecruitCommentResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/GetRecruitCommentResponse.java index b0b5571a1..c026c557c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/GetRecruitCommentResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/GetRecruitCommentResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.dto.recruitComment; +package com.clubber.domain.recruit.dto.recruitComment; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.domain.RecruitComment; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/PostRecruitCommentRequest.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/PostRecruitCommentRequest.java similarity index 77% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/PostRecruitCommentRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/PostRecruitCommentRequest.java index 13db4e813..48bc669d7 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/PostRecruitCommentRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/PostRecruitCommentRequest.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.recruit.dto.recruitComment; +package com.clubber.domain.recruit.dto.recruitComment; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitComment; +import com.clubber.domain.domains.user.domain.User; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/PostRecruitCommentResponse.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/PostRecruitCommentResponse.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/PostRecruitCommentResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/PostRecruitCommentResponse.java index 5fa5b7ebd..88128f11d 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/dto/recruitComment/PostRecruitCommentResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/dto/recruitComment/PostRecruitCommentResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.dto.recruitComment; +package com.clubber.domain.recruit.dto.recruitComment; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.domain.RecruitComment; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitAlreadyCalendarUnlinkedException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitAlreadyCalendarUnlinkedException.java similarity index 54% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitAlreadyCalendarUnlinkedException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitAlreadyCalendarUnlinkedException.java index 082454a6c..fa6f395bf 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitAlreadyCalendarUnlinkedException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitAlreadyCalendarUnlinkedException.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; -import static com.clubber.ClubberServer.domain.recruit.exception.RecruitErrorCode.RECRUIT_ALREADY_CALENDAR_UNLINKED; +import static com.clubber.domain.recruit.exception.RecruitErrorCode.RECRUIT_ALREADY_CALENDAR_UNLINKED; public class RecruitAlreadyCalendarUnlinkedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitCalendarInvalidYearException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitCalendarInvalidYearException.java similarity index 70% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitCalendarInvalidYearException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitCalendarInvalidYearException.java index 3fd492bd9..5290e7f68 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitCalendarInvalidYearException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitCalendarInvalidYearException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitCalendarInvalidYearException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitCommentNotFoundException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitCommentNotFoundException.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitCommentNotFoundException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitCommentNotFoundException.java index 68376c168..c044180a1 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitCommentNotFoundException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitCommentNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitCommentNotFoundException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitCommentUserUnauthorizedException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitCommentUserUnauthorizedException.java similarity index 70% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitCommentUserUnauthorizedException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitCommentUserUnauthorizedException.java index 37d58230d..a6ca14c52 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitCommentUserUnauthorizedException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitCommentUserUnauthorizedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitCommentUserUnauthorizedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitDateOutOfOrder.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitDateOutOfOrder.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitDateOutOfOrder.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitDateOutOfOrder.java index b780d1204..9b076a421 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitDateOutOfOrder.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitDateOutOfOrder.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitDateOutOfOrder extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitDeleteUnauthorizedException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitDeleteUnauthorizedException.java similarity index 69% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitDeleteUnauthorizedException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitDeleteUnauthorizedException.java index 17d796ae0..0c2e69c06 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitDeleteUnauthorizedException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitDeleteUnauthorizedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitDeleteUnauthorizedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitErrorCode.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitErrorCode.java similarity index 92% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitErrorCode.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitErrorCode.java index 8c06a9ed4..acffb9b0a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitErrorCode.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitErrorCode.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.ErrorReason; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.ErrorReason; import lombok.AllArgsConstructor; import org.springframework.http.HttpStatus; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitImageDeleteRemainDuplicatedException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitImageDeleteRemainDuplicatedException.java similarity index 72% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitImageDeleteRemainDuplicatedException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitImageDeleteRemainDuplicatedException.java index 7f6cc7b07..319c18c4e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitImageDeleteRemainDuplicatedException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitImageDeleteRemainDuplicatedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitImageDeleteRemainDuplicatedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitImageNotFoundException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitImageNotFoundException.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitImageNotFoundException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitImageNotFoundException.java index de63ae879..ca5b787f9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitImageNotFoundException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitImageNotFoundException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitImageNotFoundException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitImageRevisedFinalSizeException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitImageRevisedFinalSizeException.java similarity index 71% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitImageRevisedFinalSizeException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitImageRevisedFinalSizeException.java index 95439b2e7..967099722 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitImageRevisedFinalSizeException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitImageRevisedFinalSizeException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitImageRevisedFinalSizeException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitInvalidPeriodException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitInvalidPeriodException.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitInvalidPeriodException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitInvalidPeriodException.java index 3895f21cd..c7cb4ba78 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitInvalidPeriodException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitInvalidPeriodException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitInvalidPeriodException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitMissingPeriodException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitMissingPeriodException.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitMissingPeriodException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitMissingPeriodException.java index 38395a8d0..1a0e489cb 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitMissingPeriodException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitMissingPeriodException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitMissingPeriodException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitNotFoundException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitNotFoundException.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitNotFoundException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitNotFoundException.java index e2908b89d..8c83bf01e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitNotFoundException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitNotFoundException.java @@ -1,5 +1,5 @@ -package com.clubber.ClubberServer.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +package com.clubber.domain.recruit.exception; +import com.clubber.common.exception.BaseException; public class RecruitNotFoundException extends BaseException { public static final BaseException EXCEPTION = new RecruitNotFoundException(); diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitPeriodNotAllowedException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitPeriodNotAllowedException.java similarity index 69% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitPeriodNotAllowedException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitPeriodNotAllowedException.java index 04014eefd..ac8caf1d9 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitPeriodNotAllowedException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitPeriodNotAllowedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitPeriodNotAllowedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitUnauthorizedException.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitUnauthorizedException.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitUnauthorizedException.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitUnauthorizedException.java index 7602173a7..76edc8015 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/exception/RecruitUnauthorizedException.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/exception/RecruitUnauthorizedException.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.exception; +package com.clubber.domain.recruit.exception; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.exception.BaseException; public class RecruitUnauthorizedException extends BaseException { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitAppender.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitAppender.java similarity index 80% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitAppender.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitAppender.java index 4539f20c9..86ee5ffff 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitAppender.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitAppender.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.recruit.implement; +package com.clubber.domain.recruit.implement; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarAppender; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.dto.UpdateRecruitRequest; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitRepository; +import com.clubber.domain.calendar.implement.CalendarAppender; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.dto.UpdateRecruitRequest; +import com.clubber.domain.recruit.repository.RecruitRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitCommentAppender.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitCommentAppender.java similarity index 63% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitCommentAppender.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitCommentAppender.java index ada02c33c..fb3ac88f2 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitCommentAppender.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitCommentAppender.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.recruit.implement; +package com.clubber.domain.recruit.implement; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.PostRecruitCommentRequest; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitCommentRepository; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.dto.recruitComment.PostRecruitCommentRequest; +import com.clubber.domain.recruit.repository.RecruitCommentRepository; +import com.clubber.domain.domains.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitCommentReader.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitCommentReader.java similarity index 73% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitCommentReader.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitCommentReader.java index d49566046..55a0c37cc 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitCommentReader.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitCommentReader.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.recruit.implement; +package com.clubber.domain.recruit.implement; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitCommentNotFoundException; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitCommentRepository; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.exception.RecruitCommentNotFoundException; +import com.clubber.domain.recruit.repository.RecruitCommentRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitImageAppender.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitImageAppender.java similarity index 75% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitImageAppender.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitImageAppender.java index fb0b8dc4a..42a9d5465 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitImageAppender.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitImageAppender.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.domain.recruit.implement; +package com.clubber.domain.recruit.implement; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitImage; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitImageRepository; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitImage; +import com.clubber.domain.recruit.repository.RecruitImageRepository; +import com.clubber.domain.common.vo.ImageVO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitReader.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitReader.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitReader.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitReader.java index 4d3ef0125..8c2d77411 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitReader.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitReader.java @@ -1,10 +1,10 @@ -package com.clubber.ClubberServer.domain.recruit.implement; +package com.clubber.domain.recruit.implement; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitNotFoundException; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitRepository; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.exception.RecruitNotFoundException; +import com.clubber.domain.recruit.repository.RecruitRepository; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitValidator.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitValidator.java similarity index 57% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitValidator.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitValidator.java index f01f78e64..5efffb27a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/implement/RecruitValidator.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/implement/RecruitValidator.java @@ -1,15 +1,15 @@ -package com.clubber.ClubberServer.domain.recruit.implement; +package com.clubber.domain.recruit.implement; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitCommentUserUnauthorizedException; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitDeleteUnauthorizedException; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitInvalidPeriodException; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitMissingPeriodException; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitPeriodNotAllowedException; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.domain.recruit.exception.RecruitCommentUserUnauthorizedException; +import com.clubber.domain.recruit.exception.RecruitDeleteUnauthorizedException; +import com.clubber.domain.recruit.exception.RecruitInvalidPeriodException; +import com.clubber.domain.recruit.exception.RecruitMissingPeriodException; +import com.clubber.domain.recruit.exception.RecruitPeriodNotAllowedException; +import com.clubber.domain.domains.user.domain.User; import java.time.LocalDateTime; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/mapper/RecruitMapper.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/mapper/RecruitMapper.java similarity index 77% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/mapper/RecruitMapper.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/mapper/RecruitMapper.java index 0ed2a2751..5dea4dc3b 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/mapper/RecruitMapper.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/mapper/RecruitMapper.java @@ -1,17 +1,19 @@ -package com.clubber.ClubberServer.domain.recruit.mapper; - -import com.clubber.ClubberServer.domain.calendar.domain.CalendarStatus; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitImage; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.domain.recruit.dto.*; -import com.clubber.ClubberServer.domain.recruit.dto.mainPage.GetOneRecruitMainPageResponse; -import com.clubber.ClubberServer.domain.recruit.dto.mainPage.GetRecruitsMainPageResponse; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.GetRecruitCommentResponse; -import com.clubber.ClubberServer.domain.recruit.vo.RecruitCommentVO; -import com.clubber.ClubberServer.global.common.page.PageResponse; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +package com.clubber.domain.recruit.mapper; + +import com.clubber.domain.calendar.domain.CalendarStatus; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.domain.RecruitImage; +import com.clubber.domain.recruit.dto.GetOneAdminRecruitResponse; +import com.clubber.domain.recruit.dto.GetOneRecruitInListResponse; +import com.clubber.domain.recruit.dto.GetOneRecruitWithClubResponse; +import com.clubber.domain.recruit.dto.PostRecruitResponse; +import com.clubber.domain.recruit.dto.mainPage.GetOneRecruitMainPageResponse; +import com.clubber.domain.recruit.dto.mainPage.GetRecruitsMainPageResponse; +import com.clubber.domain.recruit.dto.recruitComment.GetRecruitCommentResponse; +import com.clubber.domain.recruit.vo.RecruitCommentVO; +import com.clubber.global.common.page.PageResponse; +import com.clubber.domain.common.vo.ImageVO; import java.time.LocalDateTime; import org.springframework.data.domain.Page; import org.springframework.stereotype.Component; @@ -54,7 +56,7 @@ public GetOneAdminRecruitResponse getOneAdminRecruitsById(Recruit recruit) { } public PostRecruitResponse getRecruitWithImageUrls(Recruit newRecruit, - List savedImages, Boolean isCalendarLinked) { + List savedImages, Boolean isCalendarLinked) { List imageUrls = savedImages.stream() .sorted(Comparator.comparing(RecruitImage::getOrderNum)) .map(RecruitImage::getImageUrl) diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitCommentRepository.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitCommentRepository.java similarity index 65% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitCommentRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitCommentRepository.java index b988be9e2..a7b9ef8e7 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitCommentRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitCommentRepository.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.recruit.repository; +package com.clubber.domain.recruit.repository; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitComment; import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitCustomRepository.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitCustomRepository.java similarity index 71% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitCustomRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitCustomRepository.java index 892fede9b..aedaec01a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitCustomRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitCustomRepository.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.recruit.repository; +package com.clubber.domain.recruit.repository; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.Recruit; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitCustomRepositoryImpl.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitCustomRepositoryImpl.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitCustomRepositoryImpl.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitCustomRepositoryImpl.java index 8504b0d06..fcdca2b59 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitCustomRepositoryImpl.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitCustomRepositoryImpl.java @@ -1,9 +1,7 @@ -package com.clubber.ClubberServer.domain.recruit.repository; +package com.clubber.domain.recruit.repository; -import static com.clubber.ClubberServer.domain.recruit.domain.QRecruit.recruit; - -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.Recruit; import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; @@ -15,6 +13,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.support.PageableExecutionUtils; +import static com.clubber.domain.recruit.domain.QRecruit.recruit; + @RequiredArgsConstructor public class RecruitCustomRepositoryImpl implements RecruitCustomRepository { diff --git a/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitImageCustomRepository.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitImageCustomRepository.java new file mode 100644 index 000000000..28700e24f --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitImageCustomRepository.java @@ -0,0 +1,11 @@ +package com.clubber.domain.recruit.repository; + +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitImage; + +import java.util.List; + +public interface RecruitImageCustomRepository { + + List queryRecruitImages(Recruit recruit); +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitImageCustomRepositoryImpl.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitImageCustomRepositoryImpl.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitImageCustomRepositoryImpl.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitImageCustomRepositoryImpl.java index ba160d438..cd990b82a 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitImageCustomRepositoryImpl.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitImageCustomRepositoryImpl.java @@ -1,12 +1,12 @@ -package com.clubber.ClubberServer.domain.recruit.repository; +package com.clubber.domain.recruit.repository; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitImage; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitImage; import com.querydsl.jpa.impl.JPAQueryFactory; import lombok.RequiredArgsConstructor; import java.util.List; -import static com.clubber.ClubberServer.domain.recruit.domain.QRecruitImage.recruitImage; +import static com.clubber.domain.recruit.domain.QRecruitImage.recruitImage; @RequiredArgsConstructor public class RecruitImageCustomRepositoryImpl implements RecruitImageCustomRepository { diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitImageRepository.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitImageRepository.java similarity index 58% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitImageRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitImageRepository.java index 690131e52..27ea75e52 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitImageRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitImageRepository.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.recruit.repository; +package com.clubber.domain.recruit.repository; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitImage; +import com.clubber.domain.recruit.domain.RecruitImage; import org.springframework.data.jpa.repository.JpaRepository; public interface RecruitImageRepository extends JpaRepository, diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitRepository.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitRepository.java similarity index 76% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitRepository.java index 5b4b24f55..ee24cfb95 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/repository/RecruitRepository.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.recruit.repository; +package com.clubber.domain.recruit.repository; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.recruit.domain.Recruit; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/service/RecruitCommentService.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/service/RecruitCommentService.java similarity index 63% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/service/RecruitCommentService.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/service/RecruitCommentService.java index 0096f769a..2625bf63c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/service/RecruitCommentService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/service/RecruitCommentService.java @@ -1,18 +1,18 @@ -package com.clubber.ClubberServer.domain.recruit.service; - -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.DeleteRecruitCommentResponse; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.GetRecruitCommentResponse; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.PostRecruitCommentRequest; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.PostRecruitCommentResponse; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitCommentAppender; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitCommentReader; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitReader; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitValidator; -import com.clubber.ClubberServer.domain.recruit.mapper.RecruitMapper; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.domain.user.implement.UserReader; +package com.clubber.domain.recruit.service; + +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.dto.recruitComment.DeleteRecruitCommentResponse; +import com.clubber.domain.recruit.dto.recruitComment.GetRecruitCommentResponse; +import com.clubber.domain.recruit.dto.recruitComment.PostRecruitCommentRequest; +import com.clubber.domain.recruit.dto.recruitComment.PostRecruitCommentResponse; +import com.clubber.domain.recruit.implement.RecruitCommentAppender; +import com.clubber.domain.recruit.implement.RecruitCommentReader; +import com.clubber.domain.recruit.implement.RecruitReader; +import com.clubber.domain.recruit.implement.RecruitValidator; +import com.clubber.domain.recruit.mapper.RecruitMapper; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.user.implement.UserReader; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/service/RecruitLinkedCalendarService.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/service/RecruitLinkedCalendarService.java similarity index 62% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/service/RecruitLinkedCalendarService.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/service/RecruitLinkedCalendarService.java index 5007684de..95a75c851 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/service/RecruitLinkedCalendarService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/service/RecruitLinkedCalendarService.java @@ -1,16 +1,16 @@ -package com.clubber.ClubberServer.domain.recruit.service; +package com.clubber.domain.recruit.service; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarAppender; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarMapper; -import com.clubber.ClubberServer.domain.calendar.implement.CalendarReader; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.dto.CreateLinkedCalendarRequest; -import com.clubber.ClubberServer.domain.recruit.dto.CreateLinkedCalendarResponse; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitReader; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitValidator; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.implement.CalendarAppender; +import com.clubber.domain.calendar.implement.CalendarMapper; +import com.clubber.domain.calendar.implement.CalendarReader; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.dto.CreateLinkedCalendarRequest; +import com.clubber.domain.recruit.dto.CreateLinkedCalendarResponse; +import com.clubber.domain.recruit.implement.RecruitReader; +import com.clubber.domain.recruit.implement.RecruitValidator; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/service/RecruitService.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/service/RecruitService.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/service/RecruitService.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/service/RecruitService.java index 7fb3c6df5..9aeacd303 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/service/RecruitService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/service/RecruitService.java @@ -1,25 +1,25 @@ -package com.clubber.ClubberServer.domain.recruit.service; - -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.implement.ClubReader; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitImage; -import com.clubber.ClubberServer.domain.recruit.dto.*; -import com.clubber.ClubberServer.domain.recruit.dto.mainPage.GetRecruitsMainPageResponse; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitImageDeleteRemainDuplicatedException; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitImageNotFoundException; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitImageRevisedFinalSizeException; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitAppender; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitImageAppender; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitReader; -import com.clubber.ClubberServer.domain.recruit.implement.RecruitValidator; -import com.clubber.ClubberServer.domain.recruit.mapper.RecruitMapper; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitImageRepository; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitRepository; -import com.clubber.ClubberServer.global.common.page.PageResponse; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +package com.clubber.domain.recruit.service; + +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.club.implement.ClubReader; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitImage; +import com.clubber.domain.recruit.dto.*; +import com.clubber.domain.recruit.dto.mainPage.GetRecruitsMainPageResponse; +import com.clubber.domain.recruit.exception.RecruitImageDeleteRemainDuplicatedException; +import com.clubber.domain.recruit.exception.RecruitImageNotFoundException; +import com.clubber.domain.recruit.exception.RecruitImageRevisedFinalSizeException; +import com.clubber.domain.recruit.implement.RecruitAppender; +import com.clubber.domain.recruit.implement.RecruitImageAppender; +import com.clubber.domain.recruit.implement.RecruitReader; +import com.clubber.domain.recruit.implement.RecruitValidator; +import com.clubber.domain.recruit.mapper.RecruitMapper; +import com.clubber.domain.recruit.repository.RecruitImageRepository; +import com.clubber.domain.recruit.repository.RecruitRepository; +import com.clubber.global.common.page.PageResponse; +import com.clubber.domain.common.vo.ImageVO; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -33,7 +33,7 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.IMAGE_SERVER; +import static com.clubber.common.consts.ClubberStatic.IMAGE_SERVER; @Service @RequiredArgsConstructor @@ -51,7 +51,7 @@ public class RecruitService { @Transactional(readOnly = true) public PageResponse getRecruitsByClubId(Long clubId, - Pageable pageable) { + Pageable pageable) { Club club = clubReader.findById(clubId); Page recruits = recruitReader.findRecruitPagesByClub(club, pageable); return recruitMapper.getRecruitsPageResponse(recruits); diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/vo/RecruitCommentVO.java b/Clubber-External/src/main/java/com/clubber/domain/recruit/vo/RecruitCommentVO.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/domain/recruit/vo/RecruitCommentVO.java rename to Clubber-External/src/main/java/com/clubber/domain/recruit/vo/RecruitCommentVO.java index 32a5b3ac5..ab7dbbd21 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/vo/RecruitCommentVO.java +++ b/Clubber-External/src/main/java/com/clubber/domain/recruit/vo/RecruitCommentVO.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.recruit.vo; +package com.clubber.domain.recruit.vo; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.GetRecruitCommentResponse; +import com.clubber.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.dto.recruitComment.GetRecruitCommentResponse; import lombok.Getter; import java.util.ArrayList; diff --git a/Clubber-External/src/main/java/com/clubber/domain/report/controller/ReportController.java b/Clubber-External/src/main/java/com/clubber/domain/report/controller/ReportController.java new file mode 100644 index 000000000..afd1aacbd --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/report/controller/ReportController.java @@ -0,0 +1,29 @@ +package com.clubber.domain.report.controller; + +import com.clubber.common.vo.enums.EnumMapperVO; +import com.clubber.domain.report.service.ReportService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/v1/reports") +@Tag(name = "[리뷰 신고]") +public class ReportController { + + private final ReportService reportService; + + @DisableSwaggerSecurity + @Operation(summary = "신고 사유 목록") + @GetMapping(value = "/reasons") + public List getReportReasons() { + return reportService.getReportReasons(); + } + +} diff --git a/Clubber-External/src/main/java/com/clubber/domain/report/service/ReportService.java b/Clubber-External/src/main/java/com/clubber/domain/report/service/ReportService.java new file mode 100644 index 000000000..0855dabe1 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/report/service/ReportService.java @@ -0,0 +1,50 @@ +package com.clubber.domain.report.service; + +import com.clubber.common.mapper.enums.EnumMapper; +import com.clubber.common.vo.enums.EnumMapperVO; +import java.util.List; + +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.report.repository.ReportRepository; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.implement.ReviewReader; +import com.clubber.domain.domains.review.implement.ReviewValidator; +import com.clubber.domain.domains.review.repository.ReviewRepository; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.review.dto.CreateReviewReportRequest; +import com.clubber.domain.review.dto.CreateReviewReportResponse; +import com.clubber.domain.user.implement.UserReader; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +public class ReportService { + + private final EnumMapper enumMapper; + private final ReviewValidator reviewValidator; + private final ReviewReader reviewReader; + private final ReportRepository reportRepository; + private final UserReader userReader; + + public List getReportReasons() { + return enumMapper.get("ReportReason"); + } + + @Transactional + public CreateReviewReportResponse createReviewReport(Long reviewId, CreateReviewReportRequest request) { + User user = userReader.getCurrentUser(); + Review review = reviewReader.findById(reviewId); + reviewValidator.validateNotSelfReview(user, review); + reviewValidator.validateReviewStatus(review); + reviewValidator.validateReportReason(request.getReportReason(), request.getDetailReason()); + + Report report = Report.of(review, request.getReportReason(), + request.getDetailReason()); + Report savedReport = reportRepository.save(report); + + return CreateReviewReportResponse.of(review, savedReport); + } + +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/controller/KeywordController.java b/Clubber-External/src/main/java/com/clubber/domain/review/controller/KeywordController.java similarity index 55% rename from src/main/java/com/clubber/ClubberServer/domain/review/controller/KeywordController.java rename to Clubber-External/src/main/java/com/clubber/domain/review/controller/KeywordController.java index 919403afd..a6eaddfa0 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/controller/KeywordController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/review/controller/KeywordController.java @@ -1,9 +1,8 @@ -package com.clubber.ClubberServer.domain.review.controller; +package com.clubber.domain.review.controller; -import com.clubber.ClubberServer.domain.review.service.ReviewService; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.client.PerspectiveClient; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; +import com.clubber.domain.review.dto.ReviewKeywordCategoryResponse; +import com.clubber.domain.review.service.ReviewService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -21,12 +20,10 @@ public class KeywordController { private final ReviewService reviewService; - private final PerspectiveClient perspectiveClient; - @Operation(summary = "리뷰 키워드 전체 목록 조회") @DisableSwaggerSecurity @GetMapping - public List getTotalReviews() { - return reviewService.getTotalKeywords(); + public List getTotalReviews() { + return reviewService.getTotalReviewKeywords(); } } diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/controller/PerspectiveController.java b/Clubber-External/src/main/java/com/clubber/domain/review/controller/PerspectiveController.java similarity index 64% rename from src/main/java/com/clubber/ClubberServer/domain/review/controller/PerspectiveController.java rename to Clubber-External/src/main/java/com/clubber/domain/review/controller/PerspectiveController.java index 15d9a409f..6a32a4a65 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/controller/PerspectiveController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/review/controller/PerspectiveController.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.review.controller; +package com.clubber.domain.review.controller; -import com.clubber.ClubberServer.domain.review.service.PerspectiveService; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto.CreateTextAnalyzeResponse; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto.TextDto; +import com.clubber.domain.review.service.PerspectiveService; +import com.clubber.global.infrastructure.outer.perspective.dto.CreateTextAnalyzeResponse; +import com.clubber.global.infrastructure.outer.perspective.dto.TextDto; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/Clubber-External/src/main/java/com/clubber/domain/review/controller/ReviewController.java b/Clubber-External/src/main/java/com/clubber/domain/review/controller/ReviewController.java new file mode 100644 index 000000000..fdbd57151 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/review/controller/ReviewController.java @@ -0,0 +1,86 @@ +package com.clubber.domain.review.controller; + +import com.clubber.domain.club.service.ClubService; +import com.clubber.domain.domains.review.domain.ReviewSortType; +import com.clubber.domain.report.service.ReportService; +import com.clubber.domain.review.dto.*; +import com.clubber.domain.review.service.ReviewLikeService; +import com.clubber.domain.review.service.ReviewService; +import com.clubber.global.config.swagger.DisableSwaggerSecurity; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/v1/clubs/{clubId}/reviews") +@RequiredArgsConstructor +@Tag(name = "[리뷰]") +public class ReviewController { + + private final ClubService clubService; + private final ReviewService reviewService; + private final ReviewLikeService reviewLikeService; + private final ReportService reportService; + + @Operation(summary = "동아리 리뷰 동의 여부 반환") + @DisableSwaggerSecurity + @GetMapping("/agree") + public GetClubReviewAgreedStatusResponse getClubReviewAgreedStatus(@PathVariable Long clubId) { + return clubService.getClubReviewAgreedStatus(clubId); + } + + @Operation(summary = "개별 동아리 별 리뷰 키워드 통계") + @DisableSwaggerSecurity + @GetMapping("/keyword-stats") + public GetClubReviewsKeywordStatsResponse getReviewKeywordStats(@PathVariable Long clubId, @RequestParam int limit) { + return reviewService.getClubReviewKeywordStats(clubId, limit); + } + + // === v2 === + @Operation(summary = "개별 동아리 별 리뷰 조회") + @DisableSwaggerSecurity + @GetMapping + public GetClubReviewsPageResponse getClubReviewsWithContentByClubId( + @PathVariable Long clubId, Pageable pageable, ReviewSortType reviewSortType) { + return reviewService.getClubReviewsWithContent(clubId, pageable, reviewSortType); + } + +// @Operation(summary = "개별 동아리 별 리뷰 조회 No Offset(Slice)") +// @DisableSwaggerSecurity +// @GetMapping("/slice") +// public GetClubReviewsSliceResponse getClubReviewsWithSliceContent( +// @PathVariable Long clubId, @PageableDefault(size = 5) Pageable pageable, +// @RequestParam(required = false) Long reviewid) { +// return reviewService.getClubReviewsWithSliceContent(clubId, pageable, reviewid); +// } + + + @Operation(summary = "동아리 리뷰 작성", description = "리뷰 키워드 항목과 한줄평을 선택하여 작성") + @PostMapping + public CreateClubReviewResponse createReviewWithContent( + @RequestBody @Valid CreateClubReviewRequest reviewRequest, + @PathVariable Long clubId) { + return reviewService.createReview(clubId, reviewRequest); + } + + @Operation(summary = "리뷰 좋아요 등록") + @PostMapping("/like/{id}") + public void createReviewLike(@PathVariable Long id) { + reviewLikeService.createReviewLike(id); + } + + @Operation(summary = "리뷰 좋아요 취소(삭제)") + @DeleteMapping("/like/{id}") + public void deleteReviewLike(@PathVariable Long id) { + reviewLikeService.deleteReviewLike(id); + } + + @Operation(summary = "리뷰 신고") + @PostMapping("/report/{id}") + public CreateReviewReportResponse postReviewReport(@PathVariable Long id,@RequestBody @Valid CreateReviewReportRequest request){ + return reportService.createReviewReport(id,request); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/dto/CreateClubReviewRequest.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateClubReviewRequest.java similarity index 77% rename from src/main/java/com/clubber/ClubberServer/domain/review/dto/CreateClubReviewRequest.java rename to Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateClubReviewRequest.java index 8c31f2584..28c01e693 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/dto/CreateClubReviewRequest.java +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateClubReviewRequest.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.domain.review.dto; +package com.clubber.domain.review.dto; -import com.clubber.ClubberServer.domain.review.domain.Keyword; -import com.clubber.ClubberServer.global.validator.enums.Enum; -import com.clubber.ClubberServer.global.validator.unique.Unique; +import com.clubber.domain.domains.review.domain.Keyword; +import com.clubber.global.validator.enums.Enum; +import com.clubber.global.validator.unique.Unique; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Size; import java.util.ArrayList; diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/dto/CreateClubReviewResponse.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateClubReviewResponse.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/domain/review/dto/CreateClubReviewResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateClubReviewResponse.java index 0cf943074..4845491ea 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/dto/CreateClubReviewResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateClubReviewResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.review.dto; +package com.clubber.domain.review.dto; -import com.clubber.ClubberServer.domain.review.domain.Review; +import com.clubber.domain.domains.review.domain.Review; import io.swagger.v3.oas.annotations.media.Schema; import java.util.Set; import lombok.AccessLevel; diff --git a/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateReviewApplyRequest.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateReviewApplyRequest.java new file mode 100644 index 000000000..fed1cf829 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateReviewApplyRequest.java @@ -0,0 +1,6 @@ +package com.clubber.domain.review.dto; + +public record CreateReviewApplyRequest( + String content +) { +} diff --git a/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateReviewReportRequest.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateReviewReportRequest.java new file mode 100644 index 000000000..cdf16ebe4 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateReviewReportRequest.java @@ -0,0 +1,22 @@ +package com.clubber.domain.review.dto; + +import com.clubber.domain.domains.report.domain.ReportReason; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class CreateReviewReportRequest { + + @Schema(description = "신고 사유", example = "ABUSE") + @NotNull(message = "신고 사유를 선택해주세요") + private ReportReason reportReason; + + @Schema(description = "기타 선택시, 직접 입력", example = "잘못된 내용 기재") + private String detailReason; + +} diff --git a/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateReviewReportResponse.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateReviewReportResponse.java new file mode 100644 index 000000000..37e116390 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/CreateReviewReportResponse.java @@ -0,0 +1,33 @@ +package com.clubber.domain.review.dto; + +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.review.domain.Review; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class CreateReviewReportResponse { + + @Schema(description = "신고된 리뷰 id", example = "12") + private final Long reviewId; + + @Schema(description = "접수된 신고 id", example = "1") + private final Long reportId; + + @Schema(description = "신고 사유", example = "활동이 재밌어요") + private final String reportReason; + + public static CreateReviewReportResponse of(Review review, Report report) { + return CreateReviewReportResponse.builder() + .reviewId(review.getId()) + .reportId(report.getId()) + .reportReason(report.getReportReason().getTitle()) + .build(); + } + +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewAgreedStatusResponse.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewAgreedStatusResponse.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewAgreedStatusResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewAgreedStatusResponse.java index 8524bf238..f31ef0bc1 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewAgreedStatusResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewAgreedStatusResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.review.dto; +package com.clubber.domain.review.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; +import com.clubber.domain.domains.club.domain.Club; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewsKeywordStatsResponse.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewsKeywordStatsResponse.java similarity index 90% rename from src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewsKeywordStatsResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewsKeywordStatsResponse.java index 4649f632c..74908c09f 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewsKeywordStatsResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewsKeywordStatsResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.review.dto; +package com.clubber.domain.review.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; +import com.clubber.domain.domains.club.domain.Club; import io.swagger.v3.oas.annotations.media.Schema; import java.util.Map; import lombok.AccessLevel; diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewsPageResponse.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewsPageResponse.java similarity index 77% rename from src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewsPageResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewsPageResponse.java index 5e6c03222..0eace9fa4 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewsPageResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewsPageResponse.java @@ -1,6 +1,7 @@ -package com.clubber.ClubberServer.domain.review.dto; +package com.clubber.domain.review.dto; -import com.clubber.ClubberServer.global.common.page.PageResponse; +import com.clubber.domain.domains.review.vo.ClubReviewResponse; +import com.clubber.global.common.page.PageResponse; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewsSliceResponse.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewsSliceResponse.java similarity index 80% rename from src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewsSliceResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewsSliceResponse.java index ecf39ea2f..82aefa7fa 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/dto/GetClubReviewsSliceResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/GetClubReviewsSliceResponse.java @@ -1,6 +1,7 @@ -package com.clubber.ClubberServer.domain.review.dto; +package com.clubber.domain.review.dto; -import com.clubber.ClubberServer.global.common.slice.SliceResponse; +import com.clubber.domain.domains.review.vo.ClubReviewResponse; +import com.clubber.global.common.slice.SliceResponse; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/Clubber-External/src/main/java/com/clubber/domain/review/dto/ReviewKeywordCategoryResponse.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/ReviewKeywordCategoryResponse.java new file mode 100644 index 000000000..770796e98 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/ReviewKeywordCategoryResponse.java @@ -0,0 +1,12 @@ +package com.clubber.domain.review.dto; + +import com.clubber.domain.domains.review.domain.ReviewKeywordCategory; +import com.clubber.common.vo.enums.EnumMapperVO; + +import java.util.List; + +public record ReviewKeywordCategoryResponse( + ReviewKeywordCategory reviewKeywordCategory, + List keywords +) { +} diff --git a/Clubber-External/src/main/java/com/clubber/domain/review/dto/UpdateClubReviewContentRequest.java b/Clubber-External/src/main/java/com/clubber/domain/review/dto/UpdateClubReviewContentRequest.java new file mode 100644 index 000000000..26afdfe40 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/review/dto/UpdateClubReviewContentRequest.java @@ -0,0 +1,6 @@ +package com.clubber.domain.review.dto; + +public record UpdateClubReviewContentRequest( + String content +) { +} diff --git a/Clubber-External/src/main/java/com/clubber/domain/review/mapper/ReviewMapper.java b/Clubber-External/src/main/java/com/clubber/domain/review/mapper/ReviewMapper.java new file mode 100644 index 000000000..c78f1eda2 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/review/mapper/ReviewMapper.java @@ -0,0 +1,98 @@ +package com.clubber.domain.review.mapper; + +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.domain.ReviewLike; +import com.clubber.domain.domains.review.domain.ReviewReply; +import com.clubber.domain.domains.review.util.ReviewUtil; +import com.clubber.domain.domains.review.vo.ClubReviewResponse; +import com.clubber.domain.domains.review.vo.KeywordStatsVO; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.review.dto.CreateClubReviewResponse; +import com.clubber.domain.review.dto.GetClubReviewsKeywordStatsResponse; +import com.clubber.domain.review.dto.GetClubReviewsPageResponse; +import com.clubber.domain.user.dto.GetUserReviewReportResponse; +import com.clubber.global.common.page.PageResponse; +import com.clubber.global.common.slice.SliceResponse; +import com.clubber.global.util.SliceUtil; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +@Component +public class ReviewMapper { + + // 동아리 별 리뷰 조회 (page) + public GetClubReviewsPageResponse getGetClubReviewsPageResponse(Page reviewResponses, + Long clubId) { + PageResponse pageResponses = PageResponse.of(reviewResponses); + return GetClubReviewsPageResponse.of(pageResponses, clubId); + } + +// // 동아리 별 리뷰 조회 (No Offset) +// public GetClubReviewsSliceResponse getClubReviewsSliceResponse( +// Long clubId, List reviews, Pageable pageable) { +// List clubReviewResponseList = getClubReviewResponseList( +// reviews); +// SliceResponse clubReviewSliceResponse = SliceUtil.valueOf( +// clubReviewResponseList, pageable); +// Long lastReviewId = ReviewUtil.getLastReviewId(reviews, pageable); +// return GetClubReviewsSliceResponse.of(clubId, lastReviewId, +// clubReviewSliceResponse); +// } + +// private static List getClubReviewResponseList( +// List reviews) { +// return reviews.stream() +// .map(review -> { +// Set keywords = ReviewUtil.extractKeywords(review); +// return ClubReviewResponse.of(review, keywords); +// } +// ) +// .collect(Collectors.toList()); +// } + + // 리뷰 작성 + public CreateClubReviewResponse getCreateClubReviewResponse( + Review review) { + Set keywords = ReviewUtil.extractKeywords(review); + return CreateClubReviewResponse.of(review, keywords); + } + + public GetClubReviewsKeywordStatsResponse getGetClubReviewsKeywordStatsResponse(Club club, KeywordStatsVO keywordStatsVO) { + Map keywordMap = keywordStatsVO.getKeywordMapAsStingKey(); + return GetClubReviewsKeywordStatsResponse.of(club, keywordMap); + } + + public ReviewReply toReviewApply(Admin admin, Review review, String content) { + return ReviewReply.builder() + .content(content) + .admin(admin) + .review(review) + .build(); + } + + public ReviewLike toReviewLike(Review review, User user) { + return ReviewLike.builder() + .review(review) + .user(user) + .build(); + } + + public SliceResponse getUserReviewReportResponseSliceResponse(List reports) { + List reportResponseList = reports.stream() + .map(report -> { + Review review = report.getReview(); + return GetUserReviewReportResponse.of(report, review, review.getClub()); + }) + .toList(); + return SliceUtil.valueOf(reportResponseList, PageRequest.ofSize(1)); + } +} + diff --git a/Clubber-External/src/main/java/com/clubber/domain/review/service/AdminReviewService.java b/Clubber-External/src/main/java/com/clubber/domain/review/service/AdminReviewService.java new file mode 100644 index 000000000..6f4971d5f --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/review/service/AdminReviewService.java @@ -0,0 +1,87 @@ +package com.clubber.domain.review.service; + +import com.clubber.domain.admin.dto.GetAdminsReviewsResponse; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.admin.mapper.AdminReviewMapper; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.domain.ReviewFilterType; +import com.clubber.domain.domains.review.domain.ReviewReply; +import com.clubber.domain.domains.review.domain.ReviewSortType; +import com.clubber.domain.domains.review.implement.ReviewReader; +import com.clubber.domain.domains.review.implement.ReviewValidator; +import com.clubber.domain.domains.review.repository.ReviewReplyRepository; +import com.clubber.domain.domains.review.repository.ReviewRepository; +import com.clubber.domain.domains.review.vo.ClubReviewResponse; +import com.clubber.domain.review.dto.CreateReviewApplyRequest; +import com.clubber.domain.review.dto.GetClubReviewAgreedStatusResponse; +import com.clubber.domain.review.mapper.ReviewMapper; +import com.clubber.global.common.page.PageResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +public class AdminReviewService { + + private final ReviewRepository reviewRepository; + private final AdminReader adminReader; + private final AdminReviewMapper adminReviewMapper; + private final ReviewReader reviewReader; + private final ReviewReplyRepository reviewReplyRepository; + private final ReviewMapper reviewMapper; + private final ReviewValidator reviewValidator; + + @Transactional(readOnly = true) + public GetAdminsReviewsResponse getAdminsReviews(Pageable pageable, ReviewFilterType filterType) { + Admin admin = adminReader.getCurrentAdmin(); + Club club = admin.getClub(); + Page clubReviewResponses = reviewRepository.queryReviewByClubAndFilterType(club, filterType, pageable); + return adminReviewMapper.getGetAdminReviewsResponse(admin, club, clubReviewResponses); + } + +// @Transactional(readOnly = true) +// public GetAdminPendingReviewsSliceResponse getAdminPendingReviewsWithSliceResponse( +// Pageable pageable, Long lastReviewId) { +// Admin admin = adminReader.getCurrentAdmin(); +// Club club = clubRepository.findClubByIdAndIsDeleted(admin.getClub().getId(), false) +// .orElseThrow(() -> ClubNotFoundException.EXCEPTION); +// +// List reviews = reviewRepository.queryReviewNoOffsetByClub(club, pageable, +// lastReviewId); +// return adminReviewMapper.getGetAdminPendingReviewSliceResponse(reviews, pageable); +// } + + @Transactional + public void createReviewApply(Long reviewId, CreateReviewApplyRequest request) { + Review review = reviewReader.findById(reviewId); + Admin admin = adminReader.getCurrentAdmin(); + reviewValidator.validateReviewClub(admin.getClub(), review); + ReviewReply reviewApply = reviewMapper.toReviewApply(admin, review, request.content()); + reviewReplyRepository.save(reviewApply); + } + + @Transactional + public void disableClubReview() { + Admin admin = adminReader.getCurrentAdmin(); + Club club = admin.getClub(); + club.disableReview(); + } + @Transactional + public void enableClubReview() { + Admin admin = adminReader.getCurrentAdmin(); + Club club = admin.getClub(); + club.enableReview(); + } + + @Transactional(readOnly = true) + public GetClubReviewAgreedStatusResponse getReviewEnabledStatus() { + Admin admin = adminReader.getCurrentAdmin(); + Club club = admin.getClub(); + return GetClubReviewAgreedStatusResponse.from(club); + } +} \ No newline at end of file diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/service/PerspectiveService.java b/Clubber-External/src/main/java/com/clubber/domain/review/service/PerspectiveService.java similarity index 57% rename from src/main/java/com/clubber/ClubberServer/domain/review/service/PerspectiveService.java rename to Clubber-External/src/main/java/com/clubber/domain/review/service/PerspectiveService.java index 059d9d729..2a85d70b6 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/review/service/PerspectiveService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/review/service/PerspectiveService.java @@ -1,12 +1,12 @@ -package com.clubber.ClubberServer.domain.review.service; +package com.clubber.domain.review.service; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.client.PerspectiveClient; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto.AttributeType; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto.CreateTextAnalyzeRequest; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto.CreateTextAnalyzeResponse; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto.TextDto; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto.RequestedAttribute; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto.ScoreType; +import com.clubber.global.infrastructure.outer.perspective.client.PerspectiveClient; +import com.clubber.global.infrastructure.outer.perspective.dto.AttributeType; +import com.clubber.global.infrastructure.outer.perspective.dto.CreateTextAnalyzeRequest; +import com.clubber.global.infrastructure.outer.perspective.dto.CreateTextAnalyzeResponse; +import com.clubber.global.infrastructure.outer.perspective.dto.TextDto; +import com.clubber.global.infrastructure.outer.perspective.dto.RequestedAttribute; +import com.clubber.global.infrastructure.outer.perspective.dto.ScoreType; import java.util.List; import java.util.Map; import lombok.RequiredArgsConstructor; diff --git a/Clubber-External/src/main/java/com/clubber/domain/review/service/ReviewLikeService.java b/Clubber-External/src/main/java/com/clubber/domain/review/service/ReviewLikeService.java new file mode 100644 index 000000000..94f14027e --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/review/service/ReviewLikeService.java @@ -0,0 +1,41 @@ +package com.clubber.domain.review.service; + +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.domain.ReviewLike; +import com.clubber.domain.domains.review.implement.ReviewReader; +import com.clubber.domain.domains.review.implement.ReviewValidator; +import com.clubber.domain.domains.review.repository.ReviewLikeRepository; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.review.mapper.ReviewMapper; +import com.clubber.domain.user.implement.UserReader; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +public class ReviewLikeService { + + private final UserReader userReader; + private final ReviewReader reviewReader; + private final ReviewValidator reviewValidator; + private final ReviewMapper reviewMapper; + private final ReviewLikeRepository reviewLikeRepository; + + @Transactional + public void createReviewLike(Long reviewId) { + User user = userReader.getCurrentUser(); + Review review = reviewReader.findById(reviewId); + reviewValidator.validateReviewExists(user, review); + ReviewLike reviewLike = reviewMapper.toReviewLike(review, user); + reviewLikeRepository.save(reviewLike); + } + + @Transactional + public void deleteReviewLike(Long reviewId) { + User user = userReader.getCurrentUser(); + Review review = reviewReader.findById(reviewId); + ReviewLike userReviewLike = reviewReader.findUserReviewLike(review, user); + userReviewLike.delete(); + } +} diff --git a/Clubber-External/src/main/java/com/clubber/domain/review/service/ReviewService.java b/Clubber-External/src/main/java/com/clubber/domain/review/service/ReviewService.java new file mode 100644 index 000000000..fc9635d22 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/review/service/ReviewService.java @@ -0,0 +1,137 @@ +package com.clubber.domain.review.service; + +import com.clubber.common.mapper.enums.EnumMapper; +import com.clubber.common.vo.enums.EnumMapperVO; +import com.clubber.domain.club.implement.ClubReader; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.domain.ReviewKeywordCategory; +import com.clubber.domain.domains.review.domain.ReviewSortType; +import com.clubber.domain.domains.review.implement.ReviewReader; +import com.clubber.domain.domains.review.implement.ReviewValidator; +import com.clubber.domain.domains.review.repository.ReviewKeywordRepository; +import com.clubber.domain.domains.review.repository.ReviewRepository; +import com.clubber.domain.domains.review.vo.ClubReviewResponse; +import com.clubber.domain.domains.review.vo.KeywordCountStatDto; +import com.clubber.domain.domains.review.vo.KeywordStatsVO; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.review.dto.*; +import com.clubber.domain.review.mapper.ReviewMapper; +import com.clubber.domain.user.dto.GetUserReviewReportResponse; +import com.clubber.domain.user.implement.UserReader; +import com.clubber.global.common.slice.SliceResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class ReviewService { + + private final ReviewRepository reviewRepository; + private final ReviewKeywordRepository reviewKeywordRepository; + private final ReviewReader reviewReader; + private final ReviewMapper reviewMapper; + private final ReviewValidator reviewValidator; + + private final EnumMapper enumMapper; + private final UserReader userReader; + private final ClubReader clubReader; + + public List getTotalReviewKeywords() { + return Arrays.stream(ReviewKeywordCategory.values()) + .map( + (reviewKeywordCategory) -> { + List enumValues = enumMapper.toEnumValues( + reviewKeywordCategory.getReviewKeywords()); + return new ReviewKeywordCategoryResponse(reviewKeywordCategory, enumValues); + }) + .toList(); + } + + @Transactional + public CreateClubReviewResponse createReview(Long clubId, CreateClubReviewRequest reviewRequest) { + User user = userReader.getCurrentUser(); + Club club = clubReader.findById(clubId); + + club.validateAgreeToReview(); + reviewValidator.validateReviewExists(club, user); + + Review review = Review.of(user, club, reviewRequest.getContent()); + review.addKeywords(reviewRequest.getKeywords()); + Review savedReview = reviewRepository.save(review); + return reviewMapper.getCreateClubReviewResponse(savedReview); + } + + @Transactional + public void updateReviewContent(Long id, String content) { + User user = userReader.getCurrentUser(); + Review review = reviewReader.findById(id); + reviewValidator.validateReviewUser(user, review); + reviewValidator.validateReviewReportExists(review); + review.updateContent(content); + } + + @Transactional + public void deleteReview(Long reviewId) { + User user = userReader.getCurrentUser(); + Review review = reviewReader.findById(reviewId); + reviewValidator.validateReviewUser(user, review); + review.delete(); + } + + @Transactional(readOnly = true) + public GetClubReviewsKeywordStatsResponse getClubReviewKeywordStats(Long clubId, int limit) { + Club club = clubReader.findById(clubId); + club.validateAgreeToReview(); + + List keywordCountStatDtoList = reviewKeywordRepository.queryReviewKeywordStatsByClubId( + club.getId(), limit); + + final KeywordStatsVO keywordStatsVO = new KeywordStatsVO(keywordCountStatDtoList, limit); + return reviewMapper.getGetClubReviewsKeywordStatsResponse(club, keywordStatsVO); + } + + //동아리 별 리뷰 조회 : Page 별 조회 + @Transactional(readOnly = true) + public GetClubReviewsPageResponse getClubReviewsWithContent(Long clubId, Pageable pageable, ReviewSortType sortType) { + User user = userReader.getCurrentUser(); + Club club = clubReader.findById(clubId); + club.validateAgreeToReview(); + + Page clubReviewResponses = reviewRepository.queryReviewByClub(club, user, pageable, sortType); + return reviewMapper.getGetClubReviewsPageResponse(clubReviewResponses, clubId); + } + +// //동아리 별 리뷰 조회 : No Offset 구현 +// @Transactional(readOnly = true) +// public GetClubReviewsSliceResponse getClubReviewsWithSliceContent(Long clubId, +// Pageable pageable, Long reviewId) { +// Club club = clubRepository.findClubByIdAndIsDeleted(clubId, false) +// .orElseThrow(() -> ClubNotFoundException.EXCEPTION); +// +// club.validateAgreeToReview(); +// +// List reviews = reviewRepository.queryReviewNoOffsetByClub(club, pageable, reviewId); +// +// return reviewMapper.getClubReviewsSliceResponse(clubId, reviews, pageable); +// } + + @Transactional + public void softDeleteReviewByClubId(Long clubId) { + reviewRepository.softDeleteReviewByClubId(clubId); + } + + @Transactional(readOnly = true) + public SliceResponse getUserReviewReportResponse(Long reviewId, Long nowReviewReportId) { + Review review = reviewReader.findById(reviewId); + List reports = reviewRepository.queryNextReviewReport(review.getId(), nowReviewReportId); + return reviewMapper.getUserReviewReportResponseSliceResponse(reports); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/controller/UserController.java b/Clubber-External/src/main/java/com/clubber/domain/user/controller/UserController.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/domain/user/controller/UserController.java rename to Clubber-External/src/main/java/com/clubber/domain/user/controller/UserController.java index 53e85d28c..2e0c2179c 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/controller/UserController.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/controller/UserController.java @@ -1,13 +1,12 @@ -package com.clubber.ClubberServer.domain.user.controller; +package com.clubber.domain.user.controller; -import com.clubber.ClubberServer.domain.favorite.dto.GetFavoriteDetailsResponse; -import com.clubber.ClubberServer.domain.user.dto.GetIsUserFavoriteResponse; -import com.clubber.ClubberServer.domain.user.dto.GetUserReviewsResponse; -import com.clubber.ClubberServer.domain.user.dto.GetUserFavoritesResponse; -import com.clubber.ClubberServer.domain.user.dto.GetUserProfileResponse; -import com.clubber.ClubberServer.domain.user.service.UserService; -import com.clubber.ClubberServer.global.common.page.PageResponse; +import com.clubber.domain.favorite.dto.GetFavoriteDetailsResponse; +import com.clubber.domain.user.dto.GetIsUserFavoriteResponse; +import com.clubber.domain.user.dto.GetUserFavoritesResponse; +import com.clubber.domain.user.dto.GetUserProfileResponse; +import com.clubber.domain.user.service.UserService; +import com.clubber.global.common.page.PageResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -38,11 +37,6 @@ public GetUserFavoritesResponse getUserFavorites() { return userService.getUserFavorites(); } - @Operation(summary = "리뷰 전체 조회") - @GetMapping("/review") - public GetUserReviewsResponse getUserReviews() { - return userService.getUserReviews(); - } @Operation(summary = "즐겨찾기 페이지 조회") @GetMapping("/favorite/page") diff --git a/Clubber-External/src/main/java/com/clubber/domain/user/controller/UserReviewController.java b/Clubber-External/src/main/java/com/clubber/domain/user/controller/UserReviewController.java new file mode 100644 index 000000000..f067edfb2 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/user/controller/UserReviewController.java @@ -0,0 +1,46 @@ +package com.clubber.domain.user.controller; + +import com.clubber.domain.review.dto.UpdateClubReviewContentRequest; +import com.clubber.domain.review.service.ReviewService; +import com.clubber.domain.user.dto.GetUserReviewReportResponse; +import com.clubber.domain.user.dto.GetUserReviewsResponse; +import com.clubber.domain.user.service.UserService; +import com.clubber.global.common.slice.SliceResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/v1/users/review") +@RequiredArgsConstructor +@Tag(name = "[회원 리뷰 API]") +public class UserReviewController { + + private final UserService userService; + private final ReviewService reviewService; + + @Operation(summary = "회원 리뷰 전체 조회") + @GetMapping + public GetUserReviewsResponse getUserReviews() { + return userService.getUserReviews(); + } + + @Operation(summary = "회원 리뷰 수정") + @PatchMapping("/{id}") + public void updateUserReview(@PathVariable Long id, @RequestBody UpdateClubReviewContentRequest request) { + reviewService.updateReviewContent(id, request.content()); + } + + @Operation(summary = "리뷰 삭제") + @DeleteMapping("/{id}") + public void deleteUserReview(@PathVariable Long id) { + reviewService.deleteReview(id); + } + + @Operation(summary = "회원 리뷰 신고 목록 조회") + @GetMapping("/{id}/reports") + public SliceResponse getUserReviewReports(@PathVariable Long id, @RequestParam(required = false) Long nowReviewReportId) { + return reviewService.getUserReviewReportResponse(id, nowReviewReportId); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/dto/FavoriteClubDetailResponse.java b/Clubber-External/src/main/java/com/clubber/domain/user/dto/FavoriteClubDetailResponse.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/domain/user/dto/FavoriteClubDetailResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/user/dto/FavoriteClubDetailResponse.java index 66ce9e636..d71fb05b0 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/dto/FavoriteClubDetailResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/dto/FavoriteClubDetailResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.user.dto; +package com.clubber.domain.user.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.common.vo.ImageVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/dto/FavoriteDetailResponse.java b/Clubber-External/src/main/java/com/clubber/domain/user/dto/FavoriteDetailResponse.java similarity index 85% rename from src/main/java/com/clubber/ClubberServer/domain/user/dto/FavoriteDetailResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/user/dto/FavoriteDetailResponse.java index 50e8a8fc7..0d36ef6a8 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/dto/FavoriteDetailResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/dto/FavoriteDetailResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.user.dto; +package com.clubber.domain.user.dto; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; +import com.clubber.domain.domains.favorite.domain.Favorite; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/dto/GetIsUserFavoriteResponse.java b/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetIsUserFavoriteResponse.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/domain/user/dto/GetIsUserFavoriteResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/user/dto/GetIsUserFavoriteResponse.java index b14deacd4..16bc7ed4e 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/dto/GetIsUserFavoriteResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetIsUserFavoriteResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.user.dto; +package com.clubber.domain.user.dto; -import com.clubber.ClubberServer.domain.club.domain.Club; +import com.clubber.domain.domains.club.domain.Club; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/dto/GetUserFavoritesResponse.java b/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserFavoritesResponse.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/domain/user/dto/GetUserFavoritesResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserFavoritesResponse.java index cfa799990..d2b329fac 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/dto/GetUserFavoritesResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserFavoritesResponse.java @@ -1,7 +1,6 @@ -package com.clubber.ClubberServer.domain.user.dto; +package com.clubber.domain.user.dto; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.user.domain.User; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/dto/GetUserProfileResponse.java b/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserProfileResponse.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/domain/user/dto/GetUserProfileResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserProfileResponse.java index 1c439ff0d..95e51af61 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/dto/GetUserProfileResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserProfileResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.user.dto; +package com.clubber.domain.user.dto; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.user.domain.User; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AccessLevel; import lombok.Builder; diff --git a/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserReviewReportResponse.java b/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserReviewReportResponse.java new file mode 100644 index 000000000..d192fdb06 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserReviewReportResponse.java @@ -0,0 +1,27 @@ +package com.clubber.domain.user.dto; + +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.review.domain.Review; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Builder; + +import java.time.LocalDateTime; + +@Builder +public record GetUserReviewReportResponse( + String clubName, + String content, + String reportReason, + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy.MM.dd", timezone = "Asia/Seoul") + LocalDateTime reportDate +) { + public static GetUserReviewReportResponse of(Report report, Review review, Club club) { + return GetUserReviewReportResponse.builder() + .clubName(club.getName()) + .content(review.getContent()) + .reportReason(report.getReportReason().getTitle()) + .reportDate(report.getCreatedAt()) + .build(); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/dto/GetUserReviewsResponse.java b/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserReviewsResponse.java similarity index 85% rename from src/main/java/com/clubber/ClubberServer/domain/user/dto/GetUserReviewsResponse.java rename to Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserReviewsResponse.java index 5e4129ba4..06f0938d5 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/dto/GetUserReviewsResponse.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/dto/GetUserReviewsResponse.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.domain.user.dto; +package com.clubber.domain.user.dto; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.user.domain.User; import java.util.List; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/Clubber-External/src/main/java/com/clubber/domain/user/dto/UserReviewResponse.java b/Clubber-External/src/main/java/com/clubber/domain/user/dto/UserReviewResponse.java new file mode 100644 index 000000000..cfd1c005f --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/domain/user/dto/UserReviewResponse.java @@ -0,0 +1,53 @@ +package com.clubber.domain.user.dto; + +import com.clubber.domain.domains.review.domain.ReportStatus; +import com.clubber.domain.domains.review.domain.Review; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +import java.time.LocalDateTime; +import java.util.Set; + +@Getter +@Builder(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class UserReviewResponse { + + @Schema(description = "리뷰 id", example = "1") + private final Long reviewId; + + @Schema(description = "동아리 id", example = "1") + private final Long clubId; + + @Schema(description = "동아리 이름", example = "1") + private final String clubName; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy.MM.dd", timezone = "Asia/Seoul") + @Schema(description = "리뷰 작성 일자", example = "2024.01.01", type = "string") + private final LocalDateTime dateTime; + + @Schema(description = "리뷰 작성 시 선택한 키워드") + private final Set keywords; + + @Schema(description = "한줄평", example = "매주 정기회의가 있어서 시간 투자가 필요합니다!") + private final String content; + + @Schema(description = "신고 상태") + private final ReportStatus reportStatus; + + public static UserReviewResponse of(Review review, Set keywords) { + return UserReviewResponse.builder() + .reviewId(review.getId()) + .keywords(keywords) + .clubId(review.getClub().getId()) + .clubName(review.getClub().getName()) + .dateTime(review.getCreatedAt()) + .content(review.getContent()) + .reportStatus(review.getReportStatus()) + .build(); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/implement/UserReader.java b/Clubber-External/src/main/java/com/clubber/domain/user/implement/UserReader.java similarity index 58% rename from src/main/java/com/clubber/ClubberServer/domain/user/implement/UserReader.java rename to Clubber-External/src/main/java/com/clubber/domain/user/implement/UserReader.java index 3d12152b1..22d8db814 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/implement/UserReader.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/implement/UserReader.java @@ -1,15 +1,15 @@ -package com.clubber.ClubberServer.domain.user.implement; +package com.clubber.domain.user.implement; -import com.clubber.ClubberServer.domain.user.domain.AccountState; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.domain.user.exception.UserNotFoundException; -import com.clubber.ClubberServer.domain.user.repository.UserRepository; -import com.clubber.ClubberServer.global.config.security.SecurityUtils; +import com.clubber.domain.domains.user.domain.AccountState; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.domains.user.exception.UserNotFoundException; +import com.clubber.domain.user.repository.UserRepository; +import com.clubber.global.config.security.SecurityUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import static com.clubber.ClubberServer.domain.user.domain.AccountState.ACTIVE; +import static com.clubber.domain.domains.user.domain.AccountState.ACTIVE; @Component @RequiredArgsConstructor diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/mapper/UserMapper.java b/Clubber-External/src/main/java/com/clubber/domain/user/mapper/UserMapper.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/domain/user/mapper/UserMapper.java rename to Clubber-External/src/main/java/com/clubber/domain/user/mapper/UserMapper.java index dbb2ff64c..da182ccdd 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/mapper/UserMapper.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/mapper/UserMapper.java @@ -1,13 +1,13 @@ -package com.clubber.ClubberServer.domain.user.mapper; +package com.clubber.domain.user.mapper; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.favorite.dto.GetFavoriteDetailsResponse; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.util.ReviewUtil; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.domain.user.dto.*; -import com.clubber.ClubberServer.global.common.page.PageResponse; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.favorite.dto.GetFavoriteDetailsResponse; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.util.ReviewUtil; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.global.common.page.PageResponse; +import com.clubber.domain.user.dto.*; import org.springframework.data.domain.Page; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/repository/UserRepository.java b/Clubber-External/src/main/java/com/clubber/domain/user/repository/UserRepository.java similarity index 61% rename from src/main/java/com/clubber/ClubberServer/domain/user/repository/UserRepository.java rename to Clubber-External/src/main/java/com/clubber/domain/user/repository/UserRepository.java index 818b7c62c..c12e331c2 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/repository/UserRepository.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/repository/UserRepository.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.domain.user.repository; +package com.clubber.domain.user.repository; -import com.clubber.ClubberServer.domain.user.domain.AccountState; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.user.domain.AccountState; +import com.clubber.domain.domains.user.domain.User; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/service/UserService.java b/Clubber-External/src/main/java/com/clubber/domain/user/service/UserService.java similarity index 63% rename from src/main/java/com/clubber/ClubberServer/domain/user/service/UserService.java rename to Clubber-External/src/main/java/com/clubber/domain/user/service/UserService.java index ccdd12a0d..82d91a4c0 100644 --- a/src/main/java/com/clubber/ClubberServer/domain/user/service/UserService.java +++ b/Clubber-External/src/main/java/com/clubber/domain/user/service/UserService.java @@ -1,20 +1,20 @@ -package com.clubber.ClubberServer.domain.user.service; +package com.clubber.domain.user.service; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.implement.ClubReader; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.favorite.dto.GetFavoriteDetailsResponse; -import com.clubber.ClubberServer.domain.favorite.implement.FavoriteReader; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.repository.ReviewRepository; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.domain.user.dto.GetIsUserFavoriteResponse; -import com.clubber.ClubberServer.domain.user.dto.GetUserFavoritesResponse; -import com.clubber.ClubberServer.domain.user.dto.GetUserProfileResponse; -import com.clubber.ClubberServer.domain.user.dto.GetUserReviewsResponse; -import com.clubber.ClubberServer.domain.user.implement.UserReader; -import com.clubber.ClubberServer.domain.user.mapper.UserMapper; -import com.clubber.ClubberServer.global.common.page.PageResponse; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.club.implement.ClubReader; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.favorite.dto.GetFavoriteDetailsResponse; +import com.clubber.domain.favorite.implement.FavoriteReader; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.repository.ReviewRepository; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.user.dto.GetIsUserFavoriteResponse; +import com.clubber.domain.user.dto.GetUserFavoritesResponse; +import com.clubber.domain.user.dto.GetUserProfileResponse; +import com.clubber.domain.user.dto.GetUserReviewsResponse; +import com.clubber.domain.user.implement.UserReader; +import com.clubber.domain.user.mapper.UserMapper; +import com.clubber.global.common.page.PageResponse; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/global/common/logging/HttpLogMessage.java b/Clubber-External/src/main/java/com/clubber/global/common/logging/HttpLogMessage.java similarity index 97% rename from src/main/java/com/clubber/ClubberServer/global/common/logging/HttpLogMessage.java rename to Clubber-External/src/main/java/com/clubber/global/common/logging/HttpLogMessage.java index 01865b906..d926c60b1 100644 --- a/src/main/java/com/clubber/ClubberServer/global/common/logging/HttpLogMessage.java +++ b/Clubber-External/src/main/java/com/clubber/global/common/logging/HttpLogMessage.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.common.logging; +package com.clubber.global.common.logging; import lombok.Builder; import org.springframework.http.HttpStatus; diff --git a/src/main/java/com/clubber/ClubberServer/global/common/logging/ReqResLoggingFilter.java b/Clubber-External/src/main/java/com/clubber/global/common/logging/ReqResLoggingFilter.java similarity index 97% rename from src/main/java/com/clubber/ClubberServer/global/common/logging/ReqResLoggingFilter.java rename to Clubber-External/src/main/java/com/clubber/global/common/logging/ReqResLoggingFilter.java index 4a9387f1c..a3c76dded 100644 --- a/src/main/java/com/clubber/ClubberServer/global/common/logging/ReqResLoggingFilter.java +++ b/Clubber-External/src/main/java/com/clubber/global/common/logging/ReqResLoggingFilter.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.common.logging; +package com.clubber.global.common.logging; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; diff --git a/src/main/java/com/clubber/ClubberServer/global/common/page/PageResponse.java b/Clubber-External/src/main/java/com/clubber/global/common/page/PageResponse.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/global/common/page/PageResponse.java rename to Clubber-External/src/main/java/com/clubber/global/common/page/PageResponse.java index 82e7bc22b..115f4c635 100644 --- a/src/main/java/com/clubber/ClubberServer/global/common/page/PageResponse.java +++ b/Clubber-External/src/main/java/com/clubber/global/common/page/PageResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.common.page; +package com.clubber.global.common.page; import java.util.List; import org.springframework.data.domain.Page; diff --git a/src/main/java/com/clubber/ClubberServer/global/common/slice/SliceResponse.java b/Clubber-External/src/main/java/com/clubber/global/common/slice/SliceResponse.java similarity index 82% rename from src/main/java/com/clubber/ClubberServer/global/common/slice/SliceResponse.java rename to Clubber-External/src/main/java/com/clubber/global/common/slice/SliceResponse.java index 3a8eb1376..8f1ad545c 100644 --- a/src/main/java/com/clubber/ClubberServer/global/common/slice/SliceResponse.java +++ b/Clubber-External/src/main/java/com/clubber/global/common/slice/SliceResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.common.slice; +package com.clubber.global.common.slice; import java.util.List; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/async/AsyncConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/async/AsyncConfig.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/global/config/async/AsyncConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/async/AsyncConfig.java index 4f068a522..c36ef081b 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/async/AsyncConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/async/AsyncConfig.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.config.async; +package com.clubber.global.config.async; -import com.clubber.ClubberServer.global.event.exceptionalarm.async.AsyncExceptionAlarmPublisher; +import com.clubber.global.event.exceptionalarm.async.AsyncExceptionAlarmPublisher; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/async/ClonedTaskDecorator.java b/Clubber-External/src/main/java/com/clubber/global/config/async/ClonedTaskDecorator.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/global/config/async/ClonedTaskDecorator.java rename to Clubber-External/src/main/java/com/clubber/global/config/async/ClonedTaskDecorator.java index ebb26c556..e93b3fd80 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/async/ClonedTaskDecorator.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/async/ClonedTaskDecorator.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.async; +package com.clubber.global.config.async; import org.slf4j.MDC; import org.springframework.core.task.TaskDecorator; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/enums/EnumConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/enums/EnumConfig.java similarity index 51% rename from src/main/java/com/clubber/ClubberServer/global/config/enums/EnumConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/enums/EnumConfig.java index cb6a01906..060a53e3f 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/enums/EnumConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/enums/EnumConfig.java @@ -1,10 +1,13 @@ -package com.clubber.ClubberServer.global.config.enums; +package com.clubber.global.config.enums; -import com.clubber.ClubberServer.domain.club.domain.*; -import com.clubber.ClubberServer.domain.faq.domain.Faq; -import com.clubber.ClubberServer.domain.review.domain.Keyword; -import com.clubber.ClubberServer.global.mapper.enums.EnumMapper; +import com.clubber.domain.domains.report.domain.ReportReason; +import com.clubber.domain.domains.report.domain.ReportStatus; +import com.clubber.domain.faq.domain.Faq; +import com.clubber.domain.domains.review.domain.Keyword; +import com.clubber.domain.domains.review.domain.ReviewKeywordCategory; +import com.clubber.common.mapper.enums.EnumMapper; +import com.clubber.domain.domains.club.domain.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -21,6 +24,8 @@ public EnumMapper getEnumMapper() { enumMapper.put("ClubType", ClubType.class); enumMapper.put("Hashtag", Hashtag.class); enumMapper.put("FaQ", Faq.class); + enumMapper.put("ReviewKeywordCategory", ReviewKeywordCategory.class); + enumMapper.put("ReportReason", ReportReason.class); return enumMapper; } } diff --git a/src/main/java/com/clubber/ClubberServer/global/config/feign/FeignConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/feign/FeignConfig.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/global/config/feign/FeignConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/feign/FeignConfig.java index 191397ae5..4b972b534 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/feign/FeignConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/feign/FeignConfig.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.feign; +package com.clubber.global.config.feign; import feign.Request; import feign.Retryer; @@ -9,7 +9,7 @@ import java.util.concurrent.TimeUnit; @Configuration -@EnableFeignClients(basePackages = "com.clubber.ClubberServer.global.infrastructure") +@EnableFeignClients(basePackages = "com.clubber.global.infrastructure") public class FeignConfig { //Feign 사용시 TimeOut 설정 private static final long CONNECTION_TIMEOUT = 10; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/jpa/JpaAuditingConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/jpa/JpaAuditingConfig.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/global/config/jpa/JpaAuditingConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/jpa/JpaAuditingConfig.java index 0736132da..baa8d1108 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/jpa/JpaAuditingConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/jpa/JpaAuditingConfig.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.jpa; +package com.clubber.global.config.jpa; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/mail/MailConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/mail/MailConfig.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/global/config/mail/MailConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/mail/MailConfig.java index 6997fa7ae..9ed501da7 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/mail/MailConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/mail/MailConfig.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.config.mail; +package com.clubber.global.config.mail; -import com.clubber.ClubberServer.global.properties.MailProperties; +import com.clubber.global.properties.MailProperties; import java.util.Properties; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/module/ModuleConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/module/ModuleConfig.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/global/config/module/ModuleConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/module/ModuleConfig.java index bfd2032a7..385f32887 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/module/ModuleConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/module/ModuleConfig.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.module; +package com.clubber.global.config.module; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/querydsl/QueryDslConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/querydsl/QueryDslConfig.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/global/config/querydsl/QueryDslConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/querydsl/QueryDslConfig.java index 2549258e3..bf28a7095 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/querydsl/QueryDslConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/querydsl/QueryDslConfig.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.querydsl; +package com.clubber.global.config.querydsl; import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.persistence.EntityManager; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/redis/RedisConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/redis/RedisConfig.java similarity index 93% rename from src/main/java/com/clubber/ClubberServer/global/config/redis/RedisConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/redis/RedisConfig.java index a884e321c..d7961afc4 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/redis/RedisConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/redis/RedisConfig.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.redis; +package com.clubber.global.config.redis; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/response/GlobalExceptionHandler.java b/Clubber-External/src/main/java/com/clubber/global/config/response/GlobalExceptionHandler.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/global/config/response/GlobalExceptionHandler.java rename to Clubber-External/src/main/java/com/clubber/global/config/response/GlobalExceptionHandler.java index 8ddf5e851..f0e6a34ac 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/response/GlobalExceptionHandler.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/response/GlobalExceptionHandler.java @@ -1,11 +1,11 @@ -package com.clubber.ClubberServer.global.config.response; +package com.clubber.global.config.response; -import com.clubber.ClubberServer.global.dto.ErrorResponse; -import com.clubber.ClubberServer.global.event.exceptionalarm.ExceptionAlarmEventPublisher; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.BaseException; -import com.clubber.ClubberServer.global.exception.ErrorReason; -import com.clubber.ClubberServer.global.exception.GlobalErrorCode; +import com.clubber.common.dto.ErrorResponse; +import com.clubber.global.event.exceptionalarm.ExceptionAlarmEventPublisher; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.BaseException; +import com.clubber.common.exception.ErrorReason; +import com.clubber.common.exception.GlobalErrorCode; import jakarta.servlet.http.HttpServletRequest; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/response/SuccessResponseAdvice.java b/Clubber-External/src/main/java/com/clubber/global/config/response/SuccessResponseAdvice.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/global/config/response/SuccessResponseAdvice.java rename to Clubber-External/src/main/java/com/clubber/global/config/response/SuccessResponseAdvice.java index 55f0b5976..ae05a24cc 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/response/SuccessResponseAdvice.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/response/SuccessResponseAdvice.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.config.response; +package com.clubber.global.config.response; -import com.clubber.ClubberServer.global.dto.SuccessResponse; +import com.clubber.common.dto.SuccessResponse; import jakarta.servlet.http.HttpServletResponse; import org.springframework.core.MethodParameter; import org.springframework.http.HttpStatus; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/s3/ImageFileExtension.java b/Clubber-External/src/main/java/com/clubber/global/config/s3/ImageFileExtension.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/global/config/s3/ImageFileExtension.java rename to Clubber-External/src/main/java/com/clubber/global/config/s3/ImageFileExtension.java index b4b8837c6..478c062b2 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/s3/ImageFileExtension.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/s3/ImageFileExtension.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.s3; +package com.clubber.global.config.s3; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/s3/S3Config.java b/Clubber-External/src/main/java/com/clubber/global/config/s3/S3Config.java similarity index 94% rename from src/main/java/com/clubber/ClubberServer/global/config/s3/S3Config.java rename to Clubber-External/src/main/java/com/clubber/global/config/s3/S3Config.java index 22b8e0e6f..48ec9b71f 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/s3/S3Config.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/s3/S3Config.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.s3; +package com.clubber.global.config.s3; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/scheduler/SchedulerConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/scheduler/SchedulerConfig.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/global/config/scheduler/SchedulerConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/scheduler/SchedulerConfig.java index 24a62c4eb..fec5870c3 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/scheduler/SchedulerConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/scheduler/SchedulerConfig.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.scheduler; +package com.clubber.global.config.scheduler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/security/AccessDeniedFilter.java b/Clubber-External/src/main/java/com/clubber/global/config/security/AccessDeniedFilter.java similarity index 85% rename from src/main/java/com/clubber/ClubberServer/global/config/security/AccessDeniedFilter.java rename to Clubber-External/src/main/java/com/clubber/global/config/security/AccessDeniedFilter.java index 02b7e8fd8..afddb8961 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/security/AccessDeniedFilter.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/security/AccessDeniedFilter.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.global.config.security; +package com.clubber.global.config.security; -import com.clubber.ClubberServer.domain.user.exception.UserErrorCode; -import com.clubber.ClubberServer.global.dto.ErrorResponse; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; +import com.clubber.domain.domains.user.exception.UserErrorCode; +import com.clubber.common.dto.ErrorResponse; +import com.clubber.common.exception.BaseErrorCode; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/security/AuthDetails.java b/Clubber-External/src/main/java/com/clubber/global/config/security/AuthDetails.java similarity index 94% rename from src/main/java/com/clubber/ClubberServer/global/config/security/AuthDetails.java rename to Clubber-External/src/main/java/com/clubber/global/config/security/AuthDetails.java index 9a86ce69e..6fa3cf787 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/security/AuthDetails.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/security/AuthDetails.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.security; +package com.clubber.global.config.security; import java.util.Collection; import java.util.Collections; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/security/CorsConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/security/CorsConfig.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/global/config/security/CorsConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/security/CorsConfig.java index 926bca619..0c7d9a1fa 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/security/CorsConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/security/CorsConfig.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.config.security; +package com.clubber.global.config.security; -import com.clubber.ClubberServer.global.helper.SpringEnvironmentHelper; +import com.clubber.global.helper.SpringEnvironmentHelper; import java.util.ArrayList; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/security/CustomAuthenticationEntryPoint.java b/Clubber-External/src/main/java/com/clubber/global/config/security/CustomAuthenticationEntryPoint.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/global/config/security/CustomAuthenticationEntryPoint.java rename to Clubber-External/src/main/java/com/clubber/global/config/security/CustomAuthenticationEntryPoint.java index ff1f3fbc9..84ed423ae 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/security/CustomAuthenticationEntryPoint.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/security/CustomAuthenticationEntryPoint.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.global.config.security; +package com.clubber.global.config.security; -import com.clubber.ClubberServer.global.dto.ErrorResponse; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.GlobalErrorCode; +import com.clubber.common.dto.ErrorResponse; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.GlobalErrorCode; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/security/FilterConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/security/FilterConfig.java similarity index 89% rename from src/main/java/com/clubber/ClubberServer/global/config/security/FilterConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/security/FilterConfig.java index f8704256e..e10bfe09a 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/security/FilterConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/security/FilterConfig.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.config.security; +package com.clubber.global.config.security; -import com.clubber.ClubberServer.global.jwt.JwtTokenUtil; +import com.clubber.global.jwt.JwtTokenUtil; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import org.springframework.security.config.annotation.SecurityConfigurerAdapter; diff --git a/Clubber-External/src/main/java/com/clubber/global/config/security/JwtExceptionFilter.java b/Clubber-External/src/main/java/com/clubber/global/config/security/JwtExceptionFilter.java new file mode 100644 index 000000000..1209a9ac9 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/global/config/security/JwtExceptionFilter.java @@ -0,0 +1,45 @@ +package com.clubber.global.config.security; + +import com.clubber.common.dto.ErrorResponse; +import com.clubber.common.exception.BaseException; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import lombok.RequiredArgsConstructor; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + + +@RequiredArgsConstructor +@Component +public class JwtExceptionFilter extends OncePerRequestFilter { + + private final ObjectMapper objectMapper; + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, + FilterChain filterChain) throws ServletException, IOException { + try { + filterChain.doFilter(request, response); + } catch (BaseException e) { + responseToClient(response, + getErrorResponse(e, request.getRequestURI().toString())); + } + } + + private void responseToClient(HttpServletResponse response, ErrorResponse errorResponse) + throws IOException { + response.setCharacterEncoding("UTF-8"); + response.setContentType(MediaType.APPLICATION_JSON_VALUE); + response.setStatus(errorResponse.getStatus()); + response.getWriter().write(objectMapper.writeValueAsString(errorResponse)); + } + + private ErrorResponse getErrorResponse(BaseException e, String path) { + return new ErrorResponse(e.getErrorReason(), path); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/global/config/security/JwtTokenFilter.java b/Clubber-External/src/main/java/com/clubber/global/config/security/JwtTokenFilter.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/global/config/security/JwtTokenFilter.java rename to Clubber-External/src/main/java/com/clubber/global/config/security/JwtTokenFilter.java index e010f431a..050c9fd17 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/security/JwtTokenFilter.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/security/JwtTokenFilter.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.global.config.security; +package com.clubber.global.config.security; -import com.clubber.ClubberServer.global.jwt.vo.AccessTokenInfo; -import com.clubber.ClubberServer.global.jwt.JwtTokenUtil; +import com.clubber.global.jwt.vo.AccessTokenInfo; +import com.clubber.global.jwt.JwtTokenUtil; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.Cookie; @@ -18,8 +18,8 @@ import java.io.IOException; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.AUTH_HEADER; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.BEARER; +import static com.clubber.common.consts.ClubberStatic.AUTH_HEADER; +import static com.clubber.common.consts.ClubberStatic.BEARER; @Slf4j @RequiredArgsConstructor diff --git a/src/main/java/com/clubber/ClubberServer/global/config/security/SecurityConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/security/SecurityConfig.java similarity index 96% rename from src/main/java/com/clubber/ClubberServer/global/config/security/SecurityConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/security/SecurityConfig.java index 045ebf3bb..73e7d23b7 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/security/SecurityConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/security/SecurityConfig.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.security; +package com.clubber.global.config.security; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; @@ -36,8 +36,8 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .permitAll() .requestMatchers("/api/v1/auths/refresh") .permitAll() - .requestMatchers(HttpMethod.GET, "/api/v1/clubs/{clubId}/reviews/**") - .permitAll() + .requestMatchers("/api/v1/clubs/{clubId}/reviews/**") + .hasRole("USER") .requestMatchers("/api/v1/images/admin/sign-up/verify") .permitAll() .requestMatchers("/api/v1/images/club/**") @@ -108,7 +108,6 @@ public WebSecurityCustomizer webSecurityCustomizer() { .requestMatchers("/api/v1/clubs/category/**") .requestMatchers("/api/v1/clubs/summary") .requestMatchers("/api/v1/clubs/popular") - .requestMatchers(HttpMethod.GET, "/api/v1/clubs/{clubId}/reviews/**") .requestMatchers("/api/v1/notices/**") .requestMatchers("/api/v1/admins/login") .requestMatchers("/api/v1/admins/sign-up") diff --git a/src/main/java/com/clubber/ClubberServer/global/config/security/SecurityUtils.java b/Clubber-External/src/main/java/com/clubber/global/config/security/SecurityUtils.java similarity index 85% rename from src/main/java/com/clubber/ClubberServer/global/config/security/SecurityUtils.java rename to Clubber-External/src/main/java/com/clubber/global/config/security/SecurityUtils.java index fa240b938..1bc314c21 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/security/SecurityUtils.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/security/SecurityUtils.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.security; +package com.clubber.global.config.security; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/swagger/ApiErrorCodeExample.java b/Clubber-External/src/main/java/com/clubber/global/config/swagger/ApiErrorCodeExample.java similarity index 71% rename from src/main/java/com/clubber/ClubberServer/global/config/swagger/ApiErrorCodeExample.java rename to Clubber-External/src/main/java/com/clubber/global/config/swagger/ApiErrorCodeExample.java index a9f9adc6c..6625ff6ed 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/swagger/ApiErrorCodeExample.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/swagger/ApiErrorCodeExample.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.config.swagger; +package com.clubber.global.config.swagger; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; +import com.clubber.common.exception.BaseErrorCode; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/swagger/DisableSwaggerSecurity.java b/Clubber-External/src/main/java/com/clubber/global/config/swagger/DisableSwaggerSecurity.java similarity index 82% rename from src/main/java/com/clubber/ClubberServer/global/config/swagger/DisableSwaggerSecurity.java rename to Clubber-External/src/main/java/com/clubber/global/config/swagger/DisableSwaggerSecurity.java index cc0090a5a..636507b54 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/swagger/DisableSwaggerSecurity.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/swagger/DisableSwaggerSecurity.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.swagger; +package com.clubber.global.config.swagger; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/swagger/ExampleHolder.java b/Clubber-External/src/main/java/com/clubber/global/config/swagger/ExampleHolder.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/global/config/swagger/ExampleHolder.java rename to Clubber-External/src/main/java/com/clubber/global/config/swagger/ExampleHolder.java index 21284dce2..cb02f6648 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/swagger/ExampleHolder.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/swagger/ExampleHolder.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.config.swagger; +package com.clubber.global.config.swagger; import io.swagger.v3.oas.models.examples.Example; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/global/config/swagger/SwaggerConfig.java b/Clubber-External/src/main/java/com/clubber/global/config/swagger/SwaggerConfig.java similarity index 97% rename from src/main/java/com/clubber/ClubberServer/global/config/swagger/SwaggerConfig.java rename to Clubber-External/src/main/java/com/clubber/global/config/swagger/SwaggerConfig.java index e6258669c..e47b34fbb 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/swagger/SwaggerConfig.java +++ b/Clubber-External/src/main/java/com/clubber/global/config/swagger/SwaggerConfig.java @@ -1,11 +1,11 @@ -package com.clubber.ClubberServer.global.config.swagger; +package com.clubber.global.config.swagger; import static java.util.stream.Collectors.groupingBy; -import com.clubber.ClubberServer.global.dto.ErrorResponse; -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.ErrorReason; +import com.clubber.common.dto.ErrorResponse; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.ErrorReason; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.Operation; diff --git a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/ExceptionAlarmEvent.java b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/ExceptionAlarmEvent.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/ExceptionAlarmEvent.java rename to Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/ExceptionAlarmEvent.java index eae38027a..993ded2fc 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/ExceptionAlarmEvent.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/ExceptionAlarmEvent.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.event.exceptionalarm; +package com.clubber.global.event.exceptionalarm; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/ExceptionAlarmEventPublisher.java b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/ExceptionAlarmEventPublisher.java similarity index 81% rename from src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/ExceptionAlarmEventPublisher.java rename to Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/ExceptionAlarmEventPublisher.java index 888ef02db..acaab4ae7 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/ExceptionAlarmEventPublisher.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/ExceptionAlarmEventPublisher.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.event.exceptionalarm; +package com.clubber.global.event.exceptionalarm; -import com.clubber.ClubberServer.global.helper.SpringEnvironmentHelper; +import com.clubber.global.helper.SpringEnvironmentHelper; import lombok.RequiredArgsConstructor; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/ExceptionDiscordAlarmEventHandler.java b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/ExceptionDiscordAlarmEventHandler.java similarity index 83% rename from src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/ExceptionDiscordAlarmEventHandler.java rename to Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/ExceptionDiscordAlarmEventHandler.java index 870238b44..dd0379cef 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/ExceptionDiscordAlarmEventHandler.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/ExceptionDiscordAlarmEventHandler.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.global.event.exceptionalarm; +package com.clubber.global.event.exceptionalarm; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.client.DiscordClient; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.dto.DiscordMessage; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.message.DiscordMessageFactory; +import com.clubber.global.infrastructure.outer.discord.client.DiscordClient; +import com.clubber.global.infrastructure.outer.discord.dto.DiscordMessage; +import com.clubber.global.infrastructure.outer.discord.message.DiscordMessageFactory; import jakarta.servlet.http.HttpServletRequest; import java.io.PrintWriter; import java.io.StringWriter; diff --git a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/async/AsyncExceptionAlaramEvent.java b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/async/AsyncExceptionAlaramEvent.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/async/AsyncExceptionAlaramEvent.java rename to Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/async/AsyncExceptionAlaramEvent.java index 73f5d9218..ffa8ed599 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/async/AsyncExceptionAlaramEvent.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/async/AsyncExceptionAlaramEvent.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.event.exceptionalarm.async; +package com.clubber.global.event.exceptionalarm.async; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/async/AsyncExceptionAlaramHandler.java b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/async/AsyncExceptionAlaramHandler.java similarity index 76% rename from src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/async/AsyncExceptionAlaramHandler.java rename to Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/async/AsyncExceptionAlaramHandler.java index 9ba9abe1d..0e802fbd9 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/async/AsyncExceptionAlaramHandler.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/async/AsyncExceptionAlaramHandler.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.global.event.exceptionalarm.async; +package com.clubber.global.event.exceptionalarm.async; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.client.DiscordClient; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.dto.DiscordMessage; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.message.DiscordMessageFactory; +import com.clubber.global.infrastructure.outer.discord.client.DiscordClient; +import com.clubber.global.infrastructure.outer.discord.dto.DiscordMessage; +import com.clubber.global.infrastructure.outer.discord.message.DiscordMessageFactory; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.event.EventListener; diff --git a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/async/AsyncExceptionAlarmPublisher.java b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/async/AsyncExceptionAlarmPublisher.java similarity index 71% rename from src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/async/AsyncExceptionAlarmPublisher.java rename to Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/async/AsyncExceptionAlarmPublisher.java index 48416050d..fc04b42f4 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/exceptionalarm/async/AsyncExceptionAlarmPublisher.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/exceptionalarm/async/AsyncExceptionAlarmPublisher.java @@ -1,7 +1,6 @@ -package com.clubber.ClubberServer.global.event.exceptionalarm.async; +package com.clubber.global.event.exceptionalarm.async; -import com.clubber.ClubberServer.global.event.exceptionalarm.ExceptionAlarmEvent; -import com.clubber.ClubberServer.global.helper.SpringEnvironmentHelper; +import com.clubber.global.helper.SpringEnvironmentHelper; import lombok.RequiredArgsConstructor; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/clubber/ClubberServer/global/event/signup/SignUpAlarmEventHandler.java b/Clubber-External/src/main/java/com/clubber/global/event/signup/SignUpAlarmEventHandler.java similarity index 71% rename from src/main/java/com/clubber/ClubberServer/global/event/signup/SignUpAlarmEventHandler.java rename to Clubber-External/src/main/java/com/clubber/global/event/signup/SignUpAlarmEventHandler.java index e9699d42d..7a9c3537e 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/signup/SignUpAlarmEventHandler.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/signup/SignUpAlarmEventHandler.java @@ -1,9 +1,9 @@ -package com.clubber.ClubberServer.global.event.signup; +package com.clubber.global.event.signup; -import com.clubber.ClubberServer.domain.admin.domain.Contact; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.client.DiscordClient; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.dto.DiscordMessage; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.message.DiscordMessageFactory; +import com.clubber.domain.domains.admin.domain.Contact; +import com.clubber.global.infrastructure.outer.discord.client.DiscordClient; +import com.clubber.global.infrastructure.outer.discord.dto.DiscordMessage; +import com.clubber.global.infrastructure.outer.discord.message.DiscordMessageFactory; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.event.EventListener; diff --git a/src/main/java/com/clubber/ClubberServer/global/event/signup/SignUpAlarmEventPublisher.java b/Clubber-External/src/main/java/com/clubber/global/event/signup/SignUpAlarmEventPublisher.java similarity index 78% rename from src/main/java/com/clubber/ClubberServer/global/event/signup/SignUpAlarmEventPublisher.java rename to Clubber-External/src/main/java/com/clubber/global/event/signup/SignUpAlarmEventPublisher.java index 58fa11df4..f91943d11 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/signup/SignUpAlarmEventPublisher.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/signup/SignUpAlarmEventPublisher.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.event.signup; +package com.clubber.global.event.signup; -import com.clubber.ClubberServer.domain.admin.domain.Contact; +import com.clubber.domain.domains.admin.domain.Contact; import lombok.RequiredArgsConstructor; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/clubber/ClubberServer/global/event/signup/signUpAlarmEvent.java b/Clubber-External/src/main/java/com/clubber/global/event/signup/signUpAlarmEvent.java similarity index 59% rename from src/main/java/com/clubber/ClubberServer/global/event/signup/signUpAlarmEvent.java rename to Clubber-External/src/main/java/com/clubber/global/event/signup/signUpAlarmEvent.java index 8590b71ca..a1ae9ce6a 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/signup/signUpAlarmEvent.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/signup/signUpAlarmEvent.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.event.signup; +package com.clubber.global.event.signup; -import com.clubber.ClubberServer.domain.admin.domain.Contact; +import com.clubber.domain.domains.admin.domain.Contact; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/Clubber-External/src/main/java/com/clubber/global/event/withdraw/SoftDeleteEvent.java b/Clubber-External/src/main/java/com/clubber/global/event/withdraw/SoftDeleteEvent.java new file mode 100644 index 000000000..b14f88878 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/global/event/withdraw/SoftDeleteEvent.java @@ -0,0 +1,3 @@ +package com.clubber.global.event.withdraw; + +public record SoftDeleteEvent(Long clubId) { } diff --git a/src/main/java/com/clubber/ClubberServer/global/event/withdraw/SoftDeleteEventHandler.java b/Clubber-External/src/main/java/com/clubber/global/event/withdraw/SoftDeleteEventHandler.java similarity index 75% rename from src/main/java/com/clubber/ClubberServer/global/event/withdraw/SoftDeleteEventHandler.java rename to Clubber-External/src/main/java/com/clubber/global/event/withdraw/SoftDeleteEventHandler.java index 4f71a637d..00e46c40b 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/withdraw/SoftDeleteEventHandler.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/withdraw/SoftDeleteEventHandler.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.global.event.withdraw; +package com.clubber.global.event.withdraw; -import com.clubber.ClubberServer.domain.favorite.service.FavoriteService; -import com.clubber.ClubberServer.domain.recruit.service.RecruitService; -import com.clubber.ClubberServer.domain.review.service.ReviewService; +import com.clubber.domain.favorite.service.FavoriteService; +import com.clubber.domain.recruit.service.RecruitService; +import com.clubber.domain.review.service.ReviewService; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/global/event/withdraw/SoftDeleteEventPublisher.java b/Clubber-External/src/main/java/com/clubber/global/event/withdraw/SoftDeleteEventPublisher.java similarity index 87% rename from src/main/java/com/clubber/ClubberServer/global/event/withdraw/SoftDeleteEventPublisher.java rename to Clubber-External/src/main/java/com/clubber/global/event/withdraw/SoftDeleteEventPublisher.java index 7ef40f831..22564fabb 100644 --- a/src/main/java/com/clubber/ClubberServer/global/event/withdraw/SoftDeleteEventPublisher.java +++ b/Clubber-External/src/main/java/com/clubber/global/event/withdraw/SoftDeleteEventPublisher.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.event.withdraw; +package com.clubber.global.event.withdraw; import lombok.RequiredArgsConstructor; import org.springframework.context.ApplicationEventPublisher; diff --git a/src/main/java/com/clubber/ClubberServer/global/helper/SpringEnvironmentHelper.java b/Clubber-External/src/main/java/com/clubber/global/helper/SpringEnvironmentHelper.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/global/helper/SpringEnvironmentHelper.java rename to Clubber-External/src/main/java/com/clubber/global/helper/SpringEnvironmentHelper.java index e694b4497..cc0c0961a 100644 --- a/src/main/java/com/clubber/ClubberServer/global/helper/SpringEnvironmentHelper.java +++ b/Clubber-External/src/main/java/com/clubber/global/helper/SpringEnvironmentHelper.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.helper; +package com.clubber.global.helper; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/client/KakaoInfoClient.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/client/KakaoInfoClient.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/client/KakaoInfoClient.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/client/KakaoInfoClient.java index d60bd90c3..546da78c8 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/client/KakaoInfoClient.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/client/KakaoInfoClient.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.client; +package com.clubber.global.infrastructure.outer.api.oauth.kakao.client; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto.UnlinkKaKaoTarget; -import com.clubber.ClubberServer.global.config.feign.FeignConfig; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto.KakaoUserInfoResponse; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.dto.UnlinkKaKaoTarget; +import com.clubber.global.config.feign.FeignConfig; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.dto.KakaoUserInfoResponse; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/client/KakaoOauthClient.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/client/KakaoOauthClient.java similarity index 60% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/client/KakaoOauthClient.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/client/KakaoOauthClient.java index 4518ec07d..defe1ac48 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/client/KakaoOauthClient.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/client/KakaoOauthClient.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.client; +package com.clubber.global.infrastructure.outer.api.oauth.kakao.client; -import com.clubber.ClubberServer.global.config.feign.FeignConfig; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto.KakaoOAuthRequest; -import com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto.KakaoTokenResponse; +import com.clubber.global.config.feign.FeignConfig; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.dto.KakaoOAuthRequest; +import com.clubber.global.infrastructure.outer.api.oauth.kakao.dto.KakaoTokenResponse; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/KakaoOAuthRequest.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/KakaoOAuthRequest.java similarity index 79% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/KakaoOAuthRequest.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/KakaoOAuthRequest.java index 402585bd2..4da691dfe 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/KakaoOAuthRequest.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/KakaoOAuthRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto; +package com.clubber.global.infrastructure.outer.api.oauth.kakao.dto; import feign.form.FormProperty; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/KakaoTokenResponse.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/KakaoTokenResponse.java similarity index 80% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/KakaoTokenResponse.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/KakaoTokenResponse.java index 20ee29a1d..162bd369c 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/KakaoTokenResponse.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/KakaoTokenResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto; +package com.clubber.global.infrastructure.outer.api.oauth.kakao.dto; import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/KakaoUserInfoResponse.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/KakaoUserInfoResponse.java similarity index 71% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/KakaoUserInfoResponse.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/KakaoUserInfoResponse.java index 5c31eb276..2eeaa36db 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/KakaoUserInfoResponse.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/KakaoUserInfoResponse.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto; +package com.clubber.global.infrastructure.outer.api.oauth.kakao.dto; -import com.clubber.ClubberServer.domain.user.domain.SnsType; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.user.domain.SnsType; +import com.clubber.domain.domains.user.domain.User; import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/UnlinkKaKaoTarget.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/UnlinkKaKaoTarget.java similarity index 84% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/UnlinkKaKaoTarget.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/UnlinkKaKaoTarget.java index 5089759a0..d34984854 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/api/oauth/kakao/dto/UnlinkKaKaoTarget.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/api/oauth/kakao/dto/UnlinkKaKaoTarget.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.api.oauth.kakao.dto; +package com.clubber.global.infrastructure.outer.api.oauth.kakao.dto; import feign.form.FormProperty; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/discord/client/DiscordClient.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/discord/client/DiscordClient.java similarity index 71% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/discord/client/DiscordClient.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/discord/client/DiscordClient.java index b24e0dae5..d60a19f9b 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/discord/client/DiscordClient.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/discord/client/DiscordClient.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.discord.client; +package com.clubber.global.infrastructure.outer.discord.client; -import com.clubber.ClubberServer.global.config.feign.FeignConfig; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.dto.DiscordMessage; +import com.clubber.global.config.feign.FeignConfig; +import com.clubber.global.infrastructure.outer.discord.dto.DiscordMessage; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.PathVariable; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/discord/dto/DiscordMessage.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/discord/dto/DiscordMessage.java similarity index 72% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/discord/dto/DiscordMessage.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/discord/dto/DiscordMessage.java index 2790ef49b..7d70e5cc0 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/discord/dto/DiscordMessage.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/discord/dto/DiscordMessage.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.discord.dto; +package com.clubber.global.infrastructure.outer.discord.dto; import java.util.List; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/discord/message/DiscordMessageFactory.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/discord/message/DiscordMessageFactory.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/discord/message/DiscordMessageFactory.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/discord/message/DiscordMessageFactory.java index b691f85af..bec120938 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/discord/message/DiscordMessageFactory.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/discord/message/DiscordMessageFactory.java @@ -1,7 +1,7 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.discord.message; +package com.clubber.global.infrastructure.outer.discord.message; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.dto.DiscordMessage; -import com.clubber.ClubberServer.global.infrastructure.outer.discord.dto.DiscordMessage.Embed; +import com.clubber.global.infrastructure.outer.discord.dto.DiscordMessage; +import com.clubber.global.infrastructure.outer.discord.dto.DiscordMessage.Embed; import java.util.List; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/mail/MailService.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/mail/MailService.java similarity index 95% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/mail/MailService.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/mail/MailService.java index 0185259ee..4a609d2a7 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/mail/MailService.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/mail/MailService.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.mail; +package com.clubber.global.infrastructure.outer.mail; -import com.clubber.ClubberServer.global.infrastructure.outer.mail.exception.MailNotSentException; +import com.clubber.global.infrastructure.outer.mail.exception.MailNotSentException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.mail.javamail.JavaMailSender; @@ -9,7 +9,7 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.CLUBBER_EMAIL; +import static com.clubber.common.consts.ClubberStatic.CLUBBER_EMAIL; @Service @RequiredArgsConstructor diff --git a/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/mail/exception/MailNotSentException.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/mail/exception/MailNotSentException.java new file mode 100644 index 000000000..4416b11a9 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/mail/exception/MailNotSentException.java @@ -0,0 +1,13 @@ +package com.clubber.global.infrastructure.outer.mail.exception; + +import com.clubber.common.exception.BaseException; + +import static com.clubber.common.exception.GlobalErrorCode.MAIL_NOT_SENT; + +public class MailNotSentException extends BaseException { + public static final BaseException EXCEPTION = new MailNotSentException(); + + private MailNotSentException() { + super(MAIL_NOT_SENT); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/client/PerspectiveClient.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/client/PerspectiveClient.java similarity index 68% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/client/PerspectiveClient.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/client/PerspectiveClient.java index 9ff979c09..e1b8647f9 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/client/PerspectiveClient.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/client/PerspectiveClient.java @@ -1,8 +1,8 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.perspective.client; +package com.clubber.global.infrastructure.outer.perspective.client; -import com.clubber.ClubberServer.global.config.feign.FeignConfig; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto.CreateTextAnalyzeRequest; -import com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto.CreateTextAnalyzeResponse; +import com.clubber.global.config.feign.FeignConfig; +import com.clubber.global.infrastructure.outer.perspective.dto.CreateTextAnalyzeRequest; +import com.clubber.global.infrastructure.outer.perspective.dto.CreateTextAnalyzeResponse; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/AttributeScore.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/AttributeScore.java similarity index 65% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/AttributeScore.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/AttributeScore.java index a60e340fb..6bce97d8c 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/AttributeScore.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/AttributeScore.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto; +package com.clubber.global.infrastructure.outer.perspective.dto; import java.util.List; import lombok.Getter; diff --git a/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/AttributeType.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/AttributeType.java new file mode 100644 index 000000000..e2e0bc209 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/AttributeType.java @@ -0,0 +1,5 @@ +package com.clubber.global.infrastructure.outer.perspective.dto; + +public enum AttributeType { + TOXICITY +} diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeRequest.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeRequest.java similarity index 85% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeRequest.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeRequest.java index 3bed527cc..d4595b9f3 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeRequest.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeRequest.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto; +package com.clubber.global.infrastructure.outer.perspective.dto; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeResponse.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeResponse.java similarity index 69% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeResponse.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeResponse.java index 45e9c4f8b..504fb6fa4 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeResponse.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/CreateTextAnalyzeResponse.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto; +package com.clubber.global.infrastructure.outer.perspective.dto; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/RequestedAttribute.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/RequestedAttribute.java similarity index 64% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/RequestedAttribute.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/RequestedAttribute.java index 2a3b80564..c178b61f3 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/RequestedAttribute.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/RequestedAttribute.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto; +package com.clubber.global.infrastructure.outer.perspective.dto; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/Score.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/Score.java similarity index 66% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/Score.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/Score.java index 23b8220bb..e1788a680 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/Score.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/Score.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto; +package com.clubber.global.infrastructure.outer.perspective.dto; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/ScoreType.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/ScoreType.java new file mode 100644 index 000000000..0c90d6aa7 --- /dev/null +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/ScoreType.java @@ -0,0 +1,5 @@ +package com.clubber.global.infrastructure.outer.perspective.dto; + +public enum ScoreType { + PROBABILITY +} diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/SpanScore.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/SpanScore.java similarity index 60% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/SpanScore.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/SpanScore.java index 84db745cc..a7577cdc2 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/SpanScore.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/SpanScore.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto; +package com.clubber.global.infrastructure.outer.perspective.dto; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/TextDto.java b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/TextDto.java similarity index 77% rename from src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/TextDto.java rename to Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/TextDto.java index 31990d754..64baff1de 100644 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/TextDto.java +++ b/Clubber-External/src/main/java/com/clubber/global/infrastructure/outer/perspective/dto/TextDto.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto; +package com.clubber.global.infrastructure.outer.perspective.dto; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; diff --git a/src/main/java/com/clubber/ClubberServer/global/jwt/JwtTokenUtil.java b/Clubber-External/src/main/java/com/clubber/global/jwt/JwtTokenUtil.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/global/jwt/JwtTokenUtil.java rename to Clubber-External/src/main/java/com/clubber/global/jwt/JwtTokenUtil.java index 836963ee1..7b08c5b30 100644 --- a/src/main/java/com/clubber/ClubberServer/global/jwt/JwtTokenUtil.java +++ b/Clubber-External/src/main/java/com/clubber/global/jwt/JwtTokenUtil.java @@ -1,11 +1,11 @@ -package com.clubber.ClubberServer.global.jwt; - -import com.clubber.ClubberServer.domain.user.domain.AccountRole; -import com.clubber.ClubberServer.domain.user.exception.InvalidTokenException; -import com.clubber.ClubberServer.domain.user.exception.RefreshTokenExpiredException; -import com.clubber.ClubberServer.domain.user.exception.TokenExpiredException; -import com.clubber.ClubberServer.global.jwt.vo.AccessTokenInfo; -import com.clubber.ClubberServer.global.properties.JwtProperties; +package com.clubber.global.jwt; + +import com.clubber.domain.domains.user.domain.AccountRole; +import com.clubber.domain.domains.user.exception.InvalidTokenException; +import com.clubber.domain.domains.user.exception.RefreshTokenExpiredException; +import com.clubber.domain.domains.user.exception.TokenExpiredException; +import com.clubber.global.jwt.vo.AccessTokenInfo; +import com.clubber.global.properties.JwtProperties; import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.Jws; @@ -18,7 +18,7 @@ import java.security.Key; import java.util.Date; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.*; +import static com.clubber.common.consts.ClubberStatic.*; @Component @RequiredArgsConstructor diff --git a/src/main/java/com/clubber/ClubberServer/global/jwt/vo/AccessTokenInfo.java b/Clubber-External/src/main/java/com/clubber/global/jwt/vo/AccessTokenInfo.java similarity index 65% rename from src/main/java/com/clubber/ClubberServer/global/jwt/vo/AccessTokenInfo.java rename to Clubber-External/src/main/java/com/clubber/global/jwt/vo/AccessTokenInfo.java index 14bb47621..2060f0219 100644 --- a/src/main/java/com/clubber/ClubberServer/global/jwt/vo/AccessTokenInfo.java +++ b/Clubber-External/src/main/java/com/clubber/global/jwt/vo/AccessTokenInfo.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.jwt.vo; +package com.clubber.global.jwt.vo; import lombok.Builder; diff --git a/src/main/java/com/clubber/ClubberServer/global/jwt/vo/TokenVO.java b/Clubber-External/src/main/java/com/clubber/global/jwt/vo/TokenVO.java similarity index 58% rename from src/main/java/com/clubber/ClubberServer/global/jwt/vo/TokenVO.java rename to Clubber-External/src/main/java/com/clubber/global/jwt/vo/TokenVO.java index f99b224ef..e07e0188d 100644 --- a/src/main/java/com/clubber/ClubberServer/global/jwt/vo/TokenVO.java +++ b/Clubber-External/src/main/java/com/clubber/global/jwt/vo/TokenVO.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.jwt.vo; +package com.clubber.global.jwt.vo; public record TokenVO(String accessToken, String refreshToken) { } diff --git a/src/main/java/com/clubber/ClubberServer/global/properties/JwtProperties.java b/Clubber-External/src/main/java/com/clubber/global/properties/JwtProperties.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/global/properties/JwtProperties.java rename to Clubber-External/src/main/java/com/clubber/global/properties/JwtProperties.java index 3686f7b77..1c835da82 100644 --- a/src/main/java/com/clubber/ClubberServer/global/properties/JwtProperties.java +++ b/Clubber-External/src/main/java/com/clubber/global/properties/JwtProperties.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.properties; +package com.clubber.global.properties; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/global/properties/KakaoProperties.java b/Clubber-External/src/main/java/com/clubber/global/properties/KakaoProperties.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/global/properties/KakaoProperties.java rename to Clubber-External/src/main/java/com/clubber/global/properties/KakaoProperties.java index 21df01432..35df711ac 100644 --- a/src/main/java/com/clubber/ClubberServer/global/properties/KakaoProperties.java +++ b/Clubber-External/src/main/java/com/clubber/global/properties/KakaoProperties.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.properties; +package com.clubber.global.properties; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/global/properties/MailProperties.java b/Clubber-External/src/main/java/com/clubber/global/properties/MailProperties.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/global/properties/MailProperties.java rename to Clubber-External/src/main/java/com/clubber/global/properties/MailProperties.java index 3f8d487b1..576b6e0e4 100644 --- a/src/main/java/com/clubber/ClubberServer/global/properties/MailProperties.java +++ b/Clubber-External/src/main/java/com/clubber/global/properties/MailProperties.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.properties; +package com.clubber.global.properties; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/clubber/ClubberServer/global/util/ImageUtil.java b/Clubber-External/src/main/java/com/clubber/global/util/ImageUtil.java similarity index 60% rename from src/main/java/com/clubber/ClubberServer/global/util/ImageUtil.java rename to Clubber-External/src/main/java/com/clubber/global/util/ImageUtil.java index cf3736f5e..efde035ae 100644 --- a/src/main/java/com/clubber/ClubberServer/global/util/ImageUtil.java +++ b/Clubber-External/src/main/java/com/clubber/global/util/ImageUtil.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.util; +package com.clubber.global.util; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.IMAGE_SERVER; +import static com.clubber.common.consts.ClubberStatic.IMAGE_SERVER; public class ImageUtil { diff --git a/src/main/java/com/clubber/ClubberServer/global/util/RandomAuthCodeUtil.java b/Clubber-External/src/main/java/com/clubber/global/util/RandomAuthCodeUtil.java similarity index 91% rename from src/main/java/com/clubber/ClubberServer/global/util/RandomAuthCodeUtil.java rename to Clubber-External/src/main/java/com/clubber/global/util/RandomAuthCodeUtil.java index ca36834ef..cd20f80df 100644 --- a/src/main/java/com/clubber/ClubberServer/global/util/RandomAuthCodeUtil.java +++ b/Clubber-External/src/main/java/com/clubber/global/util/RandomAuthCodeUtil.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.util; +package com.clubber.global.util; import java.security.SecureRandom; diff --git a/src/main/java/com/clubber/ClubberServer/global/util/RandomAuthStringGeneratorUtil.java b/Clubber-External/src/main/java/com/clubber/global/util/RandomAuthStringGeneratorUtil.java similarity index 93% rename from src/main/java/com/clubber/ClubberServer/global/util/RandomAuthStringGeneratorUtil.java rename to Clubber-External/src/main/java/com/clubber/global/util/RandomAuthStringGeneratorUtil.java index 895edffaa..1305dd773 100644 --- a/src/main/java/com/clubber/ClubberServer/global/util/RandomAuthStringGeneratorUtil.java +++ b/Clubber-External/src/main/java/com/clubber/global/util/RandomAuthStringGeneratorUtil.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.util; +package com.clubber.global.util; import java.security.SecureRandom; import java.util.stream.Collectors; diff --git a/src/main/java/com/clubber/ClubberServer/global/util/SliceUtil.java b/Clubber-External/src/main/java/com/clubber/global/util/SliceUtil.java similarity index 86% rename from src/main/java/com/clubber/ClubberServer/global/util/SliceUtil.java rename to Clubber-External/src/main/java/com/clubber/global/util/SliceUtil.java index c67108840..1ac342a19 100644 --- a/src/main/java/com/clubber/ClubberServer/global/util/SliceUtil.java +++ b/Clubber-External/src/main/java/com/clubber/global/util/SliceUtil.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.util; +package com.clubber.global.util; -import com.clubber.ClubberServer.global.common.slice.SliceResponse; +import com.clubber.global.common.slice.SliceResponse; import java.util.List; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/com/clubber/ClubberServer/global/validator/enums/Enum.java b/Clubber-External/src/main/java/com/clubber/global/validator/enums/Enum.java similarity index 90% rename from src/main/java/com/clubber/ClubberServer/global/validator/enums/Enum.java rename to Clubber-External/src/main/java/com/clubber/global/validator/enums/Enum.java index 539beca33..de4581185 100644 --- a/src/main/java/com/clubber/ClubberServer/global/validator/enums/Enum.java +++ b/Clubber-External/src/main/java/com/clubber/global/validator/enums/Enum.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.validator.enums; +package com.clubber.global.validator.enums; import jakarta.validation.Constraint; import jakarta.validation.Payload; diff --git a/src/main/java/com/clubber/ClubberServer/global/validator/enums/EnumValidator.java b/Clubber-External/src/main/java/com/clubber/global/validator/enums/EnumValidator.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/global/validator/enums/EnumValidator.java rename to Clubber-External/src/main/java/com/clubber/global/validator/enums/EnumValidator.java index 1e2ba1ed5..ac95a154b 100644 --- a/src/main/java/com/clubber/ClubberServer/global/validator/enums/EnumValidator.java +++ b/Clubber-External/src/main/java/com/clubber/global/validator/enums/EnumValidator.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.validator.enums; +package com.clubber.global.validator.enums; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; diff --git a/src/main/java/com/clubber/ClubberServer/global/validator/unique/Unique.java b/Clubber-External/src/main/java/com/clubber/global/validator/unique/Unique.java similarity index 90% rename from src/main/java/com/clubber/ClubberServer/global/validator/unique/Unique.java rename to Clubber-External/src/main/java/com/clubber/global/validator/unique/Unique.java index 66c97889a..ac6571dec 100644 --- a/src/main/java/com/clubber/ClubberServer/global/validator/unique/Unique.java +++ b/Clubber-External/src/main/java/com/clubber/global/validator/unique/Unique.java @@ -1,4 +1,4 @@ -package com.clubber.ClubberServer.global.validator.unique; +package com.clubber.global.validator.unique; import jakarta.validation.Constraint; import jakarta.validation.Payload; diff --git a/src/main/java/com/clubber/ClubberServer/global/validator/unique/UniqueConstraintValidator.java b/Clubber-External/src/main/java/com/clubber/global/validator/unique/UniqueConstraintValidator.java similarity index 77% rename from src/main/java/com/clubber/ClubberServer/global/validator/unique/UniqueConstraintValidator.java rename to Clubber-External/src/main/java/com/clubber/global/validator/unique/UniqueConstraintValidator.java index 217f58cad..af279aa99 100644 --- a/src/main/java/com/clubber/ClubberServer/global/validator/unique/UniqueConstraintValidator.java +++ b/Clubber-External/src/main/java/com/clubber/global/validator/unique/UniqueConstraintValidator.java @@ -1,6 +1,6 @@ -package com.clubber.ClubberServer.global.validator.unique; +package com.clubber.global.validator.unique; -import com.clubber.ClubberServer.domain.review.domain.Keyword; +import com.clubber.domain.domains.review.domain.Keyword; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; import java.util.HashSet; diff --git a/src/main/resources/console-appender.xml b/Clubber-External/src/main/resources/console-appender.xml similarity index 100% rename from src/main/resources/console-appender.xml rename to Clubber-External/src/main/resources/console-appender.xml diff --git a/src/main/resources/file-info-appender.xml b/Clubber-External/src/main/resources/file-info-appender.xml similarity index 100% rename from src/main/resources/file-info-appender.xml rename to Clubber-External/src/main/resources/file-info-appender.xml diff --git a/src/main/resources/logback-spring.xml b/Clubber-External/src/main/resources/logback-spring.xml similarity index 100% rename from src/main/resources/logback-spring.xml rename to Clubber-External/src/main/resources/logback-spring.xml diff --git a/src/main/resources/sql/data.sql b/Clubber-External/src/main/resources/sql/data.sql similarity index 100% rename from src/main/resources/sql/data.sql rename to Clubber-External/src/main/resources/sql/data.sql diff --git a/src/test/java/com/clubber/ClubberServer/ClubberServerApplicationTests.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/ClubberServerApplicationTests.java similarity index 100% rename from src/test/java/com/clubber/ClubberServer/ClubberServerApplicationTests.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/ClubberServerApplicationTests.java diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/controller/AdminControllerTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/controller/AdminControllerTest.java similarity index 100% rename from src/test/java/com/clubber/ClubberServer/integration/domain/admin/controller/AdminControllerTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/controller/AdminControllerTest.java diff --git a/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/controller/AdminReviewControllerTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/controller/AdminReviewControllerTest.java new file mode 100644 index 000000000..75dcba108 --- /dev/null +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/controller/AdminReviewControllerTest.java @@ -0,0 +1,59 @@ +//package com.clubber.ClubberServer.integration.domain.admin.controller; +// +//import com.clubber.ClubberServer.integration.util.WithMockCustomUser; +//import com.fasterxml.jackson.databind.ObjectMapper; +//import org.junit.jupiter.api.DisplayName; +//import org.junit.jupiter.api.Test; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +//import org.springframework.boot.test.context.SpringBootTest; +//import org.springframework.http.MediaType; +//import org.springframework.test.context.ActiveProfiles; +//import org.springframework.test.web.servlet.MockMvc; +// +//import static com.clubber.ClubberServer.integration.util.fixture.AdminReviewFixture.UPDATE_ADMINS_EMPTY_REVIEWS; +//import static com.clubber.ClubberServer.integration.util.fixture.AdminReviewFixture.UPDATE_ADMINS_OVER_MAX_REVIEWS; +//import static org.hamcrest.Matchers.containsString; +//import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; +//import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +//import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +// +//@SpringBootTest +//@AutoConfigureMockMvc +//@ActiveProfiles("local") +//public class AdminReviewControllerTest { +// +// /** +// * TODO : Security 의존성 걷어내고 WebMvcTest으로 리팩토링 +// */ +// +// @Autowired +// private MockMvc mockMvc; +// +// @Autowired +// private ObjectMapper objectMapper; +// +// @DisplayName("리뷰 승인/거절 목록이 빈 리스트라면 예외가 발생한다.") +// @WithMockCustomUser +// @Test +// void updateEmptyReviewStatus() throws Exception { +// String updateEmptyReviewStatus = objectMapper.writeValueAsString(UPDATE_ADMINS_EMPTY_REVIEWS); +// mockMvc.perform(patch("/api/v1/admins/reviews/decision") +// .contentType(MediaType.APPLICATION_JSON) +// .content(updateEmptyReviewStatus)) +// .andExpect(status().isBadRequest()) +// .andExpect(jsonPath("$.reason", containsString("1개 이상 수정해야합니다"))); +// } +// +// @DisplayName("리뷰 승인/거절 목록이 10개 초과일 경우 예외가 발생한다..") +// @WithMockCustomUser +// @Test +// void updateReviewOverMaxSize() throws Exception { +// String updateEmptyReviewStatus = objectMapper.writeValueAsString(UPDATE_ADMINS_OVER_MAX_REVIEWS); +// mockMvc.perform(patch("/api/v1/admins/reviews/decision") +// .contentType(MediaType.APPLICATION_JSON) +// .content(updateEmptyReviewStatus)) +// .andExpect(status().isBadRequest()) +// .andExpect(jsonPath("$.reason", containsString("10개 이하로 수정해야합니다"))); +// } +//} diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAccountServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAccountServiceTest.java similarity index 83% rename from src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAccountServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAccountServiceTest.java index ad1c1d746..e1cc9e75e 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAccountServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAccountServiceTest.java @@ -1,28 +1,26 @@ package com.clubber.ClubberServer.integration.domain.admin.service; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.domain.Contact; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminUsernameCheckDuplicateResponse; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminsProfileResponse; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminContactRequest; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsPasswordRequest; -import com.clubber.ClubberServer.domain.admin.exception.AdminEqualsPreviousPasswordExcpetion; -import com.clubber.ClubberServer.domain.admin.exception.AdminInvalidCurrentPasswordException; -import com.clubber.ClubberServer.domain.admin.repository.AdminRepository; -import com.clubber.ClubberServer.domain.admin.service.AdminAccountService; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.favorite.repository.FavoriteRepository; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitRepository; -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.repository.ReviewRepository; -import com.clubber.ClubberServer.domain.user.domain.AccountState; -import com.clubber.ClubberServer.global.config.security.AuthDetails; -import com.clubber.ClubberServer.global.config.security.SecurityUtils; import com.clubber.ClubberServer.integration.util.WithMockCustomUser; import com.clubber.ClubberServer.integration.util.fixture.AdminFixture; +import com.clubber.domain.admin.dto.GetAdminUsernameCheckDuplicateResponse; +import com.clubber.domain.admin.dto.GetAdminsProfileResponse; +import com.clubber.domain.admin.dto.UpdateAdminContactRequest; +import com.clubber.domain.admin.dto.UpdateAdminsPasswordRequest; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.admin.service.AdminAccountService; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.Contact; +import com.clubber.domain.domains.admin.exception.AdminEqualsPreviousPasswordExcpetion; +import com.clubber.domain.domains.admin.exception.AdminInvalidCurrentPasswordException; +import com.clubber.domain.domains.admin.repository.AdminRepository; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.domains.review.repository.ReviewRepository; +import com.clubber.domain.domains.user.domain.AccountState; +import com.clubber.domain.favorite.repository.FavoriteRepository; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.repository.RecruitRepository; +import com.clubber.global.config.security.AuthDetails; +import com.clubber.global.config.security.SecurityUtils; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -223,22 +221,22 @@ private void createSecurityContext(Admin admin) { // ); // } - /** - * TODO : 비동기 soft-withDraw 추후 테스트 코드 변경 - */ - @DisplayName("관리자 회원탈퇴를 수행시 해당 동아리 리뷰가 삭제된다.") - @WithMockCustomUser - @Test - void withDrawAdminDeleteReview() { - adminAccountService.withDraw(); - Admin admin = adminRepository.findById(SecurityUtils.getCurrentUserId()).get(); - - List deletedReviews = reviewRepository.findAllByClub(admin.getClub()); - - for (Review deletedReview : deletedReviews) { - assertThat(deletedReview.getApprovedStatus()).isEqualTo(ApprovedStatus.DELETED); - } - } +// /** +// * TODO : 비동기 soft-withDraw 추후 테스트 코드 변경 +// */ +// @DisplayName("관리자 회원탈퇴를 수행시 해당 동아리 리뷰가 삭제된다.") +// @WithMockCustomUser +// @Test +// void withDrawAdminDeleteReview() { +// adminAccountService.withDraw(); +// Admin admin = adminRepository.findById(SecurityUtils.getCurrentUserId()).get(); +// +// List deletedReviews = reviewRepository.findAllByClub(admin.getClub()); +// +// for (Review deletedReview : deletedReviews) { +// assertThat(deletedReview.getDeletionStatus()).isEqualTo(DeletionStatus.DELETED); +// } +// } @DisplayName("관리자 회원탈퇴를 수행시 해당 동아리 즐겨찾기가 모두 삭제된다.") @WithMockCustomUser diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAuthServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAuthServiceTest.java similarity index 84% rename from src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAuthServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAuthServiceTest.java index 9aaa33f1f..10d87547d 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAuthServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminAuthServiceTest.java @@ -1,9 +1,9 @@ package com.clubber.ClubberServer.integration.domain.admin.service; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.dto.CreateAdminsLoginRequest; -import com.clubber.ClubberServer.domain.admin.repository.AdminRepository; -import com.clubber.ClubberServer.domain.admin.service.AdminAuthService; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.dto.CreateAdminsLoginRequest; +import com.clubber.domain.domains.admin.repository.AdminRepository; +import com.clubber.domain.admin.service.AdminAuthService; import com.clubber.ClubberServer.integration.util.fixture.AdminFixture; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminClubServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminClubServiceTest.java similarity index 86% rename from src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminClubServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminClubServiceTest.java index fdb3e6ac9..a2e26629e 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminClubServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminClubServiceTest.java @@ -1,15 +1,15 @@ package com.clubber.ClubberServer.integration.domain.admin.service; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.dto.UpdateClubPageRequest; -import com.clubber.ClubberServer.domain.admin.repository.AdminRepository; -import com.clubber.ClubberServer.domain.admin.service.AdminClubService; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.domain.ClubInfo; -import com.clubber.ClubberServer.domain.club.repository.ClubInfoRepository; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; -import com.clubber.ClubberServer.global.config.security.AuthDetails; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.dto.UpdateClubPageRequest; +import com.clubber.domain.domains.admin.repository.AdminRepository; +import com.clubber.domain.admin.service.AdminClubService; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.domain.ClubInfo; +import com.clubber.domain.domains.club.repository.ClubInfoRepository; +import com.clubber.domain.domains.club.repository.ClubRepository; +import com.clubber.global.config.security.AuthDetails; import com.clubber.ClubberServer.integration.util.WithMockCustomUser; import com.clubber.ClubberServer.integration.util.fixture.AdminFixture; import com.clubber.ClubberServer.integration.util.fixture.ClubFixture; @@ -23,7 +23,7 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.IMAGE_SERVER; +import static com.clubber.common.consts.ClubberStatic.IMAGE_SERVER; import static com.clubber.ClubberServer.integration.util.fixture.AdminFixture.IMAGE_KEY_WITH_IMAGE_SERVER_PAGE_REQUEST; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminEmailAuthServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminEmailAuthServiceTest.java similarity index 80% rename from src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminEmailAuthServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminEmailAuthServiceTest.java index a5030b2f6..886d375e5 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminEmailAuthServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminEmailAuthServiceTest.java @@ -1,15 +1,15 @@ package com.clubber.ClubberServer.integration.domain.admin.service; -import com.clubber.ClubberServer.domain.admin.domain.AdminPasswordFindAuth; -import com.clubber.ClubberServer.domain.admin.domain.AdminSignupAuth; -import com.clubber.ClubberServer.domain.admin.domain.AdminUsernameFindAuth; -import com.clubber.ClubberServer.domain.admin.dto.CreateAdminSignupAuthVerifyRequest; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminUsernameFindRequest; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminPasswordFindAuthVerifyRequest; -import com.clubber.ClubberServer.domain.admin.repository.AdminPasswordFindAuthRepository; -import com.clubber.ClubberServer.domain.admin.repository.AdminSignupAuthRepository; -import com.clubber.ClubberServer.domain.admin.repository.AdminUsernameFindAuthRepository; -import com.clubber.ClubberServer.domain.admin.service.AdminEmailAuthService; +import com.clubber.domain.domains.admin.domain.AdminPasswordFindAuth; +import com.clubber.domain.domains.admin.domain.AdminSignupAuth; +import com.clubber.domain.domains.admin.domain.AdminUsernameFindAuth; +import com.clubber.domain.admin.dto.CreateAdminSignupAuthVerifyRequest; +import com.clubber.domain.admin.dto.GetAdminUsernameFindRequest; +import com.clubber.domain.admin.dto.UpdateAdminPasswordFindAuthVerifyRequest; +import com.clubber.domain.domains.admin.repository.AdminPasswordFindAuthRepository; +import com.clubber.domain.domains.admin.repository.AdminSignupAuthRepository; +import com.clubber.domain.domains.admin.repository.AdminUsernameFindAuthRepository; +import com.clubber.domain.admin.service.AdminEmailAuthService; import com.clubber.ClubberServer.integration.util.fixture.AdminEmailAuthFixture; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/calendar/service/CalendarAdminServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/calendar/service/CalendarAdminServiceTest.java similarity index 86% rename from src/test/java/com/clubber/ClubberServer/integration/domain/calendar/service/CalendarAdminServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/calendar/service/CalendarAdminServiceTest.java index df48a7b84..528714e84 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/calendar/service/CalendarAdminServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/calendar/service/CalendarAdminServiceTest.java @@ -1,16 +1,16 @@ package com.clubber.ClubberServer.integration.domain.calendar.service; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.repository.AdminRepository; -import com.clubber.ClubberServer.domain.calendar.dto.GetCalendarDuplicateRequest; -import com.clubber.ClubberServer.domain.calendar.dto.GetCalendarDuplicateResponse; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.repository.CalendarRepository; -import com.clubber.ClubberServer.domain.calendar.service.CalendarAdminService; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.global.config.security.AuthDetails; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.repository.AdminRepository; +import com.clubber.domain.calendar.dto.GetCalendarDuplicateRequest; +import com.clubber.domain.calendar.dto.GetCalendarDuplicateResponse; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.repository.CalendarRepository; +import com.clubber.domain.calendar.service.CalendarAdminService; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.repository.ClubRepository; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.global.config.security.AuthDetails; import com.clubber.ClubberServer.integration.util.fixture.AdminFixture; import com.clubber.ClubberServer.integration.util.fixture.CalendarFixture; import com.clubber.ClubberServer.integration.util.fixture.ClubFixture; diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/club/controller/ClubControllerTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/club/controller/ClubControllerTest.java similarity index 100% rename from src/test/java/com/clubber/ClubberServer/integration/domain/club/controller/ClubControllerTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/club/controller/ClubControllerTest.java diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/club/service/ClubServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/club/service/ClubServiceTest.java similarity index 83% rename from src/test/java/com/clubber/ClubberServer/integration/domain/club/service/ClubServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/club/service/ClubServiceTest.java index ec9f85b10..8c676a078 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/club/service/ClubServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/club/service/ClubServiceTest.java @@ -2,13 +2,13 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.domain.ClubType; -import com.clubber.ClubberServer.domain.club.domain.Division; -import com.clubber.ClubberServer.domain.club.dto.GetSummaryClubGroupResponse; -import com.clubber.ClubberServer.domain.club.dto.GetSummaryClubResponse; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; -import com.clubber.ClubberServer.domain.club.service.ClubService; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.domain.ClubType; +import com.clubber.domain.domains.club.domain.Division; +import com.clubber.domain.club.dto.GetSummaryClubGroupResponse; +import com.clubber.domain.club.dto.GetSummaryClubResponse; +import com.clubber.domain.domains.club.repository.ClubRepository; +import com.clubber.domain.club.service.ClubService; import com.clubber.ClubberServer.integration.util.ServiceTest; import java.util.Arrays; import java.util.List; diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/favorite/service/FavoriteServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/favorite/service/FavoriteServiceTest.java similarity index 83% rename from src/test/java/com/clubber/ClubberServer/integration/domain/favorite/service/FavoriteServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/favorite/service/FavoriteServiceTest.java index 20b1f5cc8..bdc61f8b7 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/favorite/service/FavoriteServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/favorite/service/FavoriteServiceTest.java @@ -1,14 +1,14 @@ package com.clubber.ClubberServer.integration.domain.favorite.service; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.favorite.exception.ClubAlreadyRegisterdFavoriteException; -import com.clubber.ClubberServer.domain.favorite.repository.FavoriteRepository; -import com.clubber.ClubberServer.domain.favorite.service.FavoriteService; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.domain.user.repository.UserRepository; -import com.clubber.ClubberServer.global.config.security.AuthDetails; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.repository.ClubRepository; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.domains.favorite.exception.ClubAlreadyRegisterdFavoriteException; +import com.clubber.domain.favorite.repository.FavoriteRepository; +import com.clubber.domain.favorite.service.FavoriteService; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.user.repository.UserRepository; +import com.clubber.global.config.security.AuthDetails; import com.clubber.ClubberServer.integration.util.fixture.ClubFixture; import com.clubber.ClubberServer.integration.util.fixture.UserFixture; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/owner/service/OwnerServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/owner/service/OwnerServiceTest.java similarity index 70% rename from src/test/java/com/clubber/ClubberServer/integration/domain/owner/service/OwnerServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/owner/service/OwnerServiceTest.java index f204a47f3..63fe04c43 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/owner/service/OwnerServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/owner/service/OwnerServiceTest.java @@ -1,21 +1,20 @@ package com.clubber.ClubberServer.integration.domain.owner.service; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.domain.PendingAdminInfo; -import com.clubber.ClubberServer.domain.admin.repository.AdminRepository; -import com.clubber.ClubberServer.domain.admin.repository.PendingAdminInfoRepository; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.domain.ClubType; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; -import com.clubber.ClubberServer.domain.owner.service.OwnerService; -import com.clubber.ClubberServer.domain.user.domain.AccountState; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; +import com.clubber.domain.domains.admin.repository.AdminRepository; +import com.clubber.domain.domains.admin.repository.PendingAdminInfoRepository; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.domain.ClubType; +import com.clubber.domain.domains.club.repository.ClubRepository; +import com.clubber.domain.owner.service.OwnerService; +import com.clubber.domain.domains.user.domain.AccountState; import com.clubber.ClubberServer.integration.util.fixture.AdminFixture; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; -import org.springframework.transaction.annotation.Transactional; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) //@Transactional diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/controller/RecruitCalendarControllerTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/controller/RecruitCalendarControllerTest.java similarity index 100% rename from src/test/java/com/clubber/ClubberServer/integration/domain/recruit/controller/RecruitCalendarControllerTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/controller/RecruitCalendarControllerTest.java diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/controller/RecruitControllerTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/controller/RecruitControllerTest.java similarity index 100% rename from src/test/java/com/clubber/ClubberServer/integration/domain/recruit/controller/RecruitControllerTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/controller/RecruitControllerTest.java diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitLinkedCalendarServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitLinkedCalendarServiceTest.java similarity index 85% rename from src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitLinkedCalendarServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitLinkedCalendarServiceTest.java index 3e4905609..1b2a70ba4 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitLinkedCalendarServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitLinkedCalendarServiceTest.java @@ -1,16 +1,16 @@ package com.clubber.ClubberServer.integration.domain.recruit.service; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.repository.AdminRepository; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.repository.CalendarRepository; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.dto.CreateLinkedCalendarRequest; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitRepository; -import com.clubber.ClubberServer.domain.recruit.service.RecruitLinkedCalendarService; -import com.clubber.ClubberServer.global.config.security.AuthDetails; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.repository.AdminRepository; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.repository.CalendarRepository; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.repository.ClubRepository; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.dto.CreateLinkedCalendarRequest; +import com.clubber.domain.recruit.repository.RecruitRepository; +import com.clubber.domain.recruit.service.RecruitLinkedCalendarService; +import com.clubber.global.config.security.AuthDetails; import com.clubber.ClubberServer.integration.util.fixture.AdminFixture; import com.clubber.ClubberServer.integration.util.fixture.CalendarFixture; import com.clubber.ClubberServer.integration.util.fixture.ClubFixture; diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitServiceTest.java similarity index 94% rename from src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitServiceTest.java index cc8a1d0e0..e4a173083 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruit/service/RecruitServiceTest.java @@ -1,7 +1,7 @@ package com.clubber.ClubberServer.integration.domain.recruit.service; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.IMAGE_SERVER; +import static com.clubber.common.consts.ClubberStatic.IMAGE_SERVER; import static com.clubber.ClubberServer.integration.util.fixture.RecruitFixture.INVALID_DELETE_IMAGE_RECRUIT_REQUEST; import static com.clubber.ClubberServer.integration.util.fixture.RecruitFixture.NEW_FINAL_IMAGE_DIFFERENT_RECRUIT_REQUEST; import static com.clubber.ClubberServer.integration.util.fixture.RecruitFixture.NEW_NOT_IN_FINAL_IMAGE_RECRUIT_REQUEST; @@ -15,14 +15,14 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitImage; -import com.clubber.ClubberServer.domain.recruit.dto.UpdateRecruitResponse; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitImageDeleteRemainDuplicatedException; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitImageNotFoundException; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitImageRevisedFinalSizeException; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitRepository; -import com.clubber.ClubberServer.domain.recruit.service.RecruitService; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitImage; +import com.clubber.domain.recruit.dto.UpdateRecruitResponse; +import com.clubber.domain.recruit.exception.RecruitImageDeleteRemainDuplicatedException; +import com.clubber.domain.recruit.exception.RecruitImageNotFoundException; +import com.clubber.domain.recruit.exception.RecruitImageRevisedFinalSizeException; +import com.clubber.domain.recruit.repository.RecruitRepository; +import com.clubber.domain.recruit.service.RecruitService; import com.clubber.ClubberServer.integration.util.ServiceTest; import com.clubber.ClubberServer.integration.util.WithMockCustomUser; import jakarta.persistence.EntityManager; diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/recruitComment/controller/RecruitCommentControllerTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruitComment/controller/RecruitCommentControllerTest.java similarity index 100% rename from src/test/java/com/clubber/ClubberServer/integration/domain/recruitComment/controller/RecruitCommentControllerTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruitComment/controller/RecruitCommentControllerTest.java diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/recruitComment/service/RecruitCommentServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruitComment/service/RecruitCommentServiceTest.java similarity index 89% rename from src/test/java/com/clubber/ClubberServer/integration/domain/recruitComment/service/RecruitCommentServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruitComment/service/RecruitCommentServiceTest.java index 98c2c6d38..c5f40fac7 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/recruitComment/service/RecruitCommentServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/recruitComment/service/RecruitCommentServiceTest.java @@ -7,13 +7,13 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertAll; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitComment; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.DeleteRecruitCommentResponse; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.PostRecruitCommentResponse; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitCommentNotFoundException; -import com.clubber.ClubberServer.domain.recruit.exception.RecruitNotFoundException; -import com.clubber.ClubberServer.domain.recruit.repository.RecruitCommentRepository; -import com.clubber.ClubberServer.domain.recruit.service.RecruitCommentService; +import com.clubber.domain.recruit.domain.RecruitComment; +import com.clubber.domain.recruit.dto.recruitComment.DeleteRecruitCommentResponse; +import com.clubber.domain.recruit.dto.recruitComment.PostRecruitCommentResponse; +import com.clubber.domain.recruit.exception.RecruitCommentNotFoundException; +import com.clubber.domain.recruit.exception.RecruitNotFoundException; +import com.clubber.domain.recruit.repository.RecruitCommentRepository; +import com.clubber.domain.recruit.service.RecruitCommentService; import com.clubber.ClubberServer.integration.util.ServiceTest; import com.clubber.ClubberServer.integration.util.WithMockCustomUser; import java.util.Optional; diff --git a/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/review/controller/ReviewControllerTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/review/controller/ReviewControllerTest.java new file mode 100644 index 000000000..8c7f1c99a --- /dev/null +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/review/controller/ReviewControllerTest.java @@ -0,0 +1,57 @@ +//package com.clubber.ClubberServer.integration.domain.review.controller; +// +//import static com.clubber.ClubberServer.integration.util.fixture.ReviewFixture.EMPTY_KEYWORD_REVIEW_REQUEST; +//import static com.clubber.ClubberServer.integration.util.fixture.ReviewFixture.LONG_SIZE_INVALID_REVIEW_REQUEST; +//import static org.hamcrest.Matchers.*; +//import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +//import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +// +//import org.junit.jupiter.api.DisplayName; +//import org.junit.jupiter.api.Test; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +//import org.springframework.boot.test.context.SpringBootTest; +//import org.springframework.http.MediaType; +//import org.springframework.test.context.ActiveProfiles; +//import org.springframework.test.web.servlet.MockMvc; +// +//import com.clubber.ClubberServer.integration.util.WithMockCustomUser; +//import com.fasterxml.jackson.databind.ObjectMapper; +// +//@SpringBootTest +//@AutoConfigureMockMvc +//@ActiveProfiles("local") +//public class ReviewControllerTest { +// +// @Autowired +// private MockMvc mockMvc; +// +// @Autowired +// private ObjectMapper objectMapper; +// +// +// @Test +// @DisplayName("빈키워드_리뷰_예외발생") +// @WithMockCustomUser(second = "USER") +// void emptyKeyword() throws Exception { +// String review = objectMapper.writeValueAsString(EMPTY_KEYWORD_REVIEW_REQUEST); +// mockMvc.perform(post("/api/v1/clubs/1/reviews") +// .contentType(MediaType.APPLICATION_JSON) +// .content(review)) +// .andExpect(status().isBadRequest()) +// .andExpect(jsonPath("$.reason", containsString("1개 이상의 키워드를 선택해주세요"))); +// } +// +// @Test +// @DisplayName("100자보다_긴_리뷰_예외발생") +// @WithMockCustomUser(second = "USER") +// void longInvalidReview() throws Exception { +// String review = objectMapper.writeValueAsString(LONG_SIZE_INVALID_REVIEW_REQUEST); +// +// mockMvc.perform(post("/api/v1/clubs/1/reviews") +// .contentType(MediaType.APPLICATION_JSON) +// .content(review)) +// .andExpect(status().isBadRequest()) +// .andExpect(jsonPath("$.reason", containsString("리뷰 작성은 100자까지 가능합니다"))); +// } +//} diff --git a/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/review/service/ReviewServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/review/service/ReviewServiceTest.java new file mode 100644 index 000000000..79be007ce --- /dev/null +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/review/service/ReviewServiceTest.java @@ -0,0 +1,111 @@ +package com.clubber.ClubberServer.integration.domain.review.service; + +import com.clubber.ClubberServer.integration.util.fixture.ClubFixture; +import com.clubber.ClubberServer.integration.util.fixture.ReviewFixture; +import com.clubber.ClubberServer.integration.util.fixture.UserFixture; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.repository.ClubRepository; +import com.clubber.domain.domains.review.domain.Keyword; +import com.clubber.domain.domains.review.domain.ReportStatus; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.repository.ReviewRepository; +import com.clubber.domain.domains.user.domain.User; +import com.clubber.domain.review.dto.CreateClubReviewRequest; +import com.clubber.domain.review.dto.CreateClubReviewResponse; +import com.clubber.domain.review.service.ReviewService; +import com.clubber.ClubberServer.integration.util.ServiceTest; +import com.clubber.domain.user.repository.UserRepository; +import com.clubber.global.config.security.AuthDetails; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@Transactional +@ActiveProfiles("test") +public class ReviewServiceTest { + + @Autowired + private ReviewService reviewService; + + @Autowired + private ReviewRepository reviewRepository; + + @Autowired + private ClubRepository clubRepository; + + @Autowired + private UserRepository userRepository; + + private void createSecurityContext(User user) { + SecurityContext context = SecurityContextHolder.createEmptyContext(); + + AuthDetails userDetails = new AuthDetails(user.getId().toString(), "USER"); + UsernamePasswordAuthenticationToken adminToken = new UsernamePasswordAuthenticationToken( + userDetails, "user", userDetails.getAuthorities()); + context.setAuthentication(adminToken); + SecurityContextHolder.setContext(context); + } + + @DisplayName("리뷰 작성에 성공한다") + @Test + void createReviewSuccess() { + User user = UserFixture.aUser().build(); + createSecurityContext(userRepository.save(user)); + + Club club = ClubFixture.aClub().isAgreeToReview(true).build(); + clubRepository.save(club); + + String content = "content"; + List keywords = List.of(Keyword.ACTIVE); + CreateClubReviewRequest request = new CreateClubReviewRequest(content, keywords, null); + + CreateClubReviewResponse response = reviewService.createReview(club.getId(), request); + + Optional createdReview = reviewRepository.findById( + response.getReviewId()); + + assertAll( + () -> assertThat(createdReview).isNotNull(), + () -> assertThat(createdReview.get().isDeleted()).isEqualTo(false), + () -> assertThat(createdReview.get().getContent()).isEqualTo(content), + () -> assertThat(createdReview.get().getReportStatus()).isEqualTo(ReportStatus.VISIBLE) + ); + } + + @DisplayName("리뷰 삭제에 성공한다") + @Test + void deleteReviewSuccess() { + User user = UserFixture.aUser().build(); + User savedUser = userRepository.save(user); + createSecurityContext(savedUser); + + Club club = ClubFixture.aClub().isAgreeToReview(true).build(); + Club savedClub = clubRepository.save(club); + + Review review = ReviewFixture.aReview().user(savedUser).club(savedClub).build(); + Review savedReview = reviewRepository.save(review); + + reviewService.deleteReview(savedReview.getId()); + Review deletedReview = reviewRepository.findById(savedReview.getId()).get(); + + assertAll( + () -> assertThat(deletedReview).isNotNull(), + () -> assertThat(deletedReview.isDeleted()).isEqualTo(true) + ); + } +} diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/user/service/UserServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/user/service/UserServiceTest.java similarity index 86% rename from src/test/java/com/clubber/ClubberServer/integration/domain/user/service/UserServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/user/service/UserServiceTest.java index 802e6c303..5133040b3 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/user/service/UserServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/domain/user/service/UserServiceTest.java @@ -2,8 +2,8 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.clubber.ClubberServer.domain.user.dto.GetIsUserFavoriteResponse; -import com.clubber.ClubberServer.domain.user.service.UserService; +import com.clubber.domain.user.dto.GetIsUserFavoriteResponse; +import com.clubber.domain.user.service.UserService; import com.clubber.ClubberServer.integration.util.ServiceTest; import com.clubber.ClubberServer.integration.util.WithMockCustomUser; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/DatabaseCleaner.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/DatabaseCleaner.java similarity index 100% rename from src/test/java/com/clubber/ClubberServer/integration/util/DatabaseCleaner.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/DatabaseCleaner.java diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/ServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/ServiceTest.java similarity index 100% rename from src/test/java/com/clubber/ClubberServer/integration/util/ServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/ServiceTest.java diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/WithMockCustomUser.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/WithMockCustomUser.java similarity index 100% rename from src/test/java/com/clubber/ClubberServer/integration/util/WithMockCustomUser.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/WithMockCustomUser.java diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/WithMockCustomUserSecurityContextFactory.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/WithMockCustomUserSecurityContextFactory.java similarity index 93% rename from src/test/java/com/clubber/ClubberServer/integration/util/WithMockCustomUserSecurityContextFactory.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/WithMockCustomUserSecurityContextFactory.java index fd9847b8f..39a9ef21c 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/util/WithMockCustomUserSecurityContextFactory.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/WithMockCustomUserSecurityContextFactory.java @@ -1,6 +1,6 @@ package com.clubber.ClubberServer.integration.util; -import com.clubber.ClubberServer.global.config.security.AuthDetails; +import com.clubber.global.config.security.AuthDetails; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminEmailAuthFixture.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminEmailAuthFixture.java similarity index 77% rename from src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminEmailAuthFixture.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminEmailAuthFixture.java index c3063ef03..dede9f771 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminEmailAuthFixture.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminEmailAuthFixture.java @@ -1,11 +1,11 @@ package com.clubber.ClubberServer.integration.util.fixture; -import com.clubber.ClubberServer.domain.admin.domain.AdminPasswordFindAuth; -import com.clubber.ClubberServer.domain.admin.domain.AdminSignupAuth; -import com.clubber.ClubberServer.domain.admin.domain.AdminUsernameFindAuth; -import com.clubber.ClubberServer.domain.admin.dto.CreateAdminSignupAuthVerifyRequest; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminUsernameFindRequest; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminPasswordFindAuthVerifyRequest; +import com.clubber.domain.domains.admin.domain.AdminPasswordFindAuth; +import com.clubber.domain.domains.admin.domain.AdminSignupAuth; +import com.clubber.domain.domains.admin.domain.AdminUsernameFindAuth; +import com.clubber.domain.admin.dto.CreateAdminSignupAuthVerifyRequest; +import com.clubber.domain.admin.dto.GetAdminUsernameFindRequest; +import com.clubber.domain.admin.dto.UpdateAdminPasswordFindAuthVerifyRequest; public class AdminEmailAuthFixture { public static Long CLUB_ID = 1L; diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminFixture.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminFixture.java similarity index 84% rename from src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminFixture.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminFixture.java index d0dc4d7b3..b9ba10e0f 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminFixture.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminFixture.java @@ -1,18 +1,18 @@ package com.clubber.ClubberServer.integration.util.fixture; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.domain.AdminSignupAuth; -import com.clubber.ClubberServer.domain.admin.domain.Contact; -import com.clubber.ClubberServer.domain.admin.domain.PendingAdminInfo; -import com.clubber.ClubberServer.domain.admin.dto.*; -import com.clubber.ClubberServer.domain.club.domain.ClubType; -import com.clubber.ClubberServer.domain.club.domain.College; -import com.clubber.ClubberServer.domain.club.domain.Department; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.domain.AdminSignupAuth; +import com.clubber.domain.domains.admin.domain.Contact; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; +import com.clubber.domain.admin.dto.*; +import com.clubber.domain.domains.club.domain.ClubType; +import com.clubber.domain.domains.club.domain.College; +import com.clubber.domain.domains.club.domain.Department; import com.navercorp.fixturemonkey.ArbitraryBuilder; -import static com.clubber.ClubberServer.domain.user.domain.AccountRole.ADMIN; -import static com.clubber.ClubberServer.domain.user.domain.AccountState.ACTIVE; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.IMAGE_SERVER; +import static com.clubber.domain.domains.user.domain.AccountRole.ADMIN; +import static com.clubber.domain.domains.user.domain.AccountState.ACTIVE; +import static com.clubber.common.consts.ClubberStatic.IMAGE_SERVER; import static com.clubber.ClubberServer.integration.util.fixture.FixtureCommon.fixtureMonkey; public class AdminFixture { diff --git a/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminReviewFixture.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminReviewFixture.java new file mode 100644 index 000000000..be6c27a18 --- /dev/null +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminReviewFixture.java @@ -0,0 +1,13 @@ +package com.clubber.ClubberServer.integration.util.fixture; + +import java.util.List; + +public class AdminReviewFixture { + + private static final List reviewIds = List.of(1L, 2L); + private static final List notFoundReviewIds = List.of(3L, 4L); + + private static final List overMaxSizeReviews = List.of(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L); + + private static final List emptyReviewIds = List.of(); +} diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/CalendarFixture.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/CalendarFixture.java similarity index 78% rename from src/test/java/com/clubber/ClubberServer/integration/util/fixture/CalendarFixture.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/CalendarFixture.java index b55379b5e..3a4e3e4ad 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/CalendarFixture.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/CalendarFixture.java @@ -1,8 +1,8 @@ package com.clubber.ClubberServer.integration.util.fixture; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.domain.user.domain.AccountRole; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.domain.domains.user.domain.AccountRole; import java.time.LocalDateTime; diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ClubFixture.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ClubFixture.java similarity index 76% rename from src/test/java/com/clubber/ClubberServer/integration/util/fixture/ClubFixture.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ClubFixture.java index 58a44d424..ff9b73ba7 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ClubFixture.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ClubFixture.java @@ -1,16 +1,16 @@ package com.clubber.ClubberServer.integration.util.fixture; -import com.clubber.ClubberServer.domain.admin.dto.UpdateClubPageRequest; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.domain.ClubInfo; -import com.clubber.ClubberServer.domain.club.domain.ClubType; -import com.clubber.ClubberServer.domain.club.domain.Department; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.admin.dto.UpdateClubPageRequest; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.domain.ClubInfo; +import com.clubber.domain.domains.club.domain.ClubType; +import com.clubber.domain.domains.club.domain.Department; +import com.clubber.domain.common.vo.ImageVO; import com.navercorp.fixturemonkey.ArbitraryBuilder; -import static com.clubber.ClubberServer.domain.club.domain.College.ETC; -import static com.clubber.ClubberServer.domain.club.domain.Division.ACADEMIC; -import static com.clubber.ClubberServer.domain.club.domain.Hashtag.PROGRAMMING; +import static com.clubber.domain.domains.club.domain.College.ETC; +import static com.clubber.domain.domains.club.domain.Division.ACADEMIC; +import static com.clubber.domain.domains.club.domain.Hashtag.PROGRAMMING; import static com.clubber.ClubberServer.integration.util.fixture.FixtureCommon.fixtureMonkey; public class ClubFixture { diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/FavoriteFixture.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/FavoriteFixture.java similarity index 65% rename from src/test/java/com/clubber/ClubberServer/integration/util/fixture/FavoriteFixture.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/FavoriteFixture.java index 2ea1fc283..5605c25a1 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/FavoriteFixture.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/FavoriteFixture.java @@ -1,8 +1,8 @@ package com.clubber.ClubberServer.integration.util.fixture; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.domains.user.domain.User; public class FavoriteFixture { diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/FixtureCommon.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/FixtureCommon.java similarity index 100% rename from src/test/java/com/clubber/ClubberServer/integration/util/fixture/FixtureCommon.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/FixtureCommon.java diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitCommentFixture.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitCommentFixture.java similarity index 94% rename from src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitCommentFixture.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitCommentFixture.java index d89413553..e2abefaf7 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitCommentFixture.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitCommentFixture.java @@ -1,6 +1,6 @@ package com.clubber.ClubberServer.integration.util.fixture; -import com.clubber.ClubberServer.domain.recruit.dto.recruitComment.PostRecruitCommentRequest; +import com.clubber.domain.recruit.dto.recruitComment.PostRecruitCommentRequest; public class RecruitCommentFixture { diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitFixture.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitFixture.java similarity index 95% rename from src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitFixture.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitFixture.java index 89c9e886e..ed56ed9e2 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitFixture.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitFixture.java @@ -1,9 +1,9 @@ package com.clubber.ClubberServer.integration.util.fixture; -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; -import com.clubber.ClubberServer.domain.recruit.dto.PostRecruitRequest; -import com.clubber.ClubberServer.domain.recruit.dto.UpdateRecruitRequest; +import com.clubber.domain.recruit.domain.Recruit; +import com.clubber.domain.recruit.domain.RecruitType; +import com.clubber.domain.recruit.dto.PostRecruitRequest; +import com.clubber.domain.recruit.dto.UpdateRecruitRequest; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; diff --git a/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ReviewFixture.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ReviewFixture.java new file mode 100644 index 000000000..671c247e0 --- /dev/null +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ReviewFixture.java @@ -0,0 +1,23 @@ +package com.clubber.ClubberServer.integration.util.fixture; + +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.review.domain.ReportStatus; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.user.domain.User; + +public class ReviewFixture { + public static final String CONTENT = "content"; + public static final ReportStatus REPORT_STATUS = ReportStatus.HIDDEN; + + public static Review.ReviewBuilder aReview() { + User user = UserFixture.aUser().build(); + Club club = ClubFixture.aClub().build(); + return Review.builder() + .club(club) + .user(user) + .content(CONTENT) + .reportStatus(REPORT_STATUS) + .isDeleted(false) + .likes(0L); + } +} diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/UserFixture.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/UserFixture.java similarity index 77% rename from src/test/java/com/clubber/ClubberServer/integration/util/fixture/UserFixture.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/UserFixture.java index c57e7b818..8b1260de6 100644 --- a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/UserFixture.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/integration/util/fixture/UserFixture.java @@ -1,8 +1,8 @@ package com.clubber.ClubberServer.integration.util.fixture; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.user.domain.User; -import static com.clubber.ClubberServer.domain.user.domain.SnsType.KAKAO; +import static com.clubber.domain.domains.user.domain.SnsType.KAKAO; public class UserFixture { public static final Long USER_ID = 1L; diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/admin/domain/AdminDomainTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/domain/AdminDomainTest.java similarity index 80% rename from src/test/java/com/clubber/ClubberServer/unit/domain/admin/domain/AdminDomainTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/domain/AdminDomainTest.java index 7c2abdc44..a9d62820f 100644 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/admin/domain/AdminDomainTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/domain/AdminDomainTest.java @@ -1,13 +1,13 @@ package com.clubber.ClubberServer.unit.domain.admin.domain; -import static com.clubber.ClubberServer.domain.user.domain.AccountRole.ADMIN; -import static com.clubber.ClubberServer.domain.user.domain.AccountState.ACTIVE; -import static com.clubber.ClubberServer.domain.user.domain.AccountState.INACTIVE; +import static com.clubber.domain.domains.user.domain.AccountRole.ADMIN; +import static com.clubber.domain.domains.user.domain.AccountState.ACTIVE; +import static com.clubber.domain.domains.user.domain.AccountState.INACTIVE; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.exception.AdminAlreadyDeletedException; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.domains.admin.exception.AdminAlreadyDeletedException; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/admin/facade/AdminEmailAuthFacadeTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/facade/AdminEmailAuthFacadeTest.java similarity index 77% rename from src/test/java/com/clubber/ClubberServer/unit/domain/admin/facade/AdminEmailAuthFacadeTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/facade/AdminEmailAuthFacadeTest.java index 54aaf6c46..b5360ca94 100644 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/admin/facade/AdminEmailAuthFacadeTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/facade/AdminEmailAuthFacadeTest.java @@ -1,9 +1,9 @@ package com.clubber.ClubberServer.unit.domain.admin.facade; -import com.clubber.ClubberServer.domain.admin.dto.CreateAdminPasswordFindRequest; -import com.clubber.ClubberServer.domain.admin.facade.AdminEmailAuthFacade; -import com.clubber.ClubberServer.domain.admin.repository.AdminRepository; -import com.clubber.ClubberServer.global.infrastructure.outer.mail.MailService; +import com.clubber.domain.admin.dto.CreateAdminPasswordFindRequest; +import com.clubber.domain.admin.facade.AdminEmailAuthFacade; +import com.clubber.domain.domains.admin.repository.AdminRepository; +import com.clubber.global.infrastructure.outer.mail.MailService; import com.clubber.ClubberServer.integration.util.fixture.AdminFixture; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -12,7 +12,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import static com.clubber.ClubberServer.domain.user.domain.AccountState.ACTIVE; +import static com.clubber.domain.domains.user.domain.AccountState.ACTIVE; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminAccountServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminAccountServiceTest.java similarity index 83% rename from src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminAccountServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminAccountServiceTest.java index b4b9d9ef3..1a718c8f9 100644 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminAccountServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminAccountServiceTest.java @@ -1,12 +1,12 @@ package com.clubber.ClubberServer.unit.domain.admin.service; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminsProfileResponse; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsPasswordRequest; -import com.clubber.ClubberServer.domain.admin.service.AdminAccountService; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.admin.implement.AdminValidator; -import com.clubber.ClubberServer.global.event.withdraw.SoftDeleteEventPublisher; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.dto.GetAdminsProfileResponse; +import com.clubber.domain.admin.dto.UpdateAdminsPasswordRequest; +import com.clubber.domain.admin.service.AdminAccountService; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.admin.implement.AdminValidator; +import com.clubber.global.event.withdraw.SoftDeleteEventPublisher; import com.clubber.ClubberServer.integration.util.fixture.AdminFixture; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -15,7 +15,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.security.crypto.password.PasswordEncoder; -import static com.clubber.ClubberServer.domain.user.domain.AccountState.INACTIVE; +import static com.clubber.domain.domains.user.domain.AccountState.INACTIVE; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; import static org.mockito.ArgumentMatchers.anyLong; diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminClubServiceTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminClubServiceTest.java similarity index 76% rename from src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminClubServiceTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminClubServiceTest.java index 1e298c786..8aa41a6ce 100644 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminClubServiceTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/service/AdminClubServiceTest.java @@ -1,25 +1,25 @@ package com.clubber.ClubberServer.unit.domain.admin.service; -import static com.clubber.ClubberServer.domain.club.domain.ClubType.SMALL; -import static com.clubber.ClubberServer.domain.club.domain.College.BUSINESS_COLLEGE; -import static com.clubber.ClubberServer.domain.club.domain.Department.BUSINESS; -import static com.clubber.ClubberServer.domain.club.domain.Division.ETC; -import static com.clubber.ClubberServer.domain.club.domain.Hashtag.DANCE; -import static com.clubber.ClubberServer.domain.user.domain.AccountRole.ADMIN; -import static com.clubber.ClubberServer.domain.user.domain.AccountState.ACTIVE; +import static com.clubber.domain.domains.club.domain.ClubType.SMALL; +import static com.clubber.domain.domains.club.domain.College.BUSINESS_COLLEGE; +import static com.clubber.domain.domains.club.domain.Department.BUSINESS; +import static com.clubber.domain.domains.club.domain.Division.ETC; +import static com.clubber.domain.domains.club.domain.Hashtag.DANCE; +import static com.clubber.domain.domains.user.domain.AccountRole.ADMIN; +import static com.clubber.domain.domains.user.domain.AccountState.ACTIVE; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.dto.UpdateClubPageRequest; -import com.clubber.ClubberServer.domain.admin.dto.UpdateClubPageResponse; -import com.clubber.ClubberServer.domain.admin.service.AdminClubService; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.domain.ClubInfo; -import com.clubber.ClubberServer.domain.club.dto.GetClubInfoResponse; -import com.clubber.ClubberServer.domain.club.dto.GetClubResponse; -import com.clubber.ClubberServer.global.vo.image.ImageVO; +import com.clubber.domain.domains.admin.domain.Admin; +import com.clubber.domain.admin.dto.UpdateClubPageRequest; +import com.clubber.domain.admin.dto.UpdateClubPageResponse; +import com.clubber.domain.admin.service.AdminClubService; +import com.clubber.domain.admin.implement.AdminReader; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.club.domain.ClubInfo; +import com.clubber.domain.club.dto.GetClubInfoResponse; +import com.clubber.domain.club.dto.GetClubResponse; +import com.clubber.domain.common.vo.ImageVO; import com.clubber.ClubberServer.integration.util.fixture.AdminFixture; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/admin/validator/AdminValidatorTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/validator/AdminValidatorTest.java similarity index 90% rename from src/test/java/com/clubber/ClubberServer/unit/domain/admin/validator/AdminValidatorTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/validator/AdminValidatorTest.java index 43f15f56c..d04fb1616 100644 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/admin/validator/AdminValidatorTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/admin/validator/AdminValidatorTest.java @@ -4,10 +4,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.when; -import com.clubber.ClubberServer.domain.admin.exception.AdminEqualsPreviousPasswordExcpetion; -import com.clubber.ClubberServer.domain.admin.exception.AdminInvalidAuthCodeException; -import com.clubber.ClubberServer.domain.admin.exception.AdminLoginFailedException; -import com.clubber.ClubberServer.domain.admin.implement.AdminValidator; +import com.clubber.domain.domains.admin.exception.AdminEqualsPreviousPasswordExcpetion; +import com.clubber.domain.domains.admin.exception.AdminInvalidAuthCodeException; +import com.clubber.domain.domains.admin.exception.AdminLoginFailedException; +import com.clubber.domain.admin.implement.AdminValidator; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/calendar/CalendarDomainTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/calendar/CalendarDomainTest.java similarity index 92% rename from src/test/java/com/clubber/ClubberServer/unit/domain/calendar/CalendarDomainTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/calendar/CalendarDomainTest.java index d19bf737b..164969eca 100644 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/calendar/CalendarDomainTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/calendar/CalendarDomainTest.java @@ -1,8 +1,8 @@ package com.clubber.ClubberServer.unit.domain.calendar; -import com.clubber.ClubberServer.domain.calendar.domain.Calendar; -import com.clubber.ClubberServer.domain.calendar.domain.CalendarStatus; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitType; +import com.clubber.domain.calendar.domain.Calendar; +import com.clubber.domain.calendar.domain.CalendarStatus; +import com.clubber.domain.recruit.domain.RecruitType; import com.clubber.ClubberServer.integration.util.fixture.CalendarFixture; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/favorite/domain/FavoriteDomainTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/favorite/domain/FavoriteDomainTest.java similarity index 83% rename from src/test/java/com/clubber/ClubberServer/unit/domain/favorite/domain/FavoriteDomainTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/favorite/domain/FavoriteDomainTest.java index 2d23ebf97..8e1ea4ecd 100644 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/favorite/domain/FavoriteDomainTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/favorite/domain/FavoriteDomainTest.java @@ -1,9 +1,9 @@ package com.clubber.ClubberServer.unit.domain.favorite.domain; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.favorite.domain.Favorite; -import com.clubber.ClubberServer.domain.favorite.exception.FavoriteAlreadyDeleteException; -import com.clubber.ClubberServer.domain.user.domain.User; +import com.clubber.domain.domains.club.domain.Club; +import com.clubber.domain.domains.favorite.domain.Favorite; +import com.clubber.domain.domains.favorite.exception.FavoriteAlreadyDeleteException; +import com.clubber.domain.domains.user.domain.User; import com.clubber.ClubberServer.integration.util.fixture.ClubFixture; import com.clubber.ClubberServer.integration.util.fixture.FavoriteFixture; import com.clubber.ClubberServer.integration.util.fixture.UserFixture; diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/favorite/validator/FavoriteValidatorTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/favorite/validator/FavoriteValidatorTest.java similarity index 81% rename from src/test/java/com/clubber/ClubberServer/unit/domain/favorite/validator/FavoriteValidatorTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/favorite/validator/FavoriteValidatorTest.java index fde37ab69..332b9539a 100644 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/favorite/validator/FavoriteValidatorTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/favorite/validator/FavoriteValidatorTest.java @@ -1,6 +1,6 @@ package com.clubber.ClubberServer.unit.domain.favorite.validator; -import com.clubber.ClubberServer.domain.favorite.implement.FavoriteValidator; +import com.clubber.domain.favorite.implement.FavoriteValidator; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.junit.jupiter.MockitoExtension; diff --git a/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/review/domain/ReviewDomainTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/review/domain/ReviewDomainTest.java new file mode 100644 index 000000000..66d916891 --- /dev/null +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/review/domain/ReviewDomainTest.java @@ -0,0 +1,68 @@ +package com.clubber.ClubberServer.unit.domain.review.domain; + +public class ReviewDomainTest { + +// @Test +// @DisplayName("Review에 Keyword 리스트를 저장할때, ReviewKeyword에 포함되어 저장된다.") +// void addReviewKeywordsTest() { +// //given +// Review review = getReview(APPROVED); +// List keywords = List.of(CULTURE, FEE, ACTIVITY, CAREER, MANAGE); +// +// //when +// review.addKeywords(keywords); +// +// //then +// List reviewKeywords = review.getReviewKeywords(); +// Assertions.assertThat(reviewKeywords) +// .extracting(ReviewKeyword::getKeyword) +// .containsExactly(CULTURE, FEE, ACTIVITY, CAREER, MANAGE); +// } + +// private static Review getReview(DeletionStatus deletionStatus) { +// return Review.builder() +// .id(1L) +// .content("content") +// .approvedStatus(deletionStatus) +// .build(); +// } +// +// private static List getApprovedStatusListExcept( +// DeletionStatus excludedDeletionStatus) { +// return Arrays.stream(DeletionStatus.values()) +// .filter(approvedStatus -> approvedStatus != excludedDeletionStatus) +// .collect(Collectors.toList()); +// } +// +// @Test +// @DisplayName("이미 삭제된 리뷰를 삭제하면 ReviewAlreadyDeletedException가 발생한다.") +// void deleteAlreadyDeletedReview() { +// //given +// Review review = getReview(DELETED); +// +// //when & then +// assertThrows(ReviewAlreadyDeletedException.class, review::delete); +// } +// +// @Test +// @DisplayName("삭제되지 않은 리뷰 상태이면 올바르게 삭제된다.") +// void deleteReviewNotDeletedApprovedStatus() { +// //given +// List deletionStatusListExceptDeleted = getApprovedStatusListExcept(DELETED); +// +// //when & then +// deletionStatusListExceptDeleted +// .forEach(approvedStatus -> { +// Review review = getReview(approvedStatus); +// review.delete(); +// assertEquals(DELETED, review.getDeletionStatus()); +// }); +// } +// +// @Test +// @DisplayName("리뷰 저장시 인증 상태는 기본값이 저장된다") +// void getDefaultReviewVerifiedStatus() { +// Review review = getReview(PENDING); +// assertEquals(VerifiedStatus.NOT_VERIFIED, review.getVerifiedStatus()); +// } +} diff --git a/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/review/mapper/ReviewMapperTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/review/mapper/ReviewMapperTest.java new file mode 100644 index 000000000..d27545c39 --- /dev/null +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/review/mapper/ReviewMapperTest.java @@ -0,0 +1,53 @@ +package com.clubber.ClubberServer.unit.domain.review.mapper; + +import com.clubber.domain.review.mapper.ReviewMapper; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +public class ReviewMapperTest { + + @InjectMocks + private ReviewMapper reviewMapper; + +// @Test +// void testKeywordMapping() { +// //given +// KeywordStatsVO keywordStatsVO = new KeywordStatsVO(getKeywordStats()); +// Club club = getClub(); +// +// //when +// GetClubReviewsKeywordStatsResponse getClubReviewsKeywordStatsResponse = reviewMapper.getGetClubReviewsKeywordStatsResponse( +// club, keywordStatsVO); +// +// //then +// Map keywordMap = getClubReviewsKeywordStatsResponse.getKeywordStats(); +// +// assertThat(keywordMap) +// .containsExactlyInAnyOrderEntriesOf(Map.of( +// ACTIVITY.getTitle(), 10L, +// FEE.getTitle(), 20L, +// CAREER.getTitle(), 30L, +// CULTURE.getTitle(), 40L, +// MANAGE.getTitle(), 50L +// )); +// } +// +// private static List getKeywordStats() { +// return List.of( +// new KeywordCountStatDto(ACTIVITY, 10L), +// new KeywordCountStatDto(FEE, 20L), +// new KeywordCountStatDto(CAREER, 30L), +// new KeywordCountStatDto(CULTURE, 40L), +// new KeywordCountStatDto(MANAGE, 50L) +// ); +// } +// +// private static Club getClub() { +// return Club.builder() +// .id(1L) +// .isAgreeToReview(true) +// .build(); +// } +} diff --git a/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/review/vo/ReviewKeywordVOTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/review/vo/ReviewKeywordVOTest.java new file mode 100644 index 000000000..5558ecc59 --- /dev/null +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/domain/review/vo/ReviewKeywordVOTest.java @@ -0,0 +1,52 @@ +//package com.clubber.ClubberServer.unit.domain.review.vo; +// +//import org.junit.jupiter.api.DisplayName; +//import org.junit.jupiter.api.Test; +// +//public class ReviewKeywordVOTest { +// +// +// @Test +// @DisplayName("keywordStat 리스트가 주어졌을 때, KeywordStatVO안의 Map에 매핑된다..") +// void keywordStatsTest() { +// //given & when +//// KeywordStatsVO keywordStatsVO = new KeywordStatsVO(getKeywordStats()); +//// +//// //then +//// Map keywordMap = keywordStatsVO.getKeywordMapAsStingKey(); +//// assertAll( +//// () -> assertEquals(10L, keywordMap.get(ACTIVITY.getTitle())), +//// () -> assertEquals(20L, keywordMap.get(FEE.getTitle())), +//// () -> assertEquals(30L, keywordMap.get(CAREER.getTitle())), +//// () -> assertEquals(40L, keywordMap.get(CULTURE.getTitle())), +//// () -> assertEquals(50L, keywordMap.get(MANAGE.getTitle())) +//// ); +//// } +//// +//// @Test +//// @DisplayName("KeywordStatMap의 String키는 Keyword Enum순서와 동일하다") +//// void keywordStatsKeyOrderTest() { +//// //given +//// KeywordStatsVO keywordStatsVO = new KeywordStatsVO(getKeywordStats()); +//// List expectedKeyOrders = Arrays.stream(Keyword.values()) +//// .map(Keyword::getTitle) // Enum 순서대로 제목을 매핑 +//// .toList(); +//// +//// //when : 순서대로 key를 추출할 때 +//// Map keywordMap = keywordStatsVO.getKeywordMapAsStingKey(); +//// List actualKeyOrders = new ArrayList<>(keywordMap.keySet()); +//// +//// //then +//// Assertions.assertThat(expectedKeyOrders).isEqualTo(actualKeyOrders); +//// } +// +//// private static List getKeywordStats() { +//// return List.of( +//// new KeywordCountStatDto(Keyword.ACTIVITY, 10L), +//// new KeywordCountStatDto(FEE, 20L), +//// new KeywordCountStatDto(Keyword.CAREER, 30L), +//// new KeywordCountStatDto(Keyword.CULTURE, 40L), +//// new KeywordCountStatDto(Keyword.MANAGE, 50L) +//// ); +//// } +////} diff --git a/src/test/java/com/clubber/ClubberServer/unit/global/util/ImageUtilTest.java b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/global/util/ImageUtilTest.java similarity index 85% rename from src/test/java/com/clubber/ClubberServer/unit/global/util/ImageUtilTest.java rename to Clubber-External/src/test/java/com/clubber/ClubberServer/unit/global/util/ImageUtilTest.java index 607dfd482..032e8fc29 100644 --- a/src/test/java/com/clubber/ClubberServer/unit/global/util/ImageUtilTest.java +++ b/Clubber-External/src/test/java/com/clubber/ClubberServer/unit/global/util/ImageUtilTest.java @@ -1,11 +1,11 @@ package com.clubber.ClubberServer.unit.global.util; -import com.clubber.ClubberServer.global.util.ImageUtil; +import com.clubber.global.util.ImageUtil; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import static com.clubber.ClubberServer.global.common.consts.ClubberStatic.IMAGE_SERVER; +import static com.clubber.common.consts.ClubberStatic.IMAGE_SERVER; import static org.assertj.core.api.Assertions.*; public class ImageUtilTest { private final String exampleKey = "imagekey"; diff --git a/Clubber-Internal/Clubber-Internal.iml b/Clubber-Internal/Clubber-Internal.iml new file mode 100644 index 000000000..c90834f2d --- /dev/null +++ b/Clubber-Internal/Clubber-Internal.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Clubber-Internal/Dockerfile.dev b/Clubber-Internal/Dockerfile.dev new file mode 100644 index 000000000..dd3ab6ff6 --- /dev/null +++ b/Clubber-Internal/Dockerfile.dev @@ -0,0 +1,12 @@ +FROM openjdk:17-alpine + +# curl 설치 +RUN apk add --no-cache curl + +ARG JAR_FILE=build/libs/Clubber-Internal.jar + +COPY ${JAR_FILE} app.jar +ARG PROFILE=dev +ENV PROFILE=${PROFILE} + +ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=${PROFILE}","/app.jar"] \ No newline at end of file diff --git a/Clubber-Internal/build.gradle b/Clubber-Internal/build.gradle new file mode 100644 index 000000000..e91ae3b40 --- /dev/null +++ b/Clubber-Internal/build.gradle @@ -0,0 +1,24 @@ +plugins { + id 'org.springframework.boot' version '3.2.4' + id 'io.spring.dependency-management' + id 'java' +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-security' + + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' + annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" + + implementation 'io.jsonwebtoken:jjwt-api:0.11.5' + implementation 'io.jsonwebtoken:jjwt-impl:0.11.5' + implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5' + + //swagger + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' + + implementation project(":Clubber-Domain") + implementation project(":Clubber-Common") +} diff --git a/Clubber-Internal/src/main/java/com/clubber/ClubberInternalApplication.java b/Clubber-Internal/src/main/java/com/clubber/ClubberInternalApplication.java new file mode 100644 index 000000000..585e4cf7d --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/ClubberInternalApplication.java @@ -0,0 +1,13 @@ +package com.clubber; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.ConfigurationPropertiesScan; + +@ConfigurationPropertiesScan +@SpringBootApplication +public class ClubberInternalApplication { + public static void main(String[] args) { + SpringApplication.run(ClubberInternalApplication.class); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/admin/controller/AdminController.java b/Clubber-Internal/src/main/java/com/clubber/domain/admin/controller/AdminController.java new file mode 100644 index 000000000..291c07a18 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/admin/controller/AdminController.java @@ -0,0 +1,21 @@ +package com.clubber.domain.admin.controller; + +import com.clubber.domain.admin.dto.PendingAdminInfoResponse; +import com.clubber.domain.admin.service.InternalClubApproveService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/internal/admins") +@RequiredArgsConstructor +public class AdminController { + private final InternalClubApproveService internalClubApproveService; + @GetMapping + public List getNotApprovedPendingAdmins() { + return internalClubApproveService.getPendingAdminInfos(); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/admin/dto/PendingAdminInfoResponse.java b/Clubber-Internal/src/main/java/com/clubber/domain/admin/dto/PendingAdminInfoResponse.java new file mode 100644 index 000000000..e79300eac --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/admin/dto/PendingAdminInfoResponse.java @@ -0,0 +1,45 @@ +package com.clubber.domain.admin.dto; + +import com.clubber.domain.domains.admin.domain.Contact; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Builder; + +import java.time.LocalDateTime; + +import static com.clubber.common.consts.ClubberStatic.IMAGE_SERVER; + +@Builder +public record PendingAdminInfoResponse(Long id, + String username, + String clubType, + String college, + String department, + String division, + String hashtag, + String clubName, + String email, + Contact contact, + String imageForApproval, + boolean isApproved, + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy.MM.dd", timezone = "Asia/Seoul") + LocalDateTime createdAt) { + public static PendingAdminInfoResponse of(PendingAdminInfo pendingAdminInfo) { + return PendingAdminInfoResponse.builder() + .id(pendingAdminInfo.getId()) + .username(pendingAdminInfo.getUsername()) + .clubType(pendingAdminInfo.getClubType().getTitle()) + .college(pendingAdminInfo.getCollege().getTitle()) + .division(pendingAdminInfo.getDivision().getTitle()) + .hashtag(pendingAdminInfo.getHashtag().getTitle()) + .department(pendingAdminInfo.getDepartment().getTitle()) + .clubName(pendingAdminInfo.getClubName()) + .email(pendingAdminInfo.getEmail()) + .contact(pendingAdminInfo.getContact()) + .imageForApproval(IMAGE_SERVER + pendingAdminInfo.getImageForApproval()) + .isApproved(pendingAdminInfo.isApproved()) + .createdAt(pendingAdminInfo.getCreatedAt()) + .build(); + + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/admin/service/InternalClubApproveService.java b/Clubber-Internal/src/main/java/com/clubber/domain/admin/service/InternalClubApproveService.java new file mode 100644 index 000000000..92110f869 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/admin/service/InternalClubApproveService.java @@ -0,0 +1,20 @@ +package com.clubber.domain.admin.service; + +import com.clubber.domain.admin.dto.PendingAdminInfoResponse; +import com.clubber.domain.domains.admin.domain.PendingAdminInfo; +import com.clubber.domain.domains.admin.repository.PendingAdminInfoRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class InternalClubApproveService { + private final PendingAdminInfoRepository pendingAdminInfoRepository; + + public List getPendingAdminInfos() { + List pendingAdminInfos = pendingAdminInfoRepository.findByIsApproved(false); + return pendingAdminInfos.stream().map(PendingAdminInfoResponse::of).toList(); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/controller/AdminAuthController.java b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/controller/AdminAuthController.java new file mode 100644 index 000000000..306fa7e31 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/controller/AdminAuthController.java @@ -0,0 +1,20 @@ +package com.clubber.domain.internaladmin.controller; + +import com.clubber.domain.internaladmin.dto.InternalAdminLoginRequest; +import com.clubber.domain.internaladmin.dto.InternalAdminTokenResponse; +import com.clubber.domain.internaladmin.service.InternalAdminAuthService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/internal/auth") +public class AdminAuthController { + + private final InternalAdminAuthService internalAdminAuthService; + + @PostMapping("/login") + public InternalAdminTokenResponse login(@RequestBody InternalAdminLoginRequest request) { + return internalAdminAuthService.login(request); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/domain/InternalAdmin.java b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/domain/InternalAdmin.java new file mode 100644 index 000000000..9a5ef3897 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/domain/InternalAdmin.java @@ -0,0 +1,19 @@ +package com.clubber.domain.internaladmin.domain; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@Entity +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class InternalAdmin { + @Id + @GeneratedValue + private Long id; + private String username; + private String password; +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/dto/InternalAdminLoginRequest.java b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/dto/InternalAdminLoginRequest.java new file mode 100644 index 000000000..45e9e98a2 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/dto/InternalAdminLoginRequest.java @@ -0,0 +1,7 @@ +package com.clubber.domain.internaladmin.dto; + +public record InternalAdminLoginRequest( + String username, + String password +) { +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/dto/InternalAdminTokenResponse.java b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/dto/InternalAdminTokenResponse.java new file mode 100644 index 000000000..fdbe2224e --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/dto/InternalAdminTokenResponse.java @@ -0,0 +1,6 @@ +package com.clubber.domain.internaladmin.dto; + +public record InternalAdminTokenResponse( + String accessToken +) { +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/repository/InternalAdminRepository.java b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/repository/InternalAdminRepository.java new file mode 100644 index 000000000..9a0de045f --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/repository/InternalAdminRepository.java @@ -0,0 +1,8 @@ +package com.clubber.domain.internaladmin.repository; + +import com.clubber.domain.internaladmin.domain.InternalAdmin; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface InternalAdminRepository extends JpaRepository { + InternalAdmin findByUsername(String username); +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/service/InternalAdminAuthService.java b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/service/InternalAdminAuthService.java new file mode 100644 index 000000000..61c20399c --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/internaladmin/service/InternalAdminAuthService.java @@ -0,0 +1,30 @@ +package com.clubber.domain.internaladmin.service; + +import com.clubber.domain.internaladmin.dto.InternalAdminLoginRequest; +import com.clubber.domain.internaladmin.dto.InternalAdminTokenResponse; +import com.clubber.domain.domains.admin.exception.AdminLoginFailedException; +import com.clubber.domain.internaladmin.domain.InternalAdmin; +import com.clubber.domain.internaladmin.repository.InternalAdminRepository; +import com.clubber.global.jwt.AccountRole; +import com.clubber.global.jwt.JwtTokenUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class InternalAdminAuthService { + private final PasswordEncoder encoder; + private final InternalAdminRepository internalAdminRepository; + private final JwtTokenUtil jwtTokenUtil; + + public InternalAdminTokenResponse login(InternalAdminLoginRequest request) { + InternalAdmin internalAdmin = internalAdminRepository.findByUsername(request.username()); + String password = internalAdmin.getPassword(); + if (!encoder.matches(request.password(), password)) { + throw AdminLoginFailedException.EXCEPTION; + } + String accessToken = jwtTokenUtil.generateAccessToken(internalAdmin.getId(), AccountRole.SUPER_ADMIN); + return new InternalAdminTokenResponse(accessToken); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/report/controller/ReportController.java b/Clubber-Internal/src/main/java/com/clubber/domain/report/controller/ReportController.java new file mode 100644 index 000000000..8d65a4240 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/report/controller/ReportController.java @@ -0,0 +1,57 @@ +package com.clubber.domain.report.controller; + +import com.clubber.common.vo.enums.EnumMapperVO; +import com.clubber.domain.domains.report.vo.GetOneReportResponse; +import com.clubber.domain.report.dto.GetNextAlwaysReportRequest; +import com.clubber.domain.report.dto.GetOneReportDetailResponse; +import com.clubber.domain.report.dto.PutReportRequest; +import com.clubber.domain.report.service.ReportService; +import com.clubber.global.common.page.PageResponse; +import com.clubber.global.common.slice.SliceResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.data.web.PageableDefault; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/internal/reports") +@RequiredArgsConstructor +@Tag(name = "[리뷰 신고]") +public class ReportController { + + private final ReportService reportService; + + @Operation(summary = "신고 리뷰 목록 조회") + @GetMapping("") + public PageResponse getReviewReports( + @PageableDefault(size = 10) Pageable pageable) { + return reportService.getReviewReports(pageable); + } + + @Operation(summary = "신고 리뷰 - 상세 조회") + @PostMapping("/next-always") + public SliceResponse getReportList(@RequestBody + GetNextAlwaysReportRequest request) { + return reportService.getNextReport(request); + } + + @Operation(summary = "리뷰 신고 승인/거절") + @PostMapping + public void putReportStatus(@RequestBody @Valid PutReportRequest request) { + reportService.postReportStatus(request); + } + + @Operation(summary = "리뷰 처리 상태 목록") + @GetMapping(value = "/status") + public List getReportStatus() { + return reportService.getReportStatus(); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/GetNextAlwaysReportRequest.java b/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/GetNextAlwaysReportRequest.java new file mode 100644 index 000000000..0d0d31b83 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/GetNextAlwaysReportRequest.java @@ -0,0 +1,10 @@ +package com.clubber.domain.report.dto; + +import jakarta.validation.constraints.NotNull; + +public record GetNextAlwaysReportRequest ( + @NotNull(message = "리뷰 id를 입력해주세요") + Long reviewId, + Long nowReportId +){ +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/GetOneReportDetailResponse.java b/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/GetOneReportDetailResponse.java new file mode 100644 index 000000000..cd3e4c580 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/GetOneReportDetailResponse.java @@ -0,0 +1,53 @@ +package com.clubber.domain.report.dto; + +import com.clubber.domain.domains.report.domain.Report; +import io.swagger.v3.oas.annotations.media.Schema; +import java.time.LocalDateTime; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class GetOneReportDetailResponse { + + @Schema(description = "신고 id", example = "12") + private final Long reportId; + + @Schema(description = "동아리명", example = "클러버") + private final String clubName; + + @Schema(description = "작성자", example = "홍길동") + private final String writer; + + @Schema(description = "리뷰 id", example = "1") + private final Long reviewId; + + @Schema(description = "리뷰 내용", example = "좋아요") + private final String content; + + @Schema(description = "신고사유", example = "허위 정보") + private final String reportReason; + + @Schema(description = "구체사유", example = "해당 동아리와 관련없는 내용입니다.") + private final String detailReason; + + @Schema(description = "신고 일자", example = "2025-07-06T10:00:00") + private final LocalDateTime reportedAt; + + public static GetOneReportDetailResponse from(Report report) { + return GetOneReportDetailResponse.builder() + .reportId(report.getId()) + .clubName(report.getReview().getClub().getName()) + .writer(report.getReview().getUser().getEmail()) + .reviewId(report.getReview().getId()) + .content(report.getReview().getContent()) + .reportReason(report.getReportReason().getTitle()) + .detailReason(report.getDetailReason()) + .reportedAt(report.getCreatedAt()) + .build(); + } + +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/GetOneReportResponse.java b/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/GetOneReportResponse.java new file mode 100644 index 000000000..dc017e286 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/GetOneReportResponse.java @@ -0,0 +1,45 @@ +package com.clubber.domain.report.dto; + +import com.clubber.domain.domains.report.domain.Report; +import io.swagger.v3.oas.annotations.media.Schema; +import java.time.LocalDateTime; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class GetOneReportResponse { + + @Schema(description = "리뷰 id", example = "1") + private final Long reviewId; + + @Schema(description = "동아리명", example = "클러버") + private final String clubName; + + @Schema(description = "신고 횟수", example = "2") + private final Integer reportedNum; + + @Schema(description = "리뷰 내용", example = "좋아요") + private final String content; + + @Schema(description = "신고사유", example = "허위 정보") + private final String reportReason; + + @Schema(description = "신고일", example = "2025-07-06T10:00:00") + private final LocalDateTime reportedAt; + + + public static GetOneReportResponse of(Report report, Integer reportedNum) { + return GetOneReportResponse.builder() + .reviewId(report.getReview().getId()) + .clubName(report.getReview().getClub().getName()) + .reportedNum(reportedNum) + .content(report.getReview().getContent()) + .reportReason(report.getReportReason().getTitle()) + .reportedAt(report.getCreatedAt()) + .build(); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/PutReportRequest.java b/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/PutReportRequest.java new file mode 100644 index 000000000..e9629568d --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/report/dto/PutReportRequest.java @@ -0,0 +1,15 @@ +package com.clubber.domain.report.dto; + + +import com.clubber.domain.domains.report.domain.ReportStatus; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; + +public record PutReportRequest ( + @NotNull(message = "리뷰 id를 입력해주세요") + Long reviewId, + @NotNull + @Schema(description = "승인/거절", example = "APPROVED") + ReportStatus reportStatus +) { +} \ No newline at end of file diff --git a/Clubber-Internal/src/main/java/com/clubber/domain/report/service/ReportService.java b/Clubber-Internal/src/main/java/com/clubber/domain/report/service/ReportService.java new file mode 100644 index 000000000..d23497fc8 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/domain/report/service/ReportService.java @@ -0,0 +1,73 @@ +package com.clubber.domain.report.service; + + +import com.clubber.common.mapper.enums.EnumMapper; +import com.clubber.common.vo.enums.EnumMapperVO; +import com.clubber.domain.domains.report.domain.Report; +import com.clubber.domain.domains.report.domain.ReportStatus; +import com.clubber.domain.domains.report.implement.ReportReader; +import com.clubber.domain.domains.report.implement.ReportValidator; +import com.clubber.domain.domains.report.vo.GetOneReportResponse; +import com.clubber.domain.domains.review.domain.Review; +import com.clubber.domain.domains.review.implement.ReviewReader; +import com.clubber.domain.domains.review.implement.ReviewValidator; +import com.clubber.domain.report.dto.GetNextAlwaysReportRequest; +import com.clubber.domain.report.dto.GetOneReportDetailResponse; +import com.clubber.domain.report.dto.PutReportRequest; +import com.clubber.global.common.page.PageResponse; +import com.clubber.global.common.slice.SliceResponse; +import com.clubber.global.util.SliceUtil; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +public class ReportService { + + private final ReportReader reportReader; + private final ReviewReader reviewReader; + private final ReviewValidator reviewValidator; + private final ReportValidator reportValidator; + private final EnumMapper enumMapper; + + @Transactional(readOnly = true) + public PageResponse getReviewReports(Pageable pageable) { + Page reports = reportReader.findReportsPage(pageable); + return PageResponse.of(reports); + } + + @Transactional(readOnly = true) + public SliceResponse getNextReport( + GetNextAlwaysReportRequest request) { + List alwaysNextReports = reportReader.findAlwaysNextReport(request.nowReportId(), + request.reviewId()); + List reportResponses = alwaysNextReports.stream() + .map(GetOneReportDetailResponse::from) + .toList(); + + return SliceUtil.valueOf(reportResponses, Pageable.ofSize(1)); + } + + @Transactional + public void postReportStatus(PutReportRequest request) { + Review review = reviewReader.findById(request.reviewId()); + reviewValidator.validateReviewStatus(review); + reportValidator.hasPendingReport(review); + + if (request.reportStatus() == ReportStatus.APPROVED) { + review.hide(); + } + + reportReader.findByReviewId(review.getId()) + .forEach(report -> report.changeStatus(request.reportStatus())); + } + + public List getReportStatus() { + return enumMapper.get("ReportStatus"); + } + +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/common/page/PageResponse.java b/Clubber-Internal/src/main/java/com/clubber/global/common/page/PageResponse.java new file mode 100644 index 000000000..115f4c635 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/common/page/PageResponse.java @@ -0,0 +1,23 @@ +package com.clubber.global.common.page; + +import java.util.List; +import org.springframework.data.domain.Page; + +public record PageResponse( + List content, + int page, + int size, + long totalElements, + int totalPages, + boolean hasNextPage) { + + public static PageResponse of(Page page) { + return new PageResponse<>( + page.getContent(), + page.getNumber() + 1, + page.getNumberOfElements(), + page.getTotalElements(), + page.getTotalPages(), + page.hasNext()); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/common/slice/SliceResponse.java b/Clubber-Internal/src/main/java/com/clubber/global/common/slice/SliceResponse.java new file mode 100644 index 000000000..8f1ad545c --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/common/slice/SliceResponse.java @@ -0,0 +1,13 @@ +package com.clubber.global.common.slice; + +import java.util.List; + +public record SliceResponse(List content, long size, boolean hasNext) { + + public static SliceResponse of(List content, long size, boolean hasNext) { + return new SliceResponse<>( + content, + size, + hasNext); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/config/enums/EnumConfig.java b/Clubber-Internal/src/main/java/com/clubber/global/config/enums/EnumConfig.java new file mode 100644 index 000000000..1a3353278 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/config/enums/EnumConfig.java @@ -0,0 +1,18 @@ +package com.clubber.global.config.enums; + + +import com.clubber.common.mapper.enums.EnumMapper; +import com.clubber.domain.domains.report.domain.ReportStatus; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class EnumConfig { + + @Bean + public EnumMapper getEnumMapper() { + final EnumMapper enumMapper = new EnumMapper(); + enumMapper.put("ReportStatus", ReportStatus.class); + return enumMapper; + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/config/querydsl/QueryDslConfig.java b/Clubber-Internal/src/main/java/com/clubber/global/config/querydsl/QueryDslConfig.java new file mode 100644 index 000000000..bf28a7095 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/config/querydsl/QueryDslConfig.java @@ -0,0 +1,19 @@ +package com.clubber.global.config.querydsl; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class QueryDslConfig { + + @PersistenceContext + private EntityManager entityManager; + + @Bean + public JPAQueryFactory jpaQueryFactory() { + return new JPAQueryFactory(entityManager); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/config/response/GlobalExceptionHandler.java b/Clubber-Internal/src/main/java/com/clubber/global/config/response/GlobalExceptionHandler.java new file mode 100644 index 000000000..541defba7 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/config/response/GlobalExceptionHandler.java @@ -0,0 +1,91 @@ +package com.clubber.global.config.response; + +import com.clubber.common.dto.ErrorResponse; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.BaseException; +import com.clubber.common.exception.ErrorReason; +import com.clubber.common.exception.GlobalErrorCode; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.context.request.ServletWebRequest; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; +import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; + +import java.util.List; + +@RestControllerAdvice +@Slf4j +@RequiredArgsConstructor +public class GlobalExceptionHandler extends ResponseEntityExceptionHandler { + + @ExceptionHandler(BaseException.class) + public ResponseEntity handleBaseException( + BaseException e, HttpServletRequest request) { + BaseErrorCode code = e.getErrorCode(); + ErrorReason errorReason = code.getErrorReason(); + ErrorResponse errorResponse = new ErrorResponse(errorReason, + request.getRequestURL().toString()); + return ResponseEntity.status(HttpStatus.valueOf(errorReason.getStatus())) + .body(errorResponse); + } + + @Override + protected ResponseEntity handleExceptionInternal(Exception ex, Object body, + HttpHeaders headers, HttpStatusCode statusCode, WebRequest request) { + + ServletWebRequest servletWebRequest = (ServletWebRequest) request; + String uri = servletWebRequest.getRequest().getRequestURI(); + ErrorResponse errorResponse = + new ErrorResponse(statusCode.value(), ex.getMessage(), uri); + return super.handleExceptionInternal(ex, errorResponse, headers, statusCode, request); + } + + @ExceptionHandler({MethodArgumentTypeMismatchException.class}) + protected ResponseEntity handleMethodArgumentTypeMismatch( + MethodArgumentTypeMismatchException e) { + return ResponseEntity.status(GlobalErrorCode.INVALID_METHOD_ARGUMENT_TYPE.getStatus()) + .body(GlobalErrorCode.INVALID_METHOD_ARGUMENT_TYPE.getErrorReason()); + } + + @SneakyThrows + @Override + protected ResponseEntity handleMethodArgumentNotValid( + MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatusCode status, + WebRequest request) { + //에러 필드 : 에러 메시지 구성 + List fieldErrors = ex.getBindingResult().getFieldErrors(); + StringBuilder errorMessages = new StringBuilder(); + for (FieldError fieldError : fieldErrors) { + errorMessages.append("에러 필드: ").append(fieldError.getField()); + errorMessages.append("입력 값: ").append(fieldError.getRejectedValue()); + errorMessages.append("에러 메시지: ").append(fieldError.getDefaultMessage()); + } + + //uri 추출 + ServletWebRequest servletWebRequest = (ServletWebRequest) request; + String uri = servletWebRequest.getRequest().getRequestURI(); + + ErrorResponse errorResponse = new ErrorResponse(status.value(), errorMessages.toString(), + uri); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errorResponse); + } + + @ExceptionHandler({Exception.class}) + public ResponseEntity handleAllException(Exception e, WebRequest request) { + GlobalErrorCode internalServerError = GlobalErrorCode.INTERNAL_SERVER_ERROR; + log.error("INTERNAL SERVER ERROR", e); + return ResponseEntity.status(internalServerError.getStatus()) + .body(internalServerError.getErrorReason()); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/config/response/SuccessResponseAdvice.java b/Clubber-Internal/src/main/java/com/clubber/global/config/response/SuccessResponseAdvice.java new file mode 100644 index 000000000..ae05a24cc --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/config/response/SuccessResponseAdvice.java @@ -0,0 +1,38 @@ +package com.clubber.global.config.response; + +import com.clubber.common.dto.SuccessResponse; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.core.MethodParameter; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.server.ServerHttpRequest; +import org.springframework.http.server.ServerHttpResponse; +import org.springframework.http.server.ServletServerHttpResponse; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; + + +@RestControllerAdvice(basePackages = "com.clubber") +public class SuccessResponseAdvice implements ResponseBodyAdvice { + + @Override + public boolean supports(MethodParameter returnType, Class converterType) { + return true; + } + + @Override + public Object beforeBodyWrite(Object body, MethodParameter returnType, + MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, + ServerHttpResponse response) { + + HttpServletResponse servletResponse = + ((ServletServerHttpResponse) response).getServletResponse(); + int status = servletResponse.getStatus(); + HttpStatus resolve = HttpStatus.resolve(status); + + if (resolve.is2xxSuccessful()) { + return new SuccessResponse(body); + } + return body; + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/config/security/SecurityConfig.java b/Clubber-Internal/src/main/java/com/clubber/global/config/security/SecurityConfig.java new file mode 100644 index 000000000..9ede26155 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/config/security/SecurityConfig.java @@ -0,0 +1,65 @@ +package com.clubber.global.config.security; + +import com.clubber.global.jwt.JwtTokenUtil; +import com.clubber.global.security.CustomAuthenticationEntryPoint; +import com.clubber.global.security.FilterConfig; +import com.clubber.global.security.JwtTokenFilter; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.Customizer; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +@EnableWebSecurity +@RequiredArgsConstructor +@Configuration +public class SecurityConfig { + + private final JwtTokenUtil jwtTokenUtil; + + private final FilterConfig filterConfig; + + private final CustomAuthenticationEntryPoint entryPoint; + + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + + http.csrf(AbstractHttpConfigurer::disable) + .formLogin(AbstractHttpConfigurer::disable) + .httpBasic(AbstractHttpConfigurer::disable) + .with(filterConfig, Customizer.withDefaults()) + .exceptionHandling((exceptionConfig) -> + exceptionConfig.authenticationEntryPoint(entryPoint)) + .authorizeHttpRequests((requests) -> + requests.requestMatchers("/swagger-resources/**", "/swagger-ui/**", "/v3/api-docs/**", + "/v3/api-docs") + .permitAll() + .requestMatchers("/internal/auth/login") + .permitAll() + .anyRequest() + .hasRole("SUPER_ADMIN") + ); + + return http.build(); + } + + @Bean + public WebSecurityCustomizer webSecurityCustomizer() { + return (web) -> web.ignoring() + .requestMatchers("/swagger-resources/**", "/swagger-ui/**", "/v3/api-docs/**", + "/v3/api-docs") + .requestMatchers("/internal/auth/login"); + } + + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/config/swagger/SwaggerConfig.java b/Clubber-Internal/src/main/java/com/clubber/global/config/swagger/SwaggerConfig.java new file mode 100644 index 000000000..6e9cc1fab --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/config/swagger/SwaggerConfig.java @@ -0,0 +1,45 @@ +package com.clubber.global.config.swagger; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import io.swagger.v3.oas.models.servers.Server; +import jakarta.servlet.ServletContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.List; + +@Configuration +public class SwaggerConfig { + @Bean + public OpenAPI openAPI(ServletContext servletContext) { + String contextPath = servletContext.getContextPath(); + Server server = new Server().url(contextPath); + return new OpenAPI(). + servers(List.of(server)) + .components(authSetting()) + .addSecurityItem(new SecurityRequirement() + .addList("Authorization") + .addList("cookieAuth")); + } + + private Components authSetting() { + SecurityScheme cookieAuth = new SecurityScheme() + .type(SecurityScheme.Type.APIKEY) + .scheme(SecurityScheme.In.COOKIE.toString()) + .name("accessToken"); + + SecurityScheme authorization = new SecurityScheme() + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT") + .in(SecurityScheme.In.HEADER) + .name("Authorization"); + + return new Components() + .addSecuritySchemes("cookieAuth", cookieAuth) + .addSecuritySchemes("Authorization", authorization); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/jwt/AccountRole.java b/Clubber-Internal/src/main/java/com/clubber/global/jwt/AccountRole.java new file mode 100644 index 000000000..146379096 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/jwt/AccountRole.java @@ -0,0 +1,5 @@ +package com.clubber.global.jwt; + +public enum AccountRole { + SUPER_ADMIN, ADMIN +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/jwt/JwtTokenUtil.java b/Clubber-Internal/src/main/java/com/clubber/global/jwt/JwtTokenUtil.java new file mode 100644 index 000000000..4fdc1df74 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/jwt/JwtTokenUtil.java @@ -0,0 +1,111 @@ +package com.clubber.global.jwt; + +import com.clubber.domain.domains.user.exception.InvalidTokenException; +import com.clubber.domain.domains.user.exception.RefreshTokenExpiredException; +import com.clubber.domain.domains.user.exception.TokenExpiredException; +import com.clubber.global.jwt.properties.JwtProperties; +import com.clubber.global.jwt.vo.AccessTokenInfo; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.Jws; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.security.Keys; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.nio.charset.StandardCharsets; +import java.security.Key; +import java.util.Date; + +import static com.clubber.common.consts.ClubberStatic.*; + +@Component +@RequiredArgsConstructor +public class JwtTokenUtil { + + private final JwtProperties jwtProperties; + + private Jws getJws(String token) { + try { + return Jwts.parserBuilder().setSigningKey(getSecretKey()).build().parseClaimsJws(token); + } catch (ExpiredJwtException e) { + throw TokenExpiredException.EXCEPTION; + } catch (Exception e) { + throw InvalidTokenException.EXCEPTION; + } + } + + private Key getSecretKey() { + return Keys.hmacShaKeyFor(jwtProperties.getSecretKey().getBytes(StandardCharsets.UTF_8)); + } + + public String generateAccessToken(Long id, AccountRole accountRole) { + final Key encodedKey = getSecretKey(); + final Date issuedAt = new Date(); + final Date accessTokenExpiresIn = + new Date(issuedAt.getTime() + jwtProperties.getAccessExp() * MILLI_TO_SECOND); + + return Jwts.builder() + .setIssuer(TOKEN_ISSUER) + .setIssuedAt(issuedAt) + .setSubject(id.toString()) + .claim(TOKEN_TYPE, ACCESS_TOKEN) + .claim(TOKEN_ROLE, accountRole.name()) + .setExpiration(accessTokenExpiresIn) + .signWith(encodedKey) + .compact(); + } + + public String generateRefreshToken(Long id) { + final Key encodedKey = getSecretKey(); + final Date issuedAt = new Date(); + final Date refreshTokenExpiresIn = + new Date(issuedAt.getTime() + jwtProperties.getRefreshExp() * MILLI_TO_SECOND); + + return Jwts.builder() + .setIssuer(TOKEN_ISSUER) + .setIssuedAt(issuedAt) + .setSubject(id.toString()) + .claim(TOKEN_TYPE, REFRESH_TOKEN) + .setExpiration(refreshTokenExpiresIn) + .signWith(encodedKey) + .compact(); + } + + private boolean isAccessToken(String token) { + Jws jws = getJws(token); + return jws.getBody().get(TOKEN_TYPE).equals(ACCESS_TOKEN); + } + + public AccessTokenInfo parseAccessToken(String token) { + if (isAccessToken(token)) { + Claims claims = getJws(token).getBody(); + return AccessTokenInfo.builder() + .userId(Long.parseLong(claims.getSubject())) + .role((String) claims.get(TOKEN_ROLE)) + .build(); + } + throw InvalidTokenException.EXCEPTION; + } + + private boolean isRefreshToken(String token) { + Jws jws = getJws(token); + return jws.getBody().get(TOKEN_TYPE).equals(REFRESH_TOKEN); + } + + public Long parseRefreshToken(String token) { + try { + if (isRefreshToken(token)) { + Claims claims = getJws(token).getBody(); + return Long.parseLong(claims.getSubject()); + } + } catch (TokenExpiredException e) { + throw RefreshTokenExpiredException.EXCEPTION; + } + throw InvalidTokenException.EXCEPTION; + } + + public Long getRefreshTokenTTlSecond() { + return jwtProperties.getRefreshExp(); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/jwt/properties/JwtProperties.java b/Clubber-Internal/src/main/java/com/clubber/global/jwt/properties/JwtProperties.java new file mode 100644 index 000000000..5402f5dad --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/jwt/properties/JwtProperties.java @@ -0,0 +1,15 @@ +package com.clubber.global.jwt.properties; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.context.properties.ConfigurationProperties; + +@Getter +@RequiredArgsConstructor +@ConfigurationProperties("jwt") +public class JwtProperties { + + private final String secretKey; + private final Long accessExp; + private final Long refreshExp; +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/jwt/vo/AccessTokenInfo.java b/Clubber-Internal/src/main/java/com/clubber/global/jwt/vo/AccessTokenInfo.java new file mode 100644 index 000000000..2060f0219 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/jwt/vo/AccessTokenInfo.java @@ -0,0 +1,7 @@ +package com.clubber.global.jwt.vo; + +import lombok.Builder; + +@Builder +public record AccessTokenInfo(Long userId, String role) { +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/jwt/vo/TokenVO.java b/Clubber-Internal/src/main/java/com/clubber/global/jwt/vo/TokenVO.java new file mode 100644 index 000000000..e07e0188d --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/jwt/vo/TokenVO.java @@ -0,0 +1,4 @@ +package com.clubber.global.jwt.vo; + +public record TokenVO(String accessToken, String refreshToken) { +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/security/AuthDetails.java b/Clubber-Internal/src/main/java/com/clubber/global/security/AuthDetails.java new file mode 100644 index 000000000..3bfea04b8 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/security/AuthDetails.java @@ -0,0 +1,54 @@ +package com.clubber.global.security; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import java.util.Collection; +import java.util.Collections; + + +@AllArgsConstructor +@Getter +public class AuthDetails implements UserDetails { + + private String userId; + private String role; + + @Override + public Collection getAuthorities() { + return Collections.singleton(new SimpleGrantedAuthority("ROLE_" + role)); + } + + @Override + public String getPassword() { + return null; + } + + @Override + public String getUsername() { + return userId; + } + + @Override + public boolean isAccountNonExpired() { + return false; + } + + @Override + public boolean isAccountNonLocked() { + return false; + } + + @Override + public boolean isCredentialsNonExpired() { + return false; + } + + @Override + public boolean isEnabled() { + return false; + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/security/CorsConfig.java b/Clubber-Internal/src/main/java/com/clubber/global/security/CorsConfig.java new file mode 100644 index 000000000..3b8a35c6e --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/security/CorsConfig.java @@ -0,0 +1,32 @@ +package com.clubber.global.security; + +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.ArrayList; +import java.util.List; + +@Configuration +@RequiredArgsConstructor +public class CorsConfig implements WebMvcConfigurer { + + + @Override + public void addCorsMappings(CorsRegistry registry) { + List allowedOriginPatterns = new ArrayList<>(); + + //운영 서버 + allowedOriginPatterns.add("http://localhost:3000"); + allowedOriginPatterns.add("http://localhost:3001"); + + String[] patterns = allowedOriginPatterns.toArray(String[]::new); + + registry.addMapping("/**") + .allowedMethods("*") + .allowedOriginPatterns(patterns) +// .exposedHeaders("Set-Cookie") + .allowCredentials(true); + } +} \ No newline at end of file diff --git a/Clubber-Internal/src/main/java/com/clubber/global/security/CustomAuthenticationEntryPoint.java b/Clubber-Internal/src/main/java/com/clubber/global/security/CustomAuthenticationEntryPoint.java new file mode 100644 index 000000000..301efc616 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/security/CustomAuthenticationEntryPoint.java @@ -0,0 +1,37 @@ +package com.clubber.global.security; + +import com.clubber.common.dto.ErrorResponse; +import com.clubber.common.exception.BaseErrorCode; +import com.clubber.common.exception.GlobalErrorCode; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.http.MediaType; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import java.io.IOException; + +@Component +@RequiredArgsConstructor +public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint { + + private final ObjectMapper objectMapper; + + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, + AuthenticationException authException) throws IOException { + response.setCharacterEncoding("UTF-8"); + response.setContentType(MediaType.APPLICATION_JSON_VALUE); + response.setStatus(GlobalErrorCode.UNAUTHORIZED.getStatus()); + ErrorResponse errorResponse = getErrorResponse(GlobalErrorCode.UNAUTHORIZED, + request.getRequestURI()); + response.getWriter().write(objectMapper.writeValueAsString(errorResponse)); + } + + private ErrorResponse getErrorResponse(BaseErrorCode baseErrorCode, String path) { + return new ErrorResponse(baseErrorCode.getErrorReason(), path); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/security/FilterConfig.java b/Clubber-Internal/src/main/java/com/clubber/global/security/FilterConfig.java new file mode 100644 index 000000000..1389c78d6 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/security/FilterConfig.java @@ -0,0 +1,26 @@ +package com.clubber.global.security; + +import com.clubber.global.jwt.JwtTokenUtil; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.security.config.annotation.SecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.web.DefaultSecurityFilterChain; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class FilterConfig extends + SecurityConfigurerAdapter { + + private final JwtTokenUtil jwtTokenUtil; + + private final ObjectMapper objectMapper; + + @Override + public void configure(HttpSecurity builder) { + builder.addFilterBefore(new JwtTokenFilter(jwtTokenUtil), UsernamePasswordAuthenticationFilter.class) + .addFilterBefore(new JwtExceptionFilter(objectMapper), JwtTokenFilter.class); + } +} diff --git a/src/main/java/com/clubber/ClubberServer/global/config/security/JwtExceptionFilter.java b/Clubber-Internal/src/main/java/com/clubber/global/security/JwtExceptionFilter.java similarity index 88% rename from src/main/java/com/clubber/ClubberServer/global/config/security/JwtExceptionFilter.java rename to Clubber-Internal/src/main/java/com/clubber/global/security/JwtExceptionFilter.java index 836aa9ec0..b36e1e8f4 100644 --- a/src/main/java/com/clubber/ClubberServer/global/config/security/JwtExceptionFilter.java +++ b/Clubber-Internal/src/main/java/com/clubber/global/security/JwtExceptionFilter.java @@ -1,18 +1,19 @@ -package com.clubber.ClubberServer.global.config.security; +package com.clubber.global.security; -import com.clubber.ClubberServer.global.dto.ErrorResponse; -import com.clubber.ClubberServer.global.exception.BaseException; +import com.clubber.common.dto.ErrorResponse; +import com.clubber.common.exception.BaseException; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import java.io.IOException; import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; +import java.io.IOException; + @RequiredArgsConstructor @Component diff --git a/Clubber-Internal/src/main/java/com/clubber/global/security/JwtTokenFilter.java b/Clubber-Internal/src/main/java/com/clubber/global/security/JwtTokenFilter.java new file mode 100644 index 000000000..53bd3be5c --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/security/JwtTokenFilter.java @@ -0,0 +1,72 @@ +package com.clubber.global.security; + +import com.clubber.global.jwt.JwtTokenUtil; +import com.clubber.global.jwt.vo.AccessTokenInfo; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.web.filter.OncePerRequestFilter; +import org.springframework.web.util.WebUtils; + +import java.io.IOException; + +import static com.clubber.common.consts.ClubberStatic.AUTH_HEADER; +import static com.clubber.common.consts.ClubberStatic.BEARER; + +@Slf4j +@RequiredArgsConstructor +public class JwtTokenFilter extends OncePerRequestFilter { + + private final JwtTokenUtil jwtTokenUtil; + + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, + FilterChain filterChain) throws ServletException, IOException { + String token = resolveToken(request); + if (token != null) { + Authentication authentication = getAuthentication(token); + SecurityContextHolder.getContext().setAuthentication(authentication); + } + filterChain.doFilter(request, response); + } + + private String resolveToken(HttpServletRequest request) { + + Cookie accessTokenCookie = WebUtils.getCookie(request, "accessToken"); + if (accessTokenCookie != null) { + return accessTokenCookie.getValue(); + } + + String requestHeader = request.getHeader(AUTH_HEADER); + + if (requestHeader != null + && requestHeader.length() > BEARER.length() + && requestHeader.startsWith(BEARER)) { + return requestHeader.substring(BEARER.length()); + } + return null; + } + + private Authentication getAuthentication(String token) { + AccessTokenInfo accessTokenInfo = jwtTokenUtil.parseAccessToken(token); + + Long id = accessTokenInfo.userId(); + String role = accessTokenInfo.role(); + + log.info("[Authentication] id : [{}] role [{}]", id, role); + UserDetails userDetails = new AuthDetails(id.toString(), role); + + return new UsernamePasswordAuthenticationToken( + userDetails, "user", userDetails.getAuthorities() + ); + } +} diff --git a/Clubber-Internal/src/main/java/com/clubber/global/util/SliceUtil.java b/Clubber-Internal/src/main/java/com/clubber/global/util/SliceUtil.java new file mode 100644 index 000000000..1ac342a19 --- /dev/null +++ b/Clubber-Internal/src/main/java/com/clubber/global/util/SliceUtil.java @@ -0,0 +1,28 @@ +package com.clubber.global.util; + +import com.clubber.global.common.slice.SliceResponse; +import java.util.List; +import org.springframework.data.domain.Pageable; + +public class SliceUtil { + + public static SliceResponse valueOf(List contents, Pageable pageable) { + boolean hasNext = hasNext(contents, pageable); + if (hasNext) { + contents = getContents(contents, pageable); + } + return SliceResponse.of(contents, contents.size(), hasNext); + } + + public static boolean hasNext(List contents, Pageable pageable) { + return contents.size() > pageable.getPageSize(); + } + + private static List getContents(List contents, Pageable pageable) { + return contents.subList(0, pageable.getPageSize()); + } + + public static T getLastContent(List contents) { + return contents.get(contents.size() - 2); + } +} diff --git a/Clubber-Internal/src/main/resources/console-appender.xml b/Clubber-Internal/src/main/resources/console-appender.xml new file mode 100644 index 000000000..088f358e0 --- /dev/null +++ b/Clubber-Internal/src/main/resources/console-appender.xml @@ -0,0 +1,7 @@ + + + + ${CONSOLE_LOG_PATTERN} + + + \ No newline at end of file diff --git a/Clubber-Internal/src/main/resources/file-info-appender.xml b/Clubber-Internal/src/main/resources/file-info-appender.xml new file mode 100644 index 000000000..f73f4c40c --- /dev/null +++ b/Clubber-Internal/src/main/resources/file-info-appender.xml @@ -0,0 +1,13 @@ + + + + ${FILE_LOG_PATTERN} + + + ./logs/clubber-%d{yyyy-MM-dd}.%i.log + 50MB + 30 + 1GB + + + \ No newline at end of file diff --git a/Clubber-Internal/src/main/resources/logback-spring.xml b/Clubber-Internal/src/main/resources/logback-spring.xml new file mode 100644 index 000000000..4037cc6f1 --- /dev/null +++ b/Clubber-Internal/src/main/resources/logback-spring.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index dd2172a25..f954c4c19 100644 --- a/build.gradle +++ b/build.gradle @@ -17,67 +17,52 @@ configurations { } } -repositories { - mavenCentral() +allprojects { + repositories { + mavenCentral() + } } -dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-web' - implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.1' - implementation 'org.springframework.boot:spring-boot-starter-validation' - compileOnly 'org.projectlombok:lombok' - runtimeOnly 'com.mysql:mysql-connector-j' - annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' - annotationProcessor 'org.projectlombok:lombok' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - - implementation 'io.jsonwebtoken:jjwt-api:0.11.5' - implementation 'io.jsonwebtoken:jjwt-impl:0.11.5' - implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5' - - implementation 'org.springframework.boot:spring-boot-starter-security' - - //feign - implementation 'org.springframework.cloud:spring-cloud-starter-openfeign:4.1.0' - - //s3 - implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' - - // Querydsl 추가 - implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' - annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" - annotationProcessor "jakarta.annotation:jakarta.annotation-api" - annotationProcessor "jakarta.persistence:jakarta.persistence-api" - - //redis - implementation 'org.springframework.boot:spring-boot-starter-data-redis' - - //swagger - implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' - - //devtools - compileOnly("org.springframework.boot:spring-boot-devtools") - - //sl4fj - implementation 'org.springframework.boot:spring-boot-starter-logging' - - //spring-security-test - testImplementation 'org.springframework.security:spring-security-test' - - //spring-boot-actuator - implementation 'org.springframework.boot:spring-boot-starter-actuator' - runtimeOnly 'io.micrometer:micrometer-registry-prometheus' - - //java mail sender - implementation 'org.springframework.boot:spring-boot-starter-mail' - - //fixture monkey - testImplementation("com.navercorp.fixturemonkey:fixture-monkey-starter:1.1.10") -} +subprojects { + apply plugin: 'java' + apply plugin: 'org.springframework.boot' + apply plugin: 'io.spring.dependency-management' + + dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-validation' + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + implementation 'org.springframework.boot:spring-boot-starter-security' + runtimeOnly 'com.mysql:mysql-connector-j' + + // Querydsl + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' + annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" + annotationProcessor "jakarta.annotation:jakarta.annotation-api" + annotationProcessor "jakarta.persistence:jakarta.persistence-api" + + //redis + implementation 'org.springframework.boot:spring-boot-starter-data-redis' + + //devtools + compileOnly("org.springframework.boot:spring-boot-devtools") + + //sl4fj + implementation 'org.springframework.boot:spring-boot-starter-logging' + + //spring-security-test + testImplementation 'org.springframework.security:spring-security-test' + + //fixture monkey + testImplementation("com.navercorp.fixturemonkey:fixture-monkey-starter:1.1.10") + } -tasks.named('test') { - useJUnitPlatform() + tasks.named('test') { + useJUnitPlatform() + } } clean { @@ -85,5 +70,9 @@ clean { } jar { + enabled = true +} + +bootJar { enabled = false } \ No newline at end of file diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 45dc55c6c..83392912f 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -17,6 +17,14 @@ services: networks: - clubber + backend-internal: + container_name: backend-internal + image: ssuclubber/clubber-internal-dev + ports: + - "8081:8081" + networks: + - clubber + frontend: container_name: frontend image: ssuclubber/clubber-front-dev diff --git a/settings.gradle b/settings.gradle index b5c7f190e..5c1557985 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,6 @@ rootProject.name = 'Clubber-Server' + +include(":Clubber-External") +include(":Clubber-Internal") +include(":Clubber-Domain") +include(":Clubber-Common") \ No newline at end of file diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/controller/AdminReviewController.java b/src/main/java/com/clubber/ClubberServer/domain/admin/controller/AdminReviewController.java deleted file mode 100644 index 65e70da4b..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/controller/AdminReviewController.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.clubber.ClubberServer.domain.admin.controller; - -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsReviewVerifyResponse; -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.VerifiedStatus; -import java.util.List; - -import org.springframework.data.domain.Pageable; -import org.springframework.data.web.PageableDefault; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PatchMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import com.clubber.ClubberServer.domain.admin.dto.GetAdminPendingReviewsSliceResponse; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminsPendingReviews; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminsReviewsResponse; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsReviewApprovedStatusResponse; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsReviewApprovedStatusRequest; -import com.clubber.ClubberServer.domain.admin.service.AdminReviewService; - -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; -import lombok.RequiredArgsConstructor; - -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/v1/admins/reviews") -@Tag(name = "[동아리 계정 리뷰 관련 API]", description = "🔐동아리 계정") -public class AdminReviewController { - - private final AdminReviewService adminReviewService; - - @Operation(summary = "동아리 계정에서 승인 대기 목록 조회", description = "승인 대기 중인 리뷰의 한줄평 목록 반환") - @GetMapping("/pending") - public List getAdminPendingReviews() { - return adminReviewService.getAdminPendingReviews(); - } - - @Operation(summary = "동아리 계정에서 승인 대기 목록 조회 (더보기)", description = "추후 적용해주세요") - @GetMapping("/pending/slice") - public GetAdminPendingReviewsSliceResponse getAdminPendingReviewsWithSliceResponses( - @PageableDefault Pageable pageable, @RequestParam(required = false) Long lastReviewId) { - return adminReviewService.getAdminPendingReviewsWithSliceResponse(pageable, lastReviewId); - } - - @Operation(summary = "동아리 계정에서 리뷰 승인 / 거절 요청") - @PatchMapping("/decision") - public UpdateAdminsReviewApprovedStatusResponse updateAdminsReviewsApprovedStatusResponse( - @Valid @RequestBody - UpdateAdminsReviewApprovedStatusRequest updateAdminsReviewApprovedStatusRequest) { - return adminReviewService.updateAdminsReviewsApprovedStatus( - updateAdminsReviewApprovedStatusRequest); - } - - @Operation(summary = "동아리 계정 마이페이지 리뷰 목록") - @GetMapping - public GetAdminsReviewsResponse getAdminsReviews(Pageable pageable, - @RequestParam(required = false) ApprovedStatus approvedStatus, - @RequestParam(required = false) VerifiedStatus verifiedStatus) { - return adminReviewService.getAdminsReviews(pageable, approvedStatus, verifiedStatus); - } - - @Operation(summary = "리뷰 인증") - @PatchMapping("/verify/{reviewId}") - public UpdateAdminsReviewVerifyResponse updateAdminsReviewVerify(@PathVariable Long reviewId) { - return adminReviewService.updateAdminsReviewVerify(reviewId); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/AdminReviewResponse.java b/src/main/java/com/clubber/ClubberServer/domain/admin/dto/AdminReviewResponse.java deleted file mode 100644 index fd9cd41e7..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/AdminReviewResponse.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.clubber.ClubberServer.domain.admin.dto; - -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import java.time.LocalDateTime; -import java.util.Set; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -@Getter -@Builder(access = AccessLevel.PRIVATE) -@AllArgsConstructor(access = AccessLevel.PRIVATE) -public class AdminReviewResponse { - - @Schema(description = "리뷰 id", example = "1") - private final Long reviewId; - - @Schema(description = "리뷰 상태", example = "APPROVED") - private final ApprovedStatus approvedStatus; - - @Schema(description = "작성한 리뷰 키워드", - example = "[\"CULTURE\", \"FEE\", \"ACTIVITY\", \"CAREER\", \"MANAGE\"]") - private final Set keywords; - - @Schema(description = "리뷰 한줄평", example = "분위기가 좋아요") - private final String content; - - @Schema(description = "리뷰 작성 일자", example = "2024.01.01", type = "string") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy.MM.dd", timezone = "Asia/Seoul") - private final LocalDateTime dateTime; - - public static AdminReviewResponse of(Review review, Set keywords) { - return AdminReviewResponse.builder() - .reviewId(review.getId()) - .approvedStatus(review.getApprovedStatus()) - .keywords(keywords) - .content(review.getContent()) - .dateTime(review.getCreatedAt()) - .build(); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminContactResponse.java b/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminContactResponse.java deleted file mode 100644 index d35e024b1..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminContactResponse.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.clubber.ClubberServer.domain.admin.dto; - -import com.clubber.ClubberServer.domain.admin.domain.Contact; - -public record UpdateAdminContactResponse( - Long adminId, - Contact contact -) { -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsReviewApprovedStatusRequest.java b/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsReviewApprovedStatusRequest.java deleted file mode 100644 index 307f2175e..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsReviewApprovedStatusRequest.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.clubber.ClubberServer.domain.admin.dto; - -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import java.util.List; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@AllArgsConstructor -@NoArgsConstructor -public class UpdateAdminsReviewApprovedStatusRequest { - - @Size(min = 1, message = "1개 이상 수정해야합니다") - @Size(max = 10, message = "10개 이하로 수정해야합니다.") - @Schema(description = "승인 / 거절 하려는 리뷰 id 목록", example = "[1,2,3]") - private List reviewIds; - - @NotNull - @Schema(description = "승인(APPROVED) 혹은 거절(REJECTED)", example = "APPROVED") - private ApprovedStatus approvedStatus; -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsReviewApprovedStatusResponse.java b/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsReviewApprovedStatusResponse.java deleted file mode 100644 index 16c25a796..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/dto/UpdateAdminsReviewApprovedStatusResponse.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.clubber.ClubberServer.domain.admin.dto; - -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -@Getter -@Builder(access = AccessLevel.PRIVATE) -@AllArgsConstructor(access = AccessLevel.PRIVATE) -public class UpdateAdminsReviewApprovedStatusResponse { - @Schema(description = "동아리 계정 id", example = "1") - private final Long adminId; - - @Schema(description = "승인/미승인된 리뷰 id", example = "[1,2,3]") - private final List reviewIds; - - @Schema(description = "승인/미승인 중 처리된 상태", example = "APPROVED") - private final ApprovedStatus approvedStatus; - - public static UpdateAdminsReviewApprovedStatusResponse of(Admin admin, List reviewIds, ApprovedStatus approvedStatus){ - return UpdateAdminsReviewApprovedStatusResponse.builder() - .adminId(admin.getId()) - .reviewIds(reviewIds) - .approvedStatus(approvedStatus) - .build(); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/mapper/AdminReviewMapper.java b/src/main/java/com/clubber/ClubberServer/domain/admin/mapper/AdminReviewMapper.java deleted file mode 100644 index 5bedd0051..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/mapper/AdminReviewMapper.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.clubber.ClubberServer.domain.admin.mapper; - -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.dto.AdminReviewResponse; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminPendingReviewsSliceResponse; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminsPendingReviews; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminsReviewsResponse; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.util.ReviewUtil; -import com.clubber.ClubberServer.global.common.page.PageResponse; -import com.clubber.ClubberServer.global.common.slice.SliceResponse; -import com.clubber.ClubberServer.global.util.SliceUtil; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Component; - -@Component -public class AdminReviewMapper { - - // 리뷰 조회 (관리자) - public GetAdminsReviewsResponse getGetAdminReviewsResponse( - Admin admin, Club club, Page reviews) { - PageResponse adminsReviewDetailsPageResponse = getAdminsReviewResponse( - reviews); - return GetAdminsReviewsResponse.of(admin, club, adminsReviewDetailsPageResponse); - } - - private static PageResponse getAdminsReviewResponse( - Page reviewPages) { - Page getAdminReviewsPageResponse = reviewPages.map( - review -> { - Set keywords = ReviewUtil.extractKeywords(review); - return AdminReviewResponse.of(review, keywords); - }); - return PageResponse.of(getAdminReviewsPageResponse); - } - - //대기 상태 리뷰 조회 (관리자, No-offset) - public GetAdminPendingReviewsSliceResponse getGetAdminPendingReviewSliceResponse( - List reviews, Pageable pageable) { - List getAdminPendingReviewList = getGetAdminPendingReviewList( - reviews); - SliceResponse getAdminsPendingReviewsSliceResponse = SliceUtil.valueOf( - getAdminPendingReviewList, pageable); - Long lastReviewId = ReviewUtil.getLastReviewId(reviews, pageable); - return GetAdminPendingReviewsSliceResponse.of(getAdminsPendingReviewsSliceResponse, - lastReviewId); - } - - //대기 상태 리뷰 조회 (관리자) - public List getGetAdminPendingReviewList(List reviews) { - return reviews.stream() - .map(GetAdminsPendingReviews::from) - .collect(Collectors.toList()); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminReviewService.java b/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminReviewService.java deleted file mode 100644 index 7bf8ef95c..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/admin/service/AdminReviewService.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.clubber.ClubberServer.domain.admin.service; - -import com.clubber.ClubberServer.domain.admin.domain.Admin; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminPendingReviewsSliceResponse; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminsPendingReviews; -import com.clubber.ClubberServer.domain.admin.dto.GetAdminsReviewsResponse; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsReviewApprovedStatusRequest; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsReviewApprovedStatusResponse; -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsReviewVerifyResponse; -import com.clubber.ClubberServer.domain.admin.implement.AdminReader; -import com.clubber.ClubberServer.domain.admin.mapper.AdminReviewMapper; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.exception.ClubNotFoundException; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.domain.VerifiedStatus; -import com.clubber.ClubberServer.domain.review.exception.ReviewClubNotMatchException; -import com.clubber.ClubberServer.domain.review.exception.ReviewNotFoundException; -import com.clubber.ClubberServer.domain.review.exception.UserReviewsNotFoundException; -import com.clubber.ClubberServer.domain.review.repository.ReviewRepository; -import java.util.List; -import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@RequiredArgsConstructor -public class AdminReviewService { - - private final ReviewRepository reviewRepository; - private final AdminReader adminReader; - private final ClubRepository clubRepository; - private final AdminReviewMapper adminReviewMapper; - - @Transactional(readOnly = true) - public List getAdminPendingReviews() { - Admin admin = adminReader.getCurrentAdmin(); - List reviews = reviewRepository.findByApprovedStatusAndClubOrderByIdDesc( - ApprovedStatus.PENDING, admin.getClub()); - - return adminReviewMapper.getGetAdminPendingReviewList(reviews); - } - - @Transactional - public UpdateAdminsReviewApprovedStatusResponse updateAdminsReviewsApprovedStatus( - UpdateAdminsReviewApprovedStatusRequest updateAdminsReviewApprovedStatusRequest) { - Admin admin = adminReader.getCurrentAdmin(); - - List updateReviewRequestIds = updateAdminsReviewApprovedStatusRequest.getReviewIds(); - ApprovedStatus updateReviewApprovedStatus = updateAdminsReviewApprovedStatusRequest.getApprovedStatus(); - - List findReviews = reviewRepository.findAllById(updateReviewRequestIds); - validateReviewExistence(findReviews, updateReviewRequestIds); - - for (Review review : findReviews) { - validateReviewClub(review, admin); - review.updateReviewStatus(updateReviewApprovedStatus); - } - return UpdateAdminsReviewApprovedStatusResponse.of(admin, updateReviewRequestIds, - updateReviewApprovedStatus); - } - - private static void validateReviewExistence(List findReviews, List reviewIds) { - if (findReviews.size() != reviewIds.size()) { - throw UserReviewsNotFoundException.EXCEPTION; - } - } - - private static void validateReviewClub(Review review, Admin admin) { - if (!admin.getClub().getId().equals(review.getClub().getId())) { - throw ReviewClubNotMatchException.EXCEPTION; - } - } - - @Transactional - public UpdateAdminsReviewVerifyResponse updateAdminsReviewVerify(Long reviewId) { - Admin admin = adminReader.getCurrentAdmin(); - Review review = reviewRepository.findByIdAndNotDeletedApprovedStatus(reviewId) - .orElseThrow(() -> ReviewNotFoundException.EXCEPTION); - validateReviewClub(review, admin); - review.verify(); - return UpdateAdminsReviewVerifyResponse.of(review, admin); - } - - @Transactional(readOnly = true) - public GetAdminsReviewsResponse getAdminsReviews(Pageable pageable, - ApprovedStatus approvedStatus, VerifiedStatus verifiedStatus) { - Admin admin = adminReader.getCurrentAdmin(); - Club club = clubRepository.findClubByIdAndIsDeleted(admin.getClub().getId(), false) - .orElseThrow(() -> ClubNotFoundException.EXCEPTION); - Page reviews = reviewRepository.queryReviewByClub(club, pageable, approvedStatus, verifiedStatus); - return adminReviewMapper.getGetAdminReviewsResponse(admin, club, reviews); - } - - @Transactional(readOnly = true) - public GetAdminPendingReviewsSliceResponse getAdminPendingReviewsWithSliceResponse( - Pageable pageable, Long lastReviewId) { - Admin admin = adminReader.getCurrentAdmin(); - Club club = clubRepository.findClubByIdAndIsDeleted(admin.getClub().getId(), false) - .orElseThrow(() -> ClubNotFoundException.EXCEPTION); - - List reviews = reviewRepository.queryReviewNoOffsetByClub(club, pageable, - lastReviewId, - ApprovedStatus.PENDING); - return adminReviewMapper.getGetAdminPendingReviewSliceResponse(reviews, pageable); - } -} \ No newline at end of file diff --git a/src/main/java/com/clubber/ClubberServer/domain/calendar/domain/OrderStatus.java b/src/main/java/com/clubber/ClubberServer/domain/calendar/domain/OrderStatus.java deleted file mode 100644 index 1f53f7d3c..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/calendar/domain/OrderStatus.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.clubber.ClubberServer.domain.calendar.domain; - -public enum OrderStatus { - ASC -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/domain/Club.java b/src/main/java/com/clubber/ClubberServer/domain/club/domain/Club.java deleted file mode 100644 index 5dfa149e1..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/club/domain/Club.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.clubber.ClubberServer.domain.club.domain; - -import com.clubber.ClubberServer.domain.club.exception.ClubAlreadyDeletedException; -import com.clubber.ClubberServer.domain.club.exception.ClubNotAgreeToProvideInfoException; -import com.clubber.ClubberServer.domain.club.exception.ClubNotAgreeToProvideReviewException; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.global.vo.image.ImageVO; -import jakarta.persistence.*; -import jakarta.validation.constraints.NotNull; -import lombok.*; -import org.hibernate.annotations.JdbcTypeCode; -import org.hibernate.type.SqlTypes; - -@Builder -@Entity -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -public class Club extends BaseEntity { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @NotNull - @Column(unique = true) - private String name; - - @NotNull - @JdbcTypeCode(SqlTypes.VARCHAR) - @Enumerated(EnumType.STRING) - @Builder.Default - private ClubType clubType = ClubType.ETC; - - @Column(length = 1000) - private String introduction; - - @NotNull - @JdbcTypeCode(SqlTypes.VARCHAR) - @Enumerated(EnumType.STRING) - @Builder.Default - private Hashtag hashtag = Hashtag.ETC; - - @NotNull - @JdbcTypeCode(SqlTypes.VARCHAR) - @Enumerated(EnumType.STRING) - @Builder.Default - private Division division = Division.ETC; - - @NotNull - @JdbcTypeCode(SqlTypes.VARCHAR) - @Enumerated(EnumType.STRING) - @Builder.Default - private College college = College.ETC; - - @NotNull - @JdbcTypeCode(SqlTypes.VARCHAR) - @Enumerated(EnumType.STRING) - @Builder.Default - private Department department = Department.ETC; - - @Embedded - private ImageVO imageUrl; - - private boolean isDeleted = false; - - @OneToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "clubInfo_id") - private ClubInfo clubInfo; - - private boolean isAgreeToReview = false; - - private boolean isAgreeToProvideInfo = false; - - public void updateClub(String imageKey, String introduction) { - this.imageUrl = ImageVO.valueOf(imageKey); - this.introduction = introduction; - } - - public void delete() { - if (this.isDeleted) { - throw ClubAlreadyDeletedException.EXCEPTION; - } - this.isDeleted = true; - } - - public void validateAgreeToReview(){ - if(!isAgreeToReview) - throw ClubNotAgreeToProvideReviewException.EXCEPTION; - } - - public void validateAgreeToProvideInfo(){ - if(!isAgreeToProvideInfo) - throw ClubNotAgreeToProvideInfoException.EXCEPTION; - } - -// @Builder -// private Club(Long id, String name, ClubType clubType, String introduction, Hashtag hashtag, Division division, -// College college, Department department, ImageVO imageUrl, ClubInfo clubInfo, boolean isAgreeToReview, boolean isAgreeToProvideInfo) { -// this.id = id; -// this.name = name; -// this.clubType = clubType; -// this.introduction = introduction; -// this.hashtag = hashtag; -// this.division = division; -// this.college = college; -// this.department = department; -// this.imageUrl = imageUrl; -// this.clubInfo = clubInfo; -// this.isAgreeToReview = isAgreeToReview; -// this.isAgreeToProvideInfo = isAgreeToProvideInfo; -// } -} \ No newline at end of file diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubCustomRepository.java b/src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubCustomRepository.java deleted file mode 100644 index 15fdbe33b..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubCustomRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.clubber.ClubberServer.domain.club.repository; - -import com.clubber.ClubberServer.domain.club.dto.GetClubPopularResponse; - -import java.util.List; - -public interface ClubCustomRepository { - - List findAllOrderByTotalViewDesc(); -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubCustomRepositoryImpl.java b/src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubCustomRepositoryImpl.java deleted file mode 100644 index f5ba9381f..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/club/repository/ClubCustomRepositoryImpl.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.clubber.ClubberServer.domain.club.repository; - -import com.clubber.ClubberServer.domain.club.domain.QClub; -import com.clubber.ClubberServer.domain.club.domain.QClubInfo; -import com.clubber.ClubberServer.domain.club.dto.GetClubPopularResponse; -import com.querydsl.core.types.Projections; -import com.querydsl.jpa.impl.JPAQueryFactory; -import lombok.RequiredArgsConstructor; - -import java.util.List; - -import static com.clubber.ClubberServer.domain.club.domain.QClub.club; -import static com.clubber.ClubberServer.domain.club.domain.QClubInfo.clubInfo; - -@RequiredArgsConstructor -public class ClubCustomRepositoryImpl implements ClubCustomRepository { - - private final JPAQueryFactory queryFactory; - - @Override - public List findAllOrderByTotalViewDesc() { - return queryFactory.select( - Projections.constructor( - GetClubPopularResponse.class, - club.id, - club.name, - clubInfo.totalView - )).from(club).join(club.clubInfo, clubInfo) - .orderBy(clubInfo.totalView.desc()) - .limit(10) - .fetch(); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitImageCustomRepository.java b/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitImageCustomRepository.java deleted file mode 100644 index aa039c3d4..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/recruit/repository/RecruitImageCustomRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.clubber.ClubberServer.domain.recruit.repository; - -import com.clubber.ClubberServer.domain.recruit.domain.Recruit; -import com.clubber.ClubberServer.domain.recruit.domain.RecruitImage; - -import java.util.List; - -public interface RecruitImageCustomRepository { - - List queryRecruitImages(Recruit recruit); -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/controller/ReviewController.java b/src/main/java/com/clubber/ClubberServer/domain/review/controller/ReviewController.java deleted file mode 100644 index e15e9f708..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/controller/ReviewController.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.clubber.ClubberServer.domain.review.controller; - -import com.clubber.ClubberServer.domain.review.domain.VerifiedStatus; -import com.clubber.ClubberServer.domain.review.dto.CreateClubReviewRequest; -import com.clubber.ClubberServer.domain.review.dto.CreateClubReviewResponse; -import com.clubber.ClubberServer.domain.review.dto.GetClubReviewAgreedStatusResponse; -import com.clubber.ClubberServer.domain.review.dto.GetClubReviewsKeywordStatsResponse; -import com.clubber.ClubberServer.domain.review.dto.GetClubReviewsPageResponse; -import com.clubber.ClubberServer.domain.review.dto.GetClubReviewsSliceResponse; -import com.clubber.ClubberServer.domain.review.service.ReviewService; -import com.clubber.ClubberServer.global.config.swagger.DisableSwaggerSecurity; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; -import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Pageable; -import org.springframework.data.web.PageableDefault; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequestMapping("/api/v1/clubs/{clubId}/reviews") -@RequiredArgsConstructor -@Tag(name = "[리뷰]") -public class ReviewController { - - private final ReviewService reviewService; - - @Operation(summary = "동아리 리뷰 동의 여부 반환") - @DisableSwaggerSecurity - @GetMapping("/agree") - public GetClubReviewAgreedStatusResponse getClubReviewAgreedStatus(@PathVariable Long clubId) { - return reviewService.getClubReviewAgreedStatus(clubId); - } - - @Operation(summary = "개별 동아리 별 리뷰 키워드 통계") - @DisableSwaggerSecurity - @GetMapping("/keyword-stats") - public GetClubReviewsKeywordStatsResponse getReviewKeywordStats(@PathVariable Long clubId) { - return reviewService.getClubReviewKeywordStats(clubId); - } - - // === v2 === - @Operation(summary = "개별 동아리 별 리뷰 조회") - @DisableSwaggerSecurity - @GetMapping - public GetClubReviewsPageResponse getClubReviewsWithContentByClubId( - @PathVariable Long clubId, Pageable pageable, - @RequestParam(required = false) VerifiedStatus verifiedStatus) { - return reviewService.getClubReviewsWithContent(clubId, pageable, - verifiedStatus); - } - - @Operation(summary = "개별 동아리 별 리뷰 조회 No Offset(Slice)") - @DisableSwaggerSecurity - @GetMapping("/slice") - public GetClubReviewsSliceResponse getClubReviewsWithSliceContent( - @PathVariable Long clubId, @PageableDefault(size = 5) Pageable pageable, - @RequestParam(required = false) Long reviewid) { - return reviewService.getClubReviewsWithSliceContent(clubId, pageable, reviewid); - } - - - @Operation(summary = "동아리 리뷰 작성", description = "리뷰 키워드 항목과 한줄평을 선택하여 작성") - @PostMapping - public CreateClubReviewResponse createReviewWithContent( - @RequestBody @Valid CreateClubReviewRequest reviewRequest, - @PathVariable Long clubId) { - return reviewService.createReview(clubId, reviewRequest); - } - -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/domain/ApprovedStatus.java b/src/main/java/com/clubber/ClubberServer/domain/review/domain/ApprovedStatus.java deleted file mode 100644 index cdf0ecc54..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/domain/ApprovedStatus.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.clubber.ClubberServer.domain.review.domain; - -public enum ApprovedStatus { - APPROVED, PENDING, REJECTED, NULL_CONTENT, DELETED -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/domain/Keyword.java b/src/main/java/com/clubber/ClubberServer/domain/review/domain/Keyword.java deleted file mode 100644 index 4c31811aa..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/domain/Keyword.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.clubber.ClubberServer.domain.review.domain; - -import com.clubber.ClubberServer.global.mapper.enums.EnumDefaultMapperType; -import com.fasterxml.jackson.annotation.JsonCreator; -import java.util.Arrays; -import lombok.AllArgsConstructor; - -@AllArgsConstructor -public enum Keyword implements EnumDefaultMapperType { - CULTURE("😃 \" 분위기가 좋아요\""), - FEE("💵 \"회비가 적당해요\""), - ACTIVITY("🕺🏻 \"활동 참여가 자유로워요\""), - CAREER("🏆 \"대외활동에 좋아요\""), - MANAGE("👍🏻 \"운영진들이 일을 잘해요\""); - - private final String title; - - @JsonCreator - public static Keyword from(String req) { - return Arrays.stream(Keyword.values()) - .filter(keyword -> keyword.getCode().equals(req)) - .findAny() - .orElse(null); - } - - @Override - public String getCode() { - return name(); - } - - @Override - public String getTitle() { - return title; - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/domain/Review.java b/src/main/java/com/clubber/ClubberServer/domain/review/domain/Review.java deleted file mode 100644 index 696daf15e..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/domain/Review.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.clubber.ClubberServer.domain.review.domain; - -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.APPROVED; -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.DELETED; -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.PENDING; -import static com.clubber.ClubberServer.domain.review.domain.VerifiedStatus.VERIFIED; - -import com.clubber.ClubberServer.domain.admin.exception.InvalidApprovedStatusException; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.common.BaseEntity; -import com.clubber.ClubberServer.domain.review.exception.ReviewAlreadyDeletedException; -import com.clubber.ClubberServer.domain.review.exception.ReviewAlreadyVerifiedException; -import com.clubber.ClubberServer.domain.review.util.ReviewUtil; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.global.vo.image.ImageVO; -import jakarta.persistence.CascadeType; -import jakarta.persistence.Embedded; -import jakarta.persistence.Entity; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.Index; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.OneToMany; -import jakarta.persistence.Table; -import jakarta.validation.constraints.NotNull; -import java.util.ArrayList; -import java.util.List; -import lombok.AccessLevel; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import org.hibernate.annotations.JdbcTypeCode; -import org.hibernate.type.SqlTypes; - -@Entity -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@Getter -@Table(indexes = @Index(name = "idx_review_club_id_approved_status_id_desc", - columnList = "club_id, approved_status, id desc")) -public class Review extends BaseEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "club_id") - @NotNull - private Club club; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "user_id") - @NotNull - private User user; - - private String content; - - @JdbcTypeCode(SqlTypes.VARCHAR) - @Enumerated(EnumType.STRING) - @NotNull - private ApprovedStatus approvedStatus; - - @JdbcTypeCode(SqlTypes.VARCHAR) - @Enumerated(EnumType.STRING) - @NotNull - private VerifiedStatus verifiedStatus = VerifiedStatus.NOT_VERIFIED; - - @Embedded - private ImageVO authImageVo; - - @OneToMany(mappedBy = "review", cascade = CascadeType.ALL) - private List reviewKeywords = new ArrayList<>(); - - @Builder - private Review(Long id, Club club, User user, String content, ApprovedStatus approvedStatus, - ImageVO imageVO) { - this.id = id; - this.club = club; - this.user = user; - this.content = content; - this.approvedStatus = approvedStatus; - this.authImageVo = imageVO; - } - - public static Review of(User user, Club club, String content, String authImage) { - return Review.builder() - .user(user) - .club(club) - .content(ReviewUtil.checkBlankContent(content)) - .approvedStatus(ReviewUtil.checkBlankContentApprovedStatus(content)) - .imageVO(ImageVO.valueOf(authImage)) - .build(); - } - - //양방향 매핑 메서드 - public void addKeywords(List keywords) { - keywords.forEach(keyword -> { - ReviewKeyword reviewKeyword = ReviewKeyword.of(keyword, this); - this.reviewKeywords.add(reviewKeyword); - }); - } - - public void updateReviewStatus(ApprovedStatus approvedStatus) { - if (this.approvedStatus != PENDING) { - throw InvalidApprovedStatusException.EXCEPTION; - } - this.approvedStatus = approvedStatus; - } - - public void autoUpdateReviewStatus() { - if (this.approvedStatus == PENDING) { - this.approvedStatus = APPROVED; - } - } - - public void delete() { - if (approvedStatus == DELETED) { - throw ReviewAlreadyDeletedException.EXCEPTION; - } - this.approvedStatus = DELETED; - } - - public void verify() { - if (verifiedStatus == VERIFIED) { - throw ReviewAlreadyVerifiedException.EXCEPTION; - } - this.verifiedStatus = VERIFIED; - } - - public String getContentForUser() { - if (approvedStatus == APPROVED) { - return content; - } - return null; - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/domain/VerifiedStatus.java b/src/main/java/com/clubber/ClubberServer/domain/review/domain/VerifiedStatus.java deleted file mode 100644 index 8ab360e5e..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/domain/VerifiedStatus.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.clubber.ClubberServer.domain.review.domain; - -public enum VerifiedStatus { - VERIFIED, NOT_VERIFIED -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/dto/ClubReviewResponse.java b/src/main/java/com/clubber/ClubberServer/domain/review/dto/ClubReviewResponse.java deleted file mode 100644 index fdca7f82f..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/dto/ClubReviewResponse.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.clubber.ClubberServer.domain.review.dto; - -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import java.time.LocalDateTime; -import java.util.Set; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -@Getter -@Builder(access = AccessLevel.PRIVATE) -@AllArgsConstructor(access = AccessLevel.PRIVATE) -public class ClubReviewResponse { - - @Schema(description = "리뷰 id", example = "1") - private final Long reviewId; - - @Schema(description = "유저 id", example = "1") - private final Long userId; - - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy.MM.dd", timezone = "Asia/Seoul") - @Schema(description = "리뷰 작성 일자", example = "2024.01.01", type = "string") - private final LocalDateTime dateTime; - - @Schema(description = "작성한 리뷰 키워드", - example = "[\"CULTURE\", \"FEE\", \"ACTIVITY\", \"CAREER\", \"MANAGE\"]") - private final Set keywords; - - @Schema(description = "해당 동아리 된 한줄평 중 승인된 한줄평의 내용", example = "활동이 재밌어요") - private final String content; - - public static ClubReviewResponse of(Review review, Set keywords) { - return ClubReviewResponse.builder() - .keywords(keywords) - .reviewId(review.getId()) - .userId(review.getUser().getId()) - .dateTime(review.getCreatedAt()) - .content(review.getContentForUser()) - .build(); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/dto/KeywordCountStatDto.java b/src/main/java/com/clubber/ClubberServer/domain/review/dto/KeywordCountStatDto.java deleted file mode 100644 index 37247f7e0..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/dto/KeywordCountStatDto.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.clubber.ClubberServer.domain.review.dto; - -import com.clubber.ClubberServer.domain.review.domain.Keyword; - -public record KeywordCountStatDto(Keyword keyword, Long count) { -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewAlreadyVerifiedException.java b/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewAlreadyVerifiedException.java deleted file mode 100644 index bbd2b9c55..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewAlreadyVerifiedException.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.clubber.ClubberServer.domain.review.exception; - -import static com.clubber.ClubberServer.domain.review.exception.ReviewErrorCode.REVIEW_ALREADY_VERIFIED; - -import com.clubber.ClubberServer.global.exception.BaseException; - -public class ReviewAlreadyVerifiedException extends BaseException { - - public static final BaseException EXCEPTION = new ReviewAlreadyVerifiedException(); - - private ReviewAlreadyVerifiedException() { - super(REVIEW_ALREADY_VERIFIED); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewErrorCode.java b/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewErrorCode.java deleted file mode 100644 index 66aa18b9a..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/exception/ReviewErrorCode.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.clubber.ClubberServer.domain.review.exception; - -import com.clubber.ClubberServer.global.exception.BaseErrorCode; -import com.clubber.ClubberServer.global.exception.ErrorReason; -import lombok.AllArgsConstructor; -import org.springframework.http.HttpStatus; - -@AllArgsConstructor -public enum ReviewErrorCode implements BaseErrorCode { - USER_ALREADY_REVIEWD(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_1", "이미 리뷰를 등록한 동아리입니다."), - REVIEW_CLUB_NOT_MATCHED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_2", "리뷰와 동아리가 일치하지 않습니다"), - REVIEW_KEYWORD_ENUM_NOT_MATCHED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_3", - "잘못된 리뷰 키워드 값입니다."), - USER_REVIEWS_NOT_FOUND(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_4", "적절하지 않은 리뷰 ID입니다."), - REVIEW_ALREADY_DELETED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_5", "이미 삭제된 리뷰입니다."), - REVIEW_ALREADY_VERIFIED(HttpStatus.BAD_REQUEST.value(), "REVIEW_400_6", "이미 인증된 리뷰입니다."), - REVIEW_NOT_FOUND(HttpStatus.NO_CONTENT.value(), "REVIEW_404_1", "존재하지 않는 리뷰입니다."); - - private final Integer status; - private final String code; - private final String reason; - - @Override - public ErrorReason getErrorReason() { - return ErrorReason.builder() - .status(status) - .code(code) - .reason(reason) - .build(); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/mapper/ReviewMapper.java b/src/main/java/com/clubber/ClubberServer/domain/review/mapper/ReviewMapper.java deleted file mode 100644 index b217fe698..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/mapper/ReviewMapper.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.clubber.ClubberServer.domain.review.mapper; - -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.review.domain.Keyword; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.domain.ReviewKeyword; -import com.clubber.ClubberServer.domain.review.dto.ClubReviewResponse; -import com.clubber.ClubberServer.domain.review.dto.CreateClubReviewResponse; -import com.clubber.ClubberServer.domain.review.dto.GetClubReviewsKeywordStatsResponse; -import com.clubber.ClubberServer.domain.review.dto.GetClubReviewsPageResponse; -import com.clubber.ClubberServer.domain.review.dto.GetClubReviewsSliceResponse; -import com.clubber.ClubberServer.domain.review.util.ReviewUtil; -import com.clubber.ClubberServer.domain.review.vo.KeywordStatsVO; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.global.common.page.PageResponse; -import com.clubber.ClubberServer.global.common.slice.SliceResponse; -import com.clubber.ClubberServer.global.util.SliceUtil; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.stream.Collectors; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Component; - -@Component -public class ReviewMapper { - - // 동아리 별 리뷰 조회 (page) - public GetClubReviewsPageResponse getGetClubReviewsPageResponse(Page reviews, - Long clubId) { - PageResponse clubReviewsWithContentDetailPageResponse = toClubReviewPageResponse( - reviews); - return GetClubReviewsPageResponse.of( - clubReviewsWithContentDetailPageResponse, clubId); - } - - private static PageResponse toClubReviewPageResponse( - Page reviewPages) { - Page clubReviewResponsePage = - reviewPages.map(review -> { - Set keywords = ReviewUtil.extractKeywords(review); - return ClubReviewResponse.of(review, keywords); - }); - return PageResponse.of(clubReviewResponsePage); - } - - // 동아리 별 리뷰 조회 (No Offset) - public GetClubReviewsSliceResponse getClubReviewsSliceResponse( - Long clubId, List reviews, Pageable pageable) { - List clubReviewResponseList = getClubReviewResponseList( - reviews); - SliceResponse clubReviewSliceResponse = SliceUtil.valueOf( - clubReviewResponseList, pageable); - Long lastReviewId = ReviewUtil.getLastReviewId(reviews, pageable); - return GetClubReviewsSliceResponse.of(clubId, lastReviewId, - clubReviewSliceResponse); - } - - private static List getClubReviewResponseList( - List reviews) { - return reviews.stream() - .map(review -> { - Set keywords = ReviewUtil.extractKeywords(review); - return ClubReviewResponse.of(review, keywords); - } - ) - .collect(Collectors.toList()); - } - - // 리뷰 작성 - public CreateClubReviewResponse getCreateClubReviewResponse( - Review review) { - Set keywords = ReviewUtil.extractKeywords(review); - return CreateClubReviewResponse.of(review, keywords); - } - - public GetClubReviewsKeywordStatsResponse getGetClubReviewsKeywordStatsResponse(Club club, - KeywordStatsVO keywordStatsVO) { - Map keywordMap = keywordStatsVO.getKeywordMapAsStingKey(); - return GetClubReviewsKeywordStatsResponse.of(club, keywordMap); - } -} - diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewCustomRepository.java b/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewCustomRepository.java deleted file mode 100644 index 04d18b8b4..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewCustomRepository.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.clubber.ClubberServer.domain.review.repository; - -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.domain.VerifiedStatus; -import com.clubber.ClubberServer.domain.user.domain.User; -import java.util.List; -import java.util.Optional; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - -public interface ReviewCustomRepository { - - List queryReviewByUserOrderByIdDesc(User user); - - - Page queryReviewByClub(Club club, Pageable pageable, ApprovedStatus approvedStatus, VerifiedStatus verifiedStatus); - - List queryReviewNoOffsetByClub(Club club, Pageable pageable, Long reviewId, - ApprovedStatus approvedStatus); - - boolean existsByClubAndUserAndNotApprovedStatusDeleted(Club club, User user); - - Optional findByIdAndNotDeletedApprovedStatus(Long reviewId); - - void softDeleteReviewByClubId(Long clubId); -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewCustomRepositoryImpl.java b/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewCustomRepositoryImpl.java deleted file mode 100644 index dc285d1dd..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewCustomRepositoryImpl.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.clubber.ClubberServer.domain.review.repository; - -import static com.clubber.ClubberServer.domain.club.domain.QClub.club; -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.DELETED; -import static com.clubber.ClubberServer.domain.review.domain.QReview.review; -import static com.clubber.ClubberServer.domain.review.domain.QReviewKeyword.reviewKeyword; - -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.domain.VerifiedStatus; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.querydsl.core.types.dsl.BooleanExpression; -import com.querydsl.jpa.impl.JPAQuery; -import com.querydsl.jpa.impl.JPAQueryFactory; - -import java.util.List; -import java.util.Optional; - -import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.support.PageableExecutionUtils; - -@RequiredArgsConstructor -public class ReviewCustomRepositoryImpl implements ReviewCustomRepository { - - private final JPAQueryFactory queryFactory; - - @Override - public List queryReviewByUserOrderByIdDesc(User user) { - return queryFactory.selectFrom(review) - .join(review.reviewKeywords, reviewKeyword).fetchJoin() - .join(review.club, club).fetchJoin() - .where(review.user.eq(user) - .and(review.approvedStatus.ne(DELETED))) - .orderBy(review.id.desc()) - .fetch(); - } - - @Override - public Page queryReviewByClub(Club club, Pageable pageable, - ApprovedStatus approvedStatus, VerifiedStatus verifiedStatus) { - - /** - * 커버링 인덱스 적용 - */ - - List ids = queryFactory.select(review.id) - .from(review) - .where(review.club.id.eq(club.getId()) - .and(review.approvedStatus.ne(DELETED)) - ) - .orderBy(review.id.desc()) - .offset(pageable.getOffset()) - .limit(pageable.getPageSize()) - .fetch(); - - List reviews = queryFactory.selectFrom(review) - .join(review.reviewKeywords, reviewKeyword).fetchJoin() - .where(review.id.in(ids)) - .orderBy(review.id.desc()) - .fetch(); - - JPAQuery countQuery = queryFactory.select(review.count()) - .from(review) - .where(review.id.in(ids)); - - return PageableExecutionUtils.getPage(reviews, pageable, countQuery::fetchOne); - } - - private BooleanExpression eqApprovedStatus(ApprovedStatus approvedStatus) { - if (approvedStatus == null) { - return null; - } - return review.approvedStatus.eq(approvedStatus); - } - - private BooleanExpression eqVerifiedStatus(VerifiedStatus verifiedStatus) { - if (verifiedStatus == null) { - return null; - } - return review.verifiedStatus.eq(verifiedStatus); - } - - @Override - public List queryReviewNoOffsetByClub(Club club, Pageable pageable, Long reviewId, - ApprovedStatus approvedStatus) { - return queryFactory.selectFrom(review) - .where(review.club.id.eq(club.getId()), - ltReviewId(reviewId), - approvedStatusEq(approvedStatus)) - .orderBy(review.id.desc()) - .limit(pageable.getPageSize() + 1) - .fetch(); - } - - private BooleanExpression ltReviewId(Long reviewId) { - if (reviewId == null) { - return null; - } - return review.id.lt(reviewId); - } - - private BooleanExpression approvedStatusEq(ApprovedStatus approvedStatus) { - if (approvedStatus == null) { - return null; - } - return review.approvedStatus.eq(approvedStatus); - } - - @Override - public boolean existsByClubAndUserAndNotApprovedStatusDeleted(Club club, User user) { - return queryFactory.selectOne() - .from(review) - .where(review.club.id.eq(club.getId()) - .and(review.user.id.eq(user.getId())) - .and(review.approvedStatus.ne(DELETED)) - ) - .fetchFirst() != null; - } - - @Override - public Optional findByIdAndNotDeletedApprovedStatus(Long reviewId) { - return Optional.ofNullable(queryFactory - .selectFrom(review) - .where(review.id.eq(reviewId) - .and(review.approvedStatus.ne(DELETED))) - .fetchOne()); - } - - @Override - public void softDeleteReviewByClubId(Long clubId) { - queryFactory.update(review) - .set(review.approvedStatus, DELETED) - .where( - review.club.id.eq(clubId), review.approvedStatus.ne(DELETED) - ) - .execute(); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewKeywordCustomRepositoryImpl.java b/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewKeywordCustomRepositoryImpl.java deleted file mode 100644 index 324eba295..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewKeywordCustomRepositoryImpl.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.clubber.ClubberServer.domain.review.repository; - -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.DELETED; -import static com.clubber.ClubberServer.domain.review.domain.QReview.review; -import static com.clubber.ClubberServer.domain.review.domain.QReviewKeyword.reviewKeyword; - -import com.clubber.ClubberServer.domain.review.dto.KeywordCountStatDto; -import com.querydsl.core.types.Projections; -import com.querydsl.jpa.impl.JPAQueryFactory; -import java.util.List; -import lombok.RequiredArgsConstructor; - -@RequiredArgsConstructor -public class ReviewKeywordCustomRepositoryImpl implements ReviewKeywordCustomRepository { - - private final JPAQueryFactory queryFactory; - - @Override - public List queryReviewKeywordStatsByClubId(Long clubId) { - return queryFactory - .select(Projections.constructor(KeywordCountStatDto.class, - reviewKeyword.keyword, reviewKeyword.count().as("count"))) - .from(reviewKeyword) - .where(review.club.id.eq(clubId) - .and(review.approvedStatus.ne(DELETED))) - .join(reviewKeyword.review, review) - .groupBy(reviewKeyword.keyword) - .fetch(); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewKeywordRepository.java b/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewKeywordRepository.java deleted file mode 100644 index db9728f45..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewKeywordRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.clubber.ClubberServer.domain.review.repository; - -import com.clubber.ClubberServer.domain.review.domain.ReviewKeyword; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface ReviewKeywordRepository extends JpaRepository, - ReviewKeywordCustomRepository { - -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewRepository.java b/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewRepository.java deleted file mode 100644 index 2feb421b1..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/repository/ReviewRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.clubber.ClubberServer.domain.review.repository; - -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Review; -import java.util.List; - -import org.springframework.data.jpa.repository.JpaRepository; - -public interface ReviewRepository extends JpaRepository, ReviewCustomRepository { - - List findByApprovedStatusAndClubOrderByIdDesc(ApprovedStatus status, Club club); - - List findAllByClub(Club club); -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/service/ReviewService.java b/src/main/java/com/clubber/ClubberServer/domain/review/service/ReviewService.java deleted file mode 100644 index 8ef9dec46..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/service/ReviewService.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.clubber.ClubberServer.domain.review.service; - -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.club.exception.ClubNotFoundException; -import com.clubber.ClubberServer.domain.club.repository.ClubRepository; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.domain.VerifiedStatus; -import com.clubber.ClubberServer.domain.review.dto.*; -import com.clubber.ClubberServer.domain.review.exception.UserAlreadyReviewedException; -import com.clubber.ClubberServer.domain.review.mapper.ReviewMapper; -import com.clubber.ClubberServer.domain.review.repository.ReviewKeywordRepository; -import com.clubber.ClubberServer.domain.review.repository.ReviewRepository; -import com.clubber.ClubberServer.domain.review.vo.KeywordStatsVO; -import com.clubber.ClubberServer.domain.user.domain.User; -import com.clubber.ClubberServer.domain.user.implement.UserReader; -import com.clubber.ClubberServer.global.event.review.approve.ReviewApproveEvnetPublisher; -import com.clubber.ClubberServer.global.mapper.enums.EnumMapper; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; -import jakarta.validation.Valid; -import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -@Service -@RequiredArgsConstructor -public class ReviewService { - - private final ReviewRepository reviewRepository; - private final ReviewKeywordRepository reviewKeywordRepository; - private final ReviewMapper reviewMapper; - private final ClubRepository clubRepository; - private final EnumMapper enumMapper; - private final ReviewApproveEvnetPublisher publisher; - private final UserReader userReader; - - @Transactional - public CreateClubReviewResponse createReview(Long clubId, - @Valid CreateClubReviewRequest reviewRequest) { - User user = userReader.getCurrentUser(); - Club club = clubRepository.findClubByIdAndIsDeleted(clubId, false) - .orElseThrow(() -> ClubNotFoundException.EXCEPTION); - - club.validateAgreeToReview(); - validateReviewExists(club, user); - - Review review = Review.of(user, club, reviewRequest.getContent(), - reviewRequest.getAuthImage()); - review.addKeywords(reviewRequest.getKeywords()); - Review savedReview = reviewRepository.save(review); - - publisher.throwReviewApproveEvent(savedReview); - return reviewMapper.getCreateClubReviewResponse(savedReview); - } - - private void validateReviewExists(Club club, User user) { - if (reviewRepository.existsByClubAndUserAndNotApprovedStatusDeleted(club, user)) { - throw UserAlreadyReviewedException.EXCEPTION; - } - } - - @Transactional(readOnly = true) - public GetClubReviewAgreedStatusResponse getClubReviewAgreedStatus(Long clubId) { - Club club = clubRepository.findClubByIdAndIsDeleted(clubId, false) - .orElseThrow(() -> ClubNotFoundException.EXCEPTION); - - return GetClubReviewAgreedStatusResponse.from(club); - } - - @Transactional(readOnly = true) - public GetClubReviewsKeywordStatsResponse getClubReviewKeywordStats(Long clubId) { - Club club = clubRepository.findClubByIdAndIsDeleted(clubId, false) - .orElseThrow(() -> ClubNotFoundException.EXCEPTION); - - club.validateAgreeToReview(); - - List keywordCountStatDtoList = reviewKeywordRepository.queryReviewKeywordStatsByClubId( - club.getId()); - - final KeywordStatsVO keywordStatsVO = new KeywordStatsVO(keywordCountStatDtoList); - return reviewMapper.getGetClubReviewsKeywordStatsResponse(club, keywordStatsVO); - } - - //동아리 별 리뷰 조회 : Page 별 조회 - @Transactional(readOnly = true) - public GetClubReviewsPageResponse getClubReviewsWithContent(Long clubId, - Pageable pageable, VerifiedStatus verifiedStatus) { - Club club = clubRepository.findClubByIdAndIsDeleted(clubId, false) - .orElseThrow(() -> ClubNotFoundException.EXCEPTION); - - club.validateAgreeToReview(); - - Page reviews = reviewRepository.queryReviewByClub(club, pageable, null, - verifiedStatus); - return reviewMapper.getGetClubReviewsPageResponse(reviews, clubId); - } - - //동아리 별 리뷰 조회 : No Offset 구현 - @Transactional(readOnly = true) - public GetClubReviewsSliceResponse getClubReviewsWithSliceContent(Long clubId, - Pageable pageable, Long reviewId) { - Club club = clubRepository.findClubByIdAndIsDeleted(clubId, false) - .orElseThrow(() -> ClubNotFoundException.EXCEPTION); - - club.validateAgreeToReview(); - - List reviews = reviewRepository.queryReviewNoOffsetByClub(club, pageable, reviewId, - null); - - return reviewMapper.getClubReviewsSliceResponse(clubId, reviews, pageable); - } - - public List getTotalKeywords() { - return enumMapper.get("Keyword"); - } - - @Transactional - public void saveReview(Review review) { - reviewRepository.save(review); - } - - @Transactional - public void softDeleteReviewByClubId(Long clubId) { - reviewRepository.softDeleteReviewByClubId(clubId); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/util/ReviewUtil.java b/src/main/java/com/clubber/ClubberServer/domain/review/util/ReviewUtil.java deleted file mode 100644 index bea8eeba2..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/util/ReviewUtil.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.clubber.ClubberServer.domain.review.util; - -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.NULL_CONTENT; -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.PENDING; - -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.domain.ReviewKeyword; -import com.clubber.ClubberServer.global.util.SliceUtil; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; -import org.springframework.data.domain.Pageable; -import org.springframework.util.StringUtils; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class ReviewUtil { - - public static Set extractKeywords(Review review) { - return review.getReviewKeywords() - .stream() - .map(ReviewKeyword::getKeywordTitle) - .collect(Collectors.toCollection(LinkedHashSet::new)); - } - - public static Long getLastReviewId(List reviews, Pageable pageable) { - if (SliceUtil.hasNext(reviews, pageable)) { - return SliceUtil.getLastContent(reviews).getId(); - } - return null; - } - - public static String checkBlankContent(String content) { - if (hasContent(content)) { - return content; - } - return null; - } - - public static boolean hasContent(String content) { - if (StringUtils.hasText(content)) { - return true; - } - return false; - } - - public static ApprovedStatus checkBlankContentApprovedStatus(String content) { - if (hasContent(content)) { - return PENDING; - } - return NULL_CONTENT; - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/review/vo/KeywordStatsVO.java b/src/main/java/com/clubber/ClubberServer/domain/review/vo/KeywordStatsVO.java deleted file mode 100644 index 1936ff8a5..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/review/vo/KeywordStatsVO.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.clubber.ClubberServer.domain.review.vo; - -import com.clubber.ClubberServer.domain.review.domain.Keyword; -import com.clubber.ClubberServer.domain.review.dto.KeywordCountStatDto; -import java.util.Arrays; -import java.util.EnumMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import lombok.Getter; - -public class KeywordStatsVO { - - //키워드 통계 반환 시 Key가 String이지만 추후 확장성을 위해 EnumMap으로 관리한다. - private final Map keywordMap = new EnumMap<>(Keyword.class); - - @Getter - private final Map keywordMapAsStingKey; - - public KeywordStatsVO(List keywordCountStatDtoList) { - initializeKeywordMap(); - updateKeywordStat(keywordCountStatDtoList); - keywordMapAsStingKey = convertKeywordMapAsStringKey(); - } - - private void initializeKeywordMap() { - Arrays.stream(Keyword.values()) - .forEach(keyword -> keywordMap.put(keyword, 0L)); - } - - private void updateKeywordStat(List keywordCountStatDtoList) { - for (KeywordCountStatDto keywordCountStatDTO : keywordCountStatDtoList) { - keywordMap.put(keywordCountStatDTO.keyword(), keywordCountStatDTO.count()); - } - } - - private Map convertKeywordMapAsStringKey() { - return keywordMap.entrySet().stream() - .collect(Collectors.toMap( - entry -> entry.getKey().getTitle(), - Map.Entry::getValue, - (oldValue, newValue) -> oldValue, - LinkedHashMap::new) - ); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/domain/SnsType.java b/src/main/java/com/clubber/ClubberServer/domain/user/domain/SnsType.java deleted file mode 100644 index 6646904e6..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/user/domain/SnsType.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.clubber.ClubberServer.domain.user.domain; - -public enum SnsType { - KAKAO -} diff --git a/src/main/java/com/clubber/ClubberServer/domain/user/dto/UserReviewResponse.java b/src/main/java/com/clubber/ClubberServer/domain/user/dto/UserReviewResponse.java deleted file mode 100644 index 747923eed..000000000 --- a/src/main/java/com/clubber/ClubberServer/domain/user/dto/UserReviewResponse.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.clubber.ClubberServer.domain.user.dto; - -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import java.time.LocalDateTime; -import java.util.Set; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -@Getter -@Builder(access = AccessLevel.PRIVATE) -@AllArgsConstructor(access = AccessLevel.PRIVATE) -public class UserReviewResponse { - - @Schema(description = "리뷰 id", example = "1") - private final Long reviewId; - - @Schema(description = "동아리 id", example = "1") - private final Long clubId; - - @Schema(description = "동아리 이름", example = "1") - private final String clubName; - - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy.MM.dd", timezone = "Asia/Seoul") - @Schema(description = "리뷰 작성 일자", example = "2024.01.01", type = "string") - private final LocalDateTime dateTime; - - @Schema(description = "리뷰 승인 상태", example = "APPROVED") - private final ApprovedStatus approvedStatus; - - @Schema(description = "리뷰 작성 시 선택한 키워드", - example = "[\"CULTURE\", \"FEE\", \"ACTIVITY\", \"CAREER\", \"MANAGE\"]") - private final Set keywords; - - @Schema(description = "한줄평", example = "매주 정기회의가 있어서 시간 투자가 필요합니다!") - private final String content; - - public static UserReviewResponse of(Review review, Set keywords) { - return UserReviewResponse.builder() - .reviewId(review.getId()) - .keywords(keywords) - .clubId(review.getClub().getId()) - .clubName(review.getClub().getName()) - .dateTime(review.getCreatedAt()) - .approvedStatus(review.getApprovedStatus()) - .content(review.getContent()) - .build(); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/global/event/review/approve/ReviewApproveEvent.java b/src/main/java/com/clubber/ClubberServer/global/event/review/approve/ReviewApproveEvent.java deleted file mode 100644 index 96883e9f8..000000000 --- a/src/main/java/com/clubber/ClubberServer/global/event/review/approve/ReviewApproveEvent.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.clubber.ClubberServer.global.event.review.approve; - -import com.clubber.ClubberServer.domain.review.domain.Review; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@AllArgsConstructor -@Getter -public class ReviewApproveEvent { - private Review review; -} diff --git a/src/main/java/com/clubber/ClubberServer/global/event/review/approve/ReviewApproveEventHandler.java b/src/main/java/com/clubber/ClubberServer/global/event/review/approve/ReviewApproveEventHandler.java deleted file mode 100644 index cfac7b326..000000000 --- a/src/main/java/com/clubber/ClubberServer/global/event/review/approve/ReviewApproveEventHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.clubber.ClubberServer.global.event.review.approve; - -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.service.ReviewService; -import lombok.RequiredArgsConstructor; -import org.springframework.context.event.EventListener; -import org.springframework.scheduling.TaskScheduler; -import org.springframework.stereotype.Component; - -import java.time.Instant; - -@Component -@RequiredArgsConstructor -public class ReviewApproveEventHandler { - - private final TaskScheduler taskScheduler; - - private final ReviewService reviewService; - - @EventListener - public void listenReviewApproveEvent(ReviewApproveEvent event) { - taskScheduler.schedule( - () -> { - Review review = event.getReview(); - review.autoUpdateReviewStatus(); - reviewService.saveReview(review); - } - , Instant.now().plusSeconds(30)); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/global/event/review/approve/ReviewApproveEvnetPublisher.java b/src/main/java/com/clubber/ClubberServer/global/event/review/approve/ReviewApproveEvnetPublisher.java deleted file mode 100644 index 4f2a57b4e..000000000 --- a/src/main/java/com/clubber/ClubberServer/global/event/review/approve/ReviewApproveEvnetPublisher.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.clubber.ClubberServer.global.event.review.approve; - -import com.clubber.ClubberServer.domain.review.domain.Review; -import lombok.RequiredArgsConstructor; -import org.springframework.context.ApplicationEventPublisher; -import org.springframework.stereotype.Service; - -@Service -@RequiredArgsConstructor -public class ReviewApproveEvnetPublisher { - - private final ApplicationEventPublisher publisher; - - public void throwReviewApproveEvent(Review review) { - publisher.publishEvent(new ReviewApproveEvent(review)); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/global/event/withdraw/SoftDeleteEvent.java b/src/main/java/com/clubber/ClubberServer/global/event/withdraw/SoftDeleteEvent.java deleted file mode 100644 index 1590b5e6b..000000000 --- a/src/main/java/com/clubber/ClubberServer/global/event/withdraw/SoftDeleteEvent.java +++ /dev/null @@ -1,3 +0,0 @@ -package com.clubber.ClubberServer.global.event.withdraw; - -public record SoftDeleteEvent(Long clubId) { } diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/mail/exception/MailNotSentException.java b/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/mail/exception/MailNotSentException.java deleted file mode 100644 index 66e83f2c7..000000000 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/mail/exception/MailNotSentException.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.mail.exception; - -import com.clubber.ClubberServer.global.exception.BaseException; - -import static com.clubber.ClubberServer.global.exception.GlobalErrorCode.MAIL_NOT_SENT; - -public class MailNotSentException extends BaseException { - public static final BaseException EXCEPTION = new MailNotSentException(); - - private MailNotSentException() { - super(MAIL_NOT_SENT); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/AttributeType.java b/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/AttributeType.java deleted file mode 100644 index 03c85b992..000000000 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/AttributeType.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto; - -public enum AttributeType { - TOXICITY -} diff --git a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/ScoreType.java b/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/ScoreType.java deleted file mode 100644 index d00e56222..000000000 --- a/src/main/java/com/clubber/ClubberServer/global/infrastructure/outer/perspective/dto/ScoreType.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.clubber.ClubberServer.global.infrastructure.outer.perspective.dto; - -public enum ScoreType { - PROBABILITY -} diff --git a/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumFaqMapperType.java b/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumFaqMapperType.java deleted file mode 100644 index 4f4494db4..000000000 --- a/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumFaqMapperType.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.clubber.ClubberServer.global.mapper.enums; - -import com.clubber.ClubberServer.global.vo.enums.EnumFaQMapperVO; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; - -public interface EnumFaqMapperType extends EnumMapperType { - - String getAnswer(); - - @Override - default EnumMapperVO createVO() { - return new EnumFaQMapperVO(this); - } -} diff --git a/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumImageMapperType.java b/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumImageMapperType.java deleted file mode 100644 index 8708c608a..000000000 --- a/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumImageMapperType.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.clubber.ClubberServer.global.mapper.enums; - -import com.clubber.ClubberServer.global.vo.enums.EnumImageMapperVO; -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; - -public interface EnumImageMapperType extends EnumMapperType { - - String getImageUrl(); - - @Override - default EnumMapperVO createVO() { - return new EnumImageMapperVO(this); - } -} - diff --git a/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumMapperType.java b/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumMapperType.java deleted file mode 100644 index eadbfa871..000000000 --- a/src/main/java/com/clubber/ClubberServer/global/mapper/enums/EnumMapperType.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.clubber.ClubberServer.global.mapper.enums; - -import com.clubber.ClubberServer.global.vo.enums.EnumMapperVO; - -public interface EnumMapperType { - - String getCode(); - - String getTitle(); - - EnumMapperVO createVO(); -} - diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/controller/AdminReviewControllerTest.java b/src/test/java/com/clubber/ClubberServer/integration/domain/admin/controller/AdminReviewControllerTest.java deleted file mode 100644 index a3bde722d..000000000 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/controller/AdminReviewControllerTest.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.clubber.ClubberServer.integration.domain.admin.controller; - -import com.clubber.ClubberServer.integration.util.WithMockCustomUser; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.http.MediaType; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.web.servlet.MockMvc; - -import static com.clubber.ClubberServer.integration.util.fixture.AdminReviewFixture.UPDATE_ADMINS_EMPTY_REVIEWS; -import static com.clubber.ClubberServer.integration.util.fixture.AdminReviewFixture.UPDATE_ADMINS_OVER_MAX_REVIEWS; -import static org.hamcrest.Matchers.containsString; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -@SpringBootTest -@AutoConfigureMockMvc -@ActiveProfiles("local") -public class AdminReviewControllerTest { - - /** - * TODO : Security 의존성 걷어내고 WebMvcTest으로 리팩토링 - */ - - @Autowired - private MockMvc mockMvc; - - @Autowired - private ObjectMapper objectMapper; - - @DisplayName("리뷰 승인/거절 목록이 빈 리스트라면 예외가 발생한다.") - @WithMockCustomUser - @Test - void updateEmptyReviewStatus() throws Exception { - String updateEmptyReviewStatus = objectMapper.writeValueAsString(UPDATE_ADMINS_EMPTY_REVIEWS); - mockMvc.perform(patch("/api/v1/admins/reviews/decision") - .contentType(MediaType.APPLICATION_JSON) - .content(updateEmptyReviewStatus)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.reason", containsString("1개 이상 수정해야합니다"))); - } - - @DisplayName("리뷰 승인/거절 목록이 10개 초과일 경우 예외가 발생한다..") - @WithMockCustomUser - @Test - void updateReviewOverMaxSize() throws Exception { - String updateEmptyReviewStatus = objectMapper.writeValueAsString(UPDATE_ADMINS_OVER_MAX_REVIEWS); - mockMvc.perform(patch("/api/v1/admins/reviews/decision") - .contentType(MediaType.APPLICATION_JSON) - .content(updateEmptyReviewStatus)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.reason", containsString("10개 이하로 수정해야합니다"))); - } -} diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminReviewServiceTest.java b/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminReviewServiceTest.java deleted file mode 100644 index f71c09243..000000000 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/admin/service/AdminReviewServiceTest.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.clubber.ClubberServer.integration.domain.admin.service; - -import static com.clubber.ClubberServer.integration.util.fixture.AdminReviewFixture.UPDATE_ADMIN_NOT_FOUND_REVIEW_REQUEST; -import static com.clubber.ClubberServer.integration.util.fixture.AdminReviewFixture.VALID_UPDATE_ADMINS_REVIEW_STATUS_REQEUST_APPROVE; -import static com.clubber.ClubberServer.integration.util.fixture.AdminReviewFixture.VALID_UPDATE_ADMINS_REVIEW_STATUS_REQEUST_REJECT; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsReviewApprovedStatusResponse; -import com.clubber.ClubberServer.domain.admin.service.AdminReviewService; -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.exception.UserReviewsNotFoundException; -import com.clubber.ClubberServer.domain.review.repository.ReviewRepository; -import com.clubber.ClubberServer.integration.util.ServiceTest; -import com.clubber.ClubberServer.integration.util.WithMockCustomUser; -import java.util.List; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; - -public class AdminReviewServiceTest extends ServiceTest { - - @Autowired - private AdminReviewService adminReviewService; - - @Autowired - private ReviewRepository reviewRepository; - - @DisplayName("리뷰 승인을 수행한다") - @WithMockCustomUser - @Test - void updateAdminsReviewApprove() { - UpdateAdminsReviewApprovedStatusResponse updateAdminsReviewApprovedStatusResponse = adminReviewService.updateAdminsReviewsApprovedStatus( - VALID_UPDATE_ADMINS_REVIEW_STATUS_REQEUST_APPROVE); - - List approvedReviews = reviewRepository.findAllById( - updateAdminsReviewApprovedStatusResponse.getReviewIds()); - - assertThat(approvedReviews) - .allMatch(review -> review.getApprovedStatus() == ApprovedStatus.APPROVED); - } - - @DisplayName("리뷰 거절을 수행한다") - @WithMockCustomUser - @Test - void updateAdminsReviewReject() { - UpdateAdminsReviewApprovedStatusResponse updateAdminsReviewApprovedStatusResponse = adminReviewService.updateAdminsReviewsApprovedStatus( - VALID_UPDATE_ADMINS_REVIEW_STATUS_REQEUST_REJECT); - - List approvedReviews = reviewRepository.findAllById( - updateAdminsReviewApprovedStatusResponse.getReviewIds()); - - assertThat(approvedReviews) - .allMatch(review -> review.getApprovedStatus() == ApprovedStatus.REJECTED); - } - - @DisplayName("존재하지 않는 리뷰를 승인/거절하는 경우 예외가 발생한다.") - @WithMockCustomUser - @Test - void updateAdminsNotFoundReviews() { - assertThrows(UserReviewsNotFoundException.class, - () -> adminReviewService.updateAdminsReviewsApprovedStatus( - UPDATE_ADMIN_NOT_FOUND_REVIEW_REQUEST)); - } -} diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/review/controller/ReviewControllerTest.java b/src/test/java/com/clubber/ClubberServer/integration/domain/review/controller/ReviewControllerTest.java deleted file mode 100644 index 554d8dfb3..000000000 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/review/controller/ReviewControllerTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.clubber.ClubberServer.integration.domain.review.controller; - -import static com.clubber.ClubberServer.integration.util.fixture.ReviewFixture.EMPTY_KEYWORD_REVIEW_REQUEST; -import static com.clubber.ClubberServer.integration.util.fixture.ReviewFixture.LONG_SIZE_INVALID_REVIEW_REQUEST; -import static org.hamcrest.Matchers.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.http.MediaType; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.web.servlet.MockMvc; - -import com.clubber.ClubberServer.integration.util.WithMockCustomUser; -import com.fasterxml.jackson.databind.ObjectMapper; - -@SpringBootTest -@AutoConfigureMockMvc -@ActiveProfiles("local") -public class ReviewControllerTest { - - @Autowired - private MockMvc mockMvc; - - @Autowired - private ObjectMapper objectMapper; - - - @Test - @DisplayName("빈키워드_리뷰_예외발생") - @WithMockCustomUser(second = "USER") - void emptyKeyword() throws Exception { - String review = objectMapper.writeValueAsString(EMPTY_KEYWORD_REVIEW_REQUEST); - mockMvc.perform(post("/api/v1/clubs/1/reviews") - .contentType(MediaType.APPLICATION_JSON) - .content(review)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.reason", containsString("1개 이상의 키워드를 선택해주세요"))); - } - - @Test - @DisplayName("100자보다_긴_리뷰_예외발생") - @WithMockCustomUser(second = "USER") - void longInvalidReview() throws Exception { - String review = objectMapper.writeValueAsString(LONG_SIZE_INVALID_REVIEW_REQUEST); - - mockMvc.perform(post("/api/v1/clubs/1/reviews") - .contentType(MediaType.APPLICATION_JSON) - .content(review)) - .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.reason", containsString("리뷰 작성은 100자까지 가능합니다"))); - } -} diff --git a/src/test/java/com/clubber/ClubberServer/integration/domain/review/service/ReviewServiceTest.java b/src/test/java/com/clubber/ClubberServer/integration/domain/review/service/ReviewServiceTest.java deleted file mode 100644 index 9a20d2517..000000000 --- a/src/test/java/com/clubber/ClubberServer/integration/domain/review/service/ReviewServiceTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.clubber.ClubberServer.integration.domain.review.service; - -import static com.clubber.ClubberServer.integration.util.fixture.ReviewFixture.VALID_REVIEW_CREATE_REQUEST; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.dto.CreateClubReviewRequest; -import com.clubber.ClubberServer.domain.review.dto.CreateClubReviewResponse; -import com.clubber.ClubberServer.domain.review.exception.UserAlreadyReviewedException; -import com.clubber.ClubberServer.domain.review.repository.ReviewRepository; -import com.clubber.ClubberServer.domain.review.service.ReviewService; -import com.clubber.ClubberServer.integration.util.ServiceTest; -import com.clubber.ClubberServer.integration.util.WithMockCustomUser; -import java.util.Optional; - -import com.clubber.ClubberServer.integration.util.fixture.ReviewFixture; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.transaction.annotation.Transactional; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@Transactional -@ActiveProfiles("test") -public class ReviewServiceTest extends ServiceTest { - - @Autowired - private ReviewService reviewService; - - @Autowired - private ReviewRepository reviewRepository; - - @DisplayName("리뷰 작성에 성공한다") - @WithMockCustomUser(second = "USER") - @Test - void createReviewSuccess() { - /** - * 1번 user club1에 리뷰 등록되어있음 - */ - CreateClubReviewRequest createClubReviewRequest = ReviewFixture.getDefaultCreateClubReviewRequestBuilder().sample(); - CreateClubReviewResponse reviewCreateResponse = reviewService.createReview(2L, createClubReviewRequest); - - Optional createdReview = reviewRepository.findById( - reviewCreateResponse.getReviewId()); - - assertAll( - () -> assertThat(createdReview).isNotNull(), - () -> assertThat(createdReview.get().getApprovedStatus()).isEqualTo( - ApprovedStatus.PENDING), - () -> assertThat(createdReview.get().getContent()).isEqualTo( - VALID_REVIEW_CREATE_REQUEST.getContent()) - // () -> assertThat(ReviewKeyword.create(createdReview.get().getReviewKeywords())).isEqualTo(VALID_REVIEW_CREATE_REQUEST.getKeywords()) - ); - } - - @DisplayName("리뷰_중복작성시_예외발생") - @WithMockCustomUser(second = "USER") - @Test - void createDuplicateReview() { - assertThrows(UserAlreadyReviewedException.class, - () -> reviewService.createReview(1L, VALID_REVIEW_CREATE_REQUEST)); - } -} diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminReviewFixture.java b/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminReviewFixture.java deleted file mode 100644 index 03442286a..000000000 --- a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminReviewFixture.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.clubber.ClubberServer.integration.util.fixture; - -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsReviewApprovedStatusRequest; -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import java.util.List; - -public class AdminReviewFixture { - - private static final List reviewIds = List.of(1L, 2L); - private static final List notFoundReviewIds = List.of(3L, 4L); - - private static final List overMaxSizeReviews = List.of(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L); - - private static final List emptyReviewIds = List.of(); - - public static final UpdateAdminsReviewApprovedStatusRequest VALID_UPDATE_ADMINS_REVIEW_STATUS_REQEUST_APPROVE - = new UpdateAdminsReviewApprovedStatusRequest(reviewIds, ApprovedStatus.APPROVED); - - public static final UpdateAdminsReviewApprovedStatusRequest VALID_UPDATE_ADMINS_REVIEW_STATUS_REQEUST_REJECT - = new UpdateAdminsReviewApprovedStatusRequest(reviewIds, ApprovedStatus.REJECTED); - - public static final UpdateAdminsReviewApprovedStatusRequest UPDATE_ADMIN_NOT_FOUND_REVIEW_REQUEST - = new UpdateAdminsReviewApprovedStatusRequest(notFoundReviewIds, ApprovedStatus.REJECTED); - - public static final UpdateAdminsReviewApprovedStatusRequest UPDATE_ADMINS_EMPTY_REVIEWS - = new UpdateAdminsReviewApprovedStatusRequest(emptyReviewIds, ApprovedStatus.REJECTED); - - public static final UpdateAdminsReviewApprovedStatusRequest UPDATE_ADMINS_OVER_MAX_REVIEWS - = new UpdateAdminsReviewApprovedStatusRequest(overMaxSizeReviews, ApprovedStatus.REJECTED); -} diff --git a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ReviewFixture.java b/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ReviewFixture.java deleted file mode 100644 index aa45ca546..000000000 --- a/src/test/java/com/clubber/ClubberServer/integration/util/fixture/ReviewFixture.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.clubber.ClubberServer.integration.util.fixture; - -import com.clubber.ClubberServer.domain.admin.dto.UpdateAdminsPasswordRequest; -import com.clubber.ClubberServer.domain.review.domain.Keyword; -import com.clubber.ClubberServer.domain.review.dto.CreateClubReviewRequest; -import com.navercorp.fixturemonkey.ArbitraryBuilder; - -import java.util.List; - -import static com.clubber.ClubberServer.integration.util.fixture.FixtureCommon.fixtureMonkey; - -public class ReviewFixture { - - public static final CreateClubReviewRequest VALID_REVIEW_CREATE_REQUEST = - new CreateClubReviewRequest("content", List.of(Keyword.CULTURE, Keyword.FEE), "image"); - - public static final CreateClubReviewRequest EMPTY_KEYWORD_REVIEW_REQUEST = - new CreateClubReviewRequest("content", List.of(), "image"); - - public static final CreateClubReviewRequest LONG_SIZE_INVALID_REVIEW_REQUEST = - new CreateClubReviewRequest("a".repeat(101), List.of(Keyword.CULTURE), "image"); - - public static ArbitraryBuilder getDefaultCreateClubReviewRequestBuilder() { - return fixtureMonkey.giveMeBuilder(CreateClubReviewRequest.class) - .set("content", "content") - .set("keywords", List.of(Keyword.CULTURE, Keyword.FEE)) - .set("authImage", "authImage"); - } -} diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/review/domain/ReviewDomainTest.java b/src/test/java/com/clubber/ClubberServer/unit/domain/review/domain/ReviewDomainTest.java deleted file mode 100644 index 803cd3a77..000000000 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/review/domain/ReviewDomainTest.java +++ /dev/null @@ -1,201 +0,0 @@ -package com.clubber.ClubberServer.unit.domain.review.domain; - -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.APPROVED; -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.DELETED; -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.NULL_CONTENT; -import static com.clubber.ClubberServer.domain.review.domain.ApprovedStatus.PENDING; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.ACTIVITY; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.CAREER; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.CULTURE; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.FEE; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.MANAGE; -import static org.junit.jupiter.api.Assertions.assertAll; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import com.clubber.ClubberServer.domain.admin.exception.InvalidApprovedStatusException; -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.review.domain.ApprovedStatus; -import com.clubber.ClubberServer.domain.review.domain.Keyword; -import com.clubber.ClubberServer.domain.review.domain.Review; -import com.clubber.ClubberServer.domain.review.domain.ReviewKeyword; -import com.clubber.ClubberServer.domain.review.domain.VerifiedStatus; -import com.clubber.ClubberServer.domain.review.exception.ReviewAlreadyDeletedException; -import com.clubber.ClubberServer.domain.user.domain.User; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -public class ReviewDomainTest { - - @Test - @DisplayName("Review에 Keyword 리스트를 저장할때, ReviewKeyword에 포함되어 저장된다.") - void addReviewKeywordsTest() { - //given - Review review = getReview(APPROVED); - List keywords = List.of(CULTURE, FEE, ACTIVITY, CAREER, MANAGE); - - //when - review.addKeywords(keywords); - - //then - List reviewKeywords = review.getReviewKeywords(); - Assertions.assertThat(reviewKeywords) - .extracting(ReviewKeyword::getKeyword) - .containsExactly(CULTURE, FEE, ACTIVITY, CAREER, MANAGE); - } - - private static Review getReview(ApprovedStatus approvedStatus) { - return Review.builder() - .id(1L) - .content("content") - .approvedStatus(approvedStatus) - .build(); - } - - // 일반 사용자 content 조회 - @Test - @DisplayName("승인 상태의 댓글이 아니라면 사용자들에게 보여주는 content는 null이 반환된다.") - void getPendingReviewContentForUser() { - //given - List approvedStatusExceptApproved = getApprovedStatusListExcept(APPROVED); - - //when & then - approvedStatusExceptApproved - .forEach(approvedStatus -> { - Review review = getReview(approvedStatus); - assertNull(review.getContentForUser()); - }); - } - - private static List getApprovedStatusListExcept( - ApprovedStatus excludedApprovedStatus) { - return Arrays.stream(ApprovedStatus.values()) - .filter(approvedStatus -> approvedStatus != excludedApprovedStatus) - .collect(Collectors.toList()); - } - - @Test - @DisplayName("승인 상태의 댓글이라면, 사용자들에게 content 자체로 반환된다.") - void getApprovedReviewContentForUser() { - //given - Review review = getReview(APPROVED); - - //when - String contentForUser = review.getContentForUser(); - - //then - assertEquals("content", contentForUser); - } - - // 수동 승인 - @Test - @DisplayName("승인 대기 상태인 댓글은, 승인 작업 이후에 승인 완료 상태로 바뀐다.") - void updateReviewPendingApprovedStatus() { - //given - Review review = getReview(PENDING); - - //when - review.updateReviewStatus(APPROVED); - - //then - assertEquals(APPROVED, review.getApprovedStatus()); - } - - @Test - @DisplayName("승인 대기 상태의 댓글이 아닌 경우, InvalidApprovedStatusException가 발생한다.") - void updateReviewApprovedStatusExceptPending() { - //given - List approvedStatusExceptPending = getApprovedStatusListExcept(PENDING); - - //when & then - approvedStatusExceptPending - .forEach(approvedStatus -> { - Review review = getReview(approvedStatus); - assertThrows(InvalidApprovedStatusException.class, - () -> review.updateReviewStatus(approvedStatus)); - }); - } - - @Test - @DisplayName("승인 대기 상태의 댓글의 경우에, 자동 승인이 수행된다.") - void updateAutoReviewApprovedPendingStatus() { - //given - Review review = getReview(PENDING); - - //when - review.autoUpdateReviewStatus(); - - //then - assertEquals(APPROVED, review.getApprovedStatus()); - } - - @Test - @DisplayName("승인 대기 상태의 댓글이 아닌 경우, 자동 승인이 수행되지 않아 기존 승인 상태가 된다.") - void updateAutoReviewApprovedExceptPendingStatus() { - //given - List approvedStatusListExceptPending = getApprovedStatusListExcept(PENDING); - - //when & then - approvedStatusListExceptPending - .forEach(approvedStatus -> { - Review review = getReview(approvedStatus); - review.autoUpdateReviewStatus(); - assertEquals(review.getApprovedStatus(), approvedStatus); - }); - } - - @Test - @DisplayName("빈 값의 content가 들어왔을 때, content 값은 null, ApprovedStatus은 NULL_CONTENT이다") - void saveBlankContentReview() { - //given - final String blankString = " "; - User user = User.builder().id(1L).build(); - Club club = Club.builder().id(1L).build(); - - //when - Review review = Review.of(user, club, blankString, "image"); - - //then - assertAll( - () -> assertNull(review.getContent()), - () -> assertEquals(NULL_CONTENT, review.getApprovedStatus()) - ); - } - - @Test - @DisplayName("이미 삭제된 리뷰를 삭제하면 ReviewAlreadyDeletedException가 발생한다.") - void deleteAlreadyDeletedReview() { - //given - Review review = getReview(DELETED); - - //when & then - assertThrows(ReviewAlreadyDeletedException.class, review::delete); - } - - @Test - @DisplayName("삭제되지 않은 리뷰 상태이면 올바르게 삭제된다.") - void deleteReviewNotDeletedApprovedStatus() { - //given - List approvedStatusListExceptDeleted = getApprovedStatusListExcept(DELETED); - - //when & then - approvedStatusListExceptDeleted - .forEach(approvedStatus -> { - Review review = getReview(approvedStatus); - review.delete(); - assertEquals(DELETED, review.getApprovedStatus()); - }); - } - - @Test - @DisplayName("리뷰 저장시 인증 상태는 기본값이 저장된다") - void getDefaultReviewVerifiedStatus() { - Review review = getReview(PENDING); - assertEquals(VerifiedStatus.NOT_VERIFIED, review.getVerifiedStatus()); - } -} diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/review/mapper/ReviewMapperTest.java b/src/test/java/com/clubber/ClubberServer/unit/domain/review/mapper/ReviewMapperTest.java deleted file mode 100644 index bc861468d..000000000 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/review/mapper/ReviewMapperTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.clubber.ClubberServer.unit.domain.review.mapper; - -import static com.clubber.ClubberServer.domain.review.domain.Keyword.ACTIVITY; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.CAREER; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.CULTURE; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.FEE; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.MANAGE; -import static org.assertj.core.api.Assertions.assertThat; - -import com.clubber.ClubberServer.domain.club.domain.Club; -import com.clubber.ClubberServer.domain.review.dto.GetClubReviewsKeywordStatsResponse; -import com.clubber.ClubberServer.domain.review.dto.KeywordCountStatDto; -import com.clubber.ClubberServer.domain.review.mapper.ReviewMapper; -import com.clubber.ClubberServer.domain.review.vo.KeywordStatsVO; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.junit.jupiter.MockitoExtension; - -@ExtendWith(MockitoExtension.class) -public class ReviewMapperTest { - - @InjectMocks - private ReviewMapper reviewMapper; - - @Test - void testKeywordMapping() { - //given - KeywordStatsVO keywordStatsVO = new KeywordStatsVO(getKeywordStats()); - Club club = getClub(); - - //when - GetClubReviewsKeywordStatsResponse getClubReviewsKeywordStatsResponse = reviewMapper.getGetClubReviewsKeywordStatsResponse( - club, keywordStatsVO); - - //then - Map keywordMap = getClubReviewsKeywordStatsResponse.getKeywordStats(); - - assertThat(keywordMap) - .containsExactlyInAnyOrderEntriesOf(Map.of( - ACTIVITY.getTitle(), 10L, - FEE.getTitle(), 20L, - CAREER.getTitle(), 30L, - CULTURE.getTitle(), 40L, - MANAGE.getTitle(), 50L - )); - } - - private static List getKeywordStats() { - return List.of( - new KeywordCountStatDto(ACTIVITY, 10L), - new KeywordCountStatDto(FEE, 20L), - new KeywordCountStatDto(CAREER, 30L), - new KeywordCountStatDto(CULTURE, 40L), - new KeywordCountStatDto(MANAGE, 50L) - ); - } - - private static Club getClub() { - return Club.builder() - .id(1L) - .isAgreeToReview(true) - .build(); - } -} diff --git a/src/test/java/com/clubber/ClubberServer/unit/domain/review/vo/ReviewKeywordVOTest.java b/src/test/java/com/clubber/ClubberServer/unit/domain/review/vo/ReviewKeywordVOTest.java deleted file mode 100644 index 6b6840c6a..000000000 --- a/src/test/java/com/clubber/ClubberServer/unit/domain/review/vo/ReviewKeywordVOTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.clubber.ClubberServer.unit.domain.review.vo; - -import static com.clubber.ClubberServer.domain.review.domain.Keyword.ACTIVITY; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.CAREER; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.CULTURE; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.FEE; -import static com.clubber.ClubberServer.domain.review.domain.Keyword.MANAGE; -import static org.junit.jupiter.api.Assertions.assertAll; -import static org.junit.jupiter.api.Assertions.assertEquals; - -import com.clubber.ClubberServer.domain.review.domain.Keyword; -import com.clubber.ClubberServer.domain.review.dto.KeywordCountStatDto; -import com.clubber.ClubberServer.domain.review.vo.KeywordStatsVO; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -public class ReviewKeywordVOTest { - - - @Test - @DisplayName("keywordStat 리스트가 주어졌을 때, KeywordStatVO안의 Map에 매핑된다..") - void keywordStatsTest() { - //given & when - KeywordStatsVO keywordStatsVO = new KeywordStatsVO(getKeywordStats()); - - //then - Map keywordMap = keywordStatsVO.getKeywordMapAsStingKey(); - assertAll( - () -> assertEquals(10L, keywordMap.get(ACTIVITY.getTitle())), - () -> assertEquals(20L, keywordMap.get(FEE.getTitle())), - () -> assertEquals(30L, keywordMap.get(CAREER.getTitle())), - () -> assertEquals(40L, keywordMap.get(CULTURE.getTitle())), - () -> assertEquals(50L, keywordMap.get(MANAGE.getTitle())) - ); - } - - @Test - @DisplayName("KeywordStatMap의 String키는 Keyword Enum순서와 동일하다") - void keywordStatsKeyOrderTest() { - //given - KeywordStatsVO keywordStatsVO = new KeywordStatsVO(getKeywordStats()); - List expectedKeyOrders = Arrays.stream(Keyword.values()) - .map(Keyword::getTitle) // Enum 순서대로 제목을 매핑 - .toList(); - - //when : 순서대로 key를 추출할 때 - Map keywordMap = keywordStatsVO.getKeywordMapAsStingKey(); - List actualKeyOrders = new ArrayList<>(keywordMap.keySet()); - - //then - Assertions.assertThat(expectedKeyOrders).isEqualTo(actualKeyOrders); - } - - private static List getKeywordStats() { - return List.of( - new KeywordCountStatDto(Keyword.ACTIVITY, 10L), - new KeywordCountStatDto(FEE, 20L), - new KeywordCountStatDto(Keyword.CAREER, 30L), - new KeywordCountStatDto(Keyword.CULTURE, 40L), - new KeywordCountStatDto(Keyword.MANAGE, 50L) - ); - } -}