Repository navigation
Closed
Labels
feat새로운 기능 추가새로운 기능 추가
Description
📌 이슈 제목
feat/both/participant-order-login : 버추얼런 주문자 로그인과 마이페이지 주문 관리
✨ 기능 설명
- #130에서 나눈 두 번째 작업이다. feat/both/participant-order-management : 버추얼런 주문 관리를 로그인한 주문자 전용으로 전환 #130(PR [feat/user] : 공개 조회·관리를 닫는 대회 설정과 공개 API 차단 #131)은 대회 설정
public_registration_access_enabled로 공개 조회·관리를 닫는 부분만 했다. - 이 이슈에서는 로그인한 주문자가 마이페이지에서 자기 주문을 모두 보고 관리하고 추가 주문까지 하게 한다.
- 토큰 주체를 신청 id에서 주문자 키(
registration.orderer_key)로 바꿔 한 사람의 주문 여러 건을 묶는다. - 로그인 뒤 추가 주문(
POST /v1/participant/registrations)을 넣는다. #126은 같은 명의의 두 번째 공개 신청을 409로 거절만 하므로, 이 API 없이 중복 신청 허용을 켜면 이미 산 사람이 더 살 방법이 없다. - 티켓사 구매자(외부 결제)는 로그인 대상이 아니다.
- 범위 밖: 로그인 시도 제한, 서버 비밀번호 최소 길이, 비밀번호 변경 뒤 access 무효화, 관리자 비밀번호 초기화·기본정보 수정의 주문자 단위 반영
✅ 세부 작업 항목
- DDL(로컬·테스트 DB):
registration.orderer_key(VARCHAR 40 NULL)·기존 개인 신청 채움(외부 결제 제외, 자기 id)·인덱스(orderer_key), common-entityRegistrationBase에 매핑(두 앱 컴파일) - 로그인·재발급: 토큰 주체와 Redis refresh 키를
orderer_key로 변경, 후보에 취소 주문 포함·외부 결제 제외, 공개 허용 설정이 1인 대회는 거절(PARTICIPANT_LOGIN_NOT_AVAILABLE), 응답에orderCount추가(registrationId는 프론트가 옮길 때까지 유지) - 주문 소유 확인을 한 곳(
ParticipantOrderAccess)에 모은다: 경로의registrationId가 토큰 주문자의 주문인지 잠금 뒤 다시 읽은 행으로 대조,me경로는 살아 있는 주문이 하나일 때만 - 마이페이지 조회:
GET /v1/participant/registrations,GET /v1/participant/registrations/{registrationId}(items[].entries[], 배번, 진행 중 상향, 수정·환불 마감 시각, 취소 주문 포함) - 마이페이지 수정:
PATCH .../{registrationId}(주소),PATCH .../{registrationId}/entries(받는 사람, 기존me/entries서비스 재사용),PATCH /v1/participant/orderer(주문자 정보 일괄),PATCH /v1/participant/orderer/password(일괄, 취소 주문 포함, 바꾼 뒤 refresh 삭제) - 마이페이지 취소·재결제:
POST .../{registrationId}/cancellation,POST .../{registrationId}/payments/{paymentId}/retry. 본인확인과 업무 처리를 갈라 공개 진입점과 참가자 진입점이 같은 처리부를 부르게 한다 - 추가 주문:
POST /v1/participant/registrations. 신원·비밀번호 해시·orderer_key를 기존 주문에서 복사하고register(eventId, request, additionalOrder=true)를 부른다 - 상향 경로를
.../{registrationId}/upgrade로 옮긴다.me/upgrade·me/entries는 프론트가 옮길 때까지 함께 둔다 - 단위·DB 테스트: 남의 주문 거절, 로그인(주문 여러 건·취소 주문만·설정별 거절), 추가 주문의 값 복사, 일괄 변경, 채움 SQL 뒤 기존 신청 로그인, 기존 상향 회귀(
policyDbTest·capacityDbTest) - 프론트 연동 안내: 공개 조회 5곳·수정 1곳을 참가자 API로 옮김,
localStorage의 비밀번호 저장 삭제, 로그인 응답(orderCount)과 상향 경로 변경, 새 409 오류 코드 - 프론트 이전이 배포된 뒤 버추얼런 대회의 공개 허용 설정을 0으로 바꾼다(SQL). 그다음
duplicate_registration_allowed를 켠다 - 정리:
me/upgrade·me/entries와 로그인 응답의registrationId삭제
🧩 참고 자료
- 앞 작업: feat/both/participant-order-management : 버추얼런 주문 관리를 로그인한 주문자 전용으로 전환 #130(PR [feat/user] : 공개 조회·관리를 닫는 대회 설정과 공개 API 차단 #131), feat/both/multi-product-purchase : 버추얼런 한 신청에 단품·패키지 여러 개 구매와 상품별 참가자 정보 #126(PR [feat/both] : 버추얼런 한 신청에 단품·패키지 여러 개 구매와 상품별 참가자 정보 #128)
- feat/both/participant-order-management : 버추얼런 주문 관리를 로그인한 주문자 전용으로 전환 #130 Notion 작업 문서(설계·결정 기록): https://app.notion.com/p/40f865531628811db8adff2a86d7a50d
- 관리자 앱 정책 매핑: feat/admin : 관리자 앱에 대회 신청 정책 설정 매핑 #132
Metadata
Metadata
Assignees
Labels
feat새로운 기능 추가새로운 기능 추가
Activity
fix/user/#133 : 마이페이지 수정·소유 확인 규칙을 기존 방식에 맞춤
refactor/user/#133 : 마이페이지 주문 조회의 정책 중복 조회 제거
chore/user/#133 : 마이페이지 남의 주문 거절과 채움 SQL 뒤 로그인 테스트 추가
Merge pull request #134 from MARVEL-RUN/feat/both/participant-order-l…