Skip to content

Commit 0e218de

Browse files
committed
merge: dev → main 관리자 삭제 권한 v2
2 parents 4709441 + 49140f5 commit 0e218de

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

src/main/java/org/runnect/server/publicCourse/service/PublicCourseService.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,24 @@
4343
import org.springframework.stereotype.Service;
4444
import org.springframework.transaction.annotation.Transactional;
4545

46+
import javax.persistence.EntityManager;
47+
import javax.persistence.PersistenceContext;
48+
4649
@Service
4750
@RequiredArgsConstructor
4851
public class PublicCourseService {
4952
private static final Integer PAGE_SIZE = 10;
5053
private static List<Long> MARATHON_PUBLIC_COURSE_IDS;
54+
private static final Long ADMIN_USER_ID = 280L;
5155

5256
private final PublicCourseRepository publicCourseRepository;
5357
private final UserRepository userRepository;
5458
private final ScrapRepository scrapRepository;
5559
private final CourseRepository courseRepository;
5660

61+
@PersistenceContext
62+
private EntityManager entityManager;
63+
5764

5865
@Value("${runnect.marathon-public-course-id}")
5966
private void setMARATHON_PUBLIC_COURSE_IDS(String MARATHON_PUBLIC_COURSE_ID) {
@@ -350,8 +357,10 @@ public DeletePublicCoursesResponseDto deletePublicCourses(
350357
throw new NotFoundException(ErrorStatus.NOT_FOUND_PUBLICCOURSE_EXCEPTION, ErrorStatus.NOT_FOUND_PUBLICCOURSE_EXCEPTION.getMessage());
351358
}
352359

360+
boolean isAdmin = userId.equals(ADMIN_USER_ID);
361+
353362
publicCourses.stream()
354-
.filter(pc -> !pc.getCourse().getRunnectUser().equals(user))
363+
.filter(pc -> !isAdmin && !pc.getCourse().getRunnectUser().equals(user))
355364
.findAny()
356365
.ifPresent(pc -> {
357366
throw new PermissionDeniedException(
@@ -362,6 +371,15 @@ public DeletePublicCoursesResponseDto deletePublicCourses(
362371
//삭제전 course의 isPrivate update
363372
publicCourses.forEach(publicCourse -> publicCourse.getCourse().retrieveCourse());
364373

374+
// Record의 publicCourse FK를 null로 설정 (Record 테이블 FK 제약조건 해제)
375+
entityManager.createQuery(
376+
"UPDATE Record r SET r.publicCourse = null WHERE r.publicCourse IN :publicCourses")
377+
.setParameter("publicCourses", publicCourses)
378+
.executeUpdate();
379+
380+
// Scrap 삭제 (Scrap 테이블 FK NOT NULL 제약조건)
381+
scrapRepository.deleteByPublicCourseIn(publicCourses);
382+
365383
publicCourseRepository.deleteAllInBatch(publicCourses);
366384

367385
return DeletePublicCoursesResponseDto.from(publicCourses.size());

0 commit comments

Comments
 (0)