From 0ef0ac29b737a922e248cb04f9ac0bfb340f5cf7 Mon Sep 17 00:00:00 2001 From: Leejungmin Date: Thu, 27 Feb 2025 10:15:24 +0900 Subject: [PATCH] =?UTF-8?q?AcaClassRepository=20=EC=BF=BC=EB=A6=AC?= =?UTF-8?q?=EB=AC=B8=20=ED=95=84=EC=9A=94=EC=97=86=EB=8A=94=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EC=99=B8,=20=EA=B1=B0=EA=B8=B0=EC=97=90?= =?UTF-8?q?=20=EB=A7=9E=EC=B6=B0=EC=84=9C=20=EA=B0=95=EC=A2=8C=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=88=98=EC=A0=95,?= =?UTF-8?q?=20=EC=A4=91=EB=B3=B5=EB=90=9C=20Product=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=20=EB=B0=A9=EC=A7=80=EB=A5=BC=20=EC=9C=84=ED=95=B4=20ProductRe?= =?UTF-8?q?pository=EC=97=90=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80=20(?= =?UTF-8?q?=EC=9D=B4=EC=A0=9C=20=EC=A4=91=EB=B3=B5=EB=90=9C=20=EA=B0=95?= =?UTF-8?q?=EC=A2=8C=20=EB=93=B1=EB=A1=9D=EC=9D=B8=20=EA=B2=83=20=EA=B0=99?= =?UTF-8?q?=EC=9C=BC=EB=A9=B4=20=EA=B1=B0=EB=A6=85=EB=8B=88=EB=8B=A4.=20?= =?UTF-8?q?=EA=B8=B0=EC=A4=80=EC=9D=80=20acaId,=20className,=20startDate,?= =?UTF-8?q?=20EndDate,=20=20teacherUserId.=20=EC=9D=B4=20=EB=84=B7=20?= =?UTF-8?q?=EC=A4=91=20=ED=95=98=EB=82=98=EB=9D=BC=EB=8F=84=20=EC=A1=B0?= =?UTF-8?q?=EA=B8=88=20=EB=8B=A4=EB=A5=B4=EB=A9=B4=20=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=EC=9D=B4=20=EB=90=A9=EB=8B=88=EB=8B=A4.=20=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=EB=90=98=EB=8A=94=20=EC=84=A0=EC=83=9D=EB=8B=98=EC=9D=B4=20?= =?UTF-8?q?=EC=97=86=EC=9D=84=20=EC=8B=9C=EC=97=94=20=ED=95=99=EC=9B=90=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=EA=B0=80=20=EC=84=A0=EC=83=9D?= =?UTF-8?q?=EB=8B=98=EC=9C=BC=EB=A1=9C=20=EB=93=B1=EB=A1=9D=20=EB=90=A9?= =?UTF-8?q?=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acamatch/acaClass/AcaClassService.java | 24 +++++++++++-------- .../acamatch/acaClass/ClassRepository.java | 10 ++------ .../academyCost/ProductRepository.java | 2 ++ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/green/acamatch/acaClass/AcaClassService.java b/src/main/java/com/green/acamatch/acaClass/AcaClassService.java index 1910d80b..4987d6ec 100644 --- a/src/main/java/com/green/acamatch/acaClass/AcaClassService.java +++ b/src/main/java/com/green/acamatch/acaClass/AcaClassService.java @@ -92,9 +92,9 @@ public int postAcaClass(AcaClassPostReq p) { // teacherUserId 값 보정 Long teacherUserId = Optional.ofNullable(p.getTeacherUserId()).orElse(0L); - // 동일한 강좌가 존재하는지 체크 (EmbeddedId 사용) - Long duplicateCount = classRepository.countByAcaIdAndClassNameAndStartDateAndEndDateAndStartTimeAndEndTimeAndTeacherUserId( - p.getAcaId(), p.getClassName(), p.getStartDate(), p.getEndDate(), p.getStartTime(), p.getEndTime(), teacherUserId); + // 중복 강좌 검사 (운영 시간(start_time, end_time) 제외) + Long duplicateCount = classRepository.countByAcaIdAndClassNameAndStartDateAndEndDateAndTeacherUserId( + p.getAcaId(), p.getClassName(), p.getStartDate(), p.getEndDate(), teacherUserId); if (duplicateCount > 0) { throw new CustomException(ManagerErrorCode.CLASS_ALREADY_EXISTS); @@ -113,15 +113,19 @@ public int postAcaClass(AcaClassPostReq p) { acaClass.setPrice(p.getPrice()); acaClass.setTeacher(teacher); // Teacher 설정 - classRepository.save(acaClass); + // 강좌 저장 + AcaClass savedClass = classRepository.save(acaClass); - // Product 객체 생성 시 AcaClass 설정 - Product product = new Product(); - product.setClassId(acaClass); - product.setProductName(p.getClassName()); // 강좌 이름을 상품명으로 설정 - product.setProductPrice(p.getPrice()); + // 중복된 Product 생성 방지 + boolean productExists = productRepository.existsByClassId(savedClass); - productRepository.save(product); + if (!productExists) { + Product product = new Product(); + product.setClassId(savedClass); + product.setProductName(p.getClassName()); // 강좌 이름을 상품명으로 설정 + product.setProductPrice(p.getPrice()); + productRepository.save(product); + } return 1; } catch (CustomException e) { diff --git a/src/main/java/com/green/acamatch/acaClass/ClassRepository.java b/src/main/java/com/green/acamatch/acaClass/ClassRepository.java index 290ba62d..54fa30f0 100644 --- a/src/main/java/com/green/acamatch/acaClass/ClassRepository.java +++ b/src/main/java/com/green/acamatch/acaClass/ClassRepository.java @@ -29,17 +29,11 @@ public interface ClassRepository extends JpaRepository { "AND a.className = :className " + "AND a.startDate = :startDate " + "AND a.endDate = :endDate " + - "AND a.startTime = :startTime " + - "AND a.endTime = :endTime " + - "AND a.teacher.user.userId = :teacherUserId") - Long countByAcaIdAndClassNameAndStartDateAndEndDateAndStartTimeAndEndTimeAndTeacherUserId( + "AND (:teacherUserId = 0 OR a.teacher.user.userId = :teacherUserId)") + Long countByAcaIdAndClassNameAndStartDateAndEndDateAndTeacherUserId( @Param("acaId") Long acaId, @Param("className") String className, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate, - @Param("startTime") LocalTime startTime, - @Param("endTime") LocalTime endTime, @Param("teacherUserId") Long teacherUserId); - - } \ No newline at end of file diff --git a/src/main/java/com/green/acamatch/academyCost/ProductRepository.java b/src/main/java/com/green/acamatch/academyCost/ProductRepository.java index db8967cd..57860191 100644 --- a/src/main/java/com/green/acamatch/academyCost/ProductRepository.java +++ b/src/main/java/com/green/acamatch/academyCost/ProductRepository.java @@ -1,9 +1,11 @@ package com.green.acamatch.academyCost; +import com.green.acamatch.entity.acaClass.AcaClass; import com.green.acamatch.entity.academyCost.Product; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface ProductRepository extends JpaRepository { + boolean existsByClassId(AcaClass classId); }