데이터 스키마
사용자 (member) - member:{nickname}
•
닉네임 (띄어쓰기 없이 10자)
•
프로필 사진 link
•
연결된 아티스트 id
•
포인트
•
위치 (위/경도)
•
온라인 유무
•
FCM 세션 값
팬클럽 (fanclub)
•
이름
•
로고 link
•
팬클럽명
•
팬클럽 정보
•
아티스트명
•
아티스트 프로필
•
포인트
메시지 (message)
•
내용 (이모지 타입)
•
from
•
to
•
발신 위치 (위/경도)
•
발신 시간 (timestamp)
API 목록
GET /fanclubs - 팬클럽 목록(랭킹) 조회
•
Redis SortedSet 사용
GET /fanclubs/{fanclubId} - 팬클럽 상세 정보 조회
POST /fanclubs - 팬클럽 추가
프로필 이미지 파일 함께 요청
DELETE /fanclubs/{fanclubId} - 팬클럽 삭제
GET /members/{name} - 회원 정보 조회(프로필, 닉네임, 포인트)
POST /members - 회원 등록
프로필 이미지 파일 함께 요청
GET /members/{name}/near - 회원 주변 온라인 회원 목록 조회
•
Redis GeoQuery 사용
PATCH /members/{name}/location - 회원 현재 위치 갱신
사용자 위치 갱신
주변의 오프라인 사용자들에게 푸시 메시지 전송
PATCH /members/{name}/status - 회원 온/오프라인 처리
온/오프라인 처리 이벤트 전달 (sse)
GET /messages?memberId - 회원 메시지 목록 조회
POST /messages - 메시지(이모지) 전송하기
•
전달하는 메시지 저장 V
•
발신자 포인트 갱신 X
•
그룹 포인트 갱신 X
•
팬클럽 이모지 개수 갱신
•
수신자에게 수신 이벤트 전달 (sse) V
요구사항
•
회원
◦
기본 정보 - 유저 닉네임, 프로필 사진, 선호 아티스트
◦
포인트
•
주변 회원 조회
◦
반경 기준
•
팬덤
◦
포인트
◦
랭킹
•
이모지 송/수신
•
푸시 메시지
◦
FCM
할 일
프로젝트 세팅 @성호 이
데이터 스키마 설계 @변영민
푸시 메시지 구현 @성호 이
Redis 반경 조회 조사 @박현제
회원 온/오프라인 유무 처리 조사 @변영민
디렉터리 구조
|_ src
|__ main
|. |
|. --- java
| | |
| | --- unithon.th.tema4
|. | |
|. |. |--- controller
|. | |--- config
|. | |--- service
|. | |--- repository
|. | |--- exception
|. | |--- entity
|. | |--- dto
|. | |. |--- req
|. | |. |--- res
|. | |--- Team4Application.java
JavaScript
복사
반경 조회
위치 저장: GEOADD
GEOADD key [NX | XX] [CH] longitude latitude member [longitude
latitude member ...]
Plain Text
복사
반경 조회: GEOSEARCH
GEOSEARCH key [FROMMEMBER member] [FROMLONLAT longitude latitude] [BYRADIUS radius m|km|ft|mi] [BYBOX width height m|km|ft|mi] [ASC|DESC] [COUNT count [ANY]] [WITHCOORD] [WITHDIST] [WITHHASH]
C++
복사
1.
위도/경도
FROMLONLAT: 좌표(경도,위도)를 기준으로 검색할 경우 사용
WITHCOORD: 좌표(경도,위도)를 보여줌
2.
원 반경
BYRADIUS: 원의 반지름으로 검색.
3.
거리
거리는 m(meter), km(kilometer), ft(feet), mi(mile)로 입력
4.
가까운순
• ASC: 거리가 가까운 순서로 보여줌