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

[FEAT] 마이페이지 성지순례 관련 조회 api 개발 #50

Merged
merged 9 commits into from
Feb 2, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -48,21 +48,21 @@ public List<MyPageDto.MyBlockDto> getMyBlock(){

// 찜한 성지순례
@GetMapping("/guestbooks/like")
public MyPageDto.MyGuestBookDto getMyLikedBook(){
public List<MyPageDto.MyGuestBookDto> getMyLikedBook(){
Member member = securityUtil.getUser();
return myPageQueryService.getMyLikedBook(member);
}

// 인증한 성지순례
@GetMapping("/guestbooks/visited")
public MyPageDto.MyGuestBookDto getMyVisitedBook(){
public List<MyPageDto.MyGuestBookDto> getMyVisitedBook(){
Member member = securityUtil.getUser();
return myPageQueryService.getMyVisitedBook(member);
}

// 완료한 성지순례
@GetMapping("/guestbooks/done")
public MyPageDto.MyGuestBookDto getMyDoneBook(){
public List<MyPageDto.MyGuestBookDto> getMyDoneBook(){
Member member = securityUtil.getUser();
return myPageQueryService.getMyDoneBook(member);
}
Expand All @@ -75,4 +75,4 @@ public MyPageDto.MyModifyBlockDto modifyMemberBlock(
Member member = securityUtil.getUser();
return myPageCommandService.modifyMemberBlock(member, blockedMember);
}
}
}
11 changes: 11 additions & 0 deletions src/main/java/com/favoriteplace/app/converter/MyPageConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.favoriteplace.app.domain.Member;
import com.favoriteplace.app.domain.item.Item;
import com.favoriteplace.app.domain.travel.Rally;
import com.favoriteplace.app.dto.MyPageDto;

import java.util.List;
Expand Down Expand Up @@ -56,4 +57,14 @@ public static MyPageDto.MyBlockDto toMyBlockDto(Member member){
.userIconImg(member.getProfileIcon().getImage().getUrl())
.build();
}

public static MyPageDto.MyGuestBookDto toMyGuestBookDto(Rally rally, Long myPilgrimageNumber) {
return MyPageDto.MyGuestBookDto.builder()
.id(rally.getId())
.title(rally.getName())
.pilgrimageNumber(rally.getPilgrimageNumber())
.myPilgrimageNumber(myPilgrimageNumber)
.imageUrl(rally.getImage().getUrl())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ select count(distinct p.id)
""")
Long findByDistinctCount(@Param("memberId") Long memberId, @Param("rallyId") Long rallyId);
@Query("""
select distinct r
from Rally r
join Pilgrimage p on r.id = p.rally.id
join VisitedPilgrimage vp on p.id = vp.pilgrimage.id
and vp.member.id = :memberId
""")
List<Rally> findByDistinctPilgrimage(@Param("memberId") Long memberId);
@Query("""
select count(distinct p.id)
from Rally r
join Pilgrimage p on r.id = p.rally.id
Expand Down
38 changes: 27 additions & 11 deletions src/main/java/com/favoriteplace/app/service/MyPageQueryService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.favoriteplace.app.domain.enums.ItemType;
import com.favoriteplace.app.domain.enums.SaleStatus;
import com.favoriteplace.app.domain.item.AcquiredItem;
import com.favoriteplace.app.domain.travel.CompleteRally;
import com.favoriteplace.app.domain.travel.*;
import com.favoriteplace.app.dto.CommonResponseDto;
import com.favoriteplace.app.dto.MyPageDto;
import com.favoriteplace.app.repository.*;
Expand All @@ -29,6 +29,7 @@ public class MyPageQueryService {
private final CommentRepository commentRepository;
private final GuestBookRepository guestBookRepository;
private final PostRepository postRepository;
private final LikedRallyRepository likedRallyRepository;

public MyPageDto.MyInfoDto getMyInfo(Member member) {
Long completeRalliesCount = Long.valueOf(completeRallyRepository.findByMember(member).size());
Expand Down Expand Up @@ -61,9 +62,9 @@ public MyPageDto.MyItemDto getMyItems(Member member, String type) {
.filter(item -> item.getItem().getStatus().equals(sale))
.map(item -> item.getItem())
.map(item->MyPageConverter.toMyItemDetailDto(item,
type=="title"
?((member.getProfileTitle() != null && member.getProfileTitle().getId() == item.getId())?true:false)
:((member.getProfileIcon() != null && member.getProfileIcon().getId() == item.getId())?true:false)))
type=="title"
?((member.getProfileTitle() != null && member.getProfileTitle().getId() == item.getId())?true:false)
:((member.getProfileIcon() != null && member.getProfileIcon().getId() == item.getId())?true:false)))
.collect(Collectors.toList());
result.add(list);
}
Expand All @@ -82,15 +83,30 @@ public List<MyPageDto.MyBlockDto> getMyBlock(Member member) {
.collect(Collectors.toList());
}

public MyPageDto.MyGuestBookDto getMyLikedBook(Member member) {
return null;
public List<MyPageDto.MyGuestBookDto> getMyLikedBook(Member member) {
List<LikedRally> rallyList = likedRallyRepository.findByMember(member);
return rallyList.stream().map(dummy -> {
Long visited = visitedPilgrimageRepository
.findByDistinctCount(member.getId(), dummy.getRally().getId());
return MyPageConverter.toMyGuestBookDto(dummy.getRally(), visited);
}).collect(Collectors.toList());
}

public MyPageDto.MyGuestBookDto getMyVisitedBook(Member member) {
return null;
public List<MyPageDto.MyGuestBookDto> getMyVisitedBook(Member member) {
List<Rally> rallyList = visitedPilgrimageRepository.findByDistinctPilgrimage(member.getId());
return rallyList.stream().map(rally -> {
Long visited = visitedPilgrimageRepository
.findByDistinctCount(member.getId(), rally.getId());
return MyPageConverter.toMyGuestBookDto(rally, visited);
}).collect(Collectors.toList());
}

public MyPageDto.MyGuestBookDto getMyDoneBook(Member member) {
return null;
public List<MyPageDto.MyGuestBookDto> getMyDoneBook(Member member) {
List<CompleteRally> rallyList = completeRallyRepository.findByMember(member);
return rallyList.stream().map(dummy -> {
Long visited = visitedPilgrimageRepository
.findByDistinctCount(member.getId(), dummy.getRally().getId());
return MyPageConverter.toMyGuestBookDto(dummy.getRally(), visited);
}).collect(Collectors.toList());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
Expand All @@ -18,18 +19,67 @@
@Configuration
public class GoogleCloudStorageConfig {

@Value("${gcp.type}")
private String type;

@Value("${gcp.project_id}")
private String projectId;

@Value("${gcp.private_key_id}")
private String privateKeyId;

@Value("${gcp.private_key}")
private String privateKey;

@Value("${gcp.client_email}")
private String clientEmail;

@Value("${gcp.client_id}")
private String clientId;

@Value("${gcp.auth_uri}")
private String authUri;

@Value("${gcp.token_uri}")
private String tokenUri;

@Value("${gcp.auth_provider_x509_cert_url}")
private String authProviderX509CertUrl;

@Value("${gcp.client_x509_cert_url}")
private String clientX509CertUrl;

@Value("${gcp.universe_domain}")
private String universeDomain;

@Bean
public Storage storage() throws IOException {
String jsonKey = String.format(
"{" +
"\"type\":\"%s\"," +
"\"project_id\":\"%s\"," +
"\"private_key_id\":\"%s\"," +
"\"private_key\":\"%s\"," +
"\"client_email\":\"%s\"," +
"\"client_id\":\"%s\"," +
"\"auth_uri\":\"%s\"," +
"\"token_uri\":\"%s\"," +
"\"auth_provider_x509_cert_url\":\"%s\"," +
"\"client_x509_cert_url\":\"%s\"," +
"\"universe_domain\":\"%s\"" +
"}",
type, projectId, privateKeyId, privateKey, clientEmail, clientId,
authUri, tokenUri, authProviderX509CertUrl, clientX509CertUrl, universeDomain
);

GoogleCredentials credentials = GoogleCredentials.fromStream(
new ByteArrayInputStream(jsonKey.getBytes())
);

InputStream inputStream = getClass().getResourceAsStream("/studious-matrix-412103-04030f986b9b.yml");
InputStreamReader reader = new InputStreamReader(inputStream);
Map<String, Object> credentialsMap = new Yaml().load(reader);
GoogleCredentials credentials = GoogleCredentials.fromStream(new ByteArrayInputStream(new ObjectMapper().writeValueAsBytes(credentialsMap)));
String projectId = "studious-matrix-412103";
return StorageOptions.newBuilder()
.setProjectId(projectId)
.setCredentials(credentials)
.build()
.getService();
}
}
}
Loading