forked from 77media/video-flow
57 lines
1.7 KiB
TypeScript
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;
|
|
}
|
|
}
|
|
}
|