구현한 기능
- 파트너(점장) 회원가입 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