Skip to content

feat: add bingo board management api#318

Merged
CSE-Shaco merged 1 commit intoGDGoCINHA:developfrom
CSE-Shaco:develop
Mar 15, 2026
Merged

feat: add bingo board management api#318
CSE-Shaco merged 1 commit intoGDGoCINHA:developfrom
CSE-Shaco:develop

Conversation

@CSE-Shaco
Copy link
Copy Markdown
Contributor

@CSE-Shaco CSE-Shaco commented Mar 15, 2026

📌 연관된 이슈

ex) #이슈번호, #이슈번호

✨ 작업 내용

이번 PR에서 작업한 내용을 간략히 설명해주세요

💬 리뷰 요구사항(선택)

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 로그인한 사용자의 프로필 정보 조회 기능 추가
    • 빙고 게임 보드 조회 기능 추가 (전체 목록 및 팀별 개별 조회)
    • 빙고 게임 보드 업데이트 기능 추가 (관리자 권한)
  • 개선 사항

    • 팀 유형 매핑 및 파싱 로직 개선

@CSE-Shaco CSE-Shaco merged commit 74fea9e into GDGoCINHA:develop Mar 15, 2026
1 of 2 checks passed
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 15, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: da28963d-1898-4e14-ad83-ecff37b5dd2a

📥 Commits

Reviewing files that changed from the base of the PR and between 814f6f1 and a87e5b0.

📒 Files selected for processing (18)
  • build.gradle
  • src/main/java/inha/gdgoc/domain/admin/recruit/core/service/RecruitCoreAdminService.java
  • src/main/java/inha/gdgoc/domain/auth/controller/AuthController.java
  • src/main/java/inha/gdgoc/domain/auth/controller/message/AuthMessage.java
  • src/main/java/inha/gdgoc/domain/auth/service/AuthService.java
  • src/main/java/inha/gdgoc/domain/game/controller/AdminBingoBoardController.java
  • src/main/java/inha/gdgoc/domain/game/controller/BingoBoardController.java
  • src/main/java/inha/gdgoc/domain/game/controller/message/GameUserMessage.java
  • src/main/java/inha/gdgoc/domain/game/dto/request/BingoBoardUpdateRequest.java
  • src/main/java/inha/gdgoc/domain/game/dto/response/BingoBoardResponse.java
  • src/main/java/inha/gdgoc/domain/game/entity/BingoBoard.java
  • src/main/java/inha/gdgoc/domain/game/entity/BingoInteraction.java
  • src/main/java/inha/gdgoc/domain/game/repository/BingoBoardRepository.java
  • src/main/java/inha/gdgoc/domain/game/repository/BingoInteractionRepository.java
  • src/main/java/inha/gdgoc/domain/game/service/BingoBoardService.java
  • src/main/java/inha/gdgoc/domain/user/enums/TeamType.java
  • src/main/java/inha/gdgoc/global/config/jwt/TokenProvider.java
  • src/main/resources/db/migration/V20260314__create_bingo_tables.sql

Walkthrough

빙고 게임 기능을 구현하는 PR로서, 빙고 보드 엔티티, 리포지토리, 서비스, 컨트롤러 및 DTO를 추가하고, 인증된 사용자의 정보 조회 엔드포인트를 새로 구현했습니다.

Changes

