diff --git a/server/src/main/java/com/emotion/controller/EpicScriptController.java b/server/src/main/java/com/emotion/controller/EpicScriptController.java index db4d3c9..fee221a 100644 --- a/server/src/main/java/com/emotion/controller/EpicScriptController.java +++ b/server/src/main/java/com/emotion/controller/EpicScriptController.java @@ -8,13 +8,16 @@ import com.emotion.dto.request.EpicScriptInspirationRequest; import com.emotion.dto.request.EpicScriptPageRequest; import com.emotion.dto.request.EpicScriptUpdateRequest; import com.emotion.dto.request.SwitchVersionRequest; +import com.emotion.dto.request.ScriptFavoriteToggleRequest; import com.emotion.dto.response.EpicScriptCreateWithDialogueResponse; import com.emotion.dto.response.EpicScriptInspirationResponse; import com.emotion.dto.response.EpicScriptResponse; import com.emotion.dto.response.InspirationSuggestionResponse; import com.emotion.service.EpicScriptDialogueService; +import com.emotion.dto.response.ScriptFavoriteResponse; import com.emotion.service.EpicScriptService; import io.swagger.v3.oas.annotations.Operation; +import com.emotion.service.ScriptFavoriteService; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; @@ -41,6 +44,9 @@ public class EpicScriptController { @Autowired private EpicScriptDialogueService epicScriptDialogueService; + @Autowired + private ScriptFavoriteService scriptFavoriteService; + /** * 分页查询当前用户的爽文剧本 */ @@ -172,4 +178,31 @@ public class EpicScriptController { } return Result.success(); } + + // ==================== 剧本收藏 ==================== + + @Operation(summary = "切换收藏", description = "收藏或取消收藏指定剧本。") + @PostMapping(value = "/favorite/toggle") + public Result toggleFavorite( + @Valid @RequestBody ScriptFavoriteToggleRequest request) { + return Result.success(scriptFavoriteService.toggleFavorite(request.getScriptId())); + } + + @Operation(summary = "分页查询收藏", description = "分页查询当前用户收藏的剧本列表。") + @GetMapping(value = "/favorite/page") + public Result> getFavoritePage( + @RequestParam(defaultValue = "1") long current, + @RequestParam(defaultValue = "10") long size) { + return Result.success(scriptFavoriteService.getFavoritePage(current, size)); + } + + @Operation(summary = "检查收藏状态", description = "检查指定剧本是否已被当前用户收藏。") + @GetMapping(value = "/favorite/check") + public Result checkFavorite(@RequestParam String scriptId) { + boolean favorited = scriptFavoriteService.isFavorited(scriptId); + ScriptFavoriteResponse r = new ScriptFavoriteResponse(); + r.setScriptId(scriptId); + r.setIsFavorited(favorited); + return Result.success(r); + } }