LaiTool/src/main/Service/Book/bookTask.ts
2024-08-03 12:46:12 +08:00

78 lines
2.9 KiB
TypeScript

import { CheckFolderExistsOrCreate, DeleteFolderAllFile } from "../../../define/Tools/file";
import { BookTaskService } from "../../../define/db/service/Book/bookTaskService";
import { BookTaskDetailService } from "../../../define/db/service/Book/bookTaskDetailService";
import { BookService } from "../../../define/db/service/Book/bookService";
import { BookTaskStatus, OperateBookType } from "../../../define/enum/bookEnum";
import { errorMessage, successMessage } from "../../Public/generalTools";
import { Book } from "../../../model/book";
/**
* 小说批次相关的操作
*/
export class BookTask {
bookTaskService: BookTaskService
bookTaskDetailService: BookTaskDetailService
bookService: BookService
constructor() {
}
async InitService() {
if (!this.bookTaskService) {
this.bookTaskService = await BookTaskService.getInstance()
}
if (!this.bookTaskDetailService) {
this.bookTaskDetailService = await BookTaskDetailService.getInstance()
} if (!this.bookService) {
this.bookService = await BookService.getInstance()
}
}
/**
* 重置小说任务数据
* @param bookTaskId 小说任务ID
*/
async ReSetBookTask(bookTaskId: string) {
try {
console.log(bookTaskId)
await this.InitService()
let bookTask = this.bookTaskService.GetBookTaskDataById(bookTaskId);
if (bookTask == null) {
throw new Error('未找到对应的小说任务')
}
this.bookTaskService.ResetBookTask(bookTaskId);
// 数据库删除完毕,看是删除对应的文件(主要是图片)
let imageFolder = bookTask.imageFolder;
// 整个删掉在重建
await DeleteFolderAllFile(imageFolder)
await CheckFolderExistsOrCreate(imageFolder)
return successMessage(null, "重置小说数据成功", "BookTask_ReSetBookTask")
} catch (error) {
return errorMessage('重置小说批次数据失败,错误信息如下' + error.toString(), "BookTask_ReSetBookTask");
}
}
/**
* 删除对应的小说批次数据
* @param bookTaskId 小说批次ID
*/
async DeleteBookTask(bookTaskId: string) {
try {
await this.InitService();
let bookTask = this.bookTaskService.GetBookTaskDataById(bookTaskId);
if (bookTask == null) {
throw new Error('未找到对应的小说任务,无法执行删除操作')
}
let imageFolder = bookTask.imageFolder;
// 先删除每个批次对应的数据,然后删除批次
this.bookTaskService.DeleteBookTask(bookTaskId);
// 删除成功,直接把对应的出图文件夹删掉
await DeleteFolderAllFile(imageFolder, true)
return successMessage(null, "删除小说批次数据成功", "BookTask_DeleteBookTask")
} catch (error) {
return errorMessage('删除小说批次数据失败,错误信息如下' + error.toString(), "BookTask_DeleteBookTask");
}
}
}