Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

야놀자 페이 패스워드 설정 API 구현 #87

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package kr.co.fastcampus.yanabada.common.exception;

import static kr.co.fastcampus.yanabada.common.response.ErrorCode.PASSWORD_CONFIRMATION_DOES_NOT_MATCH;

public class PasswordConfirmationException extends BaseException {
public PasswordConfirmationException() {
super(PASSWORD_CONFIRMATION_DOES_NOT_MATCH.getMessage());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public enum ErrorCode {
CANNOT_NEGOTIATE_OWN_PRODUCT("자신이 등록한 상품을 네고할 순 없습니다."),
CHAT_ROOM_NOT_FOUND_EXCEPTION("존재하지 않은 채팅방입니다."),
INCORRECT_CHAT_ROOM_MEMBER("채팅방 멤버가 올바르지 않습니다."),
PASSWORD_CONFIRMATION_DOES_NOT_MATCH("입력한 비밀번호가 서로 일치하지 않습니다."),

EMAIL_SEND_FAILED("이메일 전송에 실패하였습니다."),

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
package kr.co.fastcampus.yanabada.domain.payment.controller;

import jakarta.validation.Valid;
import kr.co.fastcampus.yanabada.common.exception.MemberNotFoundException;
import kr.co.fastcampus.yanabada.common.exception.PasswordConfirmationException;
import kr.co.fastcampus.yanabada.common.exception.YanoljaPayNotFoundException;
import kr.co.fastcampus.yanabada.common.response.ResponseBody;
import kr.co.fastcampus.yanabada.domain.payment.dto.request.PayPasswordRequest;
import kr.co.fastcampus.yanabada.domain.payment.dto.response.YanoljaPayHomeResponse;
import kr.co.fastcampus.yanabada.domain.payment.service.YanoljaPayService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

Expand All @@ -20,5 +30,14 @@ public class YanoljaPayController {
public ResponseBody<YanoljaPayHomeResponse> getYanoljaPay(@PathVariable Long memberId) {
return ResponseBody.ok(yanoljaPayService.getYanoljaPay(memberId));
}

@PostMapping("/payPassword/{memberId}")
deltawing71911 marked this conversation as resolved.
Show resolved Hide resolved
public ResponseBody<ResponseEntity<?>> setPayPassword(
deltawing71911 marked this conversation as resolved.
Show resolved Hide resolved
@PathVariable("memberId") Long memberId,
@RequestBody @Valid PayPasswordRequest payPasswordRequest
deltawing71911 marked this conversation as resolved.
Show resolved Hide resolved
) {
yanoljaPayService.setPayPassword(memberId, payPasswordRequest);
return ResponseBody.ok(ResponseEntity.ok().build());
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package kr.co.fastcampus.yanabada.domain.payment.dto.request;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.Builder;

@Builder
public record PayPasswordRequest(
@NotBlank(message = "패스워드는 공백일 수 없습니다.")
@Pattern(regexp = "\\d{6}", message = "패스워드는 6글자이어야 합니다.")
String password,
@NotBlank(message = "확인용 패스워드도 공백일 수 없습니다.")
String confirmPassword
) {

public boolean isPasswordMatch() {
return this.password.equals(this.confirmPassword);
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
package kr.co.fastcampus.yanabada.domain.payment.repository;

import io.lettuce.core.dynamic.annotation.Param;
import jakarta.validation.constraints.Pattern;
import java.util.Optional;
import kr.co.fastcampus.yanabada.domain.member.entity.Member;
import kr.co.fastcampus.yanabada.domain.payment.entity.YanoljaPay;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

public interface YanoljaPayRepository extends JpaRepository<YanoljaPay, Long> {

Optional<YanoljaPay> findByMember(Member member);

@Modifying
@Query("UPDATE YanoljaPay y SET y.simplePassword = :password WHERE y.member = :member")
void updateSimplePassword(@Param("member") Member member, @Param("password") String password);
deltawing71911 marked this conversation as resolved.
Show resolved Hide resolved
}

Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package kr.co.fastcampus.yanabada.domain.payment.service;

import kr.co.fastcampus.yanabada.common.exception.MemberNotFoundException;
import kr.co.fastcampus.yanabada.common.exception.PasswordConfirmationException;
import kr.co.fastcampus.yanabada.common.exception.YanoljaPayNotFoundException;
import kr.co.fastcampus.yanabada.domain.member.entity.Member;
import kr.co.fastcampus.yanabada.domain.member.repository.MemberRepository;
import kr.co.fastcampus.yanabada.domain.payment.dto.request.PayPasswordRequest;
import kr.co.fastcampus.yanabada.domain.payment.dto.response.YanoljaPayHomeResponse;
import kr.co.fastcampus.yanabada.domain.payment.entity.YanoljaPay;
import kr.co.fastcampus.yanabada.domain.payment.repository.YanoljaPayRepository;
Expand Down Expand Up @@ -30,4 +33,16 @@ private YanoljaPayHomeResponse getYanoljaPay(Member member) {

return YanoljaPayHomeResponse.from(yanoljaPay);
}

@Transactional
public void setPayPassword(Long memberId, PayPasswordRequest payPasswordRequest) {
if (!payPasswordRequest.isPasswordMatch()) {
throw new PasswordConfirmationException();
}

Member member = memberRepository.findById(memberId)
deltawing71911 marked this conversation as resolved.
Show resolved Hide resolved
.orElseThrow(MemberNotFoundException::new);

yanoljaPayRepository.updateSimplePassword(member, payPasswordRequest.password());
deltawing71911 marked this conversation as resolved.
Show resolved Hide resolved
}
}
Loading