🏙️

서버 회의록

데이터 스키마

사용자 (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: 거리가 가까운 순서로 보여줌

반경 조회 참고 자료