당근마켓 클론 코딩입니다.
[당근마켓!] http://jeonhaekang.shop.s3-website.ap-northeast-2.amazonaws.com
프론트 GIT-HUB 주소 https://github.com/jeonhaekang/hanghae_clone_01
https://www.notion.so/8-Clone-Coding-e23b83af71d744b492a8771ee301d9cd
Back-end
Front-end
Version Control
### Entity Relatuonship Diagram
MultipartFile과 JSON으로 보낼때 프론트측에 제대로 데이터가 안가는 문제
@PostMapping("/post")
public ResponseEntity<String> writePost(@RequestPart("file") MultipartFile multipartFile, @RequestPart("post") PostsRequestDto requestDto,
@AuthenticationPrincipal UserDetailsImpl userDetails) throws IOException {
System.out.println(requestDto.getContent());
// String image = s3Uploader.upload(multipartFile, "postImage");
String image = s3Uploader.upload(multipartFile,"postImage");
requestDto.setImage(image);
postService.writePost(requestDto, userDetails.getUser());
return ResponseEntity.ok()
.body("작성되었습니다 true");
}@RequestPart로 둘다 multipart/form-data 형태로 전송하는 것으로 해결
게시물 삭제시 Likes와의 연관 관계로 인해 좋아요를 누르면 삭제 안되는 문제
@JsonIgnore
@OneToMany(cascade = CascadeType.REMOVE, mappedBy = "post")
private List<Likes> LikesList = new ArrayList<>();cascade = CascadeType.REMOVE 를 이용하여 해결
거래를 한 상대에게 무한정으로 후기를 남길수 있는 문제
public RatedDto addRate(RateDto rateDto){ //유저 평가하기
RatedDto ratedDto = new RatedDto();
Post post = postRepository.findById(rateDto.getPostId()).get();
post.setRated(true);
int rate1 = rateDto.getRate();
User user = userRepository.findById(rateDto.getId()).get(); //평가 점수 더하는 로직
int currentRate = user.getRate();
user.setRate(currentRate + rate1);
User user2 = userRepository.save(user);
rateDto.setRate(user2.getRate());
ratedDto.setRated(true);
return ratedDto;
}프론트측에 유저의 아이디만 받고 평점을 남기는 식으로 하였는데 이번에 post아이디도 함께 받아서 포스트에 boolean rated = false;//평가여부 항목을 추가하여 post 아이디를 받아서 해당 게시물을 찾고 true로 바꿔서 거래를 한 게시물을 알려주었습니다.





