Skip to content

Commit eed7f55

Browse files
committed
feat : 가상친구, 빠른친구 요청시 mbti특성으로 요청하도록 변경, 테이블 구조 각 특성 4가지 연결하여 저장하도록 변경
, 관련 팩토리메서드 파라미터 변경
1 parent ed4525a commit eed7f55

File tree

12 files changed

+51
-69
lines changed

12 files changed

+51
-69
lines changed

api/src/main/java/com/mbtips/domain/fastfriend/controller/dto/request/FastFriendRequest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.mbtips.domain.fastfriend.controller.dto.request;
22

33
import com.mbtips.fastfriend.entity.FastFriend;
4+
import jakarta.validation.constraints.Pattern;
45

56
public record FastFriendRequest(
6-
String EorI,
7-
String NorS,
8-
String TorF,
9-
String JorP,
7+
8+
@Pattern(
9+
regexp = "^(INTJ|INTP|ENTJ|ENTP|INFJ|INFP|ENFJ|ENFP|ISTJ|ISFJ|ESTJ|ESFJ|ISTP|ISFP|ESTP|ESFP)$",
10+
message = "유효하지 않은 mbti입니다. 16가지중 하나를 입력해주세요."
11+
)
12+
String mbti,
1013
String fastFriendName,
1114
int fastFriendAge,
1215
String fastFriendSex,
@@ -15,10 +18,7 @@ public record FastFriendRequest(
1518

1619
public FastFriend toEntity(FastFriendRequest request) {
1720
return FastFriend.builder()
18-
.EorI(request.EorI)
19-
.NorS(request.NorS)
20-
.TorF(request.TorF)
21-
.JorP(request.JorP)
21+
.mbti(request.mbti)
2222
.fastFriendName(request.fastFriendName)
2323
.fastFriendAge(request.fastFriendAge)
2424
.fastFriendSex(request.fastFriendSex)

api/src/main/java/com/mbtips/domain/fastfriend/controller/dto/response/FastFriendResponse.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44

55
public record FastFriendResponse (
66
Long fastFriendId,
7-
String EorI,
8-
String NorS,
9-
String TorF,
10-
String JorP,
7+
String mbti,
118
String fastFriendName,
129
int fastFriendAge,
1310
String fastFriendSex,
@@ -17,10 +14,7 @@ public record FastFriendResponse (
1714
public static FastFriendResponse from(FastFriend saveFriend) {
1815
return new FastFriendResponse(
1916
saveFriend.getFastFriendId(),
20-
saveFriend.getEorI(),
21-
saveFriend.getNorS(),
22-
saveFriend.getTorF(),
23-
saveFriend.getJorP(),
17+
saveFriend.getMbti(),
2418
saveFriend.getFastFriendName(),
2519
saveFriend.getFastFriendAge(),
2620
saveFriend.getFastFriendSex(),

api/src/main/java/com/mbtips/domain/virtualfriend/VirtualFriendController.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,11 @@ public ApiResponse<List<VirtualFriendResponse>> getVirtualFriends(@LoginUser Use
3939
@Operation(summary = "가상친구 생성", description = "가상친구 생성을 요청하며, 채팅방이 생성됩니다.")
4040
public ApiResponse<VirtualFriendResponse> createVirtualFriend(@Valid @RequestBody VirtualFriendRequest virtualFriendRequest,
4141
@LoginUser User user){
42+
log.debug("virtualFriendReuqest : {}", virtualFriendRequest);
4243
VirtualFriendResponse result = virtualFriendService.createVirtualFriend(virtualFriendRequest, user.getUserId());
4344
return ApiResponse.success(result);
4445
}
4546

46-
/**
47-
*
48-
*/
4947
@DeleteMapping("/{friendId}")
5048
@Operation(summary = "가상친구 삭제", description = "가상친구가 삭제되며, 채팅방이 삭제됩니다.")
5149
public ApiResponse<Void> deleteVirtualFriend(@PathVariable Long friendId, @LoginUser User user){

api/src/main/java/com/mbtips/domain/virtualfriend/VirtualFriendService.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@
88
import com.mbtips.domain.virtualfriend.response.VirtualFriendResponse;
99
import com.mbtips.user.application.service.UserService;
1010
import com.mbtips.user.entity.UserEntity;
11+
import com.mbtips.virtualfriend.InterestRepository;
1112
import com.mbtips.virtualfriend.VirtualFriendRepository;
13+
import com.mbtips.virtualfriend.entity.Interest;
14+
import com.mbtips.virtualfriend.entity.InterestId;
1215
import com.mbtips.virtualfriend.entity.VirtualFriend;
1316
import lombok.RequiredArgsConstructor;
1417
import org.springframework.stereotype.Service;
1518

19+
import java.util.ArrayList;
1620
import java.util.List;
1721
import java.util.stream.Collectors;
1822

@@ -23,6 +27,7 @@ public class VirtualFriendService {
2327
private final VirtualFriendRepository virtualFriendRepository;
2428
private final ConversationService conversationService;
2529
private final UserService userService;
30+
private final InterestRepository interestRepository;
2631

2732
public List<VirtualFriendResponse> getVirtualFriendsByUserId(String userId) {
2833
List<Object[]> friends = virtualFriendRepository.findvirtualFriendAndConversation(userId);
@@ -45,6 +50,15 @@ public VirtualFriendResponse createVirtualFriend(VirtualFriendRequest req, Strin
4550
VirtualFriend friend = VirtualFriendRequest.toEntity(req, userEntity);
4651
VirtualFriend saveFriend = virtualFriendRepository.save(friend);
4752

53+
List<Interest> interests = new ArrayList<>();
54+
for(String topic : req.interests()){
55+
interests.add(Interest.builder()
56+
.virtualFriend(saveFriend)
57+
.interestId(new InterestId(saveFriend.getVirtualFriendId(), topic))
58+
.build());
59+
}
60+
interestRepository.saveAll(interests);
61+
4862
Conversation conversation = conversationService.createConversation(friend, userEntity);
4963

5064
VirtualFriendResponse result = VirtualFriendResponse.from(saveFriend, conversation.getConversationId());

api/src/main/java/com/mbtips/domain/virtualfriend/request/VirtualFriendRequest.java

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.mbtips.domain.virtualfriend.request;
22

3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
34
import com.mbtips.user.entity.UserEntity;
45
import com.mbtips.virtualfriend.entity.VirtualFriend;
56
import jakarta.validation.constraints.Max;
@@ -9,10 +10,10 @@
910

1011
import java.util.List;
1112

13+
@JsonIgnoreProperties(ignoreUnknown = true)
1214
public record VirtualFriendRequest(
13-
Long userId,
1415

15-
String userName,
16+
String friendName,
1617

1718
@Min(value = 1, message = "나이는 1 이상이어야 합니다.")
1819
@Max(value = 100, message = "나이는 100 이하이어야 합니다.")
@@ -24,32 +25,22 @@ public record VirtualFriendRequest(
2425
@Pattern(regexp = "M|F", message = "성별은 M 또는 F만 가능합니다.")
2526
String sex,
2627

27-
@Pattern(regexp = "E|I", message = "E 또는 I중 하나이어야 합니다.")
28-
String EorI,
29-
30-
@Pattern(regexp = "N|S", message = "N 또는 S중 하나이어야 합니다.")
31-
String NorS,
32-
33-
@Pattern(regexp = "T|F", message = "T 또는 F중 하나이어야 합니다.")
34-
String TorF,
35-
36-
@Pattern(regexp = "J|P", message = "J 또는 P중 하나이어야 합니다.")
37-
String JorP,
28+
@Pattern(
29+
regexp = "^(INTJ|INTP|ENTJ|ENTP|INFJ|INFP|ENFJ|ENFP|ISTJ|ISFJ|ESTJ|ESFJ|ISTP|ISFP|ESTP|ESFP)$",
30+
message = "유효하지 않은 mbti입니다. 16가지중 하나를 입력해주세요."
31+
)
32+
String mbti,
3833

3934
List<String> interests
40-
4135
){
4236
public static VirtualFriend toEntity(VirtualFriendRequest req, UserEntity userEntity) {
4337
return VirtualFriend.builder()
4438
.user(userEntity)
45-
.virtualFriendName(req.userName)
39+
.virtualFriendName(req.friendName)
4640
.virtualFriendAge(req.age)
4741
.virtualFriendRelationship(req.relationship)
4842
.virtualFriendSex(req.sex)
49-
.EorI(req.EorI)
50-
.JorP(req.JorP)
51-
.NorS(req.NorS)
52-
.TorF(req.TorF)
43+
.mbti(req.mbti)
5344
.build();
5445

5546
}

api/src/main/java/com/mbtips/domain/virtualfriend/response/VirtualFriendResponse.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,12 @@ public static VirtualFriendResponse from(VirtualFriend friend ,Long conversation
1818
return new VirtualFriendResponse(
1919
friend.getVirtualFriendId(),
2020
conversationId,
21-
findMBTI(friend),
21+
friend.getMbti(),
2222
friend.getVirtualFriendName(),
2323
friend.getVirtualFriendAge(),
2424
friend.getVirtualFriendSex(),
2525
friend.getVirtualFriendRelationship()
2626
);
2727
}
2828

29-
private static String findMBTI(VirtualFriend friend) {
30-
StringBuilder sb = new StringBuilder();
31-
sb.append(friend.getEorI());
32-
sb.append(friend.getNorS());
33-
sb.append(friend.getTorF());
34-
sb.append(friend.getJorP());
35-
return sb.toString();
36-
}
3729
}

external/src/main/java/com/mbtips/kakao/dto/GetKakaoUserInfoResponseDto.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.mbtips.kakao.dto;
22

33
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import lombok.ToString;
45

56
@JsonIgnoreProperties(ignoreUnknown = true)
67
public record GetKakaoUserInfoResponseDto(

repository/src/main/java/com/mbtips/fastfriend/entity/FastFriend.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,8 @@ public class FastFriend {
1515
@GeneratedValue(strategy = GenerationType.IDENTITY)
1616
private Long fastFriendId;
1717

18-
@Column(nullable = false)
19-
private String EorI;
20-
21-
@Column(nullable = false)
22-
private String NorS;
23-
24-
@Column(nullable = false)
25-
private String TorF;
26-
27-
@Column(nullable = false)
28-
private String JorP;
18+
@Column
19+
private String mbti;
2920

3021
@Column(length = 20)
3122
private String fastFriendName;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.mbtips.virtualfriend;
2+
3+
import com.mbtips.virtualfriend.entity.Interest;
4+
import com.mbtips.virtualfriend.entity.InterestId;
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
7+
public interface InterestRepository extends JpaRepository<Interest, InterestId> {
8+
}

repository/src/main/java/com/mbtips/virtualfriend/VirtualFriendRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ public interface VirtualFriendRepository extends JpaRepository<VirtualFriend, Lo
2222

2323

2424
@Query("select v from VirtualFriend v where v.virtualFriendId = :friendId and v.user = :user")
25-
Optional<VirtualFriend> findByFriendId(Long friendId, UserEntity userEntity);
25+
Optional<VirtualFriend> findByFriendId(Long friendId, UserEntity user);
2626
}

0 commit comments

Comments
 (0)