Skip to content

Commit dcefa46

Browse files
committed
feature : 유저 언어 기본 1번으로 세팅, 유저 정보 get 요청 시 선택한 언어 노출
1 parent d16d016 commit dcefa46

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
lines changed

src/main/java/org/ezcode/codetest/application/usermanagement/auth/service/AuthService.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import org.ezcode.codetest.application.usermanagement.user.dto.response.ChangeUserPasswordResponse;
1717
import org.ezcode.codetest.application.usermanagement.user.dto.response.LogoutResponse;
1818
import org.ezcode.codetest.application.usermanagement.user.dto.response.VerifyFindPasswordResponse;
19+
import org.ezcode.codetest.domain.language.model.entity.Language;
20+
import org.ezcode.codetest.domain.language.service.LanguageDomainService;
1921
import org.ezcode.codetest.domain.user.exception.AuthException;
2022
import org.ezcode.codetest.domain.user.exception.UserException;
2123
import org.ezcode.codetest.domain.user.exception.code.AuthExceptionCode;
@@ -41,6 +43,7 @@
4143
public class AuthService {
4244

4345
private final UserDomainService userDomainService;
46+
private final LanguageDomainService languageDomainService;
4447
private final JwtUtil jwtUtil;
4548
private final RedisTemplate<String, String> redisTemplate;
4649
private final MailService mailService;
@@ -80,12 +83,14 @@ private void userRegisterationProcess(SignupRequest request) {
8083
//3. 만약 아예 첫 가입 유저일 때
8184
private void createNewUser(SignupRequest request, String encodedPassword) {
8285
String nickname = userDomainService.generateUniqueNickname();
86+
Language language = languageDomainService.getLanguage(1L); //기본적으로 1번 언어로 가입 시 세팅
8387
User newUser = User.emailUser(
8488
request.getEmail(),
8589
encodedPassword,
8690
request.getUsername(),
8791
nickname,
88-
request.getAge()
92+
request.getAge(),
93+
language
8994
);
9095

9196
userDomainService.createUser(newUser);

src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/response/UserInfoResponse.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.ezcode.codetest.application.usermanagement.user.dto.response;
22

3+
import org.ezcode.codetest.domain.language.model.entity.Language;
34
import org.ezcode.codetest.domain.user.model.entity.User;
45
import org.ezcode.codetest.domain.user.model.enums.Tier;
56
import org.ezcode.codetest.domain.user.model.enums.UserRole;
@@ -47,10 +48,14 @@ public class UserInfoResponse {
4748
@Schema(description = "사용자가 푼 문제 총 개수", example = "1235")
4849
private final int totalSolvedCount;
4950

51+
@Schema(description = "사용자가 선택한 언어. 기본적으로 1번 언어로 세팅됩니다", example = "1")
52+
private final Language language;
53+
5054
@Builder
5155
public UserInfoResponse(String username, String email, String nickname, UserRole userRole, Tier tier,
5256
Integer age, String githubUrl, String blogUrl, String profileImageUrl, String introduction, boolean verified,
53-
int totalSolvedCount) {
57+
int totalSolvedCount,
58+
Language language) {
5459
this.username = username;
5560
this.email = email;
5661
this.nickname = nickname;
@@ -63,6 +68,7 @@ public UserInfoResponse(String username, String email, String nickname, UserRole
6368
this.userRole = userRole;
6469
this.verified = verified;
6570
this.totalSolvedCount = totalSolvedCount;
71+
this.language = language;
6672
}
6773

6874
public static UserInfoResponse fromEntity(User user) {

src/main/java/org/ezcode/codetest/application/usermanagement/user/service/UserService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public UserInfoResponse getUserInfo(AuthUser authUser) {
6969
.tier(user.getTier())
7070
.verified(user.isVerified())
7171
.totalSolvedCount(userSubmissionCount)
72+
.language(user.getLanguage())
7273
.build();
7374
}
7475

src/main/java/org/ezcode/codetest/domain/user/model/entity/User.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,23 @@
44
import java.util.List;
55

66
import org.ezcode.codetest.common.base.entity.BaseEntity;
7+
import org.ezcode.codetest.domain.language.model.entity.Language;
78
import org.ezcode.codetest.domain.user.model.enums.Tier;
89
import org.ezcode.codetest.domain.user.model.enums.UserRole;
910

1011
import jakarta.persistence.CascadeType;
1112
import jakarta.persistence.Column;
12-
import jakarta.persistence.ElementCollection;
1313
import jakarta.persistence.Entity;
1414
import jakarta.persistence.EnumType;
1515
import jakarta.persistence.Enumerated;
1616
import jakarta.persistence.FetchType;
1717
import jakarta.persistence.GeneratedValue;
1818
import jakarta.persistence.GenerationType;
1919
import jakarta.persistence.Id;
20+
import jakarta.persistence.JoinColumn;
21+
import jakarta.persistence.ManyToOne;
2022
import jakarta.persistence.OneToMany;
23+
import jakarta.persistence.OneToOne;
2124
import jakarta.persistence.Table;
2225
import lombok.AccessLevel;
2326
import lombok.Builder;
@@ -72,17 +75,20 @@ public class User extends BaseEntity {
7275
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
7376
private List<UserAuthType> userAuthTypes = new ArrayList<>();
7477

78+
@ManyToOne(fetch = FetchType.LAZY)
79+
@JoinColumn(name = "language_id")
80+
private Language language;
81+
7582
private boolean verified; //이메일 인증 여부
7683

7784
private boolean gitPushStatus; //깃허브 자동 push 여부
7885

79-
8086
/*
8187
처음 유저 생성(가입) 시에는 기본 정보만 받음
8288
- 이메일, 비번, 이름, 별명, 나이
8389
-> 이후 회원정보 업데이트할 때, 원하는 정보를 입력할 수 있도록 함
8490
*/
85-
public static User emailUser(String email, String password, String username, String nickname, Integer age){
91+
public static User emailUser(String email, String password, String username, String nickname, Integer age, Language language) {
8692
return User.builder()
8793
.email(email)
8894
.password(password)
@@ -94,14 +100,15 @@ public static User emailUser(String email, String password, String username, Str
94100
.isDeleted(false)
95101
.verified(false)
96102
.gitPushStatus(false)
103+
.language(language)
97104
.build();
98105
}
99106

100107
/*
101108
OAuth2로 로그인한 유저 저장
102109
구글 이외의 다른 소셜 로그인 확장 가능성을 고려해 socialUser 이름 유지
103110
*/
104-
public static User socialUser(String email, String username, String nickname, String password){
111+
public static User socialUser(String email, String username, String nickname, String password, Language language) {
105112
return User.builder()
106113
.email(email)
107114
.username(username)
@@ -112,11 +119,12 @@ public static User socialUser(String email, String username, String nickname, St
112119
.isDeleted(false)
113120
.verified(false)
114121
.gitPushStatus(false)
122+
.language(language)
115123
.build();
116124
}
117125

118126
//깃허브 아이디와 url을 함께 저장하기 위해 따로 저장
119-
public static User githubUser(String email, String username, String nickname, String password, String githubUrl){
127+
public static User githubUser(String email, String username, String nickname, String password, String githubUrl, Language language){
120128
return User.builder()
121129
.email(email)
122130
.username(username)
@@ -128,13 +136,14 @@ public static User githubUser(String email, String username, String nickname, St
128136
.verified(false)
129137
.githubUrl(githubUrl)
130138
.gitPushStatus(false)
139+
.language(language)
131140
.build();
132141
}
133142

134143

135144
@Builder
136145
public User(String email, String password, String username, String nickname,
137-
Integer age, Tier tier, UserRole role, boolean isDeleted, boolean verified, String githubUrl, boolean gitPushStatus) {
146+
Integer age, Tier tier, UserRole role, boolean isDeleted, boolean verified, String githubUrl, boolean gitPushStatus, Language language) {
138147
this.email = email;
139148
this.password = password;
140149
this.username = username;
@@ -146,6 +155,7 @@ public User(String email, String password, String username, String nickname,
146155
this.verified = verified;
147156
this.githubUrl = githubUrl;
148157
this.gitPushStatus = gitPushStatus;
158+
this.language = language;
149159
}
150160

151161
/*

0 commit comments

Comments
 (0)