Event Participation API
이벤트 참여 API
개요
어떤 서비스에서 사용자가 다양한 이벤트에 참여할 수 있는 기능을 제공하려고 한다. 예를 들어 "출석체크 이벤트", "댓글 달기 이벤트", "리뷰 작성 이벤트" 등의 미션 기반 이벤트가 존재하며, 사용자는 각 이벤트에 참여하고 보상을 받을 수 있다.
요구사항
이벤트 등록 API
관리자가 새로운 이벤트를 생성할 수 있어야 한다.
이벤트는
제목
,설명
,시작일
,종료일
,참여 조건 설명
,보상 내용
정보를 포함한다.
이벤트 목록 조회 API
사용자 입장에서 현재 참여 가능한 이벤트 리스트를 조회할 수 있어야 한다.
종료된 이벤트는 제외되며, pagination을 고려해야 한다.
이벤트 참여 API
사용자가 특정 이벤트에 참여할 수 있는 API이다.
중복 참여는 불가하다.
참여 시점은 기록되어야 한다.
내 참여 이벤트 목록 조회 API
사용자가 참여한 이벤트들을 조회할 수 있다.
관리자용 참여자 목록 조회 API
이벤트 ID를 기반으로 해당 이벤트에 참여한 사용자 목록을 조회할 수 있어야 한다.
1. 엔드포인트 설계
이벤트 등록(POST) - /admin/events
이벤트 목록 조회(GET) - /events?status={available}&page={page}&size={size}
이벤트 참여(POST) - /me/events/{eventId}/participate
내 이벤트 목록 조회(GET) - /me/events?status={available}&page={page}&size={size}
관리자용 참여자 목록 조회(GET) - /admin/events/{eventId}
2. 요청/응답 설계
이벤트 등록(POST) - /events
이벤트 목록 조회(GET) - /events?status={available}&page={page}&size={size}
이벤트 참여(POST) - /users/events/participate
내 이벤트 목록 조회(GET) - /users/events?status={available}&page={page}&size={size}
관리자용 참여자 목록 조회(GET) - /admins/events/{eventId}/participants
3. DB 스키마 설계
baseEntity
createdAt. DATETIME. 등록일
modifiedAt. DATETIME. 수정일
user
user_id. BIGINT, PK. 유저 id
event
event_id. BIGINT, PK. 이벤트 id
description. TEXT. 설명
startDate. DATETIME. 시작일
participate_requirement. TEXT. 참여 조건
reward. TEXT. 보상
status. VARCHAR(255), ENUM. 상태
user-event
user-event id. BIGINT, PK. 유저-이벤트 id
user_id. BIGINT, FK. 유저 id
event_id. BIGINT, FK. 이벤트 id
4. 아키텍처 설계
API 서버(SpringBoot)
이벤트, 사용자, 관리자 요청 처리
DB와 Redis 캐시 연동
데이터베이스 (MySQL)
이벤트, 사용자, 관리자 정보 저장
캐시 서버 (Redis)
유저 이벤트 목록 조회(GET)
이벤트 목록 조회(GET)
Last updated