사용자 인증 및 계정 관리 | 파트너 회원가입 API 구현

Faithful Dev·2025년 3월 15일

매장 예약 서비스

목록 보기
2/15

구현한 기능

  • 파트너(점장) 회원가입 API 구현
  • 파트너 정보를 저장하는 엔티티 및 관련 클래스 구현
  • 사업자등록번호 및 이메일, 전화번호 중복 체크 로직 구현
  • 파트너 계정 생성 시 자동으로 ROLE_PARTNER 권한 부여 기능

코드 스냅샷

파트너 엔티티 클래스

@Entity
@Table(name = "partners")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Partner {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(unique = true, nullable = false)
    private String email;

    @Column(nullable = false)
    private String password;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private String phone;

    @Column(nullable = false)
    private String businessNumber;

    @Column
    private String businessName;

    @Column
    private String address;

    @Enumerated(EnumType.STRING)
    @Column(nullable = false)
    private UserRole role;

    @CreationTimestamp
    private LocalDateTime createdAt;

    @UpdateTimestamp
    private LocalDateTime updatedAt;

    @Column(nullable = false)
    private boolean active;
}

파트너 DTO 클래스

public class PartnerDto {

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class SignUpRequest {

        @NotBlank(message = "이메일은 필수 입력 항목입니다.")
        @Email(message = "올바른 이메일 형식이 아닙니다.")
        private String email;

        @NotBlank(message = "비밀번호는 필수 입력 항목입니다.")
        @Size(min = 8, message = "비밀번호는 최소 8자 이상이어야 합니다.")
        private String password;

        @NotBlank(message = "이름은 필수 입력 항목입니다.")
        private String name;

        @NotBlank(message = "전화번호는 필수 입력 항목입니다.")
        @Pattern(regexp = "^\\d{10,11}$", message = "전화번호는 10-11자리의 숫자로만 이루어져야 합니다.")
        private String phone;

        @NotBlank(message = "사업자등록번호는 필수 입력 항목입니다.")
        @Pattern(regexp = "^\\d{10}$", message = "사업자등록번호는 10자리의 숫자로만 이루어져야 합니다.")
        private String businessNumber;

        private String businessName;
        private String address;
    }
}

파트너 서비스 중복 체크 로직

@Transactional
public PartnerDto.SignUpResponse signUp(PartnerDto.SignUpRequest request) {
    // 이메일 중복 체크 (일반 사용자, 파트너 모두)
    if (userRepository.existsByEmail(request.getEmail()) || partnerRepository.existsByEmail(request.getEmail())) {
        throw new CustomException(ErrorCode.EMAIL_ALREADY_EXISTS);
    }

    // 전화번호 중복 체크 (일반 사용자, 파트너 모두)
    if (userRepository.existsByPhone(request.getPhone()) || partnerRepository.existsByPhone(request.getPhone())) {
        throw new CustomException(ErrorCode.PHONE_ALREADY_EXISTS);
    }

    // 사업자등록번호 중복 체크
    if (partnerRepository.existsByBusinessNumber(request.getBusinessNumber())) {
        throw new CustomException(ErrorCode.BUSINESS_NUMBER_ALREADY_EXISTS);
    }
    
    // ... 파트너 생성 및 저장 코드
}

Postman 테스트


구현 예정

  • 로그인 API (JWT 토큰 발급)
  • 회원정보 조회/수정 API
profile
Turning Vision into Reality.

0개의 댓글