From 0e43b249832cf3dd9f227bff4f399f45a5fa60b7 Mon Sep 17 00:00:00 2001 From: Cho Sangwook <82208159+Sangwook02@users.noreply.github.com> Date: Tue, 13 Feb 2024 23:58:35 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=98=A8=EB=B3=B4=EB=94=A9=20=EB=A9=A4?= =?UTF-8?q?=EB=B2=84=20=EC=A0=95=EB=B3=B4=20=EC=88=98=EC=A0=95=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20(#71)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 온보딩 멤버 수정 메서드 구현 * feat: 온보딩 멤버 수정 controller 구현 * feat: 온보딩 멤버 수정 controller 구현 * feat: 온보딩 멤버 수정 dto 구현 * refactor: endpoint 변경 --- .../member/api/OnboardingMemberController.java | 9 +++++++++ .../application/OnboardingMemberService.java | 7 +++++++ .../gdsc/domain/member/domain/Member.java | 7 +++++++ .../dto/request/OnboardingMemberUpdateRequest.java | 14 ++++++++++++++ 4 files changed, 37 insertions(+) create mode 100644 src/main/java/com/gdschongik/gdsc/domain/member/dto/request/OnboardingMemberUpdateRequest.java diff --git a/src/main/java/com/gdschongik/gdsc/domain/member/api/OnboardingMemberController.java b/src/main/java/com/gdschongik/gdsc/domain/member/api/OnboardingMemberController.java index 98288479c..27dab1a84 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/member/api/OnboardingMemberController.java +++ b/src/main/java/com/gdschongik/gdsc/domain/member/api/OnboardingMemberController.java @@ -2,12 +2,14 @@ import com.gdschongik.gdsc.domain.member.application.OnboardingMemberService; import com.gdschongik.gdsc.domain.member.dto.request.MemberSignupRequest; +import com.gdschongik.gdsc.domain.member.dto.request.OnboardingMemberUpdateRequest; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -26,4 +28,11 @@ public ResponseEntity signupMember(@Valid @RequestBody MemberSignupRequest onboardingMemberService.signupMember(request); return ResponseEntity.ok().build(); } + + @Operation(summary = "디스코드 회원 정보 수정", description = "디스코드 회원 정보를 수정합니다.") + @PutMapping("/me/discord") + public ResponseEntity updateMember(@Valid @RequestBody OnboardingMemberUpdateRequest request) { + onboardingMemberService.updateMember(request); + return ResponseEntity.ok().build(); + } } diff --git a/src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java b/src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java index 70cf07efc..5532f1993 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java +++ b/src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java @@ -2,6 +2,7 @@ import com.gdschongik.gdsc.domain.member.domain.Member; import com.gdschongik.gdsc.domain.member.dto.request.MemberSignupRequest; +import com.gdschongik.gdsc.domain.member.dto.request.OnboardingMemberUpdateRequest; import com.gdschongik.gdsc.global.util.MemberUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -20,4 +21,10 @@ public void signupMember(MemberSignupRequest request) { currentMember.signup( request.studentId(), request.name(), request.phone(), request.department(), request.email()); } + + @Transactional + public void updateMember(OnboardingMemberUpdateRequest request) { + Member currentMember = memberUtil.getCurrentMember(); + currentMember.updateDiscordInfo(request.discordUsername(), request.nickname()); + } } diff --git a/src/main/java/com/gdschongik/gdsc/domain/member/domain/Member.java b/src/main/java/com/gdschongik/gdsc/domain/member/domain/Member.java index eff242fde..63162ea86 100644 --- a/src/main/java/com/gdschongik/gdsc/domain/member/domain/Member.java +++ b/src/main/java/com/gdschongik/gdsc/domain/member/domain/Member.java @@ -161,4 +161,11 @@ private void validateUnivStatus() { public void grant() { this.role = MemberRole.USER; } + + public void updateDiscordInfo(String discordUsername, String nickname) { + validateStatusUpdatable(); + + this.discordUsername = discordUsername; + this.nickname = nickname; + } } diff --git a/src/main/java/com/gdschongik/gdsc/domain/member/dto/request/OnboardingMemberUpdateRequest.java b/src/main/java/com/gdschongik/gdsc/domain/member/dto/request/OnboardingMemberUpdateRequest.java new file mode 100644 index 000000000..dc8ed4bd5 --- /dev/null +++ b/src/main/java/com/gdschongik/gdsc/domain/member/dto/request/OnboardingMemberUpdateRequest.java @@ -0,0 +1,14 @@ +package com.gdschongik.gdsc.domain.member.dto.request; + +import static com.gdschongik.gdsc.global.common.constant.RegexConstant.*; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; + +public record OnboardingMemberUpdateRequest( + @NotBlank @Schema(description = "discord username") String discordUsername, + @NotBlank + @Pattern(regexp = NICKNAME, message = "닉네임은 " + NICKNAME + " 형식이어야 합니다.") + @Schema(description = "커뮤니티 닉네임", pattern = NICKNAME) + String nickname) {}