Skip to content

nyeJiiii/OnAndOff

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

header

온앤오프

🏆 프로젝트 소개

프론트(React), 백엔드(SpringBoot/Java) 각팀이 협업하여 ui/ux부터 배포작업까지 완료한 사이드프로젝트입니다. 프로젝트명은 온앤오프(On&Off)이며, 해당 프로젝트는 클라이언트의 일정관리를 손쉽게 유지관리 할 수 있습니다.

배포링크 : https://on-n-off-mini.netlify.app/
개발기간 : 2023.07.24 ~ 2023.08.11


📌 프로젝트 구조

Table of Contents
  1. 프로젝트 소개
  2. 프로젝트 구조
  3. 프로젝트 시현
  4. 팀원 및 역할
  5. 프로젝트 스택
  6. ERD
  7. 테이블 설계
  8. 주요 기능
  9. API 명세서

(back to top)

로그인 / 회원관리

로그인 회원관리
로그인 회원가입

메인(일반) / 메인(관리자)

메인(일반) 메인(관리자)
메인_일반 메인_관리자

관리자

당직휴가관리 사원관리 사원관리_세부 정보
관리자_당직휴가관리 관리자_사원관리 관리자_사원관리_세부 정보

휴가/당직

휴가/당직관리 휴가등록 당직등록
휴가당직관리 !휴가등록 당직등록
당직신청내역 휴가신청내역
나의당직신청 나의휴가신청

개인정보수정

변경_전화번호 변경_비밀번호 캘린더
내정보변경_전화번호 내정보변경_비밀번호 캘린더

(back to top)

✨ 팀원 및 역할

김주원 박성욱 한혜지 김지나
초기 개발 세팅
회원가입
로그인
개인정보수정
관리자
배포
연차 페이지
당직 페이지
캘린더
배포
연차 페이지
당직 페이지
개인정보수정
캘린더
프로젝트 팀장
프로젝트세팅
로그인

(back to top)

🛠 프로젝트 스택(백엔드)

  • 개발환경 : JAVA 11
  • IDE: IntelliJ
  • Build: Gradle
  • Framework: Spring-Boot 2.7.14
  • Database: MySQL
  • ORM: Mybatis
  • 사용기술
    • Spring Web
    • Spring Data JPA
    • Spring DevTools
    • Spring Security
    • JWT 4.3.0
    • h2database
    • lombok
    • Postman
    • AWS EC2

(back to top)

📖 ERD

image

(back to top)

⚖ 테이블 설계

1. 유저

CREATE TABLE user_tb
(
    id           INT PRIMARY KEY AUTO_INCREMENT,
    email        VARCHAR(20) NOT NULL UNIQUE, --로그인 ID로 사용
    password     VARCHAR(20) NOT NULL, --유효성검사
    username     VARCHAR(20) NOT NULL, --실명,유효성검사
    phone_number VARCHAR(20) NOT NULL, --유효성검사
    position     VARCHAR(20) NOT NULL, --사원, 주임, 대리, 과장, 차장, 부장
    roles        VARCHAR(10) NOT NULL, --note: 일반, 관리자 / ENUM DEFAULT '일반'
    update_date  TIMESTAMP             --개인정보 최종 수정일/논의
);

2. 로그인

CREATE TABLE login_tb
(
    id         INT PRIMARY KEY AUTO_INCREMENT,
    user_id    INT         NOT NULL,
    ip         VARCHAR(50) NOT NULL,
    user_agent VARCHAR(10) NOT NULL,
    login_at   TIMESTAMP,

    FOREIGN KEY (user_id) REFERENCES user_tb(id)
);

3. 연차

CREATE TABLE dayoff_tb
(
    id             INT PRIMARY KEY AUTO_INCREMENT,
    user_id        INT         NOT NULL,
    num_of_dayoff  FLOAT       NOT NULL, --남은 연차 일수
    start_date     DATE        NOT NULL, --시작일
    end_date       DATE        NOT NULL, --종료일
    reason         VARCHAR(30) NOT NULL, --사유
    type           VARCHAR(10) NOT NULL, --연차, 오전반차, 오후반차
    status         VARCHAR(10) NOT NULL, --대기, 승인, 반려 ENUM DEFAULT '대기'
    apply_at       DATE        NOT NULL,
    process_at     DATE,    

    FOREIGN KEY (user_id) REFERENCES user_tb(id)
);

4.당직

CREATE TABLE duty_tb
(
    id          INT PRIMARY KEY AUTO_INCREMENT,
    user_id     INT         NOT NULL,
    date        DATE        NOT NULL, --당직 날짜
    reason      VARCHAR(30) NOT NULL, --사유
    status      VARCHAR(10) NOT NULL, --대기, 승인, 반려
    apply_at    DATE        NOT NULL,
    process_at  DATE,

    FOREIGN KEY (user_id) REFERENCES user_tb(id)
);

(back to top)

🎀 주요 기능

🔹 회원가입

  1. jwt이용, 비밀번호 단방향 암호화
  2. 개인정보있는경우(이름,휴대폰,이메일) AES256양방향 암호화적용,복호화
  3. 관련필드에 DB검색할떄도 검색조건을 암호화

🔹 로그인

  1. jwt token 인증방식, spring security적용
  2. login 성공 후 마지막 로그인 성공 날짜 업데이트 적용
  3. login 성공 후 회원번호, user-agent, client ip, 시간 로그 등록처리
  4. 일반로그인/관리자로그인

🔹 개인정보수정

  1. 개인정보 수정,삭제, 수정된 일자 업데이트
  2. 개인연차/당직 등록
  3. 관리자 (유저의 권한 설정), 로그인 발급된 jwt token검증
  4. 비밀번호변경(단방향 암호화), 전화번호변경

🔹 연차/당직

  1. 신청내역, 사용내역, 등록, 조회, 취소(crud)
  2. 연차/당직 구분컬럼구성, 테이블1개설계
  3. 저장/삭제 api구현필요
  4. 내 연차일 수

🔹 관리자기능

  1. 연차 승인
  2. 연차 반려

🔹 사용자간공유

  1. 데이터 내려줄 조회 api 구현
  2. 월별 캘린더 주간/일간 등 다양하게 표현

(back to top)

📌 API 명세서

image

(back to top)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%