Skip to content

Commit

Permalink
Merge pull request #158 from capstone-maru/feat/#96-applyRecommend
Browse files Browse the repository at this point in the history
Feat/#96 apply recommend
  • Loading branch information
cheesecrust authored May 13, 2024
2 parents 83fb4c3 + 6601da9 commit e83f093
Show file tree
Hide file tree
Showing 32 changed files with 280 additions and 183 deletions.
9 changes: 8 additions & 1 deletion .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,17 @@ on:
branches: [ "main" ]
types: [ closed ]
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
tags:
description: 'Test scenario tags'

jobs:
build:
if: github.event.pull_request.merged == true
# if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@ dependencies {
//mongodb 설정
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'

//firebase 설정
implementation 'com.google.firebase:firebase-admin:8.1.0'
//webflux 설정
implementation 'org.springframework.boot:spring-boot-starter-webflux'

}

Expand Down
32 changes: 0 additions & 32 deletions src/main/java/org/capstone/maru/config/FirebaseConfig.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,6 @@
import org.springframework.data.web.PageableDefault;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.messaging.handler.annotation.DestinationVariable;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
import lombok.extern.slf4j.Slf4j;
import org.capstone.maru.security.principal.MemberPrincipal;
import org.capstone.maru.security.token.TokenProvider;
import org.capstone.maru.service.FirestoreService;
import org.capstone.maru.service.S3FileService;
import org.capstone.maru.service.RecommendService;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
Expand All @@ -19,7 +18,7 @@ public class MainController {

private final TokenProvider tokenProvider;

private final FirestoreService firestoreService;
private final RecommendService recommendService;

@GetMapping("/")
public String root() {
Expand All @@ -43,7 +42,7 @@ public String test(@AuthenticationPrincipal MemberPrincipal memberPrincipal) {

@GetMapping("/test2")
public void test2() {
firestoreService.printAllDocumentsInCollection();
recommendService.updateRecommendation().subscribe();
}

}
32 changes: 28 additions & 4 deletions src/main/java/org/capstone/maru/controller/ProfileController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.capstone.maru.domain.Recommend;
import org.capstone.maru.dto.FollowingDto;
import org.capstone.maru.dto.MemberCardDto;
import org.capstone.maru.dto.FeatureCardDto;
import org.capstone.maru.dto.MemberProfileDto;
import org.capstone.maru.dto.SimpleMemberCardDto;
import org.capstone.maru.dto.request.EmailSearchRequst;
import org.capstone.maru.dto.request.MemberFeatureRequest;
import org.capstone.maru.dto.request.MemberIdRequest;
import org.capstone.maru.dto.response.APIResponse;
import org.capstone.maru.dto.response.SimpleMemberCardResponse;
import org.capstone.maru.dto.response.SimpleMemberProfileResponse;
import org.capstone.maru.security.principal.MemberPrincipal;
import org.capstone.maru.service.FollowService;
Expand All @@ -23,6 +26,7 @@
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
Expand Down Expand Up @@ -60,7 +64,7 @@ public ResponseEntity<APIResponse> updateMemberCard(

String memberId = memberPrincipal.memberId();

MemberCardDto result = profileService.updateMyCard(
FeatureCardDto result = profileService.updateMyCard(
memberId,
cardId,
memberFeatureRequest.location(),
Expand Down Expand Up @@ -103,7 +107,7 @@ public ResponseEntity<APIResponse> getCardData(
@PathVariable Long cardId
) {
log.info("call getCardData : {}", cardId);
MemberCardDto result = profileService.getCard(cardId);
FeatureCardDto result = profileService.getCard(cardId);

return ResponseEntity.ok(APIResponse.success(result));
}
Expand All @@ -117,7 +121,7 @@ public ResponseEntity<APIResponse> updateRoomCardProfile(
log.info("call updateRoomCardProfile : {}", memberFeatureRequest);
String memberId = memberPrincipal.memberId();

MemberCardDto result = profileService.updateRoomCard(memberId, roomCardId,
FeatureCardDto result = profileService.updateRoomCard(memberId, roomCardId,
memberFeatureRequest.features());

return ResponseEntity.ok(APIResponse.success(result));
Expand Down Expand Up @@ -186,4 +190,24 @@ public ResponseEntity<APIResponse> searchProfileByEmail(
List<SimpleMemberProfileResponse> result = profileService.searchContainByEmail(email);
return ResponseEntity.ok(APIResponse.success(result));
}

/*
내 메이트 카드 기반 유저 추천 리스트
*/
@GetMapping("/recommend")
public ResponseEntity<APIResponse> getRecommendMateCard(
@AuthenticationPrincipal MemberPrincipal memberPrincipal,
@RequestParam(name = "type") String cardType
) {
log.info("call getRecommendMateCard : {}", memberPrincipal.memberId());

List<SimpleMemberCardDto> recommendMember = profileService.getRecommendMember(
memberPrincipal.memberId(), cardType);

List<SimpleMemberCardResponse> result = recommendMember.stream()
.map(SimpleMemberCardResponse::from)
.toList();

return ResponseEntity.ok(APIResponse.success(result));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import lombok.extern.slf4j.Slf4j;
import org.capstone.maru.annotation.RequestQueryString;
import org.capstone.maru.dto.DormitoryRoomPostDto;
import org.capstone.maru.dto.MemberCardDto;
import org.capstone.maru.dto.FeatureCardDto;
import org.capstone.maru.dto.RoomImageDto;
import org.capstone.maru.dto.RoomInfoDto;
import org.capstone.maru.dto.StudioRoomPostDto;
Expand Down Expand Up @@ -87,7 +87,7 @@ public void postNewStudioRoomPost(
StudioRoomPostDto studioRoomPostDto = studioRoomPostRequest.toBaseStudioRoomPostDto(
principal.gender()
);
MemberCardDto roomMateCardDto = studioRoomPostRequest.toMemberCardDto();
FeatureCardDto roomMateCardDto = studioRoomPostRequest.toMemberCardDto();
List<RoomImageDto> roomImagesDto = studioRoomPostRequest.toRoomImagesDto();
RoomInfoDto roomInfoDto = studioRoomPostRequest.toRoomInfoDto();
List<String> participationMemberIds = studioRoomPostRequest.participationMemberIds();
Expand All @@ -111,7 +111,7 @@ public void updateStudioRoomPost(
StudioRoomPostDto studioRoomPostDto = studioRoomPostRequest.toBaseStudioRoomPostDto(
principal.gender()
);
MemberCardDto roomMateCardDto = studioRoomPostRequest.toMemberCardDto();
FeatureCardDto roomMateCardDto = studioRoomPostRequest.toMemberCardDto();
List<RoomImageDto> roomImagesDto = studioRoomPostRequest.toRoomImagesDto();
RoomInfoDto roomInfoDto = studioRoomPostRequest.toRoomInfoDto();
List<String> participationMemberIds = studioRoomPostRequest.participationMemberIds();
Expand Down Expand Up @@ -187,7 +187,7 @@ public void postNewDormitoryRoomPost(
DormitoryRoomPostDto dormitoryRoomPostDto = dormitoryRoomPostRequest.toBaseDormitoryRoomPostDto(
principal.gender()
);
MemberCardDto roomMateCardDto = dormitoryRoomPostRequest.toMemberCardDto();
FeatureCardDto roomMateCardDto = dormitoryRoomPostRequest.toMemberCardDto();
List<RoomImageDto> roomImagesDto = dormitoryRoomPostRequest.toRoomImagesDto();
List<String> participationMemberIds = dormitoryRoomPostRequest.participationMemberIds();

Expand All @@ -209,7 +209,7 @@ public void updateDormitoryRoomPost(
DormitoryRoomPostDto dormitoryRoomPostDto = dormitoryRoomPostRequest.toBaseDormitoryRoomPostDto(
principal.gender()
);
MemberCardDto roomMateCardDto = dormitoryRoomPostRequest.toMemberCardDto();
FeatureCardDto roomMateCardDto = dormitoryRoomPostRequest.toMemberCardDto();
List<RoomImageDto> roomImagesDto = dormitoryRoomPostRequest.toRoomImagesDto();
List<String> participationMemberIds = dormitoryRoomPostRequest.participationMemberIds();

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/capstone/maru/domain/DormitoryRoomPost.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.capstone.maru.dto.DormitoryRoomPostDto;
import org.capstone.maru.dto.MemberCardDto;
import org.capstone.maru.dto.FeatureCardDto;
import org.capstone.maru.dto.RoomImageDto;
import org.hibernate.annotations.DynamicUpdate;

Expand Down Expand Up @@ -41,7 +41,7 @@ public static DormitoryRoomPost of(
// -- 비지니스 로직 -- //
public void updateDormitoryRoomPost(
DormitoryRoomPostDto dormitoryRoomPostDto,
MemberCardDto roomMateCardDto,
FeatureCardDto roomMateCardDto,
List<RoomImageDto> roomImagesDto
) {
super.updateSharedRoomPost(
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/capstone/maru/domain/MemberAccount.java
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@ public class MemberAccount extends AuditingFields implements Persistable<String>
private ProfileImage profileImage;

// 연관관계 table
@OneToMany(mappedBy = "member", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<MemberRoom> chatRooms;
@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
private List<MemberRoom> chatRooms = new ArrayList<>();

@Builder
private MemberAccount(
Expand Down
27 changes: 27 additions & 0 deletions src/main/java/org/capstone/maru/domain/Recommend.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package org.capstone.maru.domain;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.index.Indexed;

@Entity
@NoArgsConstructor
@Getter
public class Recommend {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Indexed
private String userId;

private String cardType;
private String recommendationId;
private String recommendationCardType;
private Integer score;
}
6 changes: 1 addition & 5 deletions src/main/java/org/capstone/maru/domain/SharedRoomPost.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,7 @@
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.capstone.maru.dto.MemberAccountDto;
import org.capstone.maru.dto.MemberCardDto;
import org.capstone.maru.dto.RoomImageDto;
import org.capstone.maru.dto.RoomInfoDto;
import org.capstone.maru.dto.StudioRoomPostDto;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;
Expand Down Expand Up @@ -163,7 +159,7 @@ public void updateSharedRoomPost(String title, String content, FeatureCard roomM
updateRoomMateCard(roomMateCard);
updateAddress(address);
}

private void updateTitle(String title) {
if (title.equals(this.title)) {
return;
Expand Down
17 changes: 2 additions & 15 deletions src/main/java/org/capstone/maru/domain/StudioRoomPost.java
Original file line number Diff line number Diff line change
@@ -1,35 +1,22 @@
package org.capstone.maru.domain;

import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.CascadeType;
import jakarta.persistence.DiscriminatorValue;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.OneToOne;
import jakarta.persistence.OrderBy;

import java.util.ArrayList;
import java.util.List;

import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.capstone.maru.dto.MemberCardDto;
import org.capstone.maru.dto.FeatureCardDto;
import org.capstone.maru.dto.RoomImageDto;
import org.capstone.maru.dto.RoomInfoDto;
import org.capstone.maru.dto.StudioRoomPostDetailDto;
import org.capstone.maru.dto.StudioRoomPostDto;
import org.hibernate.annotations.BatchSize;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand Down Expand Up @@ -67,7 +54,7 @@ public static StudioRoomPost of(
// -- 비지니스 로직 -- //
public void updateStudioRoomPost(
StudioRoomPostDto studioRoomPostDto,
MemberCardDto roomMateCardDto,
FeatureCardDto roomMateCardDto,
RoomInfoDto roomInfoDto,
List<RoomImageDto> roomImagesDto
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,14 @@
import org.capstone.maru.domain.Address;
import org.capstone.maru.domain.DormitoryRoomPost;
import org.capstone.maru.domain.Participation;
import org.capstone.maru.domain.StudioRoomPost;

@Builder
public record DormitoryRoomPostDetailDto(
Long id,
String title,
String content,
String publisherGender,
MemberCardDto roomMateCard,
FeatureCardDto roomMateCard,
List<MemberAccountDto> participants,
Set<RoomImageDto> roomImages,
MemberAccountDto publisherAccount,
Expand All @@ -41,19 +40,19 @@ public static DormitoryRoomPostDetailDto from(
.id(entity.getId())
.title(entity.getTitle())
.content(entity.getContent())
.roomMateCard(MemberCardDto.from(entity.getRoomMateCard()))
.roomMateCard(FeatureCardDto.from(entity.getRoomMateCard()))
.participants(
entity.getSharedRoomPostRecruits()
.stream()
.map(Participation::getRecruitedMemberAccount)
.map(MemberAccountDto::from)
.toList()
.stream()
.map(Participation::getRecruitedMemberAccount)
.map(MemberAccountDto::from)
.toList()
)
.roomImages(
entity.getRoomImages()
.stream()
.map(RoomImageDto::from)
.collect(Collectors.toSet())
.stream()
.map(RoomImageDto::from)
.collect(Collectors.toSet())
)
.publisherGender(entity.getPublisherGender())
.publisherAccount(MemberAccountDto.from(entity.getPublisherAccount()))
Expand Down
Loading

0 comments on commit e83f093

Please sign in to comment.