Skip to content

Commit

Permalink
feat: responseDto에 isVoted 적용 #78
Browse files Browse the repository at this point in the history
  • Loading branch information
Sangyoo committed Jan 28, 2023
1 parent 8aae61f commit 5338d2d
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@

import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;

@RestController
@Validated
Expand Down Expand Up @@ -215,50 +216,48 @@ public ResponseEntity<DataResponseDto<?>> getPost(@PathVariable("post-id") @Posi
return ResponseEntity.ok(new DataResponseDto<>(response));
}

@GetMapping("/home")
public ResponseEntity<MultiResponseDto<?>> getHomePosts(@RequestParam(defaultValue = "newest", required = false) String sort,
@GetMapping(value = {"/home","/home/{member-id}"})
public ResponseEntity<MultiResponseDto<?>> getHomePosts(@PathVariable("member-id") Optional<Long> memberId,
@RequestParam(defaultValue = "newest", required = false) String sort,
@RequestParam(defaultValue = "1", required = false) @Positive int page,
@RequestParam(defaultValue = "8", required = false) @Positive int size) {
sort = getString(sort);
Page<Post> allPostsBySort = postService.findAllPostsBySort(page - 1, size, sort);
List<Post> content = allPostsBySort.getContent();

return new ResponseEntity<>(new MultiResponseDto<>(
mapper.postListToPostHomeResponseDtoList(content), allPostsBySort), HttpStatus.OK);

return responseMethod(content, allPostsBySort, memberId);
}

@PostMapping("/filter")
public ResponseEntity<MultiResponseDto<?>> getFilteredPosts(@RequestParam(defaultValue = "newest", required = false) String sort,
@PostMapping(value= {"/filter", "/filter/{member-id}"})
public ResponseEntity<MultiResponseDto<?>> getFilteredPosts(@PathVariable("member-id") Optional<Long> memberId,
@RequestParam(defaultValue = "newest", required = false) String sort,
@RequestParam(defaultValue = "1", required = false) @Positive int page,
@RequestParam(defaultValue = "9", required = false) @Positive int size,
@RequestBody ProvinceFilterDto filterDto) {
sort = getString(sort);

List<Post> posts;
List<Post> content;
Page<Post> postPage;
if(filterDto.getProvinces().size() == 0 ) {
postPage = postService.findAllPostsBySort(page - 1, size, sort);
}else{
postPage = postService.findAllPostsByProvincesSort(filterDto.getProvinces(), page - 1, size, sort);
}
posts = postPage.getContent();
return new ResponseEntity<>(new MultiResponseDto<>(
mapper.postListToPostHomeResponseDtoList(posts), postPage), HttpStatus.OK);
content = postPage.getContent();
return responseMethod(content, postPage, memberId);
}

@GetMapping("/{attraction-id}")
@GetMapping(value = {"/{attraction-id}","/{attraction-id}/{member-id}"})
public ResponseEntity<MultiResponseDto<?>> getPostsByAttractionDetailsPage(@PathVariable("attraction-id") long attractionId,
@PathVariable("member-id") Optional<Long> memberId,
@RequestParam(defaultValue = "newest", required = false) String sort,
@RequestParam(defaultValue = "1", required = false) @Positive int page,
@RequestParam(defaultValue = "8", required = false) @Positive int size) {
sort = getString(sort);
Page<Post> allPostsBySort = postService.findAllPostsByAttractionId(attractionId,page - 1, size, sort);
List<Post> content = allPostsBySort.getContent();

return new ResponseEntity<>(new MultiResponseDto<>(
mapper.postListToPostHomeResponseDtoList(content), allPostsBySort), HttpStatus.OK);

return responseMethod(content, allPostsBySort, memberId);
}

@LoginUser
Expand Down Expand Up @@ -318,4 +317,47 @@ private Post verifiedById(long clientId, long postId) {
}
return post;
}

private List<PostResponseDto.Home> loginMapping(List<Post> postList, long memberId){
return postList.stream()
.map(post -> {
return PostResponseDto.Home.builder()
.postId(post.getPostId())
.memberId(post.getMember().getMemberId())
.username(post.getMember().getUsername())
.memberPicture(post.getMember().getPicture())
.pictureUrl(post.getPostImages().isEmpty() ? "" : post.getPostImages().get(0).getPostImageUrl())
.views(post.getViews())
.likes(post.getLikes())
.isVoted(postService.isVoted(memberId, post.getPostId()))
.postTitle(post.getPostTitle())
.createdAt(post.getCreatedAt())
.modifiedAt(post.getModifiedAt())
.build();
}).collect(Collectors.toList());
}
private List<PostResponseDto.Home> guestMapping(List<Post> postList){
return postList.stream()
.map(post -> {
return PostResponseDto.Home.builder()
.postId(post.getPostId())
.memberId(post.getMember().getMemberId())
.username(post.getMember().getUsername())
.memberPicture(post.getMember().getPicture())
.pictureUrl(post.getPostImages().isEmpty() ? "" : post.getPostImages().get(0).getPostImageUrl())
.views(post.getViews())
.likes(post.getLikes())
.isVoted(false)
.postTitle(post.getPostTitle())
.createdAt(post.getCreatedAt())
.modifiedAt(post.getModifiedAt())
.build();
}).collect(Collectors.toList());
}

private ResponseEntity<MultiResponseDto<?>> responseMethod(List<Post> content, Page<Post> page, Optional<Long> memberId){
return memberId.<ResponseEntity<MultiResponseDto<?>>>map(aLong -> new ResponseEntity<>(new MultiResponseDto<>(
loginMapping(content, aLong), page), HttpStatus.OK)).orElseGet(() -> new ResponseEntity<>(new MultiResponseDto<>(
guestMapping(content), page), HttpStatus.OK));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public static class Home {
private String pictureUrl;
private int views;
private int likes;
private Boolean isVoted;
private String postTitle;
private LocalDateTime createdAt;
private LocalDateTime modifiedAt;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,26 +54,4 @@ default PostResponseDto.Detail postToPostDetailResponseDto(Post post) {
.modifiedAt(post.getModifiedAt())
.build();
}

default List<PostResponseDto.Home> postListToPostHomeResponseDtoList(List<Post> postList) {
if (postList == null) {
return null;
}

return postList.stream()
.map(post -> {
return PostResponseDto.Home.builder()
.postId(post.getPostId())
.memberId(post.getMember().getMemberId())
.username(post.getMember().getUsername())
.memberPicture(post.getMember().getPicture())
.pictureUrl(post.getPostImages().isEmpty() ? "" : post.getPostImages().get(0).getPostImageUrl())
.views(post.getViews())
.likes(post.getLikes())
.postTitle(post.getPostTitle())
.createdAt(post.getCreatedAt())
.modifiedAt(post.getModifiedAt())
.build();
}).collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
@@ -1,43 +1,65 @@
/*
package com.main36.pikcha.global.batch;
import com.main36.pikcha.domain.attraction.entity.Attraction;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.JobScope;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.batch.item.database.JpaPagingItemReader;
import org.springframework.batch.item.database.builder.JpaPagingItemReaderBuilder;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManagerFactory;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@RequiredArgsConstructor
@Configuration
public class RankingCalcConfiguration {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
private final EntityManagerFactory entityManagerFactory;
@Bean
public Job simpleJob(){
return jobBuilderFactory.get("simpleJob")
.start(simpleStep1(null))
.next(simpleStep2(null))
.build();
public Job ExampleJob(){
Job exampleJob = jobBuilderFactory.get("exampleJob")
.start()
}
@Bean
@JobScope
public Step simpleStep1(@Value("#{jobParameters[requestDate]}")String requestDate){
return stepBuilderFactory.get("simpleJob")
.tasklet((contribution, chunkContext)-> {
log.info(">>>>> This is simpleStep 1");
log.info(">>>>> requestDate = {}", requestDate);
return RepeatStatus.FINISHED;
})
public Step step(*/
/*@Value("#{jobParameters[requestDate]}")String requestDate*//*
){
return stepBuilderFactory.get("step")
.<Attraction, Attraction>chunk(10)
.reader(reader())
}
@Bean
@StepScope
public JpaPagingItemReader<Attraction> reader(){
*/
/*Map<String, Object> parameterValues = new HashMap<>();
parameterValues.put("numOfPosts" , 100);*//*
return new JpaPagingItemReaderBuilder<Attraction>()
.pageSize(10)
.queryString("SELECT p FROM ATTRACTION p ORDER BY likes DESC")
.entityManagerFactory(entityManagerFactory)
.name("JpaPagingItemREader")
.build();
}
@Bean
Expand Down

0 comments on commit 5338d2d

Please sign in to comment.