@@ -23,22 +23,6 @@ public User findById(Long id) {
2323 .orElseThrow (() -> new IllegalArgumentException ("User not found. id=" + id ));
2424 }
2525
26- // 소셜로그인으로 회원가입 & 회원 정보 수정
27- public RsData <User > modifyOrJoin (String oauthId , String email , String nickname ) {
28-
29- //oauthId로 기존 회원인지 확인
30- User User = userRepository .findByOauthId (oauthId ).orElse (null );
31-
32- // 기존 회원이 아니면 소셜로그인으로 회원가입 진행
33- if (User == null ) {
34- User = joinSocial (oauthId , email , nickname );
35- return new RsData <>(201 , "회원가입이 완료되었습니다." , User );
36- }
37-
38- // 기존 회원이면 회원 정보 수정
39- modifySocial (User , nickname );
40- return new RsData <>(200 , "회원 정보가 수정되었습니다." , User );
41- }
4226
4327 public User joinSocial (String oauthId , String email , String nickname ){
4428 userRepository .findByOauthId (oauthId )
@@ -52,44 +36,32 @@ public User joinSocial(String oauthId, String email, String nickname){
5236 User user = User .builder ()
5337 .email (email )
5438 .nickname (uniqueNickname )
55- .profileImgUrl (null )
5639 .abvDegree (0.0 )
40+ .createdAt (LocalDateTime .now ())
41+ .updatedAt (LocalDateTime .now ())
5742 .role ("USER" )
5843 .oauthId (oauthId )
5944 .build ();
6045
6146 return userRepository .save (user );
6247 }
6348
64- public void modifySocial (User user , String nickname ){
65- user .setNickname (nickname );
66- userRepository .save (user );
67- }
68-
69- public RsData <User > findOrCreateOAuthUser (String oauthId , String email , String nickname , String provider ) {
49+ @ Transactional
50+ public RsData <User > findOrCreateOAuthUser (String oauthId , String email , String nickname ) {
7051 Optional <User > existingUser = userRepository .findByOauthId (oauthId );
7152
7253 if (existingUser .isPresent ()) {
7354 // 기존 사용자 업데이트 (이메일만 업데이트)
7455 User user = existingUser .get ();
7556 user .setEmail (email );
76- return RsData .of (200 , "기존 사용자 정보 업데이트" , userRepository . save ( user ));
57+ return RsData .of (200 , "회원 정보가 업데이트 되었습니다 " , user ); //더티체킹
7758 } else {
78- // 새 사용자 생성 - 고유한 닉네임 생성
79- String uniqueNickname = generateUniqueNickname (nickname );
80- User newUser = User .builder ()
81- .oauthId (oauthId )
82- .email (email )
83- .nickname (uniqueNickname )
84- .provider (provider )
85- .role ("USER" )
86- .createdAt (LocalDateTime .now ())
87- .build ();
88- return RsData .of (201 , "새 사용자 생성" , userRepository .save (newUser ));
59+ User newUser = joinSocial (oauthId , email , nickname );
60+ return RsData .of (201 , "사용자가 생성되었습니다" , newUser );
8961 }
9062 }
9163
92- private String generateUniqueNickname (String baseNickname ) {
64+ public String generateUniqueNickname (String baseNickname ) {
9365 // null이거나 빈 문자열인 경우 기본값 설정
9466 if (baseNickname == null || baseNickname .trim ().isEmpty ()) {
9567 baseNickname = "User" ;
0 commit comments