From 566b519013ede8d1ad7408645eb35fdca4449185 Mon Sep 17 00:00:00 2001 From: Jeyong Date: Thu, 17 Apr 2025 19:07:38 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[fix]=20enum=20=ED=95=9C=EA=B8=80=20?= =?UTF-8?q?=EB=A7=A4=EC=B9=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/Group/enums/CategoryStatus.java | 30 +++++++++++++++-- .../domain/Group/enums/GroupRole.java | 28 ++++++++++++++-- .../domain/Group/enums/RequestStatus.java | 32 ++++++++++++++++--- .../Recruitment/enums/RecruitmentStatus.java | 28 ++++++++++++++-- 4 files changed, 107 insertions(+), 11 deletions(-) diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/CategoryStatus.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/CategoryStatus.java index 0ec8770..bc3e9d6 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/CategoryStatus.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/CategoryStatus.java @@ -1,7 +1,31 @@ package MathCaptain.weakness.domain.Group.enums; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + public enum CategoryStatus { - FITNESS, - STUDY, - RUNNING + FITNESS("헬스"), + STUDY("공부"), + RUNNING("러닝"); + + private final String value; + + CategoryStatus(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @JsonCreator + public static CategoryStatus fromValue(String value) { + for (CategoryStatus status : CategoryStatus.values()) { + if (status.value.equals(value) || status.name().equals(value)) { + return status; + } + } + throw new IllegalArgumentException("정의되지 않은 값 입니다 : " + value); + } } diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/GroupRole.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/GroupRole.java index 4995603..35519b7 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/GroupRole.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/GroupRole.java @@ -1,6 +1,30 @@ package MathCaptain.weakness.domain.Group.enums; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + public enum GroupRole { - LEADER, - MEMBER + LEADER("그룹장"), + MEMBER("멤버"); + + private final String value; + + GroupRole(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @JsonCreator + public static GroupRole fromValue(String value) { + for (GroupRole role : GroupRole.values()) { + if (role.value.equals(value) || role.name().equals(value)) { + return role; + } + } + throw new IllegalArgumentException("정의되지 않은 값 입니다 : " + value); + } } diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/RequestStatus.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/RequestStatus.java index 4f15199..34ee4b2 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/RequestStatus.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Group/enums/RequestStatus.java @@ -1,8 +1,32 @@ package MathCaptain.weakness.domain.Group.enums; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + public enum RequestStatus { - WAITING, - ACCEPTED, - REJECTED, - CANCELED + WAITING("가입요청 중"), + ACCEPTED("가입요청 수락"), + REJECTED("가입요청 거절"), + CANCELED("가입요청 취소"); + + private final String value; + + RequestStatus(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @JsonCreator + public static RequestStatus fromValue(String value) { + for (RequestStatus status : RequestStatus.values()) { + if (status.value.equals(value) || status.name().equals(value)) { + return status; + } + } + throw new IllegalArgumentException("정의되지 않은 값 입니다 : " + value); + } } diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/enums/RecruitmentStatus.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/enums/RecruitmentStatus.java index ad493e7..be98488 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/enums/RecruitmentStatus.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/enums/RecruitmentStatus.java @@ -1,7 +1,31 @@ package MathCaptain.weakness.domain.Recruitment.enums; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + public enum RecruitmentStatus { // 모집중, 모집종료 - RECRUITING, - END + RECRUITING("모집중"), + END("모집종료"); + + private final String value; + + RecruitmentStatus(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @JsonCreator + public static RecruitmentStatus fromValue(String value) { + for (RecruitmentStatus status : RecruitmentStatus.values()) { + if (status.value.equals(value) || status.name().equals(value)) { + return status; + } + } + throw new IllegalArgumentException("정의되지 않은 값 입니다 : " + value); + } } From bb19c4af8d98a77a71cece5e3936f40c4df0fe4a Mon Sep 17 00:00:00 2001 From: Jeyong Date: Thu, 17 Apr 2025 19:08:33 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[style]=20=EC=BD=94=EB=93=9C=20=EA=B3=B5?= =?UTF-8?q?=EB=B0=B1=20=EB=B0=8F=20=ED=85=8C=EC=9D=B4=EB=B8=94=EB=AA=85=20?= =?UTF-8?q?=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weakness/domain/Record/entity/UserLog/FitnessDetail.java | 2 +- .../weakness/domain/Record/service/RecordService.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/entity/UserLog/FitnessDetail.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/entity/UserLog/FitnessDetail.java index bfd1d8d..7d7bcbe 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/entity/UserLog/FitnessDetail.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/entity/UserLog/FitnessDetail.java @@ -32,7 +32,7 @@ public class FitnessDetail { @ElementCollection @CollectionTable( name = "fitnessdetail_exerciseinfolist", - joinColumns = @JoinColumn(name = "fitness detail_id") + joinColumns = @JoinColumn(name = "fitness_detail_id") ) private List exerciseInfoList; diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/service/RecordService.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/service/RecordService.java index dc69023..3b9c520 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/service/RecordService.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Record/service/RecordService.java @@ -53,7 +53,7 @@ public RecordSummaryResponse endActivity(Users user, Long groupId, ActivityLogEn ActivityRecord record = ActivityRecord.of(relation, logRequest); updateGoalAchieve(relation, record); - recordRepository.save(record); + recordRepository.save(record); // 활동 로그 저장 및 응답 생성 return createRecordSummaryResponse(activityType, logRequest, record, relation); From c2bfc247a80ef5b95a1fbc982373ea29186d7d21 Mon Sep 17 00:00:00 2001 From: Jeyong Date: Thu, 17 Apr 2025 19:09:04 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[fix]=20DTO=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EB=82=B4=EC=9A=A9=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/MathCaptain/weakness/TestInit.java | 37 ++++++++++++++----- .../response/RecruitmentDetailResponse.java | 10 ++++- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/TestInit.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/TestInit.java index cbb613f..7c90d10 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/TestInit.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/TestInit.java @@ -67,17 +67,17 @@ public void init() { SaveUserRequest saveUserRequest1 = SaveUserRequest.of( email1, passwordEncoder.encode("password1"), - "tester01", "tester01", "01012345678" + "테스트 유저 1", "테스트 유저 1", "01012345678" ); SaveUserRequest saveUserRequest2 = SaveUserRequest.of( email2, passwordEncoder.encode("password2"), - "tester02", "tester02", "01056781234" + "테스트 유저 2", "테스트 유저 2", "01056781234" ); SaveUserRequest saveUserRequest3 = SaveUserRequest.of( email3, passwordEncoder.encode("test"), - "tester", "tester", "01011112111" + "테스트", "테스터", "01011112111" ); /// 테스트 유저 생성 @@ -107,22 +107,39 @@ public void init() { .orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")); /// 테스트 그룹 생성 - GroupCreateRequest groupCreateRequest1 = GroupCreateRequest.of(users1.getUserId(), "testGroup1", + GroupCreateRequest groupCreateRequest1 = GroupCreateRequest.of(users1.getUserId(), "테스트그룹1", CategoryStatus.STUDY, 2, 3, 0L, null, "test1", 3, 4); - GroupCreateRequest groupCreateRequest2 = GroupCreateRequest.of(users1.getUserId(), "testGroup2", + GroupCreateRequest groupCreateRequest2 = GroupCreateRequest.of(users1.getUserId(), "테스트그룹2", CategoryStatus.FITNESS, 2, 3, 0L, null, "test2", 3, 4); - GroupCreateRequest groupCreateRequest3 = GroupCreateRequest.of(users1.getUserId(), "testGroup3", + GroupCreateRequest groupCreateRequest3 = GroupCreateRequest.of(users1.getUserId(), "테스트그룹3", + CategoryStatus.RUNNING, 2, 3, 0L, null, "test3", 3, 4); + + GroupCreateRequest groupCreateRequest4 = GroupCreateRequest.of(users1.getUserId(), "테스트그룹4", + CategoryStatus.RUNNING, 2, 3, 0L, null, "test4", 3, 4); + + GroupCreateRequest groupCreateRequest5 = GroupCreateRequest.of(users1.getUserId(), "테스트그룹5", CategoryStatus.RUNNING, 2, 3, 0L, null, "test3", 3, 4); Group group1 = Group.of(groupCreateRequest1); Group group2 = Group.of(groupCreateRequest2); Group group3 = Group.of(groupCreateRequest3); + Group group4 = Group.of(groupCreateRequest4); + Group group5 = Group.of(groupCreateRequest5); + + group1.addPoint(300L); + group2.addPoint(200L); + group3.addPoint(100L); + group4.addPoint(50L); + group5.addPoint(10L); groupRepository.save(group1); groupRepository.save(group2); groupRepository.save(group3); + groupRepository.save(group4); + groupRepository.save(group5); + group3.updateWeeklyGoalAchieveMap(DayOfWeek.MONDAY, 2); group3.updateWeeklyGoalAchieveMap(DayOfWeek.TUESDAY, 4); @@ -139,9 +156,11 @@ public void init() { RelationBetweenUserAndGroup join2 = RelationBetweenUserAndGroup.of(users2, group2, groupCreateRequest2); RelationBetweenUserAndGroup join3 = RelationBetweenUserAndGroup.of(users3, group3, groupCreateRequest3); + RelationBetweenUserAndGroup join4 = RelationBetweenUserAndGroup.of(users3, group1, 3, 4); relationRepository.save(join1); relationRepository.save(join2); relationRepository.save(join3); + relationRepository.save(join4); for (int i = 4; i <= 12; i++) { Users member = userRepository.findByUserId((long) i) @@ -152,14 +171,14 @@ public void init() { log.info("======== 👥 테스트 관계 데이터 생성 완료 ========="); - CreateRecruitmentRequest createRecruitmentRequest = CreateRecruitmentRequest.of(group1.getId(), "testRecruitment", "testContent"); + CreateRecruitmentRequest createRecruitmentRequest = CreateRecruitmentRequest.of(group1.getId(), "그룹 1 모집글", "테스트"); Recruitment recruitment = Recruitment.of(users1, group1, createRecruitmentRequest); recruitmentRepository.save(recruitment); log.info("======== 🔖테스트 모집글 생성 완료 ========="); /// 테스트 댓글 생성 - Comment comment = Comment.of(recruitment, users1, "testComment"); + Comment comment = Comment.of(recruitment, users1, "테스트 댓글"); commentRepository.save(comment); log.info("======== 💬테스트 댓글 생성 완료 ========="); @@ -170,7 +189,7 @@ public void init() { LocalDateTime startOfWeek = LocalDateTime.now().with(java.time.temporal.TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); // User ID: 4 -> currentProgress: 5 - createActivityRecords(userRepository.findByUserId(4L) + createActivityRecords(userRepository.findByUserId(3L) .orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다.")), group3, startOfWeek, 5, CategoryStatus.RUNNING, chestList); diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/dto/response/RecruitmentDetailResponse.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/dto/response/RecruitmentDetailResponse.java index 34ac28d..083fe2a 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/dto/response/RecruitmentDetailResponse.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/dto/response/RecruitmentDetailResponse.java @@ -12,6 +12,10 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) public class RecruitmentDetailResponse { + private Long authorId; + + private Long recruitGroupId; + private String authorName; private String recruitGroupName; @@ -31,9 +35,11 @@ public class RecruitmentDetailResponse { private List comments; @Builder - private RecruitmentDetailResponse(String authorName, String recruitGroupName, String title, + private RecruitmentDetailResponse(Long authorId, Long recruitGroupId, String authorName, String recruitGroupName, String title, CategoryStatus category, String content, RecruitmentStatus recruitmentStatus, LocalDateTime createdAt, LocalDateTime updatedAt, List comments) { + this.authorId = authorId; + this.recruitGroupId = recruitGroupId; this.authorName = authorName; this.recruitGroupName = recruitGroupName; this.title = title; @@ -47,6 +53,8 @@ private RecruitmentDetailResponse(String authorName, String recruitGroupName, St public static RecruitmentDetailResponse of(Recruitment recruitment, List comments) { return RecruitmentDetailResponse.builder() + .authorId(recruitment.getAuthor().getUserId()) + .recruitGroupId(recruitment.getRecruitGroup().getId()) .authorName(recruitment.getAuthor().getName()) .recruitGroupName(recruitment.getRecruitGroup().getName()) .title(recruitment.getTitle()) From c89634b1481666401b4fcf20abbd308c6454a9c4 Mon Sep 17 00:00:00 2001 From: Jeyong Date: Thu, 17 Apr 2025 19:24:04 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[fix]=20=EA=B7=B8=EB=A3=B9=20=EB=AA=A8?= =?UTF-8?q?=EC=A7=91=EA=B8=80=20=EC=9E=91=EC=84=B1=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/MathCaptain/weakness/TestInit.java | 2 +- .../controller/RecruitmentController.java | 11 +++----- .../dto/request/CreateRecruitmentRequest.java | 11 +++----- .../service/RecruitmentService.java | 26 +++++++++---------- 4 files changed, 19 insertions(+), 31 deletions(-) diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/TestInit.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/TestInit.java index 7c90d10..fe914dc 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/TestInit.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/TestInit.java @@ -171,7 +171,7 @@ public void init() { log.info("======== 👥 테스트 관계 데이터 생성 완료 ========="); - CreateRecruitmentRequest createRecruitmentRequest = CreateRecruitmentRequest.of(group1.getId(), "그룹 1 모집글", "테스트"); + CreateRecruitmentRequest createRecruitmentRequest = CreateRecruitmentRequest.of("그룹 1 모집글", "테스트"); Recruitment recruitment = Recruitment.of(users1, group1, createRecruitmentRequest); recruitmentRepository.save(recruitment); diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/controller/RecruitmentController.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/controller/RecruitmentController.java index 88a54bf..960cc5d 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/controller/RecruitmentController.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/controller/RecruitmentController.java @@ -36,16 +36,11 @@ public ApiResponse> recruitmentList() { return recruitmentService.getAllRecruitments(); } - // 모집글 작성 요청 - @GetMapping("/create") - public ApiResponse createRecruitmentPage(@LoginUser Users loginUser) { - return recruitmentService.createRequest(loginUser); - } - // 모집글 생성 @PostMapping("/create") - public ApiResponse createRecruitment(@Valid @LoginUser Users loginUser, - @RequestBody CreateRecruitmentRequest createRecruitmentRequest) { + public ApiResponse createRecruitment( + @Valid @LoginUser Users loginUser, + @RequestBody CreateRecruitmentRequest createRecruitmentRequest) { return recruitmentService.createRecruitment(loginUser, createRecruitmentRequest); } diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/dto/request/CreateRecruitmentRequest.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/dto/request/CreateRecruitmentRequest.java index 34fcee2..07395af 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/dto/request/CreateRecruitmentRequest.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/dto/request/CreateRecruitmentRequest.java @@ -9,10 +9,6 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) public class CreateRecruitmentRequest { - @NotNull(message = "그룹을 입력해주세요!") - @NotEmpty(message = "그룹을 입력해주세요!") - private Long recruitGroupId; - @NotNull(message = "제목을 입력해주세요!") @NotEmpty(message = "제목을 입력해주세요!") @Size(max = 30, message = "제목은 30자 이내로 작성해주세요!") @@ -22,13 +18,12 @@ public class CreateRecruitmentRequest { @NotEmpty(message = "내용을 입력해주세요!") private String content; - private CreateRecruitmentRequest(Long recruitGroupId, String title, String content) { - this.recruitGroupId = recruitGroupId; + private CreateRecruitmentRequest(String title, String content) { this.title = title; this.content = content; } - public static CreateRecruitmentRequest of(Long recruitGroupId, String title, String content) { - return new CreateRecruitmentRequest(recruitGroupId, title, content); + public static CreateRecruitmentRequest of(String title, String content) { + return new CreateRecruitmentRequest(title, content); } } diff --git a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/service/RecruitmentService.java b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/service/RecruitmentService.java index 7e339a0..4ea3d63 100644 --- a/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/service/RecruitmentService.java +++ b/MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Recruitment/service/RecruitmentService.java @@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Optional; @Service @Slf4j @@ -32,20 +33,17 @@ public class RecruitmentService { private final CommentService commentService; /// 모집 CRUD - // 모집글 작성 요청 (그룹 정보 반환) - public ApiResponse createRequest(Users user) { - RelationBetweenUserAndGroup relation = findLeaderRelationBy(user); - return ApiResponse.ok(RecruitmentCreateResponse.of(relation)); - } // 모집글 생성 - public ApiResponsecreateRecruitment(Users author, CreateRecruitmentRequest createRecruitmentRequest) { - Group group = getGroupBy(createRecruitmentRequest); + public ApiResponsecreateRecruitment(Users author, CreateRecruitmentRequest createRecruitmentRequest) { + Group group = findLeaderGroupByUser(author); Recruitment recruitment = Recruitment.of(author, group, createRecruitmentRequest); - Long recruitmentId = recruitmentRepository.save(recruitment).getPostId(); - return ApiResponse.ok(recruitmentId); + recruitmentRepository.save(recruitment); + RecruitmentDetailResponse recruitmentResponse = RecruitmentDetailResponse.of(recruitment, List.of()); + return ApiResponse.ok(recruitmentResponse); } + // 모집글 조회 public ApiResponse getRecruitment(Long recruitmentId) { Recruitment recruitment = findRecruitmentBy(recruitmentId); @@ -74,11 +72,6 @@ public ApiResponse> getAllRecruitments() { .toList()); } - private Group getGroupBy(CreateRecruitmentRequest createRecruitmentRequest) { - return groupRepository.findById(createRecruitmentRequest.getRecruitGroupId()). - orElseThrow(() -> new ResourceNotFoundException("해당 그룹이 없습니다.")); - } - private RelationBetweenUserAndGroup findLeaderRelationBy(Users user) { return relationRepository.findByMemberAndGroupRole(user, GroupRole.LEADER) .orElseThrow(() -> new IllegalArgumentException("그룹장만 모집글을 작성할 수 있습니다.")); @@ -89,4 +82,9 @@ private Recruitment findRecruitmentBy(Long recruitmentId) { orElseThrow(() -> new ResourceNotFoundException("해당 모집글이 없습니다.")); } + private Group findLeaderGroupByUser(Users author) { + RelationBetweenUserAndGroup relation = relationRepository.findByMemberAndGroupRole(author, GroupRole.LEADER) + .orElseThrow(() -> new ResourceNotFoundException("그룹장으로 가입된 그룹이 없습니다.")); + return relation.getGroup(); + } }