-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUserServiceImpl.java
More file actions
78 lines (67 loc) · 2.19 KB
/
UserServiceImpl.java
File metadata and controls
78 lines (67 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package app.dearobjet.backend.domain.user.service;
import app.dearobjet.backend.domain.user.entity.User;
import app.dearobjet.backend.domain.user.enums.Role;
import app.dearobjet.backend.domain.user.enums.UserStatus;
import app.dearobjet.backend.domain.user.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@RequiredArgsConstructor
@Transactional
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
/**
* 카카오 OAuth 로그인 사용자 조회 or 생성
*/
@Override
public User getOrCreateKakaoUser(String socialId) {
return userRepository.findBySocialId(socialId)
.orElseGet(() -> createTempUser(socialId));
}
private User createTempUser(String socialId) {
User user = User.builder()
.socialId(socialId)
.role(Role.TEMP)
.userStatus(UserStatus.ACTIVE)
.build();
return userRepository.save(user);
}
/**
* 추가 회원가입 완료
*/
@Override
public void completeSignup(
Long userId,
String name,
String email,
String phoneNumber,
Boolean smsAgreement,
Boolean marketingAgreement,
Role role
) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new IllegalArgumentException("User not found"));
// 이메일 중복 체크
if (userRepository.existsByEmail(email)) {
throw new IllegalStateException("Email already exists");
}
user.completeRegistration(
name,
email,
phoneNumber,
smsAgreement,
marketingAgreement,
role
);
}
/**
* 회원 비활성화
*/
@Override
public void deactivateUser(Long userId) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new IllegalArgumentException("User not found"));
user.deactivate();
}
}