Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor/68 get user info with keyword #69

Merged
merged 9 commits into from
Jan 12, 2023
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import com.sptp.backend.common.exception.ErrorCode;
import com.sptp.backend.member.repository.Member;
import com.sptp.backend.member.repository.MemberRepository;
import com.sptp.backend.member.service.MemberService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand Down
19 changes: 18 additions & 1 deletion src/main/java/com/sptp/backend/common/KeywordMap.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import com.sptp.backend.common.exception.CustomException;
import com.sptp.backend.common.exception.ErrorCode;
import java.util.HashMap;

import java.util.*;

public class KeywordMap {

Expand All @@ -12,6 +13,22 @@ public static void checkExistsKeyword(String key) {
}
}

public static String getKeywordName(Integer keywordId) {

String keywordName = "";
Set<Map.Entry<String, Integer>> entrySet = KeywordMap.map.entrySet();

// KeywordName(key) 구하기
for (Map.Entry<String, Integer> entry : entrySet) {
if (entry.getValue().equals(keywordId)) {
keywordName = entry.getKey();
break;
}
}

return keywordName;
}

public static final HashMap<String, Integer> map = new HashMap<>();
static {
map.put("유화", 1);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package com.sptp.backend.common.exception;

import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpMessage;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
Expand Down
4 changes: 0 additions & 4 deletions src/main/java/com/sptp/backend/jwt/service/JwtService.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

@Service
@RequiredArgsConstructor
@Slf4j
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/com/sptp/backend/member/repository/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,9 @@
import com.sptp.backend.member.web.dto.request.ArtistUpdateRequest;
import com.sptp.backend.member.web.dto.request.MemberUpdateRequest;
import org.hibernate.annotations.BatchSize;
import org.springframework.web.multipart.MultipartFile;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

Expand Down
52 changes: 44 additions & 8 deletions src/main/java/com/sptp/backend/member/service/MemberService.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.sptp.backend.member.service;

import com.sptp.backend.art_work.repository.ArtWorkRepository;
import com.sptp.backend.aws.service.AwsService;
import com.sptp.backend.aws.service.FileService;
import com.sptp.backend.member.web.dto.request.*;
Expand All @@ -11,6 +10,7 @@
import com.sptp.backend.jwt.web.JwtTokenProvider;
import com.sptp.backend.jwt.web.dto.TokenDto;
import com.sptp.backend.jwt.service.JwtService;
import com.sptp.backend.member.web.dto.response.ArtistResponse;
import com.sptp.backend.member.web.dto.response.MemberLoginResponseDto;
import com.sptp.backend.member.web.dto.response.MemberResponse;
import com.sptp.backend.common.KeywordMap;
Expand All @@ -21,8 +21,6 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -277,28 +275,66 @@ public MemberResponse getMember(Long loginMemberId) {
Member findMember = memberRepository.findById(loginMemberId)
.orElseThrow(() -> new CustomException(ErrorCode.NOT_FOUND_MEMBER));

// 이미지 처리
String imageUrl = awsStorageUrl + findMember.getImage();

if(findMember.isBlankImage()) {
imageUrl = null;
}

//키워드 처리
List<String> keywordNameList = getKeywordName(findMember.getId());

if(Objects.equals(findMember.getRoles().get(0), "ROLE_ARTIST")) {
MemberResponse artistResponse = ArtistResponse.builder()
.nickname(findMember.getNickname())
.userId(findMember.getUserId())
.email(findMember.getEmail())
.telephone(findMember.getTelephone())
.image(imageUrl)
.keywords(keywordNameList)
.education(findMember.getEducation())
.history(findMember.getHistory())
.description(findMember.getDescription())
.instagram(findMember.getInstagram())
.behance(findMember.getBehance())
.build();

return artistResponse;
}

MemberResponse memberResponse = MemberResponse.builder()
.nickname(findMember.getNickname())
.userId(findMember.getUserId())
.email(findMember.getEmail())
.telephone(findMember.getTelephone())
.image(imageUrl)
.education(findMember.getEducation())
.history(findMember.getHistory())
.description(findMember.getDescription())
.instagram(findMember.getInstagram())
.behance(findMember.getBehance())
.keywords(keywordNameList)
.build();

return memberResponse;
}

@Transactional(readOnly = true)
public List<String> getKeywordName(Long memberId) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

KeywordMap에 로직을 포함할 수 있다면 좋을 것 같아요!


List<MemberKeyword> findMemberKeywordList = memberKeywordRepository.findByMemberId(memberId);

// keywordId(value) 리스트 구하기
List<Integer> keywordIdList = new ArrayList();
for(MemberKeyword memberKeyword : findMemberKeywordList){
keywordIdList.add(memberKeyword.getKeywordId());
}

// keywordName(key) 리스트 구하기
List<String> keywordNameList = new ArrayList();
for(Integer keywordId : keywordIdList) {
keywordNameList.add(KeywordMap.getKeywordName(keywordId));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔해져서 보기 편하네용

}

return keywordNameList;
}

@Transactional
public void pickArtist(Long loginMemberId, Long artistId) {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.sptp.backend.member.web.dto.response;

import lombok.*;
import lombok.experimental.SuperBuilder;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class ArtistResponse extends MemberResponse {

private String education;
private String history;
private String description;
private String instagram;
private String behance;
}
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
package com.sptp.backend.member.web.dto.response;

import lombok.*;
import lombok.experimental.SuperBuilder;

import java.util.List;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@SuperBuilder
public class MemberResponse {

private String nickname;
private String userId;
private String email;
private String telephone;
private String image;

private String education;
private String history;
private String description;
private String instagram;
private String behance;
private List<String> keywords;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@

import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface MemberKeywordRepository extends JpaRepository<MemberKeyword, Long>, MemberKeywordCustomRepository {
List<MemberKeyword> findByMemberId(Long memberId);
}
2 changes: 1 addition & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ spring:

jpa:
hibernate:
ddl-auto: update
ddl-auto: create
properties:
hibernate:
format_sql: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

import com.sptp.backend.common.exception.CustomException;
import com.sptp.backend.common.exception.ErrorCode;
import com.sptp.backend.jwt.repository.RefreshTokenRepository;
import com.sptp.backend.jwt.service.JwtService;
import com.sptp.backend.jwt.web.JwtTokenProvider;
import com.sptp.backend.MockPasswordEncoder;
import com.sptp.backend.member.repository.Member;
import com.sptp.backend.member.repository.MemberRepository;
Expand All @@ -17,7 +14,6 @@
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.password.PasswordEncoder;

import java.util.Optional;
Expand Down