1+ package com .swyp .picke .domain .battle .controller ;
2+
3+ import com .swyp .picke .domain .battle .dto .request .AdminBattleCreateRequest ;
4+ import com .swyp .picke .domain .battle .dto .request .AdminBattleUpdateRequest ;
5+ import com .swyp .picke .domain .battle .dto .response .AdminBattleDeleteResponse ;
6+ import com .swyp .picke .domain .battle .dto .response .AdminBattleDetailResponse ;
7+ import com .swyp .picke .domain .battle .service .BattleService ;
8+ import com .swyp .picke .global .common .response .ApiResponse ;
9+ import io .swagger .v3 .oas .annotations .Operation ;
10+ import io .swagger .v3 .oas .annotations .tags .Tag ;
11+ import jakarta .validation .Valid ;
12+ import lombok .RequiredArgsConstructor ;
13+ import org .springframework .security .access .prepost .PreAuthorize ;
14+ import org .springframework .security .core .annotation .AuthenticationPrincipal ;
15+ import org .springframework .web .bind .annotation .*;
16+
17+ @ Tag (name = "배틀 API (관리자)" , description = "배틀 생성/수정/삭제 (관리자 전용)" )
18+ @ RestController
19+ @ RequestMapping ("/api/v1/admin/battles" )
20+ @ RequiredArgsConstructor
21+ @ PreAuthorize ("hasRole('ADMIN')" )
22+ public class AdminBattleController {
23+
24+ private final BattleService battleService ;
25+
26+ @ Operation (summary = "배틀 생성" )
27+ @ PostMapping
28+ public ApiResponse <AdminBattleDetailResponse > createBattle (
29+ @ RequestBody @ Valid AdminBattleCreateRequest request ,
30+ @ AuthenticationPrincipal Long adminUserId
31+ ) {
32+ return ApiResponse .onSuccess (battleService .createBattle (request , adminUserId ));
33+ }
34+
35+ @ Operation (summary = "배틀 수정 (변경 필드만 포함)" )
36+ @ PatchMapping ("/{battleId}" )
37+ public ApiResponse <AdminBattleDetailResponse > updateBattle (
38+ @ PathVariable Long battleId ,
39+ @ RequestBody @ Valid AdminBattleUpdateRequest request
40+ ) {
41+ return ApiResponse .onSuccess (battleService .updateBattle (battleId , request ));
42+ }
43+
44+ @ Operation (summary = "배틀 삭제" )
45+ @ DeleteMapping ("/{battleId}" )
46+ public ApiResponse <AdminBattleDeleteResponse > deleteBattle (
47+ @ PathVariable Long battleId
48+ ) {
49+ return ApiResponse .onSuccess (battleService .deleteBattle (battleId ));
50+ }
51+ }
0 commit comments