[프로젝트] 웹 TripRecorder - day11

_bean_·2023년 6월 17일
0
post-thumbnail

오류 및 문제점

1. Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements

  • 문제점: 연관관계를 수정하며 잘못된 매핑을 했다.
  • 해결 방안: @OneToMany의 값을 List로 받는다.

진행 상황

1. 카드 ERD 변경

  • 할인 정보를 더 구체적으로 넣을 수 있도록 테이블 수정

2. 댓글 등록 response body 변경

  • 댓글 정보에 작성자 정보를 삽입
// responseBody
{
    "snsNo": 87,
    "replyNo": 117,
    "replyContent": "댓글내용이다",
    "replyRegdate": "2023-06-16T06:33:46.407+00:00",
    "replyUser": {
        "userNo": 1,
        "userNick": "사과1",
        "userProfile": "https://이미지주소"
    }
}

3. 경비 등록

@PostMapping("/register")
   public String ocr(@RequestBody ObjectNode obj) throws JsonProcessingException {
   	ObjectMapper mapper = new ObjectMapper();
	Long tripNo = obj.get("tripNo").asLong();
	Long snsNo = obj.get("snsNo").asLong();
	Long cardNo = obj.get("cardNo").asLong();

	ExpVO exp = mapper.treeToValue(obj.get("exp"), ExpVO.class);
		
	trepo.findById(tripNo).ifPresent(trip -> exp.setTrip(trip));
	srepo.findById(snsNo).ifPresent(sns -> exp.setSns(sns));
	crepo.findById(cardNo).ifPresent(card -> exp.setCard(card));
		
	erepo.save(exp);
		
	return "OK";
}

4. 모든 카드 조회

5. 연결된 경비가 없는 SNS 게시글 조회, 연결된 SNS 게시글이 없는 경비 조회 (경비, 게시글 작성, 수정을 위함)

@PostMapping("/list/{tripNo}")
public List<JSONObject> postSnsList(@PathVariable Long tripNo) {
	TripVO trip = trepo.findById(tripNo).orElse(null);
	List<SnsVO> tmpSnsList = srepo.findBySnsAndExpNull(trip);
		
	List<JSONObject> snsList = new ArrayList<>();
	tmpSnsList.forEach(sns -> {
		JSONObject obj = new JSONObject();
		obj.put("snsNo", sns.getSnsNo());
		obj.put("snsTitle", sns.getSnsTitle());
		snsList.add(obj);
	});
		
	return snsList;
}

6. 게시글 조회

  • 현재는 모든 게시글을 가져옴
    • 로그인 전: 전체 공개인 게시글
    • 로그인 후: 내 게시글 + 팔로우 게시글
    • 을 가져올 수 있도록 수정 필요
@GetMapping("/list")
public List<SnsDto> getSnsList(HttpServletRequest request) {
	String obj = (String)request.getAttribute("Authorization");
		
	List<SnsVO> tmpSnsList = srepo.findAll();
		
	JSONObject snsObj = new JSONObject();
	List<SnsDto> snsList = new ArrayList<>();
		
	tmpSnsList.forEach(tmpSns -> {
		SnsDto sns = SnsDto.builder()
				.tripNo(tmpSns.getSns().getTripNo())
				.snsNo(tmpSns.getSnsNo())
				.snsTitle(tmpSns.getSnsTitle())
				.snsContent(tmpSns.getSnsContent())
				.snsPhoto(getSnsImages(tmpSns.getSnsPhoto()))
				.snsRegdate(tmpSns.getSnsRegdate())
				.snsUser(getAnyUser(tmpSns.getSns().getUser().getUserNo()))
				.reply(getSnsReply(tmpSns))
				.heart(getSnsHeart(tmpSns, tmpSns.getSns().getUser().getUserNo()))
				.hashtag(getSnsHashtag(tmpSns))
				.build();
			

		if(tmpSns.getExp() != null) {
			sns.setExpNo(tmpSns.getExp().getExpNo());
		}
			
		snsList.add(sns);
	});
		
		
	return snsList;
}

참고 자료

profile
어쩌다 풀스택 :3

0개의 댓글