video-flow-b/app/service/usecase/templateStoryUseCase.ts
2025-08-16 21:38:05 +08:00

57 lines
1.7 KiB
TypeScript

import { StoryTemplateEntity } from "../domain/Entities";
import { getTemplateStoryList, actionTemplateStory } from "@/api/movie_start";
/**
* 模板故事用例
* 负责管理故事模板的获取与操作
*/
export class TemplateStoryUseCase {
/** 故事模板列表 */
templateStoryList: StoryTemplateEntity[] = [];
/** 当前选中的故事模板 */
selectedTemplate: StoryTemplateEntity | null = null;
constructor() {}
/**
* 获取故事模板列表
* @returns {Promise<StoryTemplateEntity[]>} - 故事模板实体数组
*/
async getTemplateStoryList(): Promise<StoryTemplateEntity[]> {
try {
const response = await getTemplateStoryList();
if (response.successful && response.data) {
this.templateStoryList = response.data;
return response.data;
}
throw new Error(response.message || '获取故事模板列表失败');
} catch (error) {
console.error('获取故事模板列表失败:', error);
throw error;
}
}
/**
* 执行故事模板相关操作
* @param {StoryTemplateEntity} template - 选中的故事模板
* @returns {Promise<string>} - 项目id
*/
async actionStory(template: StoryTemplateEntity): Promise<string> {
try {
if (!template) {
throw new Error('故事模板不能为空');
}
const response = await actionTemplateStory(template);
if (response.successful && response.data) {
this.selectedTemplate = template;
return response.data.projectId;
}
throw new Error(response.message || '执行故事模板操作失败');
} catch (error) {
console.error('执行故事模板操作失败:', error);
throw error;
}
}
}