Skip to content

Commit 17665ce

Browse files
authored
Merge pull request #65 from konkuk-icteam-student/feat/team
[feat] 소속·분류 삭제 시 참조 데이터 존재 여부 검증 추가
2 parents 30338be + ac9f63a commit 17665ce

File tree

8 files changed

+16
-3
lines changed

8 files changed

+16
-3
lines changed

src/main/java/com/better/CommuteMate/category/application/CategoryService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.better.CommuteMate.category.application.dto.response.PutCategoryUpdateResponse;
99
import com.better.CommuteMate.domain.category.entity.Category;
1010
import com.better.CommuteMate.domain.category.repository.CategoryRepository;
11+
import com.better.CommuteMate.domain.category.repository.ManagerCategoryRepository;
1112
import com.better.CommuteMate.domain.faq.repository.FaqRepository;
1213
import com.better.CommuteMate.global.exceptions.CategoryException;
1314
import com.better.CommuteMate.global.exceptions.error.CategoryErrorCode;
@@ -24,6 +25,7 @@ public class CategoryService {
2425

2526
private final CategoryRepository categoryRepository;
2627
private final FaqRepository faqRepository;
28+
private final ManagerCategoryRepository managerCategoryRepository;
2729

2830
public PostCategoryResponse registerCategory(PostCategoryRequest request) {
2931

@@ -65,7 +67,7 @@ public void deleteCategory(Long categoryId) {
6567
Category category = categoryRepository.findById(categoryId)
6668
.orElseThrow(() -> new CategoryException(CategoryErrorCode.CATEGORY_NOT_FOUND));
6769

68-
if (faqRepository.existsByCategoryId(categoryId)) {
70+
if (faqRepository.existsByCategoryId(categoryId)|| managerCategoryRepository.existsByCategoryId(categoryId)) {
6971
throw new CategoryException(CategoryErrorCode.CATEGORY_DELETE_NOT_ALLOWED);
7072
}
7173

src/main/java/com/better/CommuteMate/category/controller/CategoryController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ public ResponseEntity<Response> getCategoryList() {
8686
@ApiResponses(value = {
8787
@ApiResponse(responseCode = "200", description = "카테고리 삭제 성공"),
8888
@ApiResponse(responseCode = "404", description = "존재하지 않는 categoryId"),
89+
@ApiResponse(responseCode = "409", description = "해당 카테고리에 FAQ 또는 담당자가 존재하여 삭제 불가"),
8990
@ApiResponse(responseCode = "500", description = "서버 오류")
9091
})
9192
@DeleteMapping("/{categoryId}")

src/main/java/com/better/CommuteMate/domain/category/repository/ManagerCategoryRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
@Repository
1414
public interface ManagerCategoryRepository extends JpaRepository<ManagerCategory, Long> {
1515
boolean existsByManagerIdAndCategoryId(Long managerId, Long categoryId);
16+
boolean existsByCategoryId(Long categoryId);
1617
Optional<ManagerCategory> findByManagerIdAndCategoryId(Long managerId, Long categoryId);
1718

1819
@Query("""

src/main/java/com/better/CommuteMate/domain/manager/repository/ManagerRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010
@Repository
1111
public interface ManagerRepository extends JpaRepository<Manager, Long> {
1212
Optional<Manager> findByNameAndTeamAndPhonenum(String name, Team team, String phonenum);
13+
boolean existsByTeamId(Long teamId);
1314
}

src/main/java/com/better/CommuteMate/global/exceptions/error/CategoryErrorCode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public enum CategoryErrorCode implements CustomErrorCode {
1010

1111
CATEGORY_NOT_FOUND("존재하지 않는 categoryId입니다.", "[Error] : Category를 찾을 수 없습니다.", HttpStatus.NOT_FOUND),
1212
CATEGORY_ALREADY_EXISTS("이미 존재하는 category 이름입니다.", "[Error] : Category 이름 중복 발생", HttpStatus.CONFLICT),
13-
CATEGORY_DELETE_NOT_ALLOWED("해당 category에 속한 FAQ가 존재하여 삭제할 수 없습니다.", "[Error] : Category 삭제 실패 - FAQ가 존재합니다.", HttpStatus.CONFLICT);
13+
CATEGORY_DELETE_NOT_ALLOWED("해당 category에 속한 FAQ 또는 담당자가 존재하여 삭제할 수 없습니다.", "[Error] : Category 삭제 실패 - FAQ 또는 담당자가 존재합니다.", HttpStatus.CONFLICT);
1414

1515
private final String message;
1616
private final String logMessage;

src/main/java/com/better/CommuteMate/global/exceptions/error/TeamErrorCode.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
public enum TeamErrorCode implements CustomErrorCode {
1010

1111
TEAM_NOT_FOUND("존재하지 않는 TeamId입니다.", "[Error] : Team을 찾을 수 없습니다.", HttpStatus.NOT_FOUND),
12-
TEAM_ALREADY_EXISTS("이미 존재하는 team 이름입니다.", "[Error] : Team 이름 중복 발생", HttpStatus.CONFLICT)
12+
TEAM_ALREADY_EXISTS("이미 존재하는 team 이름입니다.", "[Error] : Team 이름 중복 발생", HttpStatus.CONFLICT),
13+
TEAM_DELETE_NOT_ALLOWED("해당 team에 속한 담당자가 존재하여 삭제할 수 없습니다.", "[Error] : Team 삭제 실패 - 담당자가 존재합니다.", HttpStatus.CONFLICT)
1314
;
1415

1516
private final String message;

src/main/java/com/better/CommuteMate/team/application/TeamService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.better.CommuteMate.team.application;
22

3+
import com.better.CommuteMate.domain.manager.repository.ManagerRepository;
34
import com.better.CommuteMate.domain.team.entity.Team;
45
import com.better.CommuteMate.domain.team.repository.TeamRepository;
56
import com.better.CommuteMate.global.exceptions.TeamException;
@@ -20,6 +21,7 @@
2021
public class TeamService {
2122

2223
private final TeamRepository teamRepository;
24+
private final ManagerRepository managerRepository;
2325

2426
public PostTeamResponse registerTeam(PostTeamRequest request) {
2527

@@ -48,6 +50,10 @@ public void deleteTeam(Long teamId) {
4850
Team team = teamRepository.findById(teamId)
4951
.orElseThrow(() -> new TeamException(TeamErrorCode.TEAM_NOT_FOUND));
5052

53+
if (managerRepository.existsByTeamId(teamId)) {
54+
throw new TeamException(TeamErrorCode.TEAM_DELETE_NOT_ALLOWED);
55+
}
56+
5157
teamRepository.delete(team);
5258
}
5359
}

src/main/java/com/better/CommuteMate/team/controller/TeamController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public ResponseEntity<Response> getTeamList() {
7070
@ApiResponses(value = {
7171
@ApiResponse(responseCode = "200", description = "소속 삭제 성공"),
7272
@ApiResponse(responseCode = "404", description = "존재하지 않는 teamId"),
73+
@ApiResponse(responseCode = "409", description = "해당 소속에 담당자가 존재하여 삭제 불가"),
7374
@ApiResponse(responseCode = "500", description = "서버 오류")
7475
})
7576
@DeleteMapping("/{teamId}")

0 commit comments

Comments
 (0)