그램그램 -404 페이지 처리 등등 놓쳤던 부분 수정

JIWOO YUN·2024년 6월 2일
0

GramGram

목록 보기
11/11
post-custom-banner

404 오류 페이지 처리

  • 타임리프를 사용시 error/404 를 추가적으로 만들어두면 알아서 404 에러가 발생시 해당페이지를 보여준다.
    • 만약 타임리프를 사용하지 않는다면 globalerrorHandler를 통해서 오류페이지 핸들링을 해주는게 좋음.
  • 타임리프를 사용하고 있기 때문에 404 페이지만 만들면 알아서 진행됨.

이전에 임시로 만들어놨던 내 정보 페이지 꾸미기.

내 정보에서 보여줘야 할 것들

  • 내 정보
    • 이름
    • 성별
  • 성별로 인기 정보
    • 전체 인기
    • 여성 인기
    • 남성 인기
  • 호감사유별 인기

해당 데이터는 저장되어있기 때문에 가져올때 필터링 해서 가져오면된다.

@PreAuthorize("isAuthenticated()")
@GetMapping("/me")
public String me(Model model) {

    if (!rq.getMember().hasConnectedInstaMember()) {
        return rq.historyBack("먼저 본인의 인스타그램 아이디를 입력해주세요.");
    }
    InstaMember instaMember = rq.getMember().getInstaMember();

    long likesByGenderWomen = instaMember.getToLikeablePeople().stream().filter(likeablePerson -> likeablePerson.getToInstaMember().getGender().equals("W")).count();

    long likesByGenderMen = instaMember.getToLikeablePeople().stream().filter(likeablePerson -> likeablePerson.getToInstaMember().getGender().equals("M")).count();

    long typeCode1 = instaMember.getToLikeablePeople().stream().filter(likeablePerson -> likeablePerson.getAttractiveTypeCode() == 1).count();

    long typeCode2 = instaMember.getToLikeablePeople().stream().filter(likeablePerson -> likeablePerson.getAttractiveTypeCode() == 2).count();
    long typeCode3 = instaMember.getToLikeablePeople().stream().filter(likeablePerson -> likeablePerson.getAttractiveTypeCode() == 3).count();


    model.addAttribute("likes", likesByGenderWomen + likesByGenderMen);
    model.addAttribute("likesByGenderWomen", likesByGenderWomen);
    model.addAttribute("likesByGenderMen", likesByGenderMen);
    model.addAttribute("likesByAttractiveTypeCode1", typeCode1);
    model.addAttribute("likesByAttractiveTypeCode2", typeCode2);
    model.addAttribute("likesByAttractiveTypeCode3", typeCode3);
    return "user/member/me";
}
  • 각 해당하는 데이터를 model에 실어서 보내주기.
    • 이 부분은 컨트롤러단이 아닌 객체 내에서 관리해도 될 거같음.

놓쳤던 부분

  • like를 표시할때 만들어지는 연결되지 않은 instamember에 관해서 회원이 회원과 연결되지 않은 이미 등록된 인스타 그램 계정과 연결되지 않았을 때 연결이 되지 않았던 점 수정
    • 이미 만들어져있는 연결되지 않은 인스타 계정에 관해서 처리를 하지 않고 진행하여 발생된 중요한 오류

connect 부분

@Transactional
public RsData<InstaMember> connect(Member member, String username, String gender) {

    Optional<InstaMember> opInstaMember = findByUsername(username);

    if (opInstaMember.isPresent() && !opInstaMember.get().getGender().equals("U")) {
        return RsData.of("F-5", "이미 다른 사용자와 연결되어있습니다.");
    }

    RsData<InstaMember> instaMemberRsData = findByUsernameOrCreate(username, gender);

    memberService.UpdateInstaMember(member, instaMemberRsData.getData());
    return instaMemberRsData;

}
  • 이전에는 인스타 계정이 존재만 하면 다른 사용자와 연결되어있다고 했지만 성별이 U 인경우 연결이 된 것이 아니기 때문에 해당 부분을 수정

만들어져있는 계정에 성별을 추가하는 부분

@Transactional
public RsData<InstaMember> findByUsernameOrCreate(String username, String gender) {
    Optional<InstaMember> opInstaMember = findByUsername(username);

    if (opInstaMember.isPresent()) {
        InstaMember instaMember = opInstaMember.get();
        instaMember.updateGender(gender);
        instaMemberRepository.save(instaMember);

        return RsData.of("S-2", "인스타 계정이 등록되었습니다.", instaMember);
    }

    return create(username, gender);
}
  • 해당 인스타 user가 존재하는 경우 성별을 업데이트해서 다시 넣어준다.
    • 존재하지 않는 경우 create 진행
profile
열심히하자
post-custom-banner

0개의 댓글