Skip to content

Commit a450b97

Browse files
authored
#234 [Merge] v2.0.6 업데이트 (#236)
#227 [Chore] 애플 로그인 설정 및 기능 추가 (#228) #229 [Feat] 로그인 서비스 애플 분기 처리 추가 (#230) #231 [Feat] 퀴즈·투표·배틀 예약 발행 시스템 추가 (#232) #226 [Feat] 배틀 생성 시 BOT 자동 투표 및 GPT 관점 생성 (#233)
1 parent 31d1742 commit a450b97

80 files changed

Lines changed: 1349 additions & 182 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ dependencies {
4444
// HTTP Client (소셜 API 호출용)
4545
implementation 'org.springframework.boot:spring-boot-starter-webflux'
4646

47+
// 애플 로그인 자격증명 파싱을 위한 BouncyCastle 라이브러리
48+
implementation 'org.bouncycastle:bcpkix-jdk18on:1.76'
49+
implementation 'org.bouncycastle:bcprov-jdk18on:1.76'
50+
4751
// AdMob SSV 검증을 위한 Tink 라이브러리
4852
implementation 'com.google.crypto.tink:apps-rewardedads:1.9.1'
4953
testImplementation 'com.google.crypto.tink:apps-rewardedads:1.9.1'

src/main/java/com/swyp/picke/domain/admin/controller/AdminBattleController.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.swyp.picke.domain.admin.dto.battle.request.AdminBattleUpdateRequest;
77
import com.swyp.picke.domain.admin.service.AdminBattleService;
88
import com.swyp.picke.global.common.response.ApiResponse;
9+
import io.swagger.v3.oas.annotations.Hidden;
910
import io.swagger.v3.oas.annotations.Operation;
1011
import io.swagger.v3.oas.annotations.tags.Tag;
1112
import jakarta.validation.Valid;
@@ -22,6 +23,7 @@
2223
import org.springframework.web.bind.annotation.RequestParam;
2324
import org.springframework.web.bind.annotation.RestController;
2425

26+
@Hidden
2527
@Tag(name = "관리자 배틀 API", description = "관리자 배틀 콘텐츠 생성, 조회, 수정, 삭제")
2628
@RestController
2729
@RequestMapping("/api/v1/admin/battles")
@@ -72,4 +74,14 @@ public ApiResponse<?> getBattles(
7274
) {
7375
return ApiResponse.onSuccess(adminBattleService.getBattles(page, size, status));
7476
}
75-
}
77+
78+
@Operation(summary = "기존 배틀에 BOT 관점 자동 생성")
79+
@PostMapping("/{battleId}/seed")
80+
public ApiResponse<Void> seedBattle(
81+
@PathVariable Long battleId,
82+
@RequestParam int botCount
83+
) {
84+
adminBattleService.seedBattle(battleId, botCount);
85+
return ApiResponse.onSuccess(null);
86+
}
87+
}

src/main/java/com/swyp/picke/domain/admin/controller/AdminNotificationController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.swyp.picke.domain.admin.service.AdminNotificationService;
77
import com.swyp.picke.domain.notification.enums.NotificationCategory;
88
import com.swyp.picke.global.common.response.ApiResponse;
9+
import io.swagger.v3.oas.annotations.Hidden;
910
import io.swagger.v3.oas.annotations.Operation;
1011
import io.swagger.v3.oas.annotations.tags.Tag;
1112
import jakarta.validation.Valid;
@@ -19,6 +20,7 @@
1920
import org.springframework.web.bind.annotation.RequestParam;
2021
import org.springframework.web.bind.annotation.RestController;
2122

23+
@Hidden
2224
@Tag(name = "관리자 공지 API", description = "공지사항/이벤트 작성 및 조회")
2325
@RestController
2426
@RequestMapping("/api/v1/admin/notices")

src/main/java/com/swyp/picke/domain/admin/controller/AdminPollController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.swyp.picke.domain.admin.dto.poll.response.AdminPollDetailResponse;
77
import com.swyp.picke.domain.admin.service.AdminPollService;
88
import com.swyp.picke.global.common.response.ApiResponse;
9+
import io.swagger.v3.oas.annotations.Hidden;
910
import io.swagger.v3.oas.annotations.Operation;
1011
import io.swagger.v3.oas.annotations.tags.Tag;
1112
import jakarta.validation.Valid;
@@ -21,6 +22,7 @@
2122
import org.springframework.web.bind.annotation.RequestParam;
2223
import org.springframework.web.bind.annotation.RestController;
2324

25+
@Hidden
2426
@Tag(name = "관리자 투표 콘텐츠 API", description = "관리자 투표 콘텐츠 생성, 조회, 수정, 삭제")
2527
@RestController
2628
@RequestMapping("/api/v1/admin/polls")
@@ -66,4 +68,4 @@ public ApiResponse<?> getPolls(
6668
) {
6769
return ApiResponse.onSuccess(adminPollService.getPolls(page, size, status));
6870
}
69-
}
71+
}

src/main/java/com/swyp/picke/domain/admin/controller/AdminQuizController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.swyp.picke.domain.admin.dto.quiz.response.AdminQuizDetailResponse;
77
import com.swyp.picke.domain.admin.service.AdminQuizService;
88
import com.swyp.picke.global.common.response.ApiResponse;
9+
import io.swagger.v3.oas.annotations.Hidden;
910
import io.swagger.v3.oas.annotations.Operation;
1011
import io.swagger.v3.oas.annotations.tags.Tag;
1112
import jakarta.validation.Valid;
@@ -21,6 +22,7 @@
2122
import org.springframework.web.bind.annotation.RequestParam;
2223
import org.springframework.web.bind.annotation.RestController;
2324

25+
@Hidden
2426
@Tag(name = "관리자 퀴즈 API", description = "관리자 퀴즈 콘텐츠 생성, 조회, 수정, 삭제")
2527
@RestController
2628
@RequestMapping("/api/v1/admin/quizzes")
@@ -66,4 +68,4 @@ public ApiResponse<?> getQuizzes(
6668
) {
6769
return ApiResponse.onSuccess(adminQuizService.getQuizzes(page, size, status));
6870
}
69-
}
71+
}

src/main/java/com/swyp/picke/domain/admin/controller/AdminScenarioController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.swyp.picke.domain.admin.dto.scenario.response.AdminScenarioResponse;
99
import com.swyp.picke.domain.admin.service.AdminScenarioService;
1010
import com.swyp.picke.global.common.response.ApiResponse;
11+
import io.swagger.v3.oas.annotations.Hidden;
1112
import io.swagger.v3.oas.annotations.Operation;
1213
import io.swagger.v3.oas.annotations.tags.Tag;
1314
import lombok.RequiredArgsConstructor;
@@ -24,6 +25,7 @@
2425
import org.springframework.web.bind.annotation.ResponseStatus;
2526
import org.springframework.web.bind.annotation.RestController;
2627

28+
@Hidden
2729
@Tag(name = "관리자 시나리오 API", description = "관리자 시나리오 생성, 조회, 수정, 삭제")
2830
@RestController
2931
@RequestMapping("/api/v1/admin")
@@ -70,4 +72,4 @@ public ApiResponse<AdminScenarioResponse> updateScenarioStatus(
7072
public ApiResponse<AdminDeleteResponse> deleteScenario(@PathVariable Long scenarioId) {
7173
return ApiResponse.onSuccess(adminScenarioService.deleteScenario(scenarioId));
7274
}
73-
}
75+
}

src/main/java/com/swyp/picke/domain/admin/controller/AdminTagController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.swyp.picke.domain.admin.dto.tag.response.TagResponse;
66
import com.swyp.picke.domain.admin.service.AdminTagService;
77
import com.swyp.picke.global.common.response.ApiResponse;
8+
import io.swagger.v3.oas.annotations.Hidden;
89
import io.swagger.v3.oas.annotations.Operation;
910
import io.swagger.v3.oas.annotations.Parameter;
1011
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -19,6 +20,7 @@
1920
import org.springframework.web.bind.annotation.RequestMapping;
2021
import org.springframework.web.bind.annotation.RestController;
2122

23+
@Hidden
2224
@Tag(name = "관리자 태그 API", description = "관리자 태그 생성, 수정, 삭제")
2325
@RestController
2426
@RequiredArgsConstructor
@@ -52,4 +54,4 @@ public ApiResponse<TagDeleteResponse> deleteTag(
5254
) {
5355
return ApiResponse.onSuccess(adminTagService.deleteTag(tagId));
5456
}
55-
}
57+
}

src/main/java/com/swyp/picke/domain/admin/dto/battle/request/AdminBattleCreateRequest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.swyp.picke.domain.battle.enums.BattleStatus;
44
import java.time.LocalDate;
5+
import java.time.LocalDateTime;
56
import java.util.List;
67

78
public record AdminBattleCreateRequest(
@@ -10,9 +11,11 @@ public record AdminBattleCreateRequest(
1011
String description,
1112
String thumbnailUrl,
1213
LocalDate targetDate,
14+
LocalDateTime publishAt,
1315
Integer audioDuration,
1416
BattleStatus status,
1517
List<Long> tagIds,
16-
List<AdminBattleOptionRequest> options
18+
List<AdminBattleOptionRequest> options,
19+
int botCount
1720
) {}
1821

src/main/java/com/swyp/picke/domain/admin/dto/battle/request/AdminBattleUpdateRequest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.swyp.picke.domain.battle.enums.BattleStatus;
44
import java.time.LocalDate;
5+
import java.time.LocalDateTime;
56
import java.util.List;
67

78
public record AdminBattleUpdateRequest(
@@ -10,6 +11,7 @@ public record AdminBattleUpdateRequest(
1011
String description,
1112
String thumbnailUrl,
1213
LocalDate targetDate,
14+
LocalDateTime publishAt,
1315
Integer audioDuration,
1416
BattleStatus status,
1517
List<Long> tagIds,

src/main/java/com/swyp/picke/domain/admin/dto/battle/response/AdminBattleDetailResponse.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public record AdminBattleDetailResponse(
2020
String thumbnailUrl,
2121
Integer audioDuration,
2222
LocalDate targetDate,
23+
LocalDateTime publishAt,
2324
BattleStatus status,
2425
BattleCreatorType creatorType,
2526
List<BattleTagResponse> tags,

0 commit comments

Comments
 (0)