사용자가 리그멤버나, 리그나, 퀴즈나 등등을 조회
시즌 아이디가 만들어짐 → 티어에 따라 리그들이 만들어지고(자동) → 리그에 유저가 매칭
리그 - 유저 매칭
- 처음에는 다 맨아래 티어
- 다음에는 원래 티어 보다 한단계 상승 또는 한단계 하락
- 시즌 1 참여 멤버(티어 상승점수), 2때참여안하고, 3때참여해
- 브론즈 → 실버
- 시즌생성시 리그 자동 매칭 → 시즌 2 리그가 생성시 상승해서 매칭 (점수 0점) → 3때는 하락
- 시즌생성시 리그 수동 매칭 → 시즌 2때 기록은 없고 시즌 3때 티어 상승
- 만약 유저가 season id 를 참조해서 리그를 가져오고 리그멤버를 가져왔는데 매칭되는 내 유저 아이디가 없다
- 제일 최근 시즌을 참조해서 내 티어와 점수에 따라 티어를 책정하고 리그를 매칭
리그 - 유저 수동 매칭 방법
- 시즌에는 started_at 과 ended_at
- 레디스 캐싱도 활용하기 위해서 league_info 테이블 userid가 키
- seaon_id
- league_id
- tied_id
- league_member_id
- ttl: seaon_id의 ended_at 까지로 설정
- 어떤 리그 상호작용 호출
- 만약 league_info 내에 userid 를 찾았는데 없다?
- 이번 시즌에 참여하고 있는 리그가 없다는 에러
- 프론트가 리그 페이지 유도
- 리그 매칭 api를 보내면
- user_id 와 매칭되는 league_member_id 중 가장 최근 값을 찾는다
- 있다면
- league_member_id 의 점수를 리그내에서 몇프로인지 비교하고 상승, 하락 후 티어를 정한다
- 시즌 정보, 티어 정보, 전 목표금액 정보를 준다
- 없다면
- 시즌 정보, 가장 아래티어 정보, 현재 설정한 목표금액 정보를 준다
- 프론트는 이제 목표금액을 유지할지 말지 api 보내면
- 백은 ㅇㅋ 그 목표금액으로 이번시즌 리그멤버아이디를 생성하고 이걸 league_info 테이블에 저장
- 모든 리그 관련 컨텐츠 접속 가능
새시즌이 시작되었을때
- 시큐리티 단에서 처리
- Role 이 유저인 애가 들어오면 jwt에서 user_id 를 이용해서 CurrentLeagueInfo 있는지 검사
- 없으면 접근 가능한 url은 user, match 2개 api 뿐
- 없는데 다른곳 접속하면 특정 에러
*LEAGUE_MEMBER_NOT_GENERATED*
- 있으면 전부 접근 가능
- 프론트는 NOT_MACHING_LEAGUE 에러가 발생하면 목표 수정 및 유지 페이지로 리다이렉트
- 프론트에서 POST users/{id}/match 를 보냈을때 user_info가 없으면 새로 생성하고 리그멤버아이디도 생
- POST users/{id}/match
- 목표 유지하기던 아니던