feat(script-favorite): add 3 favorite endpoints to EpicScriptController

- POST /epicScript/favorite/toggle: toggle favorite for a script
- GET /epicScript/favorite/page: paginated favorite list
- GET /epicScript/favorite/check: check if script is favorited
- Add ScriptFavoriteToggleRequest, ScriptFavoriteResponse, ScriptFavoriteService imports
- Inject ScriptFavoriteService via @Autowired
This commit is contained in:
2026-07-19 21:43:46 +08:00
parent 9d352f40a0
commit 74fa304cd9
@@ -8,13 +8,16 @@ import com.emotion.dto.request.EpicScriptInspirationRequest;
import com.emotion.dto.request.EpicScriptPageRequest; import com.emotion.dto.request.EpicScriptPageRequest;
import com.emotion.dto.request.EpicScriptUpdateRequest; import com.emotion.dto.request.EpicScriptUpdateRequest;
import com.emotion.dto.request.SwitchVersionRequest; import com.emotion.dto.request.SwitchVersionRequest;
import com.emotion.dto.request.ScriptFavoriteToggleRequest;
import com.emotion.dto.response.EpicScriptCreateWithDialogueResponse; import com.emotion.dto.response.EpicScriptCreateWithDialogueResponse;
import com.emotion.dto.response.EpicScriptInspirationResponse; import com.emotion.dto.response.EpicScriptInspirationResponse;
import com.emotion.dto.response.EpicScriptResponse; import com.emotion.dto.response.EpicScriptResponse;
import com.emotion.dto.response.InspirationSuggestionResponse; import com.emotion.dto.response.InspirationSuggestionResponse;
import com.emotion.service.EpicScriptDialogueService; import com.emotion.service.EpicScriptDialogueService;
import com.emotion.dto.response.ScriptFavoriteResponse;
import com.emotion.service.EpicScriptService; import com.emotion.service.EpicScriptService;
import io.swagger.v3.oas.annotations.Operation; 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.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -41,6 +44,9 @@ public class EpicScriptController {
@Autowired @Autowired
private EpicScriptDialogueService epicScriptDialogueService; private EpicScriptDialogueService epicScriptDialogueService;
@Autowired
private ScriptFavoriteService scriptFavoriteService;
/** /**
* 分页查询当前用户的爽文剧本 * 分页查询当前用户的爽文剧本
*/ */
@@ -172,4 +178,31 @@ public class EpicScriptController {
} }
return Result.success(); return Result.success();
} }
// ==================== 剧本收藏 ====================
@Operation(summary = "切换收藏", description = "收藏或取消收藏指定剧本。")
@PostMapping(value = "/favorite/toggle")
public Result<ScriptFavoriteResponse> toggleFavorite(
@Valid @RequestBody ScriptFavoriteToggleRequest request) {
return Result.success(scriptFavoriteService.toggleFavorite(request.getScriptId()));
}
@Operation(summary = "分页查询收藏", description = "分页查询当前用户收藏的剧本列表。")
@GetMapping(value = "/favorite/page")
public Result<PageResult<EpicScriptResponse>> 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<ScriptFavoriteResponse> checkFavorite(@RequestParam String scriptId) {
boolean favorited = scriptFavoriteService.isFavorited(scriptId);
ScriptFavoriteResponse r = new ScriptFavoriteResponse();
r.setScriptId(scriptId);
r.setIsFavorited(favorited);
return Result.success(r);
}
} }