기능구현_백경환 - WIYA-waitinyourarea/wiya GitHub Wiki

레파지토리

백경환
💡 저장소 링크

주요 기능

  1. 병원 등록
  • 병원은 등록([생성 메소드] 시, @ManyToOne으로 양방향 연관관계 매핑 되어있는 병원 사진과 함께 등록 (등록 서비스 메소드)
  • 시,구 는 일종의 카테고리 처럼 해당 병원이 어떤 구에 위치해 있는지를 나타냄
    • 병원의 주소 정보를 담고있는 임베디드 타입 객체를 만들 때 카카오 주소 API(코드)를 통해서 좌표와 법정동 코드를 저장

    • 특정 병원은 서울시도 참조를 하지만, 강남구도 참조를 해야되므로 @ManyToMany관계처럼 보일 수 있으나, 다대다 매핑은 중간 테이블의 한계점이 많으므로 시, 구를 자기 참조 하는 형태로 하여 해결

      ezgif-4-2d5f5a6f9d

  1. 시, 구의 계층형 카테고리
  • 시,구 엔티티의 어떤 구들은 시의 포함이 되어 있기 때문에 자기 참조

    ezgif-4-91b8ca64ac

  1. 병원 수정
  • 병원 수정은 더티체킹 을 통한 update (업데이트 메소드)
    • 주소같은 임베디드 타입은 새로운 값 입력 시, 새로운 객체를 만들어 초기화
    • 사진은 해당 병원을 참조하고 있는 이미지를 삭제하거나, 새로운 이미지를 추가할 수 있어야함
    • 양방향 관계에 cascade = CascadeType.ALL, orphanRemoval = true 설정을 통해 리스트에서 제거해 고아객체를 만들어 삭제 (변경, 삭제 코드)
  1. 병원 검색과 페이징 처리
  • JPQL 쿼리문과 .setFirstResult(), .setMaxResults()를 통한 페이징 처리(쿼리 코드)
  1. 병원 상세페이지 및 줄서기
  • 병원 상세페이지에서 줄서기 버튼을 누르면 Ajax로 병원 줄서는 요청이 발송됨(아직 구현 중)
  1. 회원가입
    1. 중복되는 메일이 있는지 Ajax로 체크함
    2. 메일 인증 버튼 을 누르면 메일로 난수를 메일 발송(코드)하고 해당 난수를 세션에 저장
    3. 가입 요청 시, 입력한 인증번호가 세션과 일치하면 가입 성공
    4. 가입시 입력 비밀번호는 해싱과 솔팅을 하여 암호화 처리
  2. 로그인 인증, 인가
    1. 로그인 인증처리하는 코딩(컨트롤러, 서비스)
    2. 로그인 시, 이메일로 일치하는 회원이 있는 지 find를 해서 멤버 객체를 찾음
    3. 멤버 객체에서 암호화된 비밀번호와 입력받은 비밀번호 평문을 다시 암호화 한 스트링을 비교하여 일치하면 로그인 처리
    4. 로그인 처리는 세션에 등록
    5. 인가 처리는 스프링 인터셉터 에서 로그인 필요 페이지에서는 로그인이 되어있지 않다면 가려는 목적페이지를 파라미터로 갖고, 로그인 페이지를 리다이렉트(인터셉터 코드)
⚠️ **GitHub.com Fallback** ⚠️