Cohort / File(s) Summary
Bingo Game Feature
src/main/java/inha/gdgoc/domain/game/entity/BingoBoard.java, src/main/java/inha/gdgoc/domain/game/entity/BingoInteraction.java, src/main/java/inha/gdgoc/domain/game/repository/BingoBoardRepository.java, src/main/java/inha/gdgoc/domain/game/repository/BingoInteractionRepository.java, src/main/java/inha/gdgoc/domain/game/service/BingoBoardService.java, src/main/java/inha/gdgoc/domain/game/controller/BingoBoardController.java, src/main/java/inha/gdgoc/domain/game/controller/AdminBingoBoardController.java, src/main/java/inha/gdgoc/domain/game/dto/request/BingoBoardUpdateRequest.java, src/main/java/inha/gdgoc/domain/game/dto/response/BingoBoardResponse.java
빙고 게임 엔티티(BingoBoard, BingoInteraction), 리포지토리, 서비스(조회/업데이트 로직, 랭킹 계산, 상호작용 추적), 공개/관리자 컨트롤러, 요청/응답 DTO를 추가했습니다.
Authentication & User Endpoints
src/main/java/inha/gdgoc/domain/auth/controller/AuthController.java, src/main/java/inha/gdgoc/domain/auth/service/AuthService.java, src/main/java/inha/gdgoc/domain/auth/controller/message/AuthMessage.java
GET /me 인증 엔드포인트를 추가하여 현재 사용자 정보를 조회하고, getCurrentUser 메서드로 관리자/일반 사용자 구분 처리를 구현했습니다.
Game Controller Messages
src/main/java/inha/gdgoc/domain/game/controller/message/GameUserMessage.java
BINGO_BOARDS_RETRIEVED_SUCCESS, BINGO_BOARD_RETRIEVED_SUCCESS, BINGO_BOARD_UPDATED_SUCCESS 상수를 추가했습니다.
TeamType & Authentication Config
src/main/java/inha/gdgoc/domain/user/enums/TeamType.java, src/main/java/inha/gdgoc/global/config/jwt/TokenProvider.java
TeamType.from()에 입력 정규화 로직을 추가하고, TokenProvider의 관리자 경로에서 TeamType 처리 방식을 개선했습니다.
Build Configuration
build.gradle
AWS SDK URL connection client 의존성 추가 및 AssertJ 테스트 의존성을 버전 3.27.7로 업데이트했습니다.
Database Schema
src/main/java/inha/gdgoc/domain/admin/recruit/core/service/RecruitCoreAdminService.java, src/main/resources/db/migration/V20260314__create_bingo_tables.sql
RecruitCoreAdminService에서 TeamType 처리를 from()으로 변경하고, bingo_board, bingo_interaction 테이블을 생성하는 마이그레이션을 추가했습니다.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant BingoBoardController
    participant BingoBoardService
    participant BingoBoardRepository
    participant Database
    
    Client->>BingoBoardController: GET /api/v1/game/bingo/boards/{teamNumber}
    BingoBoardController->>BingoBoardService: findBoard(teamNumber)
    BingoBoardService->>BingoBoardRepository: findByTeamNumber(teamNumber)
    BingoBoardRepository->>Database: SELECT FROM bingo_board
    Database-->>BingoBoardRepository: BingoBoard entity
    BingoBoardRepository-->>BingoBoardService: Optional<BingoBoard>
    BingoBoardService->>BingoBoardService: buildRankedResponses()
    BingoBoardService-->>BingoBoardController: BingoBoardResponse
    BingoBoardController-->>Client: ResponseEntity<ApiResponse<BingoBoardResponse>>
Loading
sequenceDiagram
    participant Client
    participant AdminBingoBoardController
    participant BingoBoardService
    participant BingoBoardRepository
    participant BingoInteractionRepository
    participant Database
    
    Client->>AdminBingoBoardController: PUT /api/v1/admin/game/bingo/boards/{teamNumber}
    AdminBingoBoardController->>BingoBoardService: updateBoard(teamNumber, request)
    BingoBoardService->>BingoBoardRepository: findByTeamNumber(teamNumber)
    BingoBoardRepository->>Database: SELECT FROM bingo_board
    Database-->>BingoBoardRepository: BingoBoard (또는 null)
    BingoBoardRepository-->>BingoBoardService: Optional<BingoBoard>
    BingoBoardService->>BingoBoardService: 마크 업데이트 및 상호작용 추출
    BingoBoardService->>BingoBoardRepository: save(updated board)
    BingoBoardRepository->>Database: INSERT/UPDATE bingo_board
    BingoBoardService->>BingoInteractionRepository: saveAll(interactions)
    BingoInteractionRepository->>Database: INSERT INTO bingo_interaction
    Database-->>BingoInteractionRepository: Success
    BingoBoardService-->>AdminBingoBoardController: BingoBoardResponse
    AdminBingoBoardController-->>Client: ResponseEntity<ApiResponse<BingoBoardResponse>>
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • PR #302: TokenProvider의 관리자 경로 처리와 TeamType 파싱 로직을 동시에 수정합니다.
  • PR #305: GameUserMessage 파일에 새로운 public static 상수를 추가하는 동일한 패턴을 포함합니다.
  • PR #261: AuthController에 새로운 인증된 엔드포인트를 추가하는 유사한 변경입니다.

Suggested labels

enhancement

Poem

🐰 빙고 보드가 반짝반짝
열 개 팀이 즐거워
마크를 표시하고 순위를 매기고
사용자 정보도 쏙 조회하고
데이터베이스에 쌓여가네!

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant