Skip to content

Commit d966150

Browse files
committed
♻️Refactor: user service 로직 인터페이스로 분리
1 parent e167f5a commit d966150

File tree

4 files changed

+58
-47
lines changed

4 files changed

+58
-47
lines changed

src/main/java/com/be/sportizebe/domain/user/controller/UserController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.be.sportizebe.domain.user.dto.request.SignUpRequest;
44
import com.be.sportizebe.domain.user.dto.response.SignUpResponse;
5-
import com.be.sportizebe.domain.user.service.UserService;
5+
import com.be.sportizebe.domain.user.service.UserServiceImpl;
66
import com.be.sportizebe.global.response.BaseResponse;
77
import io.swagger.v3.oas.annotations.Operation;
88
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -21,7 +21,7 @@
2121
@Tag(name = "user", description = "사용자 관련 API")
2222
public class UserController {
2323

24-
private final UserService userService;
24+
private final UserServiceImpl userService;
2525

2626
@PostMapping("/signup")
2727
@Operation(summary = "회원가입", description = "이메일과 비밀번호로 회원가입")

src/main/java/com/be/sportizebe/domain/user/service/UserService.java

Lines changed: 3 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,8 @@
22

33
import com.be.sportizebe.domain.user.dto.request.SignUpRequest;
44
import com.be.sportizebe.domain.user.dto.response.SignUpResponse;
5-
import com.be.sportizebe.domain.user.entity.Role;
6-
import com.be.sportizebe.domain.user.entity.User;
7-
import com.be.sportizebe.domain.user.exception.UserErrorCode;
8-
import com.be.sportizebe.domain.user.repository.UserRepository;
9-
import com.be.sportizebe.global.exception.CustomException;
10-
import lombok.RequiredArgsConstructor;
11-
import lombok.extern.slf4j.Slf4j;
12-
import org.springframework.security.crypto.password.PasswordEncoder;
13-
import org.springframework.stereotype.Service;
14-
import org.springframework.transaction.annotation.Transactional;
155

16-
@Service
17-
@Slf4j
18-
@RequiredArgsConstructor
19-
public class UserService {
6+
public interface UserService {
207

21-
private final UserRepository userRepository;
22-
private final PasswordEncoder passwordEncoder;
23-
24-
@Transactional
25-
public SignUpResponse signUp(SignUpRequest request) {
26-
27-
// 사용자 아이디 중복 체크
28-
if (userRepository.existsByUsername(request.username())) {
29-
throw new CustomException(UserErrorCode.DUPLICATE_USERNAME);
30-
}
31-
32-
// 사용자 닉네임 중복 체크
33-
if (userRepository.existsByNickname(request.nickName())) {
34-
throw new CustomException(UserErrorCode.DUPLICATE_NICKNAME);
35-
}
36-
37-
String encodedPassword = passwordEncoder.encode(request.password());
38-
39-
User user = User.builder()
40-
.username(request.username())
41-
.password(encodedPassword)
42-
.nickname(request.nickName())
43-
.role(Role.USER)
44-
.build();
45-
46-
User savedUser = userRepository.save(user);
47-
log.info("새로운 사용자 생성: {}", savedUser.getUsername());
48-
49-
return SignUpResponse.from(savedUser);
50-
}
51-
}
8+
SignUpResponse signUp(SignUpRequest request); // 회원가입
9+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.be.sportizebe.domain.user.service;
2+
3+
import com.be.sportizebe.domain.user.dto.request.SignUpRequest;
4+
import com.be.sportizebe.domain.user.dto.response.SignUpResponse;
5+
import com.be.sportizebe.domain.user.entity.Role;
6+
import com.be.sportizebe.domain.user.entity.User;
7+
import com.be.sportizebe.domain.user.exception.UserErrorCode;
8+
import com.be.sportizebe.domain.user.repository.UserRepository;
9+
import com.be.sportizebe.global.exception.CustomException;
10+
import lombok.RequiredArgsConstructor;
11+
import lombok.extern.slf4j.Slf4j;
12+
import org.springframework.security.crypto.password.PasswordEncoder;
13+
import org.springframework.stereotype.Service;
14+
import org.springframework.transaction.annotation.Transactional;
15+
16+
@Service
17+
@Slf4j
18+
@RequiredArgsConstructor
19+
public class UserServiceImpl implements UserService {
20+
21+
private final UserRepository userRepository;
22+
private final PasswordEncoder passwordEncoder;
23+
24+
@Override
25+
@Transactional
26+
public SignUpResponse signUp(SignUpRequest request) {
27+
28+
// 사용자 아이디 중복 체크
29+
if (userRepository.existsByUsername(request.username())) {
30+
throw new CustomException(UserErrorCode.DUPLICATE_USERNAME);
31+
}
32+
33+
// 사용자 닉네임 중복 체크
34+
if (userRepository.existsByNickname(request.nickName())) {
35+
throw new CustomException(UserErrorCode.DUPLICATE_NICKNAME);
36+
}
37+
38+
String encodedPassword = passwordEncoder.encode(request.password());
39+
40+
User user = User.builder()
41+
.username(request.username())
42+
.password(encodedPassword)
43+
.nickname(request.nickName())
44+
.role(Role.USER)
45+
.build();
46+
47+
User savedUser = userRepository.save(user);
48+
log.info("새로운 사용자 생성: {}", savedUser.getUsername());
49+
50+
return SignUpResponse.from(savedUser);
51+
}
52+
}

src/main/java/com/be/sportizebe/global/s3/service/S3ServiceImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public class S3ServiceImpl implements S3Service {
3030

3131
@Override
3232
public String uploadFile(PathName pathName, MultipartFile file) {
33+
3334
validateFile(file);
3435

3536
String fileName = createFileName(pathName, file.getOriginalFilename());

0 commit comments

Comments
 (0)