Skip to content

mylee-alley/happyJelly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Happy Jelly 반려견 유치원 관리 시스템

Happy Jelly는 반려견 유치원 운영을 효율적으로 관리할 수 있도록 돕는 통합 관리 시스템입니다. 이 시스템은 유치원에서 발생하는 다양한 운영 업무를 전산화하여 관리자와 반려견 보호자 모두에게 편리함을 제공합니다. 반려견의 건강 관리와 보호자의 만족도를 최우선으로 고려하여 설계되었으며, 입학부터 일일 출석 및 활동 보고서, 결제 관리에 이르기까지 다양한 기능을 포함하고 있습니다.

목차

  1. 기술 스택
  2. 주요 기능
  3. 외부 API
  4. 프로젝트에서의 역할
  5. 트러블슈팅

기술 스택

Java JavaScript Oracle CSS SpringBoot HTML
  • 백엔드: Spring Boot, Java
  • 프론트엔드: HTML, CSS, JavaScript 1.5, Thymeleaf
  • 데이터베이스: Oracle Database
  • 개발 도구: SQL Developer

주요 기능

  • 회원 관리: 사용자 등록, 로그인, 프로필 관리, 역할 기반 접근 제어 (RBAC)를 통해 관리자와 보호자의 계정을 관리합니다.
    • 외부 API 사용: 네이버 로그인, 카카오 로그인 API를 사용하여 소셜 로그인 기능을 구현하였습니다.
  • 강아지 관리: 반려견의 정보를 등록하고, 관리하며, 프로필을 조회할 수 있습니다.
  • 입학 신청: 보호자는 온라인으로 반려견의 입학을 신청하고, 신청 상태를 추적할 수 있습니다.
  • 출석 관리: 반려견의 출석을 체크하고 기록하며, 출석 현황을 조회할 수 있습니다.
  • 일일 리포트: 반려견의 일일 활동 및 건강 상태에 대한 보고서를 작성하고 보호자가 조회할 수 있습니다.
  • 백신 관리: 반려견의 백신 접종 기록을 관리하고, 보호자는 접종 증명서를 조회할 수 있습니다.
  • 결제 시스템: 카카오페이 연동을 통해 결제 처리를 간편하게 하고, 결제 내역을 조회할 수 있습니다.
    • 외부 API 사용: 카카오페이 API를 통해 결제 및 결제 내역 관리를 구현하였습니다.
  • 지점 관리: 유치원의 여러 지점 정보를 통합 관리할 수 있습니다.
  • 직원 관리: 유치원 직원의 정보를 관리하고, 권한을 설정하여 운영의 효율성을 높입니다.

외부 API

  • 카카오페이 API: 결제 처리 및 결제 내역 조회 기능을 구현하는 데 사용되었습니다.
  • 네이버 로그인 API: 네이버 계정을 통한 소셜 로그인 기능을 구현하는 데 사용되었습니다.
  • 카카오 로그인 API: 카카오 계정을 통한 소셜 로그인 기능을 구현하는 데 사용되었습니다.

프로젝트에서의 역할

저는 Happy Jelly 프로젝트에서 다음과 같은 역할을 담당하였습니다:

  1. 로그인 및 회원 관리:

    • 다양한 사용자 권한에 따른 로그인 시스템 구현.
    • 회원가입 및 간편 로그인 (카카오, 네이버) 기능 통합.
    • 비밀번호 찾기, 아이디 찾기 및 비밀번호 변경 기능 구현.
  2. 메인 페이지 및 내비게이션:

    • 사용자 역할에 따라 맞춤형 메인 페이지 및 내비게이션 바 구성.
  3. 입학 및 반 관리:

    • 입학 신청 시스템 개발, 신청 상태 관리 기능 구현.
    • 반 등록 및 수정 기능 추가.
  4. 결제 및 구독 관리:

    • 카카오페이 연동 결제 시스템 구현 및 결제 내역 관리.
    • 구독권 상태 관리 및 갱신 기능 개발.
  5. 마이페이지 관리:

    • 사용자 정보 및 강아지 프로필 관리 기능 개발.
    • 결제 내역 및 보유 이용권 조회 기능 구현.
  6. 유효성 검사:

    • 로그인 및 회원가입, 비밀번호 변경 시 유효성 검사 기능 추가.

트러블슈팅

프로젝트 진행 중 다양한 기술적 문제에 직면하였으며, 이를 해결하는 과정에서 많은 학습과 성장이 있었습니다.
주요 트러블슈팅 사례는 다음과 같습니다:

1. DB 관련
  • 문제: missing table, missing column

    • 해결: @JoinColumn 명시 여부 확인
  • 문제: 무한 순환 루프

    • 해결: @JsonBackReference, @JsonManagedReference, @ToString(exclude={참조필드명}) 어노테이션 사용
2. Repository 관련
  • 문제: DB에서 스네이크 표기법, Spring에서 카멜 표기법을 주로 써서 Repository findBy 생성 시 오류
    • 해결: entity에 카멜 표기법으로 필드명 수정한 후 @Column(name=스네이크 표기법)으로 수정하여 DB와 엔티티 맞춤
3. API 관련
  • 문제: 매개변수로 쓴 kakaoPayDTO와 토큰 받아야 하는 kakaoPayDTO에서 같은 DTO를 사용하며 값이 덮어씌워짐

    • 해결: 메서드 밖에 kakaoPayDTO를 따로 선언해주고, this.kakaoPayDTO로 매개변수와 구분
  • 문제: 프로젝트에 맞게 추가 파라미터 받으려고 했으나 계속 null이 출력되는 현상

    • 해결: controller의 redirectUrl과 service의 approval_url 경로 모두 수정하니 작동됨
4. 결제 및 구독 관리 관련
  • 문제: 자동결제 관련 체크박스 체크 여부에 따라 체크하지 않았을 때 @RequestParam에서 오류 발생
    • 해결: 자동결제 옵션을 체크하지 않았을 경우를 처리하기 위해 @RequestParam(value="autoPay", required=false)로 설정하여, 체크박스가 체크되지 않은 경우 null로 처리하도록 하여 오류를 방지함.
5. 회원 관리 관련
  • 문제: 비밀번호 변경 시 필요한 컬럼 (newpassword)를 생성하고, @NotEmpty 선언했더니 일반 회원가입 시 NotEmpty 충족하지 못하여 오류 발생

    • 해결: DTO에 회원가입 시 필요한 인터페이스 (public interface Signup{})와 비밀번호 변경 시 필요한 인터페이스 (public interface PasswordChange{})를 선언하고, 각각의 필드에 맞게 넣어줌
  • 문제: 네이버 로그인 시 토큰 값이 주기적으로 변경되어 DB에 이것을 username으로 입력 시 계정이 계속 생기는 것을 확인

    • 해결: 이메일을 username으로 입력하는 것으로 변경

프로젝트 기간

2024/07/03 - 2024/08/23 (약 8주)