From 3b76d82318dff6509135ee5316afed5853cd5d0b Mon Sep 17 00:00:00 2001 From: 2heunxun Date: Sat, 26 Jul 2025 15:26:37 +0900 Subject: [PATCH] =?UTF-8?q?Feat=20:=20=EC=86=8C=EC=85=9C=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=EC=8B=9C=20Author=20=EA=B0=9D=EC=B2=B4=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=EC=83=9D=EC=84=B1=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80,=20=EC=86=8C=EC=85=9C=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=EC=8B=9C=20=EB=8F=99=EB=AA=85=EC=9D=B4=EC=9D=B8?= =?UTF-8?q?=EC=9D=B4=20=EC=A1=B4=EC=9E=AC=ED=95=9C=EB=8B=A4=EB=A9=B4=200~9?= =?UTF-8?q?999=EC=9D=98=20=EB=9E=9C=EB=8D=A4=ED=95=9C=20=EC=88=AB=EC=9E=90?= =?UTF-8?q?=20=EB=B6=80=EC=97=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../emotionCore/service/MemberService.java | 36 ++++++++++++++++--- .../emotionCore/service/NaverService.java | 2 +- .../service/SearchWorkService.java | 12 +++---- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/project/emotionCore/service/MemberService.java b/src/main/java/com/example/project/emotionCore/service/MemberService.java index 961fc2d..d9e5631 100644 --- a/src/main/java/com/example/project/emotionCore/service/MemberService.java +++ b/src/main/java/com/example/project/emotionCore/service/MemberService.java @@ -79,11 +79,22 @@ public boolean isAlreadyUsedName(String username){ //2 public JwtTokenDTO signUpWithSocial(String email, String username) { + String finalUsername = username; + if (memberRepository.existsByUsername(finalUsername)) { + Random random = new Random(); + do { + int randomNumber = random.nextInt(10000); // 0~9999 + finalUsername = username + randomNumber; + } while (memberRepository.existsByUsername(finalUsername)); + } + MemberDTO memberDTO = new MemberDTO(); memberDTO.setEmail(email); - memberDTO.setUsername(username); + memberDTO.setUsername(finalUsername); memberDTO.setPassword(""); // 소셜 로그인이라 비밀번호는 필요 없음 - memberRepository.save(MemberMapper.toEntity(memberDTO)); + Member savedMember = memberRepository.save(MemberMapper.toEntity(memberDTO)); + Author author = new Author(savedMember,"", "", new HashSet<>()); + authorRepository.save(author); return signInWithSocial(email); } @@ -100,12 +111,29 @@ public JwtTokenDTO naverLogin(String code, String state) { // DB에서 사용자 확인, 없으면 신규 생성 Member member = memberRepository.findByEmail(email) .orElseGet(() -> { + // 닉네임 중복 시 랜덤 숫자 붙이기 + String finalUsername = nickname; + if (memberRepository.existsByUsername(finalUsername)) { + Random random = new Random(); + do { + int randomNumber = random.nextInt(10000); // 0~9999 + finalUsername = nickname + randomNumber; + } while (memberRepository.existsByUsername(finalUsername)); + } + + // Member 저장 Member newMember = Member.builder() - .username(nickname) + .username(finalUsername) .email(email) .password("NaverLogin") // 비밀번호는 네이버 로그인의 경우 사용하지 않음 .build(); - return memberRepository.save(newMember); + Member savedMember = memberRepository.save(newMember); + + // Author 저장 (MapsId 매핑) + Author author = new Author(savedMember, "", "", new HashSet<>()); + authorRepository.save(author); + + return savedMember; }); diff --git a/src/main/java/com/example/project/emotionCore/service/NaverService.java b/src/main/java/com/example/project/emotionCore/service/NaverService.java index 785fbe8..664b40d 100644 --- a/src/main/java/com/example/project/emotionCore/service/NaverService.java +++ b/src/main/java/com/example/project/emotionCore/service/NaverService.java @@ -59,7 +59,6 @@ public String getAccessToken(String code, String state) { throw new RuntimeException("Failed to get access token from Naver"); } } - // 네이버 API에서 사용자 정보 가져오기 public Map getUserInfo(String accessToken) { String userInfoUrl = "https://openapi.naver.com/v1/nid/me"; @@ -76,4 +75,5 @@ public Map getUserInfo(String accessToken) { throw new RuntimeException("Failed to get user info from Naver"); } } + } diff --git a/src/main/java/com/example/project/emotionCore/service/SearchWorkService.java b/src/main/java/com/example/project/emotionCore/service/SearchWorkService.java index a720873..e45c967 100644 --- a/src/main/java/com/example/project/emotionCore/service/SearchWorkService.java +++ b/src/main/java/com/example/project/emotionCore/service/SearchWorkService.java @@ -20,15 +20,11 @@ public class SearchWorkService { @Transactional public void processSearch(String searchWord) { - // searchWord에 해당하는 엔티티를 검색 SearchWork searchWork = searchWorkRepository.findBySearchWord(searchWord) - .orElseGet(() -> { - // 없다면 새로 생성 - SearchWork newSearchWork = new SearchWork(searchWord); - return searchWorkRepository.save(newSearchWork); - }); - - // 검색 횟수 증가 + .orElse(null); + if (searchWork == null) { + searchWork = new SearchWork(searchWord); // count = 0 이어야 함 + } searchWork.incrementSearchCount(); searchWorkRepository.save(searchWork); }