Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
23b5eb8
프로젝트 세팅 완료 (#4)
cxxxtxxyxx Sep 4, 2023
5b3240d
JPA 엔티티 연관관계 설정 완료 (#6)
cxxxtxxyxx Sep 11, 2023
ce18460
엔티티 내 불필요한 주석 제거 완료 (#7)
cxxxtxxyxx Sep 11, 2023
3713021
JPA 엔티티 연관관계 설정 완료 (#8)
cxxxtxxyxx Sep 12, 2023
56e02b2
Reference Id, Type 필드 삭제 완료 (#10)
khsrla9806 Sep 12, 2023
3f97525
Modify: PointLog에 unique 옵션 제거 완료 (#11)
cxxxtxxyxx Sep 12, 2023
d381113
기획에 따른 엔티티 수정 완료 (#14)
cxxxtxxyxx Sep 13, 2023
68a4464
QueryDsl 설정 추가 완료 (#13)
khsrla9806 Sep 14, 2023
b5bb0fc
기획에 따른 엔티티 수정 (#15)
cxxxtxxyxx Sep 14, 2023
9707fa1
@Enumerated 어노테이션 추가 완료 (#16)
cxxxtxxyxx Sep 15, 2023
9e369a2
개발, 운영, 테스트 환경 분리 완료 (#18)
khsrla9806 Sep 15, 2023
27ee95a
패키지 구조 설계 완료 (#20)
cxxxtxxyxx Sep 16, 2023
9ad2b91
최신 리뷰 리스트 응답 기능 구현 완료 (#26)
hyunsb Sep 18, 2023
f8dfb31
초대 가능한 장소 리스트 응답 API 구현 완료 (#25)
khsrla9806 Sep 18, 2023
22d8cb4
QR Code 발급 및 인증 기능 구현 완료 (#24)
cxxxtxxyxx Sep 18, 2023
3144bd0
분리된 도메인 로직 통합 완료 (#30)
khsrla9806 Sep 18, 2023
5dd926b
초대장 생성 기능 구현 완료 (#39)
khsrla9806 Sep 19, 2023
2be2985
특정 메뉴의 리뷰 리스트 응답 기능 구현 완료 (#35)
hyunsb Sep 19, 2023
c5fcfe5
Invitation Repository Query Test 구현 및 QR 도메인 로직 리팩토링 완료 (#34)
cxxxtxxyxx Sep 19, 2023
7625068
주차등록 API 컨트롤러 및 테스트 구현 완료 (#37)
cxxxtxxyxx Sep 19, 2023
642ef6d
GlobalRuntimeException 부모 생성자 호출 시 파라미터 누락 수정 완료 (#45)
cxxxtxxyxx Sep 19, 2023
b45267e
@DataJpaTest PersistContext 공유로 인한 테스트 실패 해결 완료 (#48)
cxxxtxxyxx Sep 19, 2023
f3e4a91
Amazon S3 적용 및 이미지 저장 기능 구현 완료 (#49)
hyunsb Sep 19, 2023
100ba27
초대장 목록 응답 기능 구현 완료 (#52)
khsrla9806 Sep 19, 2023
2909b25
방문증 기본 정보 응답 API 구현 완료 (#54)
cxxxtxxyxx Sep 20, 2023
7080306
초대장 상세 응답 기능 구현 완료 (#56)
khsrla9806 Sep 20, 2023
ef3ac13
달력 리뷰 상세페이지 응답 기능 구현 완료 (#59)
hyunsb Sep 21, 2023
dde0e57
마이페이지 데이터 응답 구현 완료 (#61)
hyunsb Sep 21, 2023
cbaff5e
빌딩 내 식당 및 카페 응답 API 구현 완료 (#63)
cxxxtxxyxx Sep 21, 2023
559d7c9
초대장 수정, 삭제 기능 구현 완료 (#64)
khsrla9806 Sep 21, 2023
226cae7
홈 화면에 필요한 정보 응답 기능 구현 완료 (#68)
jy-b Sep 22, 2023
fd5067c
초대장 기능 리펙토링 완료 (#70)
khsrla9806 Sep 22, 2023
5fb304d
Merge 과정중 충돌된 부분 해결 완료 (#73)
khsrla9806 Sep 22, 2023
9153b19
오점완 리뷰 상세 페이지 응답 기능 구현 완료 (#67)
hyunsb Sep 22, 2023
6c1f1dc
클라이언트 통신을 위한 Cors 설정 완료 (#74)
khsrla9806 Sep 22, 2023
dc0d5aa
예약 가능 시간 리스트 응답 구현 완료 (#77)
cxxxtxxyxx Sep 22, 2023
2bb9f19
JWT 라이브러리 추가 및 토큰 기능 구현 완료 (#78)
khsrla9806 Sep 23, 2023
70e2b8a
초대 목록 응답 리펙토링 완료 (#81)
khsrla9806 Sep 23, 2023
bbb9b23
포인트 목표 달성 데이터 응답 구현 완료 (#84)
hyunsb Sep 24, 2023
538934f
JWT 토큰 적용 완료 (#92)
khsrla9806 Sep 25, 2023
5fe494f
프로젝트 시간 서버와 맞추기 완료 (#96)
khsrla9806 Sep 26, 2023
d826b40
회원 출입카드 정보 응답 구현 (#87)
jy-b Sep 26, 2023
3335ebf
홈 화면 정보 버그 수정 (#89)
jy-b Sep 26, 2023
62f7fb8
룰렛에 사용되는 카테고리, 메뉴 목록 응답 (#98)
jy-b Sep 26, 2023
8f1db8f
최신 리뷰 리스트 응답 기능 개선 완료 (#101)
hyunsb Sep 26, 2023
a84a3ab
특정 음식점에 대한 리뷰 리스트 응답 기능 구현 완료 (#105)
hyunsb Sep 26, 2023
e2be4fa
방문증 인증 callback 구현 완료 (#102)
khsrla9806 Sep 26, 2023
91f94c5
관리자 페이지 목록 응답 구현 완료 (#107)
cxxxtxxyxx Sep 26, 2023
4a5ef37
처음으로 QR을 찍었을 시 방문 시간 Update 기능 구현 완료 (#109)
cxxxtxxyxx Sep 26, 2023
3c644f0
Fix : 쿼리 변경 (#110) (#111)
jy-b Sep 26, 2023
d8bd624
Fix : 불필요한 파라미터 제거 변경 (#113) (#115)
jy-b Sep 26, 2023
5f7185a
오점완 리뷰 쓰기 기능 구현, S3uploader 기능 추가 (#114)
james-taeil Sep 26, 2023
336eeae
Jacoco 연동 완료 (#119)
cxxxtxxyxx Sep 27, 2023
924cb30
Test 추가 구현 완료 (#121)
cxxxtxxyxx Sep 27, 2023
962ae8f
Visitation 도메인에 대한 리팩터링 완료 (#124)
cxxxtxxyxx Sep 27, 2023
e4f9cf0
목표 달성 포인트 지급 기능 구현 완료 (#126)
hyunsb Sep 27, 2023
8b70667
포인트 서비스 테스트 코드 수정 누락으로 인한 빌드 실패 수정 완료 (#128)
hyunsb Sep 27, 2023
5a0cee3
커버리지 비율 수정 완료 (#131)
cxxxtxxyxx Sep 27, 2023
b5b9f43
Fix : Gradle의존성에 대한 테스트 실패 대응 (#129) (#132)
jy-b Sep 27, 2023
236cd36
Test 환경에서의 TimeZone 불일치로 인한 버그 수정 완료 (#134)
cxxxtxxyxx Sep 27, 2023
3bfb3fb
메뉴를 판매하는 식당 목록 응답 구현 완료 (#125)
jy-b Sep 28, 2023
fe70bbe
포인트, 마이페이지 관련 기능에 JWT 적용 완료 (#138)
hyunsb Sep 28, 2023
154382a
모든 음식점, 특정 메뉴의 음식점 리뷰 리스트 응답 기능 개선 완료 (#141)
hyunsb Sep 28, 2023
7e3390a
Test Properties 적용 완료 (#143)
khsrla9806 Sep 29, 2023
8bea994
API Response Format 수정 완료 (#147)
cxxxtxxyxx Sep 29, 2023
86eec31
초대장 저장 리펙토링 완료 (#150)
khsrla9806 Sep 29, 2023
125a8c8
음식점에서 판매하는 메뉴 응답 리스트 기능 구현 (#153)
james-taeil Sep 30, 2023
d24d246
가장 많이 선택한 메뉴 10위까지 응답 완료 #99 (#137)
jy-b Sep 30, 2023
aaaf883
Reservation 도메인에 대한 리팩터링 완료 (#151)
cxxxtxxyxx Sep 30, 2023
ac73bab
주변 식당 존재하지 않을 시 랜덤 추출 에러 수정 완료 (#158)
cxxxtxxyxx Sep 30, 2023
f2fcc41
목표 달성 포인트 획득 기능 개선 완료 (#159)
hyunsb Sep 30, 2023
7bbfe5b
invitation commonPlaceId 가져오는 로직 주석 처리 (#161)
khsrla9806 Sep 30, 2023
83cb4ed
초대장 수정 NullPointerException 수정 완료 (#162)
khsrla9806 Sep 30, 2023
dc305f7
초대장 수정 장소 변경에 대한 추가 로직 구현 및 테스트 추가 완료 (#164)
khsrla9806 Sep 30, 2023
2c340fe
Feat: SSH 연결 Action ymal 파일 생성
khsrla9806 Oct 1, 2023
f250e3d
Modify: Action on 브랜치 release에서 develop으로 변경
khsrla9806 Oct 1, 2023
f7983ef
포인트 로그 도메인 개선 완료 (#166)
hyunsb Oct 1, 2023
2c5dcaf
Feat: Action Git Pull 스크립트 추가
khsrla9806 Oct 1, 2023
9510efd
Feat: Github Action 배포 스크립트 작성
khsrla9806 Oct 1, 2023
053e7e9
Modify: Shell Script 백그라운드 세션 분리
khsrla9806 Oct 1, 2023
772c9d4
Modify: 백그라운드, errorlog 분리
cxxxtxxyxx Oct 1, 2023
2fa6b8c
음식점 검색 기능 구현 (#168)
james-taeil Oct 1, 2023
7c84f74
Reservation API 수정 완료 (#171)
cxxxtxxyxx Oct 1, 2023
7351c07
포인트 로그 개선에 따른 목표 달성 포인트 지급 서비스 수정 완료 (#172)
hyunsb Oct 1, 2023
f6686e4
오점완 달력 데이터 기능 구현 (#173)
james-taeil Oct 1, 2023
ff6c44a
Reservation API 리팩터링 완료 (#176)
cxxxtxxyxx Oct 2, 2023
83a245b
빌드 실패 에러 수정 완료 (#178)
cxxxtxxyxx Oct 2, 2023
62647fc
리뷰 상세데이터를 포함한 오점완 달력 데이터 응답 기능 구현 완료 (#181)
hyunsb Oct 2, 2023
594634e
룰렛 선택 결과 저장 기능 구현 완료 (#182)
jy-b Oct 2, 2023
7258000
디버깅을 위한 로그 작성 완료 (#186)
cxxxtxxyxx Oct 2, 2023
c2dae46
Modify: 서버 재배포시 DB 재실행
cxxxtxxyxx Oct 2, 2023
6fa8214
Modify: 불필요한 DB 재실행 코드 제거
cxxxtxxyxx Oct 2, 2023
0bb8cd9
가장 많이 선택한 메뉴 10위까지 응답, 메뉴를 판매하는 식당 목록 응답 EndPoint 수정
jy-b Oct 2, 2023
1c28b71
InvitationServiceTest 클래스 통합 완료 (#188)
cxxxtxxyxx Oct 2, 2023
b9774fe
방문증 기본 정보 응답 API 수정 완료 (#190)
cxxxtxxyxx Oct 2, 2023
0f91203
목표 달성 포인트 지급 단위 테스트 구현 완료 (#192)
hyunsb Oct 2, 2023
408fd32
초대장 저장 유효성 검사 추가 완료 (#193)
khsrla9806 Oct 2, 2023
b473624
리뷰 포인트 기능 구현 완료 (#195)
james-taeil Oct 2, 2023
0197b0f
리뷰 상세데이터를 포함한 오점완 달력 데이터 응답 기능 개선 완료 (#196)
hyunsb Oct 2, 2023
4e05c8a
Refactor : 변경 사항 반영 (#197) (#198)
jy-b Oct 2, 2023
fcdff2b
Hotfix: 리뷰 이미지 요청 오류 해결 (#199) (#200)
james-taeil Oct 2, 2023
6619c74
modify: 리뷰 하루 작성 한개로 변경 사항 수정 완료 (#201) (#202)
james-taeil Oct 3, 2023
c798c15
주차 등록 여부 확인 API 구현 완료 (#206)
cxxxtxxyxx Oct 4, 2023
bee637a
Hotfix: 리뷰 작성 이미지 저장 로직 수정 (#207) (#208)
james-taeil Oct 4, 2023
0a1df99
Transaction AOP 적용 수정 완료 (#210)
cxxxtxxyxx Oct 4, 2023
b5b6607
리드미 작성 완료 (#212)
khsrla9806 Oct 6, 2023
05f745d
룰렛 선택 결과 집계 기능 구현 (#214)
jy-b Oct 6, 2023
a0f22e3
룰렛 초기화면 식당 목록 API 구현 완료 (#215)
jy-b Oct 6, 2023
ee8cf29
DOCS : Modify Application.yml
jy-b Oct 6, 2023
a236134
Swagger 3.0.0 적용 완료 (#217)
hyunsb Oct 19, 2023
8f33b0c
Swagger 3.0.0 설정값 추가 완료 (#219)
hyunsb Oct 19, 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
47 changes: 47 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: ssh for release deploy

on:
push:
branches: [ develop ]

jobs:
build:
name: Build
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: SSH Remote Commands
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
timeout: 40s

script: |
echo "1. project root로 이동"
cd ~/livable/server

echo "2. git pull"
git pull origin develop

echo "3. project build"
./gradlew clean build

if [ $? -eq 0 ]; then
# 빌드 성공 시
echo "4. 실행중인 프로세스 확인"
CURRENT_PID=$(pgrep -f ${{ secrets.PROJECT_ROOT }}/build/libs/server-0.0.1-SNAPSHOT.jar)

echo "5. 실행중인 프로세스 중지"
sudo kill -9 $CURRENT_PID

echo "6. 홈 경로 이동 후 프로젝트 재실행"
cd ~
nohup java -jar ${{ secrets.PROJECT_ROOT }}/build/libs/server-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod > nohup.out 2> nohup.err < /dev/null &
else
echo "프로젝트 Build 실패"
exit 1
fi
43 changes: 43 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### jacoco ###
jacoco/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/
application-dev.yml
application-prod.yml
/src/test/resources/test.properties

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
184 changes: 182 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,182 @@
# server
오피스 혁신을 위한 통합 플랫폼 ‘오피스너’의 유저 가입자수와 WAU를 높이기 위한 프로젝트
<img alt="image" src="https://github.com/khsrla9806/livable-server/assets/70641477/0908643b-f0d0-4dac-8b29-a8a6f308aca6">


<div align=center><h1> 🏢 오피스 혁신을 위한 통합 플랫폼, 오피스너</h1></div>

> **개발 기간** : 2023.09.11(월) ~ 2023.10.06(목) <br>
> **배포 주소** : [오피스너](https://officener.vercel.app)<br>
> **백엔드 레포지토리** : [백엔드](https://github.com/livable-final/server) <br>
> **프론트 유저 레포지토리** : [프론트](https://github.com/livable-final/client) <br>


<br><br><br><br>

<div align=center><h2>프로젝트 목적</h2></div>

- 기존 오피스너 서비스는 관리자, 관리 멤버 이외의 일반 유저의 가입과 이용 동기가 부족
- 이용자가 매일 사용해야 할 만한 컨텐츠와 기능의 부재
- "유저 가입자 수"와 "WAU" 상승을 목적으로 시작된 기업 연계 프로젝트

<br><br><br><br>

<div align=center><h2>사용한 기술스택</h2></div>

<p align=center>
<img src="https://img.shields.io/badge/Java (JDK 11)-C70D2C?style=flat&logo=openjdk&logoColor=white">
<img src="https://img.shields.io/badge/SpringBoot (2.7.15)-6DB33F?style=flat&logo=springboot&logoColor=white">
<img src="https://img.shields.io/badge/Spring Data JPA-6DB33F?style=flat&logo=spring&logoColor=white">
<img src="https://img.shields.io/badge/QueryDSL-00529B?style=flat&logo=querydsl&logoColor=white">
<img src="https://img.shields.io/badge/MySQL (8.0.34)-4479A1?style=flat&logo=mysql&logoColor=white">
</p>

<p align=center>
<img src="https://img.shields.io/badge/JUnit5-25A162?style=flat&logo=junit5&logoColor=white">
<img src="https://img.shields.io/badge/jacoco-BD081C?style=flat&logo=jacoco&logoColor=white">
<img src="https://img.shields.io/badge/Gradle-02303A?style=flat&logo=gradle&logoColor=white">
</p>

<p align=center>
<img src="https://img.shields.io/badge/Github Actions-2088FF?style=flat&logo=github actions&logoColor=white">
<img src="https://img.shields.io/badge/Amazon AWS EC2-41454A?style=flat&logo=amazonaws&logoColor=white">
<img src="https://img.shields.io/badge/Amazon AWS S3-569A31?style=flat&logo=amazon s3&logoColor=white">
</p>

<p align=center>
<img src="https://img.shields.io/badge/github-181717?style=flat&logo=github&logoColor=white">
<img src="https://img.shields.io/badge/IntelliJ IDEA-000000?style=flat&logo=IntelliJ IDEA&logoColor=white">
<img src="https://img.shields.io/badge/notion-000000?style=flat&logo=notion&logoColor=white">
<img src="https://img.shields.io/badge/slack-4A154B?style=flat&logo=slack&logoColor=white">
<img src="https://img.shields.io/badge/Postman-FF6C37?style=flat&logo=postman&logoColor=white">
</p>


<br><br><br><br>


<div align=center><h2>백엔드 아키텍처</h2></div>

![image](https://github.com/khsrla9806/livable-server/assets/70641477/383dee4a-7032-4ef0-b147-d315a4bb5672)


<br><br><br><br>


<div align=center><h2>ERD</h2></div>

![image](https://github.com/khsrla9806/livable-server/assets/70641477/4ae505f2-139f-406c-b358-b1f11d1982f6)


<br><br><br><br>


<div align=center><h2>Jacoco 테스트 커버리지</h2></div>

> 백엔드팀 테스트 커버리지 목표 40% 이상 달성

![image](https://github.com/khsrla9806/livable-server/assets/70641477/cf7ea67a-e881-4a0a-a26c-4db876acb0ea)



<br><br><br><br>


<div align=center><h2>프로젝트 실행하기</h2></div>

### application.yml
``` yaml
# Spring, DB propertiesg setting
spring:
datasource:
url: #DB Address
driver-class-name: #DB Driver
username: #DB Username
password: #DB Password

jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
default_batch_fetch_size: 100

quartz:
auto-startup: true
job-store-type: jdbc
jdbc:
initialize-schema: never
overwrite-existing-jobs: false

# S3 propertiesg setting
cloud:
aws:
s3:
bucket: #S3 bucketName
credentials:
accessKey: #S3 accessKey
secretKey: #S3 secretKey
region:
static: ap-northeast-2
stack:
auto: false

# JWT properties setting
jwt:
secret: #JWT key

#
```

### build and test
```bash
$ ./gradlew clean build
```

### run
```bash
$ java -jar ./build/libs/server-0.0.1-SNAPSHOT.jar
```


<br><br><br><br>


<div align=center><h2>백엔드 팀원</h2></div>
<table>
<tbody>
<tr>
<td align="center"><a href="https://github.com/hyunsb">
<img src="https://avatars.githubusercontent.com/u/96504592?v=4" width="200px;" alt=""/><br /><sub><b>정현수</b></sub></a><br />
</td>
<td align="center"><a href="https://github.com/khsrla9806">
<img src="https://avatars.githubusercontent.com/u/70641477?v=4" width="200px;" alt=""/><br /><sub><b>김훈섭</b></sub></a><br />
</td>
<td align="center"><a href="https://github.com/cxxxtxxyxx">
<img src="https://avatars.githubusercontent.com/u/109710879?v=4" width="200px;" alt=""/><br /><sub><b>최태윤</b></sub></a><br />
</td>
<td align="center"><a href="https://github.com/james-taeil">
<img src="https://avatars.githubusercontent.com/u/71359732?v=4" width="200px;" alt=""/><br /><sub><b>김태일</b></sub></a><br />
</td>
<td align="center"><a href="https://github.com/jy-b">
<img src="https://avatars.githubusercontent.com/u/61049995?v=4" width="200px;" alt=""/><br /><sub><b>배종윤</b></sub></a><br />
</td>
</tr>
</tbody>
</table>

<br><br><br><br>

<div align=center><h2>팀원 역할</h2></div>

<div align=center>

| 이름 | 역할 |
| :-----------------: | -------------------------------- |
| 정현수<br>`팀장` | - 데이터베이스 설계<br>- API 명세서 설계<br>- S3 업로드 환경 구성<br>- 포인트 API 구현<br>- 식당 리뷰 API 구현<br>- 다중 이미지 처리 구현<br> |
| 김훈섭 | - 데이터베이스 설계<br>- API 명세서 설계<br>- EC2 서버환경 구성<br>- 자동화 배포환경 구성<br>- SSL 적용 (HTTPS)<br>- 초대장 CRUD 구현<br>- Kakao 알림톡 적용<br> |
| 최태윤 | - 데이터베이스 설계<br>- API 명세서 설계<br>- 자동화 배포환경 구성<br>- 방문증 API 구현<br> |
| 김태일 | - 데이터 베이스 설계<br>- API 명세서 설계<br>- 식당 리뷰 API 구현<br> |
| 배종윤 | - 데이터 베이스 설계<br>- API 명세서 설계<br>- 홈 화면 API 구현<br>- 오늘 점심 뭐먹지 룰렛 API 구현<br>- Spring Quartz 스케쥴러를 이용한 집계 기능 구현<br> |

</div>


Loading