Skip to content

Commit 70348b6

Browse files
committed
feat : 닉네임 랜덤하게 생성
1 parent 4fcf87b commit 70348b6

File tree

2 files changed

+61
-16
lines changed

2 files changed

+61
-16
lines changed

src/main/java/com/back/domain/user/entity/User.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class User {
3030
@Column(length = 100)
3131
private String email;
3232

33-
@Column(nullable = false, unique = true, length = 50)
33+
@Column(nullable = false, length = 50)
3434
private String nickname; // 고유 닉네임
3535

3636
// OAuth2 관련 필드

src/main/java/com/back/domain/user/service/UserAuthService.java

Lines changed: 60 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,64 @@
1717

1818
import java.time.LocalDateTime;
1919
import java.util.Optional;
20+
import java.util.Set;
2021

2122
@Slf4j
2223
@Service
2324
@RequiredArgsConstructor
2425
public class UserAuthService {
2526

27+
static Set<String> param1 = Set.of("두둑한", "날씬한", "만취한", "알딸딸한", "얼큰한", "시트러스한", "도수높은", "톡쏘는", "거품가득한", "하이볼한",
28+
"앙증맞은", "쓸쓸한", "거만한", "산만한", "귀찮은", "삐딱한", "맛이간", "저세상급", "시궁창스러운", "기묘한",
29+
"졸린", "센치한", "철학적인", "무중력의", "뽀송한", "전투적인", "배부른", "대충한", "쩌는", "철지난",
30+
"절규하는", "맞춤형", "다급한", "찌뿌둥한", "구수한", "문어발적인", "자포자기한", "터무니없는", "귀여운척하는",
31+
"심드렁한", "무심한", "번쩍이는", "붉그레한", "밤새는", "좌절한", "의기양양한", "비굴한", "터프한", "흘러내린",
32+
"공허한", "허무한", "헛기침하는", "뿜어대는", "질척한", "기어다니는", "헤매는", "삐죽한", "악에받친", "격렬한",
33+
"삐까번쩍한", "오지랖넓은", "쪼르르거리는", "꿀꺽거리는", "머쓱한", "휘청대는", "추접스러운", "천방지축인", "어리둥절한", "질주하는",
34+
"겸연쩍은", "뿌연", "썩은", "짠내나는", "철썩같은", "흥건한", "안간힘쓰는", "뜨끈한", "꾸덕한", "동공지진난",
35+
"덕지덕지한", "비밀스러운", "개운한", "심란한", "음울한", "터질듯한", "달달한", "사악한", "기괴한", "용맹한",
36+
"껄끄러운", "헐떡이는", "허둥대는", "분란스러운", "애매한", "찐득한", "허기진", "쩔어버린", "몽롱한", "허세떠는",
37+
"황당한", "거대하고작은", "대차게구린", "어이없는", "두통약", "지갑", "이쑤시개", "돌침대", "고무장갑", "손수건",
38+
"바람개비", "지하철표", "송진가루", "철가방", "머리끈", "양말한짝", "라이터", "숟가락", "스티커", "드럼통",
39+
"열쇠꾸러미", "벼락", "대걸레", "파리채", "앙금빵", "선풍기날개", "스티로폼", "건전지", "껌종이", "소화전",
40+
"비닐우산", "고드름", "전등갓", "양초", "지우개가루", "국자", "밥솥", "연필심", "비둘기깃털", "찜질팩",
41+
"청테이프", "김밥말이", "곰팡이", "청소기", "밤송이", "옥수수수염", "철창살", "휴지심", "선반", "곽티슈",
42+
"스프링노트", "고향집된장", "머드팩", "장독대", "뒤꿈치각질", "어묵꼬치", "환풍기", "군고구마", "카세트테이프",
43+
"빨래건조대", "박카스병", "우체통", "주차권", "털실뭉치", "지하수", "깃털베개", "추리닝", "이불각", "육포",
44+
"빨대", "지렁이분양소", "김칫국", "오징어채", "전기장판", "꽃병", "도시락통", "구급상자", "양배추잎", "고무줄",
45+
"망치", "유통기한", "알람시계", "방범창", "신발깔창");
46+
47+
static Set<String> param2 = Set.of("도토리딱개구리", "아프리카들개", "강남성인군자", "술고래", "알코올러버", "겨자잎", "청개구리", "산수유",
48+
"맥주문어", "칵테일앵무새", "보드카수달", "진토닉거북이", "테킬라코요테", "럼펭귄", "사케고양이", "막걸리두꺼비",
49+
"하이볼판다", "모히토돌고래", "피냐콜라다곰", "샴페인펭귄", "홍초원숭이", "네그로니청년", "IPA성기사",
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+
2678
private final JwtUtil jwtUtil;
2779
private final UserRepository userRepository;
2880
private final RefreshTokenService refreshTokenService;
@@ -37,7 +89,7 @@ public User joinSocial(String oauthId, String email, String nickname){
3789
});
3890

3991
// 고유한 닉네임 생성
40-
String uniqueNickname = generateUniqueNickname(nickname);
92+
String uniqueNickname = generateNickname(nickname);
4193

4294
User user = User.builder()
4395
.email(email)
@@ -67,22 +119,15 @@ public RsData<User> findOrCreateOAuthUser(String oauthId, String email, String n
67119
}
68120
}
69121

70-
public String generateUniqueNickname(String baseNickname) {
71-
// null이거나 빈 문자열인 경우 기본값 설정
72-
if (baseNickname == null || baseNickname.trim().isEmpty()) {
73-
baseNickname = "User";
74-
}
75-
76-
String nickname = baseNickname;
77-
int counter = 1;
122+
public String generateNickname(String baseNickname) {
123+
// param1과 param2에서 무작위 단어 선택
124+
String[] param1Array = param1.toArray(new String[0]);
125+
String[] param2Array = param2.toArray(new String[0]);
78126

79-
// 중복 체크 및 고유한 닉네임 생성
80-
while (userRepository.findByNickname(nickname).isPresent()) {
81-
nickname = baseNickname + counter;
82-
counter++;
83-
}
127+
String adjective = param1Array[(int) (Math.random() * param1Array.length)];
128+
String noun = param2Array[(int) (Math.random() * param2Array.length)];
84129

85-
return nickname;
130+
return adjective + " " + noun;
86131
}
87132

88133
// 리프레시 토큰 관련

0 commit comments

Comments
 (0)