Skip to content

[ feat ] S-11 고객으로서, 서비스를 이용해야하는 동기를 부여 받길 원한다.(Challenge) #104

@saokiritoni

Description

@saokiritoni

🛠️ 계획된 개발 기능

  • 1. 챌린지 리스트 페이지 (둘러보기, 진행중, 완료)
  • 2. 챌린지 상세 페이지
  • 3. 챌린지 참여하기
  • 4. 챌린지 참여 취소하기
  • 5. 챌린지 리워드로 교환하기
  • 6. 리워드 사용하기

🛠 기능 구현 세부사항

1. 챌린지 리스트 페이지

1-1. 둘러보기 : endDate가 넘지 않은 챌린지들 모두 표시 (카페명, 지점명, 챌린지 썸네일 이미지, 챌린지 시작일, 챌린지 마감일, 리워드 설명 반환)

  • ChallengeBaseDTO 에서 카페명, 지점명만 추가해서 새로운 DTO 만들기
    1-2. 진행중 : jwt -> 내가 현재 진행중인 챌린지 표시 (챌린지 이름, 10회 중 몇 회 진행했는지)
  • ChallengeBaseDTO에서 횟수를 추가해서 새로운 DTO 만들기
    1-3. 완료 : jwt -> 내가 완료한 챌린지 표시 (달성 완료되었다면 완료되었다고 표시, 달성 완료 날짜, 리워드 교환 여부 반환)
  • 필터링 추가: 리워드 교환 완료 / 리워드 교환 필요
  • ChallengeBaseDTO에서 리워드 교환 여부, 달성 완료 날짜를 추가하여 새로운 DTO 만들기

2. 챌린지 상세 페이지

  • ChallengeBaseDTO + 챌린지 참여 여부
  • 챌린지 참여했다면, 진행률 + 나의 챌린지 시작일 + 나의 챌린지 완료일 + 리워드 교환 가능 여부

3. 챌린지 참여하기 (Staff로 시작하는 클래스 생성, Staff & Owner가 접근 가능)

  • 유저는 '참여하기' 버튼을 눌러서 참여를 시작할 수 있음.
  • 유저의 qr-code-value로 챌린지 적립
  • 챌린지를 시작하면 챌린지 시작일, 챌린지 참여 여부, 진행률, 리워드 교환 가능 여부가 update되어야 함 (챌린지 완료일은 null인 상태)
  • 챌린지 10개가 다 채워지면 완료 여부가 update됨. markAsCompleted()

4. 챌린지 참여 취소하기

  • 챌린지 참여 여부를 false로 바꾸고 지금까지 진행한 기록(챌린지 달성률, 챌린지 시작일, 챌린지 완료일)모두 삭제.

5. 챌린지 리워드로 교환하기

  • 챌린지 완료일이 null이지 않아야 하고 && 챌린지 참여 여부가 true 여야 하고 && 챌린지 완료 여부가 true여야 함
  • 위 세가지 상태가 체크되면 리워드로 교환하며, 리워드 교환 여부가 true로 전환됨. convertToReward()

6. 챌린지 리워드 사용하기

  • 챌린지 리워드 교환 상태가 true이면 사용할 수 있음
  • 리워드 사용 여부가 true로 전환됨. useReward()

🛠 참고사항

📝 check-lists

  • [ ]

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions