Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
168 commits
Select commit Hold shift + click to select a range
95cb8dc
init security
Jul 24, 2023
258b77c
yml 환경설정
Jul 24, 2023
a911280
feat:init security
Jul 24, 2023
2fda980
chore:yml 환경설정
Jul 24, 2023
6712379
Merge branch 'develop' of https://github.com/FC-MINI-6/MiniProject_BE…
Jul 24, 2023
91a5808
feat:#1 BaseTimeEntity
Jul 25, 2023
41210a0
feat:#1 User Domain
Jul 25, 2023
c1c58b7
feat:#1 User Response/Request DTO
Jul 25, 2023
30835a4
feat:#1 User Controller
Jul 25, 2023
62e7ad6
feat:#1 User Service
Jul 25, 2023
4796e8e
feat:#1 UserDetails, isAdmin
Jul 25, 2023
ef046e2
chore:#1 git ignore
Jul 25, 2023
6af7ecc
feat:#1 암호화 로직 (AES256) 구현
Jul 27, 2023
7e475f7
feat:#1 login history entity
Jul 27, 2023
0300242
feat:#1 login history repository
Jul 27, 2023
80d8ce6
feat:#1 login history service
Jul 27, 2023
3a75195
feat:#1 login history dto
Jul 27, 2023
04b6675
feat:#1 회원가입 시 사용자 정보 암호화 적용, 주석 처리
Jul 27, 2023
731fc73
feat:#1 로그인 로직 구현
Jul 27, 2023
236456e
feat:#1 api 응답 형식 수정
Jul 27, 2023
795e717
feat:#1 user의 userId를 이메일로 수정
Jul 27, 2023
beef9e7
feat:#1 user DTO 형식 수정
Jul 27, 2023
27f647f
Merge pull request #5 from FC-MINI-6/feature/#1-implement-userJoin
nyeJiiii Jul 27, 2023
2c8194e
fix: 로그인시 username 대신 email로 로그인 할수 있도록 수정
nyeJiiii Jul 27, 2023
6df4b84
refator:#7 response 형식 수정
Jul 28, 2023
9d38811
refator:#7 수정된 response 형식 적용
Jul 28, 2023
84ddb80
refator:#7 수정된 response 형식 적용
Jul 28, 2023
458c093
feat: #7 더미데이터 생성, YML 파일 편집
Jul 31, 2023
ed933ed
feat: #7 DayOff, Duty 엔티티 생성
Jul 31, 2023
e3866f9
refactor: #7 User의 JoinDate를 DayOff로 이동
Jul 31, 2023
4e60547
refactor: #7 AdminRepository 생성 후 기능 구현
Jul 31, 2023
e628248
refactor: #7 AdminService 생성 후 기능 구현
Jul 31, 2023
8546bf3
refactor: #7 AdminController 생성 후 기능 구현
Jul 31, 2023
24ed5b7
refactor: #7 AdminRequest, Response DTO 생성 후 기능 구현
Jul 31, 2023
c1fa648
Merge pull request #8 from FC-MINI-6/feature/#7-implement-admin
dali186 Jul 31, 2023
b99377a
Merge branch 'develop' of github.com:FC-MINI-6/MiniProject_BE into de…
nyeJiiii Jul 31, 2023
448fed1
feat: #3 UserService - 비밀번호 수정 로직 구현
Jul 31, 2023
f8bfef3
feat: #3 UserRepository - 비밀번호 수정 쿼리 구현
Jul 31, 2023
5775bee
feat: #3 UserController, DTO 비밀번호 수정 로직 구현
Jul 31, 2023
ebca4e3
feat: #3 비밀번호가 맞지 않을 때 발생하는 예외 생성
Jul 31, 2023
aa09f61
feat: #3 찾는 사용자 정보가 없을 때 발생하는 예외 생성
Jul 31, 2023
8104af5
feat:#3 UserRequest / UpdateDTO 생성
nyeJiiii Jul 31, 2023
a116b57
feat:#3 User / updatePhoneNumber 메서드 추가
nyeJiiii Jul 31, 2023
d1a9c42
feat:#3 UserService / updatePhoneNumber 구현
nyeJiiii Jul 31, 2023
7f5881d
feat:#3 UserController / updatePhoneNumber 구현
nyeJiiii Jul 31, 2023
0ac9cc2
refacor: numOfDayOff 타입 Float으로 변경
nyeJiiii Aug 1, 2023
933543a
refacor: TODO 기재
nyeJiiii Aug 1, 2023
1e29cd0
refacor: BaseTimeEntity > DateUtils 상속
nyeJiiii Aug 1, 2023
f6f9dbb
Merge pull request #9 from FC-MINI-6/feature/implement-modifyPWD
nyeJiiii Aug 1, 2023
c13337a
Merge branch 'develop' into feature/#3-update-phone-number
nyeJiiii Aug 1, 2023
38e40ba
Merge pull request #10 from FC-MINI-6/feature/#3-update-phone-number
nyeJiiii Aug 1, 2023
e504080
fix: @Getter @Setter 오류 수정
nyeJiiii Aug 1, 2023
7c31418
fix: @Transactional 오류 수정
dali186 Aug 1, 2023
08d3ca1
#[4] 당직 등록/삭제 구현
gosuuk Aug 1, 2023
5e6aaf9
#[4] db수정
gosuuk Aug 1, 2023
c278011
refactor: #3 SQL 더미 데이터 수정
Aug 1, 2023
a935336
refactor: #3 UserController, 접근제어자 수정
Aug 1, 2023
c3a0d26
refactor: #3 DTO, 어노테이션 수정
Aug 1, 2023
b96b7a1
refactor: #3 Service, 로직 수정
Aug 1, 2023
1376603
Merge remote-tracking branch 'origin/develop' into fix/#3-modify-user…
Aug 1, 2023
816eec9
Merge pull request #14 from FC-MINI-6/fix/#3-modify-userInfo
nyeJiiii Aug 1, 2023
d0cb2bc
#4 DayOff 구현
gosuuk Aug 1, 2023
c64d80a
Merge pull request #13 from FC-MINI-6/featuer/#4_duty
nyeJiiii Aug 1, 2023
8931596
refacor:#4 dayoff의 속성 type과 status의 타입을 enum으로 변경
nyeJiiii Aug 1, 2023
3781633
refacor:#4 dayoff의 속성 type과 status의 타입을 enum으로 변경
nyeJiiii Aug 1, 2023
e779639
docs: README.md(1)
jinakim8 Aug 1, 2023
7cd5766
refacor:#4 DayOffService, DayOffController > 메서드 주석(설명) 추가
nyeJiiii Aug 1, 2023
1dd8a3a
refacor:#4 DayOffRequest, AdminResponse > DayOff의 status 타입 enum으로 변경
nyeJiiii Aug 1, 2023
abf6fc8
refacor:#4 DutyStatus Enum 클래스 생성 및 적용
nyeJiiii Aug 1, 2023
d73231a
refacor:#4 DutyRequest > ToEntity toEntity 생성
nyeJiiii Aug 1, 2023
64313ae
refacor:#4 DutyService > Duty.builder를 toEntity로 변경
nyeJiiii Aug 1, 2023
1de167b
refacor:#4 DutyController > 메서드 주석(설명)추가
nyeJiiii Aug 1, 2023
9426abf
refacor:#4 DutyController > getAppliedDuty 메서드 매핑 url 수정
nyeJiiii Aug 1, 2023
58b8952
feature: UserRoles, UserPosition enum 클래스 생성
nyeJiiii Aug 1, 2023
243a196
refactor: User에 enum 타입 적용
nyeJiiii Aug 1, 2023
89fd920
refactor: AdminResponse, CustomUserDetails > User에 enum 타입 적용
nyeJiiii Aug 1, 2023
c909539
refactor: 변수이름 수정
nyeJiiii Aug 1, 2023
9429ebe
refactor: Jwt토큰에 UserRole Enum 타입 적용
nyeJiiii Aug 1, 2023
9f6929c
refactor: UserPosition에 [주임] 추가
nyeJiiii Aug 1, 2023
900c7e4
refactor: data.sql 변경, DBInit 추가
nyeJiiii Aug 1, 2023
ab690a6
Merge pull request #15 from FC-MINI-6/feature/#4_implement_day_off
nyeJiiii Aug 2, 2023
6cf6aa9
Merge pull request #16 from FC-MINI-6/feature/#4-refactoring-else
nyeJiiii Aug 2, 2023
de4a30a
Merge pull request #19 from FC-MINI-6/feature/#docs-README
jinakim8 Aug 2, 2023
dc4ef84
feat:#1 response mapping 회원가입수정
jinakim8 Aug 2, 2023
8cba392
feat:#2 logout 추가
jinakim8 Aug 2, 2023
27c79c9
Merge pull request #20 from FC-MINI-6/feature/#1-feat
nyeJiiii Aug 2, 2023
816a0cb
Merge pull request #21 from FC-MINI-6/feature/#2-feat-logout
nyeJiiii Aug 2, 2023
b299a68
refactor: #4 dayoff, duty에 applyAt, processAt 칼럼 추가
nyeJiiii Aug 2, 2023
61b9e3e
refactor: 비밀번호 수정 시 updateDate 적용
Aug 2, 2023
ed8e8f4
refactor: 시큐리티 enum 설정
Aug 2, 2023
5c64dcb
refactor: DTO enum 설정
Aug 2, 2023
d978759
refactor: enum 적용, 승인/반려시 적용 로직 수정
Aug 2, 2023
dd53b6f
refactor: #4 직급별로 연차 초기설정만해서 보내는 기능으로 수정
nyeJiiii Aug 2, 2023
1bcc24e
#4 Duty 예외처리
gosuuk Aug 2, 2023
30d4b28
refactor: #4 연차 초기설정만 해서 구현
nyeJiiii Aug 2, 2023
06be493
Merge pull request #23 from FC-MINI-6/feature/#4-duty_수정
nyeJiiii Aug 2, 2023
ca0ffaa
Merge pull request #24 from FC-MINI-6/feature/#4-refactoring-day-off
nyeJiiii Aug 2, 2023
4f0033d
#4 DayOff 예외처리
gosuuk Aug 2, 2023
d4968c6
Merge remote-tracking branch 'origin/develop' into refactor/admin-enum
Aug 2, 2023
9ef3a84
#4 DayOff 예외처리
gosuuk Aug 2, 2023
ca8ff9d
Merge pull request #25 from FC-MINI-6/feature/#4_dayoff
dali186 Aug 2, 2023
9ebec82
Merge remote-tracking branch 'origin/develop' into refactor/admin-enum
Aug 2, 2023
05cbcab
#17 월별 스케줄, 전체 사용자 조회
gosuuk Aug 3, 2023
c62fb4d
#17 연차 시작날짜, 끝나는 날짜 추가
gosuuk Aug 3, 2023
678b720
Merge pull request #28 from FC-MINI-6/feature/#17_schedule
nyeJiiii Aug 3, 2023
bc11ad8
feat: #1 회원가입 시 중복된 이메일 가입 예외처리 구현
nyeJiiii Aug 3, 2023
fc0e18b
Merge remote-tracking branch 'origin/develop' into refactor/admin-enum
Aug 3, 2023
0fcf535
refactor: #7 UserRepository 충돌 수정
Aug 3, 2023
8d2deaf
refactor: #7 더미데이터 수정
Aug 3, 2023
fb0e122
refactor: #7 관리자 로직 수정
Aug 3, 2023
56aae84
refactor: #7 새 로직에 필요한 메서드들 구현
Aug 3, 2023
2d1a20b
refactor: #7 연차 승인/반려 시 검증 로직 구현
Aug 3, 2023
d733243
refactor: 회원가입 시 response 내용 변경
nyeJiiii Aug 3, 2023
1b61e87
Merge pull request #22 from FC-MINI-6/refactor/admin-enum
nyeJiiii Aug 3, 2023
1dec7c0
Merge pull request #29 from FC-MINI-6/feature/refactoring
nyeJiiii Aug 3, 2023
3ad1f55
fix: import java.util.Optional;
nyeJiiii Aug 3, 2023
a143700
#4 연차 수정
gosuuk Aug 3, 2023
ef4b456
chore: 메서드 주석(설명) 추가
nyeJiiii Aug 3, 2023
00f7299
feat: login 후 response에 로그인 객체정보 담아서 보냄
nyeJiiii Aug 3, 2023
fb3c02f
feat: User > toEntity() 생성
nyeJiiii Aug 3, 2023
722dcb0
feat: UserResponse > LoginDTO 클래스 생성
nyeJiiii Aug 3, 2023
20e23b8
refactor: DutyController > response 형태 변경
nyeJiiii Aug 3, 2023
f3d3ca3
refactor: DayOffController > registerDayOff() response 메세지 변경
nyeJiiii Aug 3, 2023
2000532
feat: AdminRequest > UserDetailDTO > phoneNumber 정규표현식 추가
nyeJiiii Aug 3, 2023
bf7c61b
feat: AdminResponse > DayOffStatusDTO, DutyStatusDTO > position 정보 추가
nyeJiiii Aug 3, 2023
507eab2
Merge branch 'develop' into feature/refactoriing
nyeJiiii Aug 3, 2023
c3a5259
Update DayOffService.java
nyeJiiii Aug 3, 2023
8fa36ac
Merge pull request #30 from FC-MINI-6/feature/refactoriing
nyeJiiii Aug 4, 2023
eac4679
Update DayOffService.java
nyeJiiii Aug 4, 2023
43b7ebc
chore: 배포 세팅
Aug 4, 2023
33840c6
refactor: body에 액세스토큰 담아서 넘겨주는 방식으로 수정
Aug 4, 2023
02d0dc0
Merge pull request #31 from FC-MINI-6/refactor/user-accesstoken
dali186 Aug 4, 2023
44b970e
#4 연차, 당직 Response할때 enum 숫자로 표시
gosuuk Aug 4, 2023
bd8716a
Merge pull request #32 from FC-MINI-6/refactor/enum
nyeJiiii Aug 4, 2023
947d70f
refactor: response의 enum 값 value로 반환하도록 수정
nyeJiiii Aug 4, 2023
6418351
Merge pull request #34 from FC-MINI-6/refactor/enum-value
nyeJiiii Aug 4, 2023
86caf36
포지션별 연차 수정 및 남은 연차 수정
gosuuk Aug 4, 2023
807be3f
refactor: response의 enum 값 value로 반환하도록 수정 (admin 부분 반영 완료
nyeJiiii Aug 4, 2023
88e2c8e
Merge pull request #36 from FC-MINI-6/refactor/enum-value
nyeJiiii Aug 4, 2023
1bcdf8e
Merge pull request #35 from FC-MINI-6/refactor/dayoff
nyeJiiii Aug 4, 2023
949a6b8
refactor: DayOffRequest > toEntity() > numofDayOff 삭제
nyeJiiii Aug 4, 2023
397e899
refactor: DayOffResponse > valid 변수 명 numOfInitialDayOff으로 변경
nyeJiiii Aug 4, 2023
0f60020
refactor: DayOffService > registerDayOff(), myDayOffInfo() 의 연차일수 계산 …
nyeJiiii Aug 4, 2023
6db437c
refactor: AdminRepository > findAllUsers() numofDayOff 값 조회하는 쿼리부분 삭제
nyeJiiii Aug 4, 2023
1cf6567
refactor: AdminResponse > UsersDTO > numOfDayOff 삭제
nyeJiiii Aug 4, 2023
2c97fea
refactor: AdminService > findAllUsers(), findUserDetail() > 사용자정보 조회시…
nyeJiiii Aug 4, 2023
7249fed
refactor: AdminRepository > findUserById() numofDayOff 값 조회하는 쿼리부분 삭제
nyeJiiii Aug 4, 2023
3f5ada2
refactor: 연차 계산 메소드 제거
Aug 4, 2023
d29b934
refactor: numOfDayOff 반환 제거
Aug 4, 2023
6f55a78
refactor: 연차 계산 메서드 제거
Aug 4, 2023
2c47641
refactor: 검증단계 제거
Aug 4, 2023
ceaf014
Merge pull request #38 from FC-MINI-6/refactor/admin-re
dali186 Aug 4, 2023
42ede77
refactor: ScheduleResponse > DayOffScheduleDTO 휴가 type 추가, DutySchedu…
nyeJiiii Aug 7, 2023
0f2657e
refactor: UserResponse, id -> userId
Aug 7, 2023
51cc6aa
refactor: 토큰 만료 시 401 Error
Aug 7, 2023
ddee27d
Merge branch 'develop' into refactor/no-calculate-dayoff
dali186 Aug 7, 2023
5e8dd3d
Merge pull request #37 from FC-MINI-6/refactor/no-calculate-dayoff
dali186 Aug 7, 2023
35f4e80
Merge remote-tracking branch 'origin/develop' into refactor/front-req…
Aug 7, 2023
2ea81f3
refactor: AdminRepository conflict resolve
Aug 7, 2023
a243c09
Merge pull request #39 from FC-MINI-6/refactor/front-requirements
dali186 Aug 7, 2023
34c5e64
#4 error refactor
gosuuk Aug 8, 2023
e697b88
Merge pull request #40 from FC-MINI-6/refactor/401error
dali186 Aug 8, 2023
198303b
refactor: 연차/당직 조회 시 status 상관없이 다 조회하도록 수정
Aug 8, 2023
0de544f
Merge remote-tracking branch 'origin/develop' into feature/admin-requ…
Aug 8, 2023
f76ec24
Merge pull request #41 from FC-MINI-6/feature/admin-requirement
dali186 Aug 8, 2023
99e290d
docs: README.md(2)
jinakim8 Aug 17, 2023
17f78e4
Merge remote-tracking branch 'origin/develop' into develop
jinakim8 Aug 17, 2023
867bbe0
Update README.md(3)
jinakim8 Aug 18, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -115,4 +115,11 @@ fabric.properties
hs_err_pid*
replay_pid*

# End of https://www.toptal.com/developers/gitignore/api/java,intellij+all
# End of https://www.toptal.com/developers/gitignore/api/java,intellij+all

HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
Binary file modified .gradle/8.1.1/executionHistory/executionHistory.lock
Binary file not shown.
Binary file modified .gradle/8.1.1/fileHashes/fileHashes.lock
Binary file not shown.
Binary file modified .gradle/buildOutputCleanup/buildOutputCleanup.lock
Binary file not shown.
269 changes: 268 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,268 @@
# MiniProject
![header](https://capsule-render.vercel.app/api?type=waving&color=auto&height=200&section=header&text=MiniProject;%20On_n_Off&fontSize=50)
<a name="readme-top"></a>



<!-- PROJECT LOGO -->
<div align="center">
<img src="https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/fd50b2a5-5247-4ca8-9b79-1567cce90e3c">
</div>



<!-- PROJECT SHIELDS -->
# 온앤오프
### 🏆 프로젝트 소개
프론트(React), 백엔드(SpringBoot/Java) 각팀이 협업하여 ui/ux부터 배포작업까지 완료한 사이드프로젝트입니다.
프로젝트명은 온앤오프(On&Off)이며, 해당 프로젝트는 클라이언트의 일정관리를 손쉽게 유지관리 할 수 있습니다.
<br>
>**배포링크 : https://on-n-off-mini.netlify.app/**
><br>
>**개발기간 : 2023.07.24 ~ 2023.08.11**



<br><!-- TABLE OF CONTENTS -->
## 📌 프로젝트 구조
<details>
<summary>Table of Contents</summary>
<ol>
<li>
<a href="#온앤오프">프로젝트 소개</a>
<ul>
<li><a href="#프로젝트 소개">배포링크</a></li>
<li><a href="#프로젝트 소개">개발기간</a></li>
</ul>
</li>
<li><a href="#프로젝트 구조">프로젝트 구조</a></li>
<li><a href="#프로젝트 구조">프로젝트 시현</a></li>
<li><a href="#팀원 및 역할">팀원 및 역할</a></li>
<li>
<a href="#프로젝트 구성">프로젝트 스택</a>
<ul>
<li><a href="#">개발환경</a></li>
<li><a href="#">사용기술</a></li>
</ul>
</li>
<li><a href="#ERD">ERD</a></li>
<li><a href="#테이블 설계">테이블 설계</a></li>
<li>
<a href="#주요 기능">주요 기능</a>
<ul>
<li><a href="#">회원가입</a></li>
<li><a href="#">로그인</a></li>
<li><a href="#">개인정보수정</a></li>
<li><a href="#">개인연차/당직</a></li>
<li><a href="#">관리자기능</a></li>
<li><a href="#">사용자간공유</a></li>
</ul>
</li>
<li><a href="API 명세서"></a>API 명세서</li>
</ol>
</details>

<p align="right">(<a href="#readme-top">back to top</a>)</p>



<!-- PROJECT IMG -->
> **로그인 / 회원관리**
>
| 로그인 | 회원관리 |
| :------------: | :------------: |
| ![로그인](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/6b54f779-71b3-476e-87fb-518ca6ce88ea) | ![회원가입](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/f3664f54-95c5-44cf-8f86-a0bd1d348a8d) |
<br>

> **메인(일반) / 메인(관리자)**
>
| 메인(일반) | 메인(관리자) |
| :------------: | :------------: |
| ![메인_일반](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/80bc9c83-ba70-43db-a6f7-4fd8f8ac78ed) | ![메인_관리자](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/767be3bc-bb80-483f-bcfe-ee46401813a0) |
<br>

> **관리자**
>
| 당직휴가관리 | 사원관리 | 사원관리_세부 정보 |
| :------------: | :------------: | :------------: |
| ![관리자_당직휴가관리](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/91635bd8-8922-4a62-8799-72638014a8ae) | ![관리자_사원관리](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/61c28bf7-9b06-4d7c-b94d-d5ac4018b740) | ![관리자_사원관리_세부 정보](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/091fc659-e093-490b-b9d6-7710b621d8b5) |
<br>

> **휴가/당직**
>
| 휴가/당직관리 | 휴가등록 | 당직등록 |
| :------------: | :------------: | :------------: |
| ![휴가당직관리](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/c0ba7031-a346-4b72-a23d-ff897c0727f5) | !![휴가등록](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/272b7b58-b9c1-4e13-a2a3-77d8bcc2893d) | ![당직등록](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/fd815383-5247-40ba-8b8e-04e7d4a81f73) |

| 당직신청내역 | 휴가신청내역 |
| :------------: | :------------: |
| ![나의당직신청](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/9953028c-a67d-41cc-b0b8-f271eb6173e8) | ![나의휴가신청](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/ae5394ef-d7af-493a-8bea-740477326997) |
<br>

> **개인정보수정**
>
| 변경_전화번호 | 변경_비밀번호 | 캘린더 |
| :------------: | :------------: | :------------: |
| ![내정보변경_전화번호](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/77f38877-a119-4120-955c-01cba08e29e2) | ![내정보변경_비밀번호](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/c14ece09-9bcf-404b-853f-e8a1ecbabeab) | ![캘린더](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/16e67ea1-4ae0-4d8d-a2a7-650729f2c68b) |

<p align="right">(<a href="#readme-top">back to top</a>)</p>



<!-- PROJECT PEOPLE -->
## ✨ 팀원 및 역할
| <a href="https://github.com/dali186" class="size">김주원</a> | <a href="https://github.com/gosuuk" class="size">박성욱</a> | <a href="https://github.com/bornin23" class="size">한혜지</a> | <a href="https://github.com/jinakim8" class="size">김지나</a> |
| :----------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------:
| 초기 개발 세팅<br/> 회원가입<br/> 로그인<br/> 개인정보수정<br/> 관리자<br/> 배포<br/> | 연차 페이지<br/> 당직 페이지<br/> 캘린더<br/> 배포<br/> | 연차 페이지<br/> 당직 페이지<br/> 개인정보수정<br/> 캘린더<br/> | 프로젝트 팀장<br/> 프로젝트세팅<br/> 로그인<br/>

<p align="right">(<a href="#readme-top">back to top</a>)</p>



<!-- PROJECT IDE -->
## 🛠 프로젝트 스택(백엔드)
* 개발환경 : 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

<p align="right">(<a href="#readme-top">back to top</a>)</p>



<!-- PROJECT ERD -->
## 📖 ERD
![image](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/c1b9c922-338e-4bb4-8316-752b248585b6)

<p align="right">(<a href="#readme-top">back to top</a>)</p>



<!-- PROJECT TABLE -->
## ⚖ 테이블 설계
**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)
);
```
<p align="right">(<a href="#readme-top">back to top</a>)</p>



<!-- PROJECT Functional Specification -->
## 🎀 주요 기능
<h3>🔹 회원가입</h3>
<ol>
<li>jwt이용, 비밀번호 단방향 암호화</li>
<li>개인정보있는경우(이름,휴대폰,이메일) AES256양방향 암호화적용,복호화</li>
<li>관련필드에 DB검색할떄도 검색조건을 암호화</li>
</ol>
<h3>🔹 로그인</h3>
<ol>
<li>jwt token 인증방식, spring security적용</li>
<li>login 성공 후 마지막 로그인 성공 날짜 업데이트 적용</li>
<li>login 성공 후 회원번호, user-agent, client ip, 시간 로그 등록처리</li>
<li>일반로그인/관리자로그인</li>
</ol>
<h3>🔹 개인정보수정</h3>
<ol>
<li>개인정보 수정,삭제, 수정된 일자 업데이트</li>
<li>개인연차/당직 등록</li>
<li>관리자 (유저의 권한 설정), 로그인 발급된 jwt token검증</li>
<li>비밀번호변경(단방향 암호화), 전화번호변경</li>
</ol>
<h3>🔹 연차/당직</h3>
<ol>
<li>신청내역, 사용내역, 등록, 조회, 취소(crud)</li>
<li>연차/당직 구분컬럼구성, 테이블1개설계</li>
<li>저장/삭제 api구현필요</li>
<li>내 연차일 수</li>
</ol>
<h3>🔹 관리자기능</h3>
<ol>
<li>연차 승인</li>
<li>연차 반려</li>
</ol>
<h3>🔹 사용자간공유</h3>
<ol>
<li>데이터 내려줄 조회 api 구현</li>
<li>월별 캘린더 주간/일간 등 다양하게 표현</li>
</ol>

<p align="right">(<a href="#readme-top">back to top</a>)</p>



<!-- PROJECT API -->
## 📌 API 명세서
![image](https://github.com/FC-MINI-6/MiniProject_BE/assets/78328327/eabdf3c6-c6df-44e9-a6b1-8d868c3f9e44)

<p align="right">(<a href="#readme-top">back to top</a>)</p>


9 changes: 8 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
version = '1.0'

java {
sourceCompatibility = '11'
Expand All @@ -32,8 +32,15 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
implementation group: 'com.auth0', name: 'java-jwt', version: '4.3.0'
implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '3.1.4'
}

tasks.named('test') {
systemProperty 'file.encoding', 'UTF-8'
useJUnitPlatform()
}

jar {
enabled = false
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing
@SpringBootApplication
public class Kdtbe5MiniProjectApplication {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.example.kdtbe5_miniproject._core.errors;

import com.example.kdtbe5_miniproject._core.errors.exception.*;
import com.example.kdtbe5_miniproject._core.util.ApiUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;


@Slf4j
@RequiredArgsConstructor
@RestControllerAdvice
public class MyExceptionHandler {

@ExceptionHandler(Exception400.class)
public ResponseEntity<?> badRequest(Exception400 e) {
return new ResponseEntity<>(e.body(), e.status());
}

@ExceptionHandler(Exception401.class)
public ResponseEntity<?> unAuthorized(Exception401 e) {
return new ResponseEntity<>(e.body(), e.status());
}

@ExceptionHandler(Exception403.class)
public ResponseEntity<?> forbidden(Exception403 e) {
return new ResponseEntity<>(e.body(), e.status());
}

@ExceptionHandler(Exception404.class)
public ResponseEntity<?> notFound(Exception404 e) {
return new ResponseEntity<>(e.body(), e.status());
}

@ExceptionHandler(Exception500.class)
public ResponseEntity<?> serverError(Exception500 e) {
return new ResponseEntity<>(e.body(), e.status());
}

@ExceptionHandler(Exception.class)
public ResponseEntity<?> unknownServerError(Exception e) {
ApiUtils.ApiMessageResult<?> apiResult = ApiUtils.error(e.getMessage());
return new ResponseEntity<>(apiResult, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
Loading