From 6bef86e05f7500b59d97580f09c2acacedcb9bc7 Mon Sep 17 00:00:00 2001 From: dandylsj Date: Fri, 22 May 2026 13:16:31 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9C=A8=20feat:=20=EA=B7=B8=EB=A3=B9?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=201.=20=EB=B0=A9=EC=9E=A5=EC=9D=B8=EC=A7=80?= =?UTF-8?q?=20=EA=B2=80=EC=A6=9D=20=ED=9B=84=20=EA=B7=B8=EB=A3=B9=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=EC=9D=84=20=EB=B3=80=EA=B2=BD=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hatoo/domain/groups/Group.java | 5 ++++ .../hatoo/domain/groups/GroupController.java | 11 +++++++++ .../com/hatoo/domain/groups/GroupService.java | 23 +++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/src/main/java/com/hatoo/domain/groups/Group.java b/src/main/java/com/hatoo/domain/groups/Group.java index 684e8a8..a4c4e8e 100644 --- a/src/main/java/com/hatoo/domain/groups/Group.java +++ b/src/main/java/com/hatoo/domain/groups/Group.java @@ -74,6 +74,11 @@ public void updateInviteCode(String inviteCode, LocalDateTime expiryDate) { this.inviteCodeExpiryDate = expiryDate; } + // 그룹 이름 수정 + public void updateName(String name) { + this.name = name; + } + // 방장 변경 public void changeAssigner(UUID newAssignerId) { this.assignerId = newAssignerId; diff --git a/src/main/java/com/hatoo/domain/groups/GroupController.java b/src/main/java/com/hatoo/domain/groups/GroupController.java index 27f8eca..797c7c1 100644 --- a/src/main/java/com/hatoo/domain/groups/GroupController.java +++ b/src/main/java/com/hatoo/domain/groups/GroupController.java @@ -1,6 +1,7 @@ package com.hatoo.domain.groups; import com.hatoo.domain.groups.dto.*; +import jakarta.validation.Valid; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -106,6 +107,16 @@ public ResponseEntity profileImgSelect( return ResponseEntity.ok(groupService.profileImgSelectApi(authToken, request, groupId)); } + @Operation(summary = "그룹 이름 수정", description = "방장이 그룹 이름을 수정합니다.") + @PatchMapping("/{groupId}/name") + public ResponseEntity updateGroupName( + @Parameter(hidden = true) @RequestHeader("Authorization") String accessToken, + @PathVariable UUID groupId, + @Valid @RequestBody GroupUpdateNameRequest request) { + String token = accessToken.startsWith("Bearer ") ? accessToken.substring(7) : accessToken; + return ResponseEntity.ok(groupService.updateGroupName(token, groupId, request)); + } + @Operation(summary = "그룹별 알림 설정 조회", description = "특정 그룹의 알림 설정을 조회합니다.") @GetMapping("/{groupId}/alarm") public ResponseEntity getGroupAlarmSetting( diff --git a/src/main/java/com/hatoo/domain/groups/GroupService.java b/src/main/java/com/hatoo/domain/groups/GroupService.java index 650ef98..26565eb 100644 --- a/src/main/java/com/hatoo/domain/groups/GroupService.java +++ b/src/main/java/com/hatoo/domain/groups/GroupService.java @@ -409,6 +409,29 @@ public GroupAlarmSettingResponse updateGroupAlarmSetting(String accessToken, UUI return GroupAlarmSettingResponse.from(setting); } + // 그룹 이름 수정 + @Transactional + public boolean updateGroupName(String accessToken, UUID groupId, GroupUpdateNameRequest request) { + + jwtUtil.validateToken(accessToken); + String loginId = jwtUtil.extractLoginId(accessToken); + + User user = userRepository.findByLoginId(loginId) + .orElseThrow(() -> new CustomException(ErrorMessage.USER_NOT_FOUND)); + + Group group = groupRepository.findById(groupId) + .orElseThrow(() -> new CustomException(ErrorMessage.GROUP_NOT_FOUND)); + + // 방장 여부 검증 + if (!user.getId().equals(group.getAssignerId())) { + throw new CustomException(ErrorMessage.NO_DELETE_PERMISSION); + } + + group.updateName(request.getName()); + + return true; + } + // 초대코드 생성 유틸 private String generateInviteCode() { return String.format("%04d", new Random().nextInt(10000)); From dc770bdb5ff2b09c1a13b71283c7bdf0df604b57 Mon Sep 17 00:00:00 2001 From: dandylsj Date: Fri, 22 May 2026 13:18:44 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E2=9C=A8=20feat:=20=EA=B7=B8=EB=A3=B9?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=201.=20=EB=B0=A9=EC=9E=A5=EC=9D=B8=EC=A7=80?= =?UTF-8?q?=20=EA=B2=80=EC=A6=9D=20=ED=9B=84=20=EA=B7=B8=EB=A3=B9=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=EC=9D=84=20=EB=B3=80=EA=B2=BD=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/groups/dto/GroupUpdateNameRequest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/com/hatoo/domain/groups/dto/GroupUpdateNameRequest.java diff --git a/src/main/java/com/hatoo/domain/groups/dto/GroupUpdateNameRequest.java b/src/main/java/com/hatoo/domain/groups/dto/GroupUpdateNameRequest.java new file mode 100644 index 0000000..f7a74c9 --- /dev/null +++ b/src/main/java/com/hatoo/domain/groups/dto/GroupUpdateNameRequest.java @@ -0,0 +1,13 @@ +package com.hatoo.domain.groups.dto; + +import jakarta.validation.constraints.NotBlank; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class GroupUpdateNameRequest { + + @NotBlank(message = "그룹 이름은 필수입니다.") + private String name; +}