11package com .back .web7_9_codecrete_be .domain .users .service ;
22
33
4+ import com .back .web7_9_codecrete_be .domain .auth .dto .request .SignupRequest ;
45import com .back .web7_9_codecrete_be .domain .auth .service .TokenService ;
56import com .back .web7_9_codecrete_be .domain .email .service .EmailService ;
7+ import com .back .web7_9_codecrete_be .domain .users .dto .request .UserSettingUpdateRequest ;
68import com .back .web7_9_codecrete_be .domain .users .dto .request .UserUpdateNicknameRequest ;
79import com .back .web7_9_codecrete_be .domain .users .dto .request .UserUpdatePasswordRequest ;
810import com .back .web7_9_codecrete_be .domain .users .dto .response .UserResponse ;
11+ import com .back .web7_9_codecrete_be .domain .users .dto .response .UserSettingResponse ;
12+ import com .back .web7_9_codecrete_be .domain .users .entity .SocialType ;
913import com .back .web7_9_codecrete_be .domain .users .entity .User ;
14+ import com .back .web7_9_codecrete_be .domain .users .entity .UserSetting ;
1015import com .back .web7_9_codecrete_be .domain .users .repository .UserRepository ;
1116import com .back .web7_9_codecrete_be .domain .users .repository .UserRestoreTokenRedisRepository ;
1217import com .back .web7_9_codecrete_be .global .error .code .UserErrorCode ;
1924import org .springframework .transaction .annotation .Transactional ;
2025import org .springframework .web .multipart .MultipartFile ;
2126
27+ import java .time .LocalDate ;
2228import java .time .LocalDateTime ;
2329import java .util .UUID ;
2430
@@ -43,6 +49,52 @@ public UserResponse getMyInfo(User user) {
4349 return UserResponse .from (user );
4450 }
4551
52+ // 회원 가입(로컬)
53+ public User createLocalUser (SignupRequest req , String encodedPassword ) {
54+
55+ User user = User .builder ()
56+ .email (req .getEmail ())
57+ .nickname (req .getNickname ())
58+ .password (encodedPassword )
59+ .birth (LocalDate .parse (req .getBirth ()))
60+ .profileImage (req .getProfileImage ())
61+ .socialType (SocialType .LOCAL )
62+ .socialId (null )
63+ .build ();
64+
65+ user .initSetting ();
66+
67+ userRepository .save (user );
68+
69+ return user ;
70+ }
71+
72+ // 회원 가입(소셜)
73+ public User createSocialUser (
74+ String email ,
75+ String nickname ,
76+ String profileImage ,
77+ SocialType socialType ,
78+ String socialId
79+ ) {
80+
81+ User user = User .builder ()
82+ .email (email )
83+ .nickname (nickname )
84+ .password (null )
85+ .birth (null )
86+ .profileImage (profileImage )
87+ .socialType (socialType )
88+ .socialId (socialId )
89+ .build ();
90+
91+ user .initSetting ();
92+
93+ userRepository .save (user );
94+
95+ return user ;
96+ }
97+
4698 // 닉네임 수정
4799 public UserResponse updateNickname (User user , UserUpdateNicknameRequest req ) {
48100 validateActiveUser (user );
@@ -176,4 +228,29 @@ public void restoreByToken(String token) {
176228 userRestoreTokenRedisRepository .delete (token );
177229 }
178230
231+ @ Transactional (readOnly = true )
232+ public UserSettingResponse getMySettings (User user ) {
233+ validateActiveUser (user );
234+
235+ User managedUser = userRepository .findById (user .getId ())
236+ .orElseThrow (() -> new BusinessException (UserErrorCode .USER_NOT_FOUND ));
237+
238+ return UserSettingResponse .from (managedUser .getUserSetting ());
239+ }
240+
241+ public void updateMySettings (User user , UserSettingUpdateRequest req ) {
242+ validateActiveUser (user );
243+
244+ User managedUser = userRepository .findById (user .getId ())
245+ .orElseThrow (() -> new BusinessException (UserErrorCode .USER_NOT_FOUND ));
246+
247+ UserSetting setting = managedUser .getUserSetting ();
248+
249+ if (req .getEmailNotifications () != null ) {
250+ setting .changeEmailNotifications (req .getEmailNotifications ());
251+ }
252+ if (req .getDarkMode () != null ) {
253+ setting .changeDarkMode (req .getDarkMode ());
254+ }
255+ }
179256}
0 commit comments