diff --git a/package-lock.json b/package-lock.json index 4b70297..8e438b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "laitool", - "version": "3.1.4", + "version": "3.1.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "laitool", - "version": "3.1.4", + "version": "3.1.5", "hasInstallScript": true, "dependencies": { "@alicloud/alimt20181012": "^1.2.0", diff --git a/package.json b/package.json index 50e2466..7933ed3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "laitool", - "version": "3.1.4", + "version": "3.1.5", "description": "An AI tool for image processing, video processing, and other functions.", "main": "./out/main/index.js", "author": "laitool.cn", diff --git a/resources/icon.png b/resources/icon.png deleted file mode 100644 index f643538..0000000 Binary files a/resources/icon.png and /dev/null differ diff --git a/resources/icon.svg b/resources/icon.svg deleted file mode 100644 index 4b998fc..0000000 --- a/resources/icon.svg +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/icon11.ico b/resources/icon11.ico deleted file mode 100644 index 5ee79c4..0000000 Binary files a/resources/icon11.ico and /dev/null differ diff --git a/resources/icon_1.ico b/resources/icon_1.ico deleted file mode 100644 index f064692..0000000 Binary files a/resources/icon_1.ico and /dev/null differ diff --git a/resources/icon_1.png b/resources/icon_1.png deleted file mode 100644 index cf9e8b2..0000000 Binary files a/resources/icon_1.png and /dev/null differ diff --git a/resources/icon_2.png b/resources/icon_2.png deleted file mode 100644 index 5cf687d..0000000 Binary files a/resources/icon_2.png and /dev/null differ diff --git a/resources/image/c_s/22c2bc6e-a886-4d96-89c4-acacc4d23a31.png b/resources/image/c_s/22c2bc6e-a886-4d96-89c4-acacc4d23a31.png new file mode 100644 index 0000000..3aec420 Binary files /dev/null and b/resources/image/c_s/22c2bc6e-a886-4d96-89c4-acacc4d23a31.png differ diff --git a/resources/scripts/db/book.realm.lock b/resources/scripts/db/book.realm.lock index 32a8371..a41b2b0 100644 Binary files a/resources/scripts/db/book.realm.lock and b/resources/scripts/db/book.realm.lock differ diff --git a/resources/scripts/db/software.realm.lock b/resources/scripts/db/software.realm.lock index 850f724..18687ce 100644 Binary files a/resources/scripts/db/software.realm.lock and b/resources/scripts/db/software.realm.lock differ diff --git a/src/define/db/service/Book/bookBackTaskListService.ts b/src/define/db/service/Book/bookBackTaskListService.ts index 3c68917..8de62f6 100644 --- a/src/define/db/service/Book/bookBackTaskListService.ts +++ b/src/define/db/service/Book/bookBackTaskListService.ts @@ -131,6 +131,17 @@ export class BookBackTaskListService extends BaseRealmService { } } + /** + * 获取指定状态的任务数量 + */ + GetAllStatusTaskCount(status: BookBackTaskStatus[]): number { + let taskLength = this.realm + .objects('BookBackTaskList').filtered( + 'status == $0', status + ).length; + return taskLength; + } + /** * 新增一个小说相关的后台任务队列 * @param bookBackTask 要添加的小说数据 diff --git a/src/define/db/service/Book/bookTaskDetailService.ts b/src/define/db/service/Book/bookTaskDetailService.ts index 59a7f17..5621bfb 100644 --- a/src/define/db/service/Book/bookTaskDetailService.ts +++ b/src/define/db/service/Book/bookTaskDetailService.ts @@ -144,7 +144,10 @@ export class BookTaskDetailService extends BaseRealmService { bookTaskDetail.imageLock = false bookTaskDetail.createTime = new Date() bookTaskDetail.updateTime = new Date() - bookTaskDetail.adetailer = false // 先写死false + + if (!bookTaskDetail.hasOwnProperty('adetailer')) { + bookTaskDetail.adetailer = false; // 设置默认值 + } // 开始添加 this.transaction(() => { this.realm.create('BookTaskDetail', bookTaskDetail) diff --git a/src/define/define.js b/src/define/define.js index c62cc9d..cbdf8a2 100644 --- a/src/define/define.js +++ b/src/define/define.js @@ -12,11 +12,11 @@ if (!app.isPackaged) { tag_setting: path.join(__dirname, '../../resources/config/tag_setting.json'), img_base: path.join(__dirname, '../../resources/config/img_base.json'), video_config: path.join(__dirname, '../../resources/config/video_config.json'), + system_config: path.join(__dirname, '../../resources/config/system_config.json'), scripts_path: path.join(__dirname, '../../resources/scripts'), db_path: path.join(__dirname, '../../resources/scripts/db'), project_path: path.join(__dirname, '../../project'), tts_path: path.join(__dirname, '../../tts'), - logger_path: path.join(__dirname, '../../resources/logger'), package_path: path.join(__dirname, '../../resources/package'), image_path: path.join(__dirname, '../../resources/image'), @@ -80,6 +80,7 @@ if (!app.isPackaged) { dynamic_setting: path.join(__dirname, '../../../resources/config/dynamic_setting.json'), tag_setting: path.join(__dirname, '../../../resources/config/tag_setting.json'), video_config: path.join(__dirname, '../../../resources/config/video_config.json'), + system_config: path.join(__dirname, '../../../resources/config/system_config.json'), img_base: path.join(__dirname, '../../../resources/config/img_base.json'), scripts_path: path.join(__dirname, '../../../resources/scripts'), db_path: path.join(__dirname, '../../../resources/scripts/db'), diff --git a/src/define/define_string.ts b/src/define/define_string/index.ts similarity index 97% rename from src/define/define_string.ts rename to src/define/define_string/index.ts index 6c6120a..352689d 100644 --- a/src/define/define_string.ts +++ b/src/define/define_string/index.ts @@ -1,4 +1,9 @@ +import { SYSTEM } from "./systemDefineString" +import TASK from "./taskDefineString" + export const DEFINE_STRING = { + SYSTEM: SYSTEM, + TASK: TASK, SHOW_GLOBAL_MESSAGE: "SHOW_GLOBAL_MESSAGE", SHOW_GLOBAL_MAIN_NOTIFICATION: 'SHOW_GLOBAL_MAIN_NOTIFICATION', OPEN_DEV_TOOLS_PASSWORD: 'OPEN_DEV_TOOLS_PASSWORD', @@ -81,7 +86,6 @@ export const DEFINE_STRING = { GET_ADETAILER_LIST: 'GET_ADETAILER_LIST', SAVE_DETAILER_CONFIG: 'SAVE_DETAILER_CONFIG', OPEN_URL: 'OPEN_URL', - GET_VERSION: 'GET_VERSION', GET_FRAME_RETUN: 'GET_FRAME_RETUN', DOWNLOAD_MODEL: 'DOWNLOAD_MODEL', START_STORY_BOARDING: 'START_STORY_BOARDING', @@ -357,10 +361,6 @@ export const DEFINE_STRING = { //#endregion }, - SYSTEM: { - OPEN_FILE: 'OPEN_FILE', - RETURN_LOGGER: 'RETURN_LOGGER' - }, SETTING: { GET_DATA_BY_TYPE_AND_PROPERTY: 'GET_DATA_BY_TYPE_AND_PROPERTY', SAVE_DATA_BY_TYPE_AND_PROPERTY: 'SAVE_DATA_BY_TYPE_AND_PROPERTY', @@ -420,19 +420,5 @@ export const DEFINE_STRING = { UPDATE_BOOK_TASK_DETAIL_DATA: "UPDATE_BOOK_TASK_DETAIL_DATA", UPDATE_BOOK_DATA: "UPDATE_BOOK_DATA", UPDATE_SOFTWARE_SETTING: "UPDATE_SOFTWARE_SETTING" - }, - /** - * 后台任务相关 - */ - TASK: { - /** - * 添加单个后台任务 - */ - ADD_BOOK_BACK_TASK: "ADD_BOOK_BACK_TASK", - - /** - * 添加多个后台任务 - */ - ADD_MULTI_BOOK_BACK_TASK: 'ADD_MULTI_BOOK_BACK_TASK' } } diff --git a/src/define/define_string/systemDefineString.ts b/src/define/define_string/systemDefineString.ts new file mode 100644 index 0000000..334c32e --- /dev/null +++ b/src/define/define_string/systemDefineString.ts @@ -0,0 +1,12 @@ +export const SYSTEM = { + /** 打开文件夹 */ + OPEN_FILE: 'OPEN_FILE', + /** 返回日志写出 */ + RETURN_LOGGER: 'RETURN_LOGGER', + /** 获取版本信息和显卡信息 */ + GET_VISION_AND_GPU_MESSAGE: 'GET_VISION_AND_GPU_MESSAGE', + /** 获取机器码 */ + GET_MACHINE_ID: "GET_MACHINE_ID", + /** 检查机器码状态 */ + CHECK_MACHINE_STATUS : "CHECK_MACHINE_STATUS" +} \ No newline at end of file diff --git a/src/define/define_string/taskDefineString.ts b/src/define/define_string/taskDefineString.ts new file mode 100644 index 0000000..757537d --- /dev/null +++ b/src/define/define_string/taskDefineString.ts @@ -0,0 +1,14 @@ + +const TASK = { + /** 启动后台任务 */ + START_BACK_TASK: "START_BACK_TASK", + /** 添加单个后台任务 */ + ADD_BOOK_BACK_TASK: "ADD_BOOK_BACK_TASK", + /** 添加多个后台任务 */ + ADD_MULTI_BOOK_BACK_TASK: 'ADD_MULTI_BOOK_BACK_TASK', + /** 获取等待中的任务 */ + GET_ALL_STATUS_TASK_COUNT: "GET_ALL_STATUS_TASK_COUNT", + +}; + +export default TASK; diff --git a/src/main/IPCEvent/index.js b/src/main/IPCEvent/index.js index 68861f0..cfdbe5d 100644 --- a/src/main/IPCEvent/index.js +++ b/src/main/IPCEvent/index.js @@ -11,7 +11,7 @@ import { SdIpc } from './sdIpc.js' import { MainIpc } from './mainIpc.js' import { GlobalIpc } from './globalIpc.js' import { ImageIpc } from './imageIpc.js' -import { SystemIpc } from './systemIpc.js' +import { SystemIpc } from './systemIpc' import { BookIpc } from './bookIpc' import { TTSIpc } from './ttsIpc.js' import { DBIpc } from './dbIpc' diff --git a/src/main/IPCEvent/systemIpc.js b/src/main/IPCEvent/systemIpc.js deleted file mode 100644 index a0ce1d6..0000000 --- a/src/main/IPCEvent/systemIpc.js +++ /dev/null @@ -1,39 +0,0 @@ -import { ipcMain } from 'electron' -import { DEFINE_STRING } from '../../define/define_string' -import { CheckFileOrDirExist } from '../../define/Tools/file' -import { errorMessage, successMessage } from '../Public/generalTools' -import path from 'path' -const { shell } = require('electron') - -function SystemIpc() { - // 打开指定的文件 - ipcMain.on(DEFINE_STRING.SYSTEM.OPEN_FILE, async (event, value) => { - await shell.openPath(value) - }) - - // 试用文件资源打开指定的文件夹 - ipcMain.handle(DEFINE_STRING.OPEN_FOLDER, async (event, value) => { - try { - let openFolder = null - if (value.baseProject) { - openFolder = path.join(global.config.project_path, value.folderPath) - } - if (value.dirFloder) { - openFolder = path.dirname(value.folderPath) - } - if (!openFolder) { - openFolder = value.folderPath - } - // 判断文件夹是不是存在 - let isExist = await CheckFileOrDirExist(openFolder) - if (!isExist) { - throw new Error('文件夹不存在,请检查') - } - shell.openPath(openFolder) - return successMessage(null, '打开成功') - } catch (error) { - return errorMessage('打开文件夹错误,错误信息如下:' + error.message, 'SystemIpc_OPEN_FOLDER') - } - }) -} -export { SystemIpc } diff --git a/src/main/IPCEvent/systemIpc.ts b/src/main/IPCEvent/systemIpc.ts new file mode 100644 index 0000000..8c2769e --- /dev/null +++ b/src/main/IPCEvent/systemIpc.ts @@ -0,0 +1,30 @@ +import { ipcMain } from 'electron' +import { DEFINE_STRING } from '../../define/define_string' +import { CheckFileOrDirExist } from '../../define/Tools/file' +import { errorMessage, successMessage } from '../Public/generalTools' +import path from 'path' +import { shell } from 'electron' +import SystemInfo from '../Service/system/systeminfo' +import ElectronInterface, { OpenFolderParams } from '../Service/system/electronInterface' + +const systemInfo = new SystemInfo(); +const electronInterface = new ElectronInterface() + +function SystemIpc() { + /**打开指定的文件 */ + ipcMain.on(DEFINE_STRING.SYSTEM.OPEN_FILE, async (event, value) => { + await shell.openPath(value) + }) + /**试用文件资源打开指定的文件夹 */ + ipcMain.handle(DEFINE_STRING.OPEN_FOLDER, async (event, value: OpenFolderParams) => await electronInterface.OpenFolder(value)) + /** + * 获取指定的版本好电脑的CPU + * 判断获取时间是不是超过一天,如果超过一天就重新获取 + */ + ipcMain.handle(DEFINE_STRING.SYSTEM.GET_VISION_AND_GPU_MESSAGE, async (event) => await systemInfo.GetViosionAndGpuMessage()) + /**获取系统的机器码 */ + ipcMain.handle(DEFINE_STRING.SYSTEM.GET_MACHINE_ID, async (event) => await systemInfo.GetMachineId()) + /** 检查机器码状态 */ + ipcMain.handle(DEFINE_STRING.SYSTEM.CHECK_MACHINE_STATUS, async (event, value: string) => await systemInfo.CheckMachineStatus(value)) +} +export { SystemIpc } diff --git a/src/main/IPCEvent/taskIpc.ts b/src/main/IPCEvent/taskIpc.ts index 7aee10c..647b744 100644 --- a/src/main/IPCEvent/taskIpc.ts +++ b/src/main/IPCEvent/taskIpc.ts @@ -2,12 +2,16 @@ import { ipcMain } from "electron" import { BookServiceBasic } from "../Service/ServiceBasic/bookServiceBasic" import { DEFINE_STRING } from "../../define/define_string"; import { errorMessage, successMessage } from "../Public/generalTools"; -import { BookBackTaskType, TaskExecuteType } from "../../define/enum/bookEnum"; +import { BookBackTaskStatus, BookBackTaskType, TaskExecuteType } from "../../define/enum/bookEnum"; let bookServiceBasic = new BookServiceBasic(); +import BackTaskService from '../Service/task/backTaskService' +const backTaskService = new BackTaskService() function TaskIpc() { + ipcMain.handle(DEFINE_STRING.TASK.START_BACK_TASK, async (event, isGiveUp: boolean) => await backTaskService.StartBackTask(isGiveUp)) + /** * 添加后台任务,单个 */ @@ -34,6 +38,8 @@ function TaskIpc() { return errorMessage(`添加多个任务失败,错误信息如下:${error.toString()} `, 'TaskIpc_AddMultiBookBackTask') } }) + /** 获取指定状态的任务数量 */ + ipcMain.handle(DEFINE_STRING.TASK.GET_ALL_STATUS_TASK_COUNT, async (event, value: BookBackTaskStatus[]) => await backTaskService.GetAllStatusTaskCount(value)) } export { TaskIpc } \ No newline at end of file diff --git a/src/main/Service/Book/ReverseBook.ts b/src/main/Service/Book/ReverseBook.ts index 3982ac8..348da79 100644 --- a/src/main/Service/Book/ReverseBook.ts +++ b/src/main/Service/Book/ReverseBook.ts @@ -8,7 +8,7 @@ import { DEFINE_STRING } from "../../../define/define_string"; import path from 'path' import { BasicReverse } from './basicReverse' import { BookTaskDetailService } from '../../../define/db/service/Book/bookTaskDetailService' -import { TaskScheduler } from "../../Service/taskScheduler" +import { TaskScheduler } from "../task/taskScheduler" import { Book } from '../../../model/book' import { LoggerStatus, OtherData, ResponseMessageType } from '../../../define/enum/softwareEnum' import { GeneralResponse } from '../../../model/generalResponse' diff --git a/src/main/Service/Book/basicReverse.ts b/src/main/Service/Book/basicReverse.ts index 8c30db1..d63c88a 100644 --- a/src/main/Service/Book/basicReverse.ts +++ b/src/main/Service/Book/basicReverse.ts @@ -5,7 +5,7 @@ const { exec } = require('child_process') const execAsync = util.promisify(exec) import { define } from '../../../define/define' import { BookService } from '../../../define/db/service/Book/bookService' -import { TaskScheduler } from '../taskScheduler' +import { TaskScheduler } from '../task/taskScheduler' import { LoggerStatus, LoggerType, OtherData } from '../../../define/enum/softwareEnum' import { errorMessage, successMessage } from '../../Public/generalTools' import { CheckFileOrDirExist, CheckFolderExistsOrCreate } from '../../../define/Tools/file' diff --git a/src/main/Service/Book/bookFrame.ts b/src/main/Service/Book/bookFrame.ts index 27ce5a3..2c9966c 100644 --- a/src/main/Service/Book/bookFrame.ts +++ b/src/main/Service/Book/bookFrame.ts @@ -7,7 +7,7 @@ import { FfmpegOptions } from "../ffmpegOptions"; import { CheckFileOrDirExist, CopyFileOrFolder, DeleteFolderAllFile } from "../../../define/Tools/file"; import fs from 'fs'; import { Book } from "../../../model/book"; -import { TaskScheduler } from '../taskScheduler'; +import { TaskScheduler } from '../task/taskScheduler'; import { BookBasic } from "./BooKBasic"; import { LoggerStatus, OtherData } from "../../../define/enum/softwareEnum"; import { BasicReverse } from "./basicReverse"; diff --git a/src/main/Service/Book/bookTask.ts b/src/main/Service/Book/bookTask.ts index ace4a6e..b29a5c1 100644 --- a/src/main/Service/Book/bookTask.ts +++ b/src/main/Service/Book/bookTask.ts @@ -155,9 +155,6 @@ export class BookTask { return newBookTask } - CopyCopywrittingData() { - - } /** * 添加一个小说批次任务 diff --git a/src/main/Service/Book/imageStyle.ts b/src/main/Service/Book/imageStyle.ts index 41d3d64..8437d7f 100644 --- a/src/main/Service/Book/imageStyle.ts +++ b/src/main/Service/Book/imageStyle.ts @@ -34,7 +34,9 @@ export class ImageStyle { if (imageStyleRes.code == 0) { throw new Error(imageStyleRes.message) } - styleArr.push(...imageStyleRes.data); + if (imageStyleRes.data && imageStyleRes.data.length > 0) { + styleArr.push(...imageStyleRes.data); + } } // 获取自定义的风格 if (customizeImageStyle && customizeImageStyle.length > 0) { @@ -43,11 +45,13 @@ export class ImageStyle { throw new Error(customizeImageStyleRes.message) } let customizeImageStyleArr = customizeImageStyleRes.data - for (let i = 0; i < customizeImageStyle.length; i++) { - const element = customizeImageStyle[i]; - let style = customizeImageStyleArr.find(x => x.key == element) - if (style) { - styleArr.push(style) + if (customizeImageStyleArr) { + for (let i = 0; i < customizeImageStyle.length; i++) { + const element = customizeImageStyle[i]; + let style = customizeImageStyleArr.find(x => x.key == element) + if (style) { + styleArr.push(style) + } } } } diff --git a/src/main/Service/MJ/mj.ts b/src/main/Service/MJ/mj.ts index 09e0382..d440b13 100644 --- a/src/main/Service/MJ/mj.ts +++ b/src/main/Service/MJ/mj.ts @@ -13,7 +13,7 @@ import { MJSetting } from "../../../model/Setting/mjSetting"; import { GeneralResponse } from "../../../model/generalResponse" import { LoggerStatus, ResponseMessageType } from "../../../define/enum/softwareEnum"; import { ImageStyle } from "../Book/imageStyle"; -import { TaskScheduler } from "../taskScheduler"; +import { TaskScheduler } from "../task/taskScheduler"; import { Tools } from "../../../main/tools" import { BookServiceBasic } from "../ServiceBasic/bookServiceBasic"; import { PresetService } from "../presetService"; @@ -283,11 +283,12 @@ export class MJOpt { for (let i = 0; i < ids.length; i++) { const id = ids[i]; let scene = await this.presetService.GetScenePresetDetailById(id) - if (scene.code == 1) { + if (scene.code == 0) { + throw new Error(scene.message) + } + if (scene.data) { // 这边开始拼接 sceneString += scene.data.prompt + ', ' - } else { - throw new Error(scene.message) } } return sceneString @@ -306,16 +307,17 @@ export class MJOpt { for (let i = 0; i < ids.length; i++) { const element = ids[i]; let character = await this.presetService.GetCharacterPresetDetailById(element) - if (character.code == 1) { + if (character.code == 0) { + throw new Error(character.message) + } + + if (character.data) { characterString += character.data.prompt + ', ' if (character.data.image_url && character.data.image_url != '' && character.data.cref_cw) { characterUrl += ` ${character.data.image_url} ` crefCw = character.data.cref_cw } } - else { - throw new Error(character.message) - } } //这边坐下合并s @@ -399,6 +401,7 @@ export class MJOpt { let characterString = '' // 人物 let characterUrl = '' let sceneString = "" // 场景 + // 获取当前的自定义风格的垫图字符串 if (book.type == BookType.ORIGINAL) { let sceneIds = element.sceneTags ? element.sceneTags : [] @@ -594,7 +597,7 @@ export class MJOpt { let imagePath = path.join(book.bookFolderPath, `data\\MJOriginalImage\\${task_res.messageId}.png`); await CheckFolderExistsOrCreate(path.dirname(imagePath)) await this.tools.downloadFileUrl(task_res.imageClick, imagePath) - + debugger // 进行图片裁剪 let imageRes = await ImageSplit(imagePath, bookTaskDetail.name, path.join(book.bookFolderPath, 'data\\MJOriginalImage')); if (imageRes && imageRes.length < 4) { @@ -608,7 +611,7 @@ export class MJOpt { } let out_file = path.join(bookTask.imageFolder, `${bookTaskDetail.name}.png`) await CopyFileOrFolder(firstImage, out_file); - task_res.outImagePath = firstImage; + task_res.outImagePath = out_file; task_res.subImagePath = imageRes; task_res.id = task.bookTaskDetailId; diff --git a/src/main/Service/ServiceBasic/bookBackTaskServiceBasic.ts b/src/main/Service/ServiceBasic/bookBackTaskServiceBasic.ts new file mode 100644 index 0000000..95ac3cb --- /dev/null +++ b/src/main/Service/ServiceBasic/bookBackTaskServiceBasic.ts @@ -0,0 +1,78 @@ +import { BookBackTaskStatus, BookBackTaskType, TaskExecuteType } from "../../../define/enum/bookEnum"; +import { BookBackTaskListService } from "../../../define/db/service/Book/bookBackTaskListService"; +import { Book } from "../../../model/book"; + +export default class BookBackTaskServiceBasic { + bookBackTaskListService: BookBackTaskListService + constructor() { } + + private async InitService() { + if (!this.bookBackTaskListService) { + this.bookBackTaskListService = await BookBackTaskListService.getInstance() + } + } + + /** + * 添加一个后台任务 + * @param bookId 小说ID + * @param taskType 后台任务类型 + * @param executeType 执行的类型,是不是自动执行 + * @param bookTaskId 小说批次任务ID + * @param bookTaskDetailId 小说批次任务分镜ID + * @param responseMessageName 消息名称 + */ + async AddBookBackTask(bookId: string, + taskType: BookBackTaskType, + executeType = TaskExecuteType.AUTO, + bookTaskId = null, + bookTaskDetailId = null, + responseMessageName: string = null + ): Promise { + await this.InitService(); + let res = this.bookBackTaskListService.AddBookBackTask(bookId, taskType, executeType, bookTaskId, bookTaskDetailId, responseMessageName) + if (res.code == 0) { + throw new Error(res.message) + } + return res.data as TaskModal.Task + } + + /** + * 获取指定状态的任务数量 + * @param status + * @returns + */ + async GetAllStatusTaskCount(status: BookBackTaskStatus[]): Promise { + await this.InitService(); + let count = this.bookBackTaskListService.GetAllStatusTaskCount(status) + return count; + + } + + /** + * 修改后台队列的状态 + * @param bookBackTask 要修改的数据 + */ + async UpdateTaskStatus(bookBackTask: Book.UpdateBookTaskListStatus) { + await this.InitService(); + this.bookBackTaskListService.UpdateTaskStatus(bookBackTask) + } + + /** + * 丢弃等待中和重新连接的任务 + */ + async GiveUpNotStartBackTask() { + await this.InitService(); + let task = this.bookBackTaskListService.realm.objects('BookBackTaskList').filtered('status == $0 || status == $1', BookBackTaskStatus.WAIT, BookBackTaskStatus.RECONNECT); + let ids = task.map((item) => { + return item.id + }) + // 讲所有的人物状态改为放弃,然后errmessage改为 此任务已丢弃 + this.bookBackTaskListService.transaction(() => { + for (let i = 0; i < ids.length; i++) { + const element = this.bookBackTaskListService.realm.objectForPrimaryKey('BookBackTaskList', ids[i]); + element.status = BookBackTaskStatus.FAIL + element.errorMessage = '任务被丢弃' + } + }) + } +} \ No newline at end of file diff --git a/src/main/Service/ServiceBasic/bookBasic.ts b/src/main/Service/ServiceBasic/bookBasic.ts new file mode 100644 index 0000000..53f78ec --- /dev/null +++ b/src/main/Service/ServiceBasic/bookBasic.ts @@ -0,0 +1,57 @@ +import { BookService } from "../../../define/db/service/Book/bookService"; +import { Book } from "../../../model/book"; + +export class BookBasic { + bookService: BookService + constructor() { } + + async InitService() { + if (!this.bookService) { + this.bookService = await BookService.getInstance() + } + } + + //#region 事务操作 + async transaction(callback: (realm: any) => void) { + await this.InitService(); + this.bookService.transaction(() => { + callback(this.bookService.realm) + }) + } + //#endregion + + /** + * 通过小说ID获取小说数据 + * @param bookId 小说ID + * @returns + */ + async GetBookDataById(bookId: string): Promise { + await this.InitService(); + let book = this.bookService.GetBookDataById(bookId); + if (book == null) { + let msg = '未找到对应的小说数据,请检查' + throw new Error(msg); + } + return book + } + + /** + * 更新小说指定ID的数据 + * @param bookId 小说ID + * @param data 小说要更新的数据 + */ + async UpdateBookData(bookId: string, data: Book.SelectBook): Promise { + await this.InitService(); + let res = this.bookService.UpdateBookData(bookId, data) + return res + } + + /** + * 删除指定的小说数据 + * @param bookId 需要删除的小说ID + */ + async DeleteBookData(bookId: string): Promise { + await this.InitService(); + this.bookService.DeleteBookData(bookId) + } +} \ No newline at end of file diff --git a/src/main/Service/ServiceBasic/bookServiceBasic.ts b/src/main/Service/ServiceBasic/bookServiceBasic.ts index 6ac0d73..d631370 100644 --- a/src/main/Service/ServiceBasic/bookServiceBasic.ts +++ b/src/main/Service/ServiceBasic/bookServiceBasic.ts @@ -2,39 +2,28 @@ import { DEFINE_STRING } from "../../../define/define_string"; import { GeneralResponse } from "../../../model/generalResponse"; import { BookService } from "../../../define/db/service/Book/bookService"; import { Book } from "../../../model/book"; -import { BookTaskService } from "../../../define/db/service/Book/bookTaskService"; -import { TaskScheduler } from "../taskScheduler"; -import { LoggerStatus, OtherData } from "../../../define/enum/softwareEnum"; -import { BookTaskDetailService } from "../../../define/db/service/Book/bookTaskDetailService"; -import { BookBackTaskListService } from "../../../define/db/service/Book/bookBackTaskListService"; -import { BookBackTaskType, BookTaskStatus, TaskExecuteType } from "../../../define/enum/bookEnum"; +import { BookBackTaskStatus, BookBackTaskType, BookTaskStatus, TaskExecuteType } from "../../../define/enum/bookEnum"; +import BookBackTaskServiceBasic from "./bookBackTaskServiceBasic"; +import { BookBasic } from "./bookBasic"; +import BookTaskServiceBasic from "./bookTaskServiceBasic"; +import BookTaskDetailServiceBasic from "./bookTaskDetailServiceBasic"; /** * 该类中封装了小说的基础服务,主要是检查每次引入对应的服务类 * 这边进行一个统一的调用,方便后续的维护 */ -export class BookServiceBasic { +class BookServiceBasic { bookService: BookService - bookTaskService: BookTaskService; - taskScheduler: TaskScheduler - bookTaskDetailService: BookTaskDetailService - bookBackTaskListService: BookBackTaskListService + private bookBasic: BookBasic + private bookTaskServiceBasic: BookTaskServiceBasic + private bookTaskDetailServiceBasic: BookTaskDetailServiceBasic + private bookBackTaskServiceBasic: BookBackTaskServiceBasic + constructor() { - this.taskScheduler = new TaskScheduler() - } - async InitService() { - if (!this.bookService) { - this.bookService = await BookService.getInstance() - } - if (!this.bookTaskService) { - this.bookTaskService = await BookTaskService.getInstance() - } - if (!this.bookTaskDetailService) { - this.bookTaskDetailService = await BookTaskDetailService.getInstance() - } - if (!this.bookBackTaskListService) { - this.bookBackTaskListService = await BookBackTaskListService.getInstance() - } + this.bookBasic = new BookBasic(); + this.bookTaskServiceBasic = new BookTaskServiceBasic(); + this.bookTaskDetailServiceBasic = new BookTaskDetailServiceBasic(); + this.bookBackTaskServiceBasic = new BookBackTaskServiceBasic(); } // 主动返回前端的消息 @@ -42,298 +31,65 @@ export class BookServiceBasic { global.newWindow[0].win.webContents.send(message_name, data) } - - //#region 事务操作 - transaction(callback: (realm: any) => void) { - this.bookService.transaction(() => { - callback(this.bookService.realm) - }) - } + transaction = async (realm : any) => await this.bookBasic.transaction(realm); + + // (callback: (realm: any) => void) { + // this.bookService.transaction(() => { + // callback(this.bookService.realm) + // }) + // } + //#endregion + + + //#region 小说任务 + + GetBookDataById = async (bookId: string) => await this.bookBasic.GetBookDataById(bookId); + UpdateBookData = async (bookId: string, data: Book.SelectBook) => await this.bookBasic.UpdateBookData(bookId, data); + DeleteBookData = async (bookId: string) => await this.bookBasic.DeleteBookData(bookId); //#endregion - //#region 小说相关的基础服务 + //#region 批次任务任务 - /** - * 通过小说ID获取小说数据 - * @param bookId 小说ID - * @returns - */ - async GetBookDataById(bookId: string): Promise { - await this.InitService(); - let book = this.bookService.GetBookDataById(bookId); - if (book == null) { - let msg = '未找到对应的小说数据,请检查' - throw new Error(msg); - } - return book - } - - /** - * 更新小说指定ID的数据 - * @param bookId 小说ID - * @param data 小说要更新的数据 - */ - async UpdateBookData(bookId: string, data: Book.SelectBook): Promise { - await this.InitService(); - let res = this.bookService.UpdateBookData(bookId, data) - return res - } - - /** - * 删除指定的小说数据 - * @param bookId 需要删除的小说ID - */ - async DeleteBookData(bookId: string): Promise { - await this.InitService(); - this.bookService.DeleteBookData(bookId) - } + GetBookTaskDataById = async (bookTaskId: string) => await this.bookTaskServiceBasic.GetBookTaskDataById(bookTaskId); + GetBookTaskData = async (bookTaskCondition: Book.QueryBookTaskCondition) => await this.bookTaskServiceBasic.GetBookTaskData(bookTaskCondition); + GetMaxBookTaskNo = async (bookId: string) => await this.bookTaskServiceBasic.GetMaxBookTaskNo(bookId); + UpdetedBookTaskData = async (bookTaskId: string, data: Book.SelectBookTask) => await this.bookTaskServiceBasic.UpdetedBookTaskData(bookTaskId, data); + ResetBookTask = async (bookTaskId: string) => await this.bookTaskServiceBasic.ResetBookTask(bookTaskId); + DeleteBookTaskData = async (bookTaskId: string) => await this.bookTaskServiceBasic.DeleteBookTaskData(bookTaskId); + GetBookAndTask = async (bookId: string, bookTaskName: string) => await this.bookTaskServiceBasic.GetBookAndTask(bookId, bookTaskName); //#endregion - //#region 小说批次任务相关的基础服务 - - /** - * 通过小说ID获取小说批次任务数据 - * @param bookTaskId 小说批次任务ID - * @returns - */ - async GetBookTaskDataById(bookTaskId: string): Promise { - await this.InitService(); - let bookTask = this.bookTaskService.GetBookTaskDataById(bookTaskId); - if (bookTask == null) { - let msg = '未找到对应的小说批次任务数据,请检查'; - throw new Error(msg); - } - return bookTask - } - - /** - * 通过查询条件获取小说批次任务数据 - * @param bookTaskCondition 小说批次的查询条件 - */ - async GetBookTaskData(bookTaskCondition: Book.QueryBookTaskCondition): Promise<{ bookTasks: Book.SelectBookTask[], total: number }> { - await this.InitService(); - let bookTasks = this.bookTaskService.GetBookTaskData(bookTaskCondition) - if (bookTasks.data.bookTasks.length <= 0 || bookTasks.data.total <= 0) { - throw new Error("未找到对应的小说批次任务数据,请检查") - } - return bookTasks.data - } - - /** - * 获取最大的小说批次任务的编号 - * @param bookId 小说ID - */ - async GetMaxBookTaskNo(bookId: string): Promise { - await this.InitService(); - let maxNo = this.bookTaskService.realm - .objects('BookTask') - .filtered('bookId = $0', bookId) - .max('no') - let no = maxNo == null ? 1 : Number(maxNo) + 1 - return no - } - - /** - * 更新小说批次任务的数据 - * @param bookTaskId 小说批次任务ID - * @param data - */ - async UpdetedBookTaskData(bookTaskId: string, data: Book.SelectBookTask): Promise { - await this.InitService(); - this.bookTaskService.UpdetedBookTaskData(bookTaskId, data) - } - - /** - * 重置小说批次任务的数据 - * @param bookTaskId 指定的重置的小说批次任务的ID - */ - async ResetBookTask(bookTaskId: string): Promise { - await this.InitService(); - this.bookTaskService.ResetBookTask(bookTaskId) - } - - /** - * 删除指定的小说批次任务的数据 - * @param bookTaskId 需要删除的指定的小说批次任务ID - */ - async DeleteBookTaskData(bookTaskId: string): Promise { - await this.InitService(); - this.bookTaskService.DeleteBookTask(bookTaskId) - } - //#endregion - - //#region 小说批次任务对应的分镜的相关的基础服务 - - async AddBookTaskDetail(bookTaskDetail: Book.SelectBookTaskDetail): Promise { - await this.InitService(); - this.bookTaskDetailService.AddBookTaskDetail(bookTaskDetail) - } - - /** - * 获取指定的小说批次任务分镜数据,通过分镜ID - * @param bookTaskDetailId 小说批次任务分镜ID - * @returns - */ - async GetBookTaskDetailDataById(bookTaskDetailId: string): Promise { - await this.InitService(); - let bookTaskDetail = this.bookTaskDetailService.GetBookTaskDetailDataById(bookTaskDetailId) - if (bookTaskDetail == null) { - let msg = "未找到对应的小说批次任务分镜数据,请检查" - global.logger.error('BookServiceBasic_GetBookTaskDetailDataById', msg); - throw new Error("未找到对应的小说批次任务分镜数据,请检查") - } - return bookTaskDetail - } - - /** - * 获取指定的小说批次任务分镜数据,通过查询条件 - * @param condition - * @param returnEmpty 是否返回空数据,默认 false 不返回,如果返回空数据,会抛出异常 - */ - async GetBookTaskDetailData(condition: Book.QueryBookTaskDetailCondition, returnEmpty: boolean = false): Promise { - await this.InitService(); - let bookTaskDetails = this.bookTaskDetailService.GetBookTaskData(condition) - if (!returnEmpty && bookTaskDetails.data.length <= 0) { - let msg = "未找到对应的小说批次任务分镜数据,请检查"; - throw new Error(msg) - } - return bookTaskDetails.data - } - - /** - * 修改小说的分镜详细数据,通过ID - * @param bookTaskDetailId 小说分镜的ID - * @param data 要修改的数据,是个对象,会修改全部 - */ - async UpdateBookTaskDetail(bookTaskDetailId: string, data: Book.SelectBookTaskDetail): Promise { - await this.InitService(); - let res = this.bookTaskDetailService.UpdateBookTaskDetail(bookTaskDetailId, data) - return res - } - - /** - * 更行小说批次的状态 - * @param bookTaskId 小说批次的ID - * @param status 修改后的状态 - * @param errorMsg 错误消息 - */ - async UpdateBookTaskStatus(bookTaskId: string, status: BookTaskStatus, errorMsg: string | null = null): Promise { - await this.InitService(); - this.bookTaskService.UpdateBookTaskStatus(bookTaskId, status, errorMsg); - } + //#region 分镜任务 - /** - * 删除指定的小说分镜的反推提示词 - * @param bookTaskDetail - */ - async DeleteBookTaskDetailReversePromptById(bookTaskDetailId: string): Promise { - await this.InitService(); - this.bookTaskDetailService.DeleteBookTaskDetailReversePromptById(bookTaskDetailId) - } - - /** - * 删除指定的小说分镜生成的图片 - * @param bookTaskDetailId - */ - async DeleteBoookTaskDetailGenerateImage(bookTaskDetailId: string): Promise { - await this.InitService() - this.bookTaskDetailService.DeleteBoookTaskDetailGenerateImage(bookTaskDetailId); - } - - /** - * 修改小说分镜数据的反推提示词 - * @param bookTaskDetailId 小说分镜的ID - * @param reversePromptId 反推提示词的ID - * @param data 反推提示词数据 - */ - async UpdateBookTaskDetailReversePrompt(bookTaskDetailId: string, reversePromptId: string, data: Book.ReversePrompt): Promise { - await this.InitService(); - this.bookTaskDetailService.UpdateBookTaskDetailReversePrompt(bookTaskDetailId, reversePromptId, data) - } - - /** - * 更行小说分镜的MJ消息,就是出图信息 - * @param bookTaskDetailId 小说分镜的数据信息 - * @param mjMessage 要保存到分镜信息 - */ - async UpdateBookTaskDetailMjMessage(bookTaskDetailId: string, mjMessage: Book.MJMessage) { - await this.InitService(); - this.bookTaskDetailService.UpdateBookTaskDetailMjMessage(bookTaskDetailId, mjMessage) - } - + AddBookTaskDetail = async (bookTaskDetail: Book.SelectBookTaskDetail) => await this.bookTaskDetailServiceBasic.AddBookTaskDetail(bookTaskDetail); + GetBookTaskDetailDataById = async (bookTaskDetailId: string) => await this.bookTaskDetailServiceBasic.GetBookTaskDetailDataById(bookTaskDetailId); + GetBookTaskDetailData = async (condition: Book.QueryBookTaskDetailCondition, returnEmpty: boolean = false) => await this.bookTaskDetailServiceBasic.GetBookTaskDetailData(condition, returnEmpty); + UpdateBookTaskDetail = async (bookTaskDetailId: string, data: Book.SelectBookTaskDetail) => await this.bookTaskDetailServiceBasic.UpdateBookTaskDetail(bookTaskDetailId, data); + UpdateBookTaskStatus = async (bookTaskDetailId: string, status: BookTaskStatus) => await this.bookTaskDetailServiceBasic.UpdateBookTaskStatus(bookTaskDetailId, status); + DeleteBookTaskDetailReversePromptById = async (bookTaskDetailId: string, reversePromptId: string) => await this.bookTaskDetailServiceBasic.DeleteBookTaskDetailReversePromptById(bookTaskDetailId); + DeleteBoookTaskDetailGenerateImage = async (bookTaskDetailId: string) => await this.bookTaskDetailServiceBasic.DeleteBoookTaskDetailGenerateImage(bookTaskDetailId); + UpdateBookTaskDetailReversePrompt = async (bookTaskDetailId: string, reversePromptId: string, data: Book.ReversePrompt) => await this.bookTaskDetailServiceBasic.UpdateBookTaskDetailReversePrompt(bookTaskDetailId, reversePromptId, data); + UpdateBookTaskDetailMjMessage = async (bookTaskDetailId: string, mjMessage: Book.MJMessage) => await this.bookTaskDetailServiceBasic.UpdateBookTaskDetailMjMessage(bookTaskDetailId, mjMessage); //#endregion - //#region 小说后台任务相关操作 + //#region 后台任务 - /** - * 添加一个后台任务 - * @param bookId 小说ID - * @param taskType 后台任务类型 - * @param executeType 执行的类型,是不是自动执行 - * @param bookTaskId 小说批次任务ID - * @param bookTaskDetailId 小说批次任务分镜ID - * @param responseMessageName 消息名称 - */ - async AddBookBackTask(bookId: string, + AddBookBackTask = async (bookId: string, taskType: BookBackTaskType, - executeType = TaskExecuteType.AUTO, - bookTaskId = null, - bookTaskDetailId = null, - responseMessageName: string = null - ): Promise { + executeType: TaskExecuteType, + bookTaskId: string, + bookTaskDetailId: string, + responseMessageName: string) => await this.bookBackTaskServiceBasic.AddBookBackTask(bookId, taskType, executeType, bookTaskId, bookTaskDetailId, responseMessageName); + + GetAllStatusTaskCount = async (status: BookBackTaskStatus[]) => await this.bookBackTaskServiceBasic.GetAllStatusTaskCount(status); + UpdateTaskStatus = async (bookBackTask: Book.UpdateBookTaskListStatus) => await this.bookBackTaskServiceBasic.UpdateTaskStatus(bookBackTask); + GiveUpNotStartBackTask = async () => await this.bookBackTaskServiceBasic.GiveUpNotStartBackTask(); - await this.InitService(); - let res = this.bookBackTaskListService.AddBookBackTask(bookId, taskType, executeType, bookTaskId, bookTaskDetailId, responseMessageName) - if (res.code == 0) { - throw new Error(res.message) - } - return res.data as TaskModal.Task - } //#endregion - - - - /** - * 通过小说ID和小说批次任务ID获取小说和小说批次任务数据 - * @param bookId 小说ID - * @param bookTaskName 小说批次的名字,或者是小说批次任务的ID - * @returns - */ - async GetBookAndTask(bookId: string, bookTaskName: string) { - await this.InitService(); - let book = this.bookService.GetBookDataById(bookId) - if (book == null) { - throw new Error("查找小说数据失败"); - } - // 获取小说对应的批次任务数据,默认初始化为第一个 - let condition = { - bookId: bookId - } as Book.QueryBookBackTaskCondition - if (bookTaskName == "output_00001") { - condition["name"] = bookTaskName - } else { - condition["id"] = bookTaskName - } - let bookTaskRes = this.bookTaskService.GetBookTaskData(condition) - if (bookTaskRes.data.bookTasks.length <= 0 || bookTaskRes.data.total <= 0) { - let msg = "没有找到对应的小说批次任务数据" - this.taskScheduler.AddLogToDB(bookId, book.type, msg, OtherData.DEFAULT, LoggerStatus.FAIL) - throw new Error(msg) - } - return { book: book as Book.SelectBook, bookTask: bookTaskRes.data.bookTasks[0] as Book.SelectBookTask } - } - - /** - * 修改后台队列的状态 - * @param bookBackTask 要修改的数据 - */ - async UpdateTaskStatus(bookBackTask: Book.UpdateBookTaskListStatus) { - await this.InitService(); - this.bookBackTaskListService.UpdateTaskStatus(bookBackTask) - } } +export { BookServiceBasic }; diff --git a/src/main/Service/ServiceBasic/bookTaskDetailServiceBasic.ts b/src/main/Service/ServiceBasic/bookTaskDetailServiceBasic.ts new file mode 100644 index 0000000..677374d --- /dev/null +++ b/src/main/Service/ServiceBasic/bookTaskDetailServiceBasic.ts @@ -0,0 +1,122 @@ +import { BookTaskDetailService } from "../../../define/db/service/Book/bookTaskDetailService"; +import { BookTaskStatus } from "../../../define/enum/bookEnum"; +import { Book } from "../../../model/book"; +import { BookTaskService } from "../../../define/db/service/Book/bookTaskService"; + +export default class BookTaskDetailServiceBasic { + bookTaskDetailService: BookTaskDetailService + bookTaskService: BookTaskService + constructor() { } + + private async InitService() { + if (!this.bookTaskDetailService) { + this.bookTaskDetailService = await BookTaskDetailService.getInstance() + } + if (!this.bookTaskService) { + this.bookTaskService = await BookTaskService.getInstance() + } + } + + /** + * 添加小说任务详情数据 + * @param bookTaskDetail + */ + async AddBookTaskDetail(bookTaskDetail: Book.SelectBookTaskDetail): Promise { + await this.InitService(); + this.bookTaskDetailService.AddBookTaskDetail(bookTaskDetail) + } + + /** + * 获取指定的小说批次任务分镜数据,通过分镜ID + * @param bookTaskDetailId 小说批次任务分镜ID + * @returns + */ + async GetBookTaskDetailDataById(bookTaskDetailId: string): Promise { + await this.InitService(); + let bookTaskDetail = this.bookTaskDetailService.GetBookTaskDetailDataById(bookTaskDetailId) + if (bookTaskDetail == null) { + let msg = "未找到对应的小说批次任务分镜数据,请检查" + global.logger.error('BookServiceBasic_GetBookTaskDetailDataById', msg); + throw new Error("未找到对应的小说批次任务分镜数据,请检查") + } + return bookTaskDetail + } + + /** + * 获取指定的小说批次任务分镜数据,通过查询条件 + * @param condition + * @param returnEmpty 是否返回空数据,默认 false 不返回,如果返回空数据,会抛出异常 + */ + async GetBookTaskDetailData(condition: Book.QueryBookTaskDetailCondition, returnEmpty: boolean = false): Promise { + await this.InitService(); + let bookTaskDetails = this.bookTaskDetailService.GetBookTaskData(condition) + if (!returnEmpty && bookTaskDetails.data.length <= 0) { + let msg = "未找到对应的小说批次任务分镜数据,请检查"; + throw new Error(msg) + } + return bookTaskDetails.data + } + + /** + * 修改小说的分镜详细数据,通过ID + * @param bookTaskDetailId 小说分镜的ID + * @param data 要修改的数据,是个对象,会修改全部 + */ + async UpdateBookTaskDetail(bookTaskDetailId: string, data: Book.SelectBookTaskDetail): Promise { + await this.InitService(); + let res = this.bookTaskDetailService.UpdateBookTaskDetail(bookTaskDetailId, data) + return res + } + + /** + * 更行小说批次的状态 + * @param bookTaskId 小说批次的ID + * @param status 修改后的状态 + * @param errorMsg 错误消息 + */ + async UpdateBookTaskStatus(bookTaskId: string, status: BookTaskStatus, errorMsg: string | null = null): Promise { + await this.InitService(); + this.bookTaskService.UpdateBookTaskStatus(bookTaskId, status, errorMsg); + } + + + /** + * 删除指定的小说分镜的反推提示词 + * @param bookTaskDetail + */ + async DeleteBookTaskDetailReversePromptById(bookTaskDetailId: string): Promise { + await this.InitService(); + this.bookTaskDetailService.DeleteBookTaskDetailReversePromptById(bookTaskDetailId) + } + + /** + * 删除指定的小说分镜生成的图片 + * @param bookTaskDetailId + */ + async DeleteBoookTaskDetailGenerateImage(bookTaskDetailId: string): Promise { + await this.InitService() + this.bookTaskDetailService.DeleteBoookTaskDetailGenerateImage(bookTaskDetailId); + } + + /** + * 修改小说分镜数据的反推提示词 + * @param bookTaskDetailId 小说分镜的ID + * @param reversePromptId 反推提示词的ID + * @param data 反推提示词数据 + */ + async UpdateBookTaskDetailReversePrompt(bookTaskDetailId: string, reversePromptId: string, data: Book.ReversePrompt): Promise { + await this.InitService(); + this.bookTaskDetailService.UpdateBookTaskDetailReversePrompt(bookTaskDetailId, reversePromptId, data) + } + + /** + * 更行小说分镜的MJ消息,就是出图信息 + * @param bookTaskDetailId 小说分镜的数据信息 + * @param mjMessage 要保存到分镜信息 + */ + async UpdateBookTaskDetailMjMessage(bookTaskDetailId: string, mjMessage: Book.MJMessage) { + await this.InitService(); + this.bookTaskDetailService.UpdateBookTaskDetailMjMessage(bookTaskDetailId, mjMessage) + } + +} \ No newline at end of file diff --git a/src/main/Service/ServiceBasic/bookTaskServiceBasic.ts b/src/main/Service/ServiceBasic/bookTaskServiceBasic.ts new file mode 100644 index 0000000..c656fa3 --- /dev/null +++ b/src/main/Service/ServiceBasic/bookTaskServiceBasic.ts @@ -0,0 +1,118 @@ +import { BookTaskService } from "../../../define/db/service/Book/bookTaskService"; +import { Book } from "../../../model/book"; +import { BookService } from "../../../define/db/service/Book/bookService"; + +export default class BookTaskServiceBasic { + bookTaskService: BookTaskService + bookService: BookService + constructor() { } + + private async InitService() { + if (!this.bookTaskService) { + this.bookTaskService = await BookTaskService.getInstance() + } + if (!this.bookService) { + this.bookService = await BookService.getInstance() + } + } + + /** + * 通过小说ID获取小说批次任务数据 + * @param bookTaskId 小说批次任务ID + * @returns + */ + async GetBookTaskDataById(bookTaskId: string): Promise { + await this.InitService(); + let bookTask = this.bookTaskService.GetBookTaskDataById(bookTaskId); + if (bookTask == null) { + let msg = '未找到对应的小说批次任务数据,请检查'; + throw new Error(msg); + } + return bookTask + } + + /** + * 通过查询条件获取小说批次任务数据 + * @param bookTaskCondition 小说批次的查询条件 + */ + async GetBookTaskData(bookTaskCondition: Book.QueryBookTaskCondition): Promise<{ bookTasks: Book.SelectBookTask[], total: number }> { + + await this.InitService(); + let bookTasks = this.bookTaskService.GetBookTaskData(bookTaskCondition) + if (bookTasks.data.bookTasks.length <= 0 || bookTasks.data.total <= 0) { + throw new Error("未找到对应的小说批次任务数据,请检查") + } + return bookTasks.data + } + + /** + * 获取最大的小说批次任务的编号 + * @param bookId 小说ID + */ + async GetMaxBookTaskNo(bookId: string): Promise { + await this.InitService(); + let maxNo = this.bookTaskService.realm + .objects('BookTask') + .filtered('bookId = $0', bookId) + .max('no') + let no = maxNo == null ? 1 : Number(maxNo) + 1 + return no + } + + /** + * 更新小说批次任务的数据 + * @param bookTaskId 小说批次任务ID + * @param data + */ + async UpdetedBookTaskData(bookTaskId: string, data: Book.SelectBookTask): Promise { + await this.InitService(); + this.bookTaskService.UpdetedBookTaskData(bookTaskId, data) + } + + /** + * 重置小说批次任务的数据 + * @param bookTaskId 指定的重置的小说批次任务的ID + */ + async ResetBookTask(bookTaskId: string): Promise { + await this.InitService(); + this.bookTaskService.ResetBookTask(bookTaskId) + } + + /** + * 删除指定的小说批次任务的数据 + * @param bookTaskId 需要删除的指定的小说批次任务ID + */ + async DeleteBookTaskData(bookTaskId: string): Promise { + await this.InitService(); + this.bookTaskService.DeleteBookTask(bookTaskId) + } + + /** + * 通过小说ID和小说批次任务ID获取小说和小说批次任务数据 + * @param bookId 小说ID + * @param bookTaskName 小说批次的名字,或者是小说批次任务的ID + * @returns + */ + async GetBookAndTask(bookId: string, bookTaskName: string) { + await this.InitService(); + let book = this.bookService.GetBookDataById(bookId) + if (book == null) { + throw new Error("查找小说数据失败"); + } + // 获取小说对应的批次任务数据,默认初始化为第一个 + let condition = { + bookId: bookId + } as Book.QueryBookBackTaskCondition + if (bookTaskName == "output_00001") { + condition["name"] = bookTaskName + } else { + condition["id"] = bookTaskName + } + let bookTaskRes = this.bookTaskService.GetBookTaskData(condition) + if (bookTaskRes.data.bookTasks.length <= 0 || bookTaskRes.data.total <= 0) { + let msg = "没有找到对应的小说批次任务数据" + throw new Error(msg) + } + return { book: book as Book.SelectBook, bookTask: bookTaskRes.data.bookTasks[0] as Book.SelectBookTask } + } +} \ No newline at end of file diff --git a/src/main/Service/Subtitle/subtitle.ts b/src/main/Service/Subtitle/subtitle.ts index 5ceeef0..0f470a3 100644 --- a/src/main/Service/Subtitle/subtitle.ts +++ b/src/main/Service/Subtitle/subtitle.ts @@ -16,7 +16,7 @@ import fs from 'fs' import { GeneralResponse } from '../../../model/generalResponse' import { BookServiceBasic } from '../ServiceBasic/bookServiceBasic' import { LoggerStatus, OtherData, ResponseMessageType } from '../../../define/enum/softwareEnum' -import { TaskScheduler } from '../taskScheduler' +import { TaskScheduler } from '../task/taskScheduler' import { SubtitleModel } from '../../../model/subtitle' import { BookTaskStatus, OperateBookType } from '../../../define/enum/bookEnum' import axios from 'axios' diff --git a/src/main/Service/Subtitle/subtitleService.ts b/src/main/Service/Subtitle/subtitleService.ts index 8264917..6502a0f 100644 --- a/src/main/Service/Subtitle/subtitleService.ts +++ b/src/main/Service/Subtitle/subtitleService.ts @@ -11,7 +11,7 @@ import fs from 'fs' import { CheckFileOrDirExist } from "../../../define/Tools/file"; import { BookServiceBasic } from "../ServiceBasic/bookServiceBasic"; import { Subtitle } from "./subtitle"; -import { TaskScheduler } from "../taskScheduler"; +import { TaskScheduler } from "../task/taskScheduler"; import { BookTaskStatus, BookType, OperateBookType } from "../../../define/enum/bookEnum"; import { Book } from "../../../model/book"; import { TimeStringToMilliseconds } from "../../../define/Tools/time"; @@ -354,6 +354,15 @@ export class SubtitleService { bookTaskId: bookTaskId }, true) + debugger + // 获取SD设置 + let sdConifg = JSON.parse(await fs.promises.readFile(define.sd_setting, 'utf-8')); + let adetailer = false; + if (sdConifg && sdConifg?.webui?.adetailer) { + adetailer = true; + } + + if (bookTaskDetails.length == 0) { // 新增 for (let i = 0; i < copywritingData.length; i++) { @@ -367,7 +376,9 @@ export class SubtitleService { word: element.word, afterGpt: element.after_gpt, subValue: JSON.stringify(element.subValue), - timeLimit: element.timeLimit + timeLimit: element.timeLimit, + // 新增修脸跟随 + adetailer: adetailer }) } } else { diff --git a/src/main/Service/system/electronInterface.ts b/src/main/Service/system/electronInterface.ts new file mode 100644 index 0000000..3151f5a --- /dev/null +++ b/src/main/Service/system/electronInterface.ts @@ -0,0 +1,60 @@ +import { shell } from "electron"; +import { CheckFileOrDirExist } from "../../../define/Tools/file"; +import { errorMessage, successMessage } from "../../Public/generalTools"; +import path from 'path'; + + +/** 打开指定的文件夹的方法 */ +export type OpenFolderParams = { + /** 是不是基于项目文件,是的话,会在项目文件夹的基础上进行拼接 */ + baseProject: boolean; + /** 判断是不是打开父文件夹 */ + dirFloder: boolean; + /** 文件路径,baseProject 为false,需要设置完整的文件路径 */ + folderPath: string; +} + +/** 一些对electron接口的封装,配合业务逻辑 */ +export default class ElectronInterface { + constructor() { } + + /** + * 打开指定的文件,试用默认的打开方式 + * @param value + * @returns + */ + public async OpenFile(value: string) { + if (await CheckFileOrDirExist(value)) { + return errorMessage('文件不存在', 'SystemIpc_OPEN_FILE') + } + await shell.openPath(value) + } + /** + * 打开对应的文件夹 + * @param params + * @returns + */ + public async OpenFolder(params: OpenFolderParams) { + try { + let openFolder = null + if (params.baseProject) { + openFolder = path.join(global.config.project_path, params.folderPath) + } + if (params.dirFloder) { + openFolder = path.dirname(params.folderPath) + } + if (!openFolder) { + openFolder = params.folderPath + } + // 判断文件夹是不是存在 + let isExist = await CheckFileOrDirExist(openFolder) + if (!isExist) { + throw new Error('文件夹不存在,请检查') + } + shell.openPath(openFolder) + return successMessage(null, '打开成功') + } catch (error) { + return errorMessage('打开文件夹错误,错误信息如下:' + error.message, 'SystemIpc_OPEN_FOLDER') + } + } +} \ No newline at end of file diff --git a/src/main/Service/system/systeminfo.ts b/src/main/Service/system/systeminfo.ts new file mode 100644 index 0000000..0af67b4 --- /dev/null +++ b/src/main/Service/system/systeminfo.ts @@ -0,0 +1,113 @@ +import { define } from '../../../define/define'; +import { CheckFileOrDirExist } from '../../../define/Tools/file'; +import fs from "fs"; +import { errorMessage, successMessage } from '../../Public/generalTools'; +import { version } from '../../../../package.json'; +import { graphics } from 'systeminformation'; +import { machineId } from 'node-machine-id'; +import axios from 'axios'; +import { TaskManager } from '../task/taskManage'; + +export default class SystemInfo { + constructor() { } + /** + * 获取系统的版本信息和显卡信息 + * @returns + */ + public async GetViosionAndGpuMessage() { + try { + // 判断是不是又配置文件 + let systemConfigPath = define.system_config; + if (!await CheckFileOrDirExist(systemConfigPath)) { + // 如果没有配置文件就创建一个 + let systemConfig = {}; + // 写入配置文件 + await fs.promises.writeFile(systemConfigPath, JSON.stringify(systemConfig)); + } + // 读取配置文件 + let systemConfig = JSON.parse(await fs.promises.readFile(systemConfigPath, 'utf-8')) as SystemConfig.SystemConfig; + + if (systemConfig && systemConfig.gpu && systemConfig.gpu.name && systemConfig.gpu.updateTime) { + const currentDate = new Date(systemConfig.gpu.updateTime); + const nextDate = new Date(currentDate); + nextDate.setDate(currentDate.getDate() + 1); + if (systemConfig && systemConfig.gpu && nextDate > new Date()) { + global.gpu = systemConfig.gpu + return successMessage(version + ' ' + (global.gpu?.name ? global.gpu.name : ''), '获取成功') + } + } + + // 获取当前电脑的显卡信息 + let da = await graphics() + for (let i = 0; i < da.controllers.length; i++) { + // 获取第一个英伟达或者是AMD的显卡信息 + const element = da.controllers[i] + if (element.vendor.startsWith('NVIDIA')) { + global.gpu = element + global.gpu.type = 'NVIDIA' + break + } else if (element.vendor.startsWith('AMD') || element.vendor.startsWith('Advanced')) { + global.gpu = element + global.gpu.type = 'AMD' + break + } else { + global.gpu = { + name: 'OTHER' + } + global.gpu.type = 'OTHER' + } + } + // 更新配置文件 + systemConfig.gpu = global.gpu + systemConfig.gpu.updateTime = new Date() + await fs.promises.writeFile(systemConfigPath, JSON.stringify(systemConfig)); + return successMessage(version + ' ' + (global.gpu?.name ? global.gpu.name : ''), '获取成功') + } catch (error) { + return errorMessage('获取版本信息和显卡信息错误,错误信息如下:' + error.message, 'SystemIpc_GET_VISION_AND_GPU_MESSAGE') + } + } + + /** + * 获取系统的机器码 + */ + public async GetMachineId() { + try { + let id = await machineId(true); + global.machineId = id; + return successMessage(id, '获取机器码成功') + } catch (error) { + return errorMessage('获取机器码错误,错误信息如下:' + error.message, 'SystemIpc_GET_MACHINE_ID') + } + } + + /** + * 检查机器码的状态 + * @param {*} value + * @returns + */ + public async CheckMachineStatus(value: string) { + try { + // 判断机器码是不是存在 + // let res = await axios.post('http://api.yu-zhile.com/GetMachineStatus', { + // machineId: value + // }) + // /lms/Machine/GetMachineStatus/{machineId} + // + let res = await axios.get('https://lms.laitool.cn/lms/Machine/GetMachineStatus/' + value); + if (res.status != 200) { + throw new Error('请求错误') + } + if (res.data.code != 1) { + throw new Error(res.data.message) + } + + global.endTime = res.data.endTime + global.permissions = res.data.permissions + global.CheckMachineId = true + return successMessage(res.data, '获取机器码状态成功') + } catch (error) { + return errorMessage('获取机器码状态错误,错误信息如下:' + error.message, 'SystemIpc_CHECK_MACHINE_STATUS') + } + } + +} \ No newline at end of file diff --git a/src/main/Service/task/backTaskService.ts b/src/main/Service/task/backTaskService.ts new file mode 100644 index 0000000..6c354c8 --- /dev/null +++ b/src/main/Service/task/backTaskService.ts @@ -0,0 +1,47 @@ +import { BookBackTaskStatus } from "../../../define/enum/bookEnum"; +import { GeneralResponse } from "../../../model/generalResponse"; +import { errorMessage, successMessage } from "../../Public/generalTools"; +import { BookServiceBasic } from "../ServiceBasic/bookServiceBasic"; +import { TaskManager } from "./taskManage"; + +export default class BackTaskService { + bookServiceBasic: BookServiceBasic + constructor() { + this.bookServiceBasic = new BookServiceBasic() + } + + /** + * 获取指定状态的后台任务数量 + */ + public async GetAllStatusTaskCount(status: BookBackTaskStatus[]): Promise { + try { + + let res = await this.bookServiceBasic.GetAllStatusTaskCount(status) + return successMessage(res, '获取任务数量成功', 'BackTaskService_GetAllStatusTaskCount') + } catch (error) { + return errorMessage('获取任务数量失败,失败信息如下:' + error.toString(), 'BackTaskService_GetAllStatusTaskCount') + } + } + + /** + * 启动后台任务,判断是不是丢弃,要是丢弃的话,先将等待任务全部丢弃 + * @param isGiveUp + */ + public async StartBackTask(isGiveUp: boolean): Promise { + try { + if (isGiveUp) { + await this.bookServiceBasic.GiveUpNotStartBackTask() + } + + // 启动后台任务 + // 这边初始化任务队列 + if (!global.taskManager) { + global.taskManager = new TaskManager() + global.taskManager.InitListeners() // 启动监听 + } + return successMessage(null, '启动后台任务成功', 'BackTaskService_StartBackTask') + } catch (error) { + return errorMessage('启动后台任务失败', 'BackTaskService_StartBackTask') + } + } +} \ No newline at end of file diff --git a/src/main/Service/taskManage.ts b/src/main/Service/task/taskManage.ts similarity index 82% rename from src/main/Service/taskManage.ts rename to src/main/Service/task/taskManage.ts index 22d4adf..75e2619 100644 --- a/src/main/Service/taskManage.ts +++ b/src/main/Service/task/taskManage.ts @@ -1,18 +1,18 @@ -import { BookBackTaskListService } from '../../define/db/service/Book/bookBackTaskListService' -import { BookBackTaskStatus, BookBackTaskType, TaskExecuteType } from '../../define/enum/bookEnum' -import { SoftwareService } from '../../define/db/service/SoftWare/softwareService' -import { errorMessage, successMessage } from '../Public/generalTools' -import { BasicReverse } from './Book/basicReverse' -import { ReverseBook } from './Book/ReverseBook' -import { GeneralResponse } from '../../model/generalResponse' -import { DEFINE_STRING } from '../../define/define_string' -import { MJOpt } from './MJ/mj' -import { SDOpt } from './SD/sd' -import { D3Opt } from './d3' -import { FluxOpt } from './Flux/flux' -import { AsyncQueue } from '../../main/quene' -import { SoftWareServiceBasic } from './ServiceBasic/softwareServiceBasic' -import { MJSetting } from '../../model/Setting/mjSetting' +import { BookBackTaskListService } from '../../../define/db/service/Book/bookBackTaskListService' +import { BookBackTaskStatus, BookBackTaskType, TaskExecuteType } from '../../../define/enum/bookEnum' +import { SoftwareService } from '../../../define/db/service/SoftWare/softwareService' +import { errorMessage, successMessage } from '../../Public/generalTools' +import { BasicReverse } from '../Book/basicReverse' +import { ReverseBook } from '../Book/ReverseBook' +import { GeneralResponse } from '../../../model/generalResponse' +import { DEFINE_STRING } from '../../../define/define_string' +import { MJOpt } from '../MJ/mj' +import { SDOpt } from '../SD/sd' +import { D3Opt } from '../d3' +import { FluxOpt } from '../Flux/flux' +import { AsyncQueue } from '../../quene' +import { SoftWareServiceBasic } from '../ServiceBasic/softwareServiceBasic' +import { MJSetting } from '../../../model/Setting/mjSetting' export class TaskManager { isExecuting: boolean = false; @@ -61,24 +61,6 @@ export class TaskManager { } } - async GetGlobalConfig() { - try { - await this.InitService(); - let softData = this.softwareService.GetSoftwareData(); - if (softData.data.length <= 0) { - throw new Error('获取软件数据失败'); - } - let config = softData.data[0]; - global.config = JSON.parse(config.globalSetting); - this.globalConfig = global.config; - return successMessage(global.config, '获取全局配置完成', 'TaskManager_GetGlobalConfig'); - } catch (error) { - console.error('GetGlobalConfig Error:', error); - return errorMessage(`获取全局配置失败,失败信息如下:${error.message}`, 'TaskManager_GetGlobalConfig'); - } - } - - // 初始化事件监听方法 InitListeners() { if (this.isListening) return; // 如果已经在监听,直接返回 @@ -363,24 +345,5 @@ export class TaskManager { return errorMessage(`处理 ${task.type} 类型任务 ${task.name} 失败,失败信息如下:${error.message}`, 'TaskManager_handleTask'); } } - - //#endregion - - async AddTaskHandle(task: TaskModal.Task, isAdd = false) { - if (!isAdd) { - return; - } - if (task.type == BookBackTaskType.STORYBOARD) { - await this.basicReverse.AddCutVideoDataTask(task.bookId); - } else if (task.type == BookBackTaskType.SPLIT) { - await this.basicReverse.AddSplitAudioDataTask(task.bookId, task.bookTaskId); - } else if (task.type == BookBackTaskType.AUDIO) { - await this.basicReverse.AddGetFrameTask(task.bookId, task.bookTaskId); - } else if (task.type == BookBackTaskType.FRAME) { - await this.basicReverse.AddExtractSubtitlesDataTask(task.bookId, task.bookTaskId); - } else { - throw new Error('不支持的任务类型'); - } - } } diff --git a/src/main/Service/taskScheduler.ts b/src/main/Service/task/taskScheduler.ts similarity index 77% rename from src/main/Service/taskScheduler.ts rename to src/main/Service/task/taskScheduler.ts index 71fea9c..05bfe64 100644 --- a/src/main/Service/taskScheduler.ts +++ b/src/main/Service/task/taskScheduler.ts @@ -1,8 +1,8 @@ -import { LoggerService } from '../../define/db/service/SoftWare/loggerService' -import { DEFINE_STRING } from '../../define/define_string' -import { LoggerStatus, OtherData } from '../../define/enum/softwareEnum' -import { successMessage, errorMessage } from '../Public/generalTools' -import { GeneralResponse } from '../../model/generalResponse' +import { LoggerService } from '../../../define/db/service/SoftWare/loggerService' +import { DEFINE_STRING } from '../../../define/define_string' +import { LoggerStatus, OtherData } from '../../../define/enum/softwareEnum' +import { successMessage, errorMessage } from '../../Public/generalTools' +import { GeneralResponse } from '../../../model/generalResponse' export class TaskScheduler { constructor() { } diff --git a/src/main/Service/watermark.ts b/src/main/Service/watermark.ts index 954fe3d..f2fb5cb 100644 --- a/src/main/Service/watermark.ts +++ b/src/main/Service/watermark.ts @@ -13,7 +13,7 @@ import { define } from '../../define/define' import { LOGGER_DEFINE } from '../../define/logger_define' import axios from 'axios' import { Base64ToFile, GetImageBase64 } from '../../define/Tools/image' -import { TaskScheduler } from './taskScheduler'; +import { TaskScheduler } from './task/taskScheduler'; import { LoggerStatus, OtherData, ResponseMessageType } from '../../define/enum/softwareEnum'; import { basicApi } from '../../api/apiBasic'; import { FfmpegOptions } from './ffmpegOptions'; diff --git a/src/main/Service/writing.ts b/src/main/Service/writing.ts index 87f0a97..54d02d8 100644 --- a/src/main/Service/writing.ts +++ b/src/main/Service/writing.ts @@ -92,6 +92,7 @@ export class Writing extends ServiceBase { apiKey: aiData.api_key, word: word } + var myHeaders = new Headers(); myHeaders.append("User-Agent", "Apifox/1.0.0 (https://apifox.com)"); myHeaders.append("Content-Type", "application/json"); @@ -102,7 +103,7 @@ export class Writing extends ServiceBase { body: JSON.stringify(body), }; - let resData = oldData; + let resData = '\n\n'; return new Promise((resolve, reject) => { fetch(define.serverUrl + "/api/Forward/ForwardWordStream", requestOptions) .then(response => { @@ -126,7 +127,7 @@ export class Writing extends ServiceBase { const text = new TextDecoder().decode(value); resData += text // 将数据返回前端 - global.newWindow[0].win.webContents.send(DEFINE_STRING.GPT.GPT_STREAM_RETURN, resData) + global.newWindow[0].win.webContents.send(DEFINE_STRING.GPT.GPT_STREAM_RETURN, oldData + resData) controller.enqueue(value); // 可选:将数据块放入流中 push(); }).catch(err => { @@ -182,7 +183,7 @@ export class Writing extends ServiceBase { async ActionStart(setting, word) { try { await this.InitService() - console.log(setting, word) + // console.log(setting, word) if (isEmpty(setting.gptType)) { throw new Error('请选择GPT类型') } @@ -217,7 +218,6 @@ export class Writing extends ServiceBase { if (setting.isSplit) { // 这边拆分文案 let spiltWord = await this.SplitWord(word, setting.splitNumber) - console.log(spiltWord) for (let i = 0; i < spiltWord.length; i++) { const element = spiltWord[i]; if (setting.isStream) { @@ -243,6 +243,7 @@ export class Writing extends ServiceBase { } // let tasks = + // console.log("ActionStart", result); // ExecuteConcurrently return successMessage(result, "执行文案相关任务成功", 'Writing_ActionStart'); } catch (error) { diff --git a/src/main/func.js b/src/main/func.js index 0a4209d..85ed471 100644 --- a/src/main/func.js +++ b/src/main/func.js @@ -9,7 +9,6 @@ const { v4: uuidv4 } = require('uuid'); // 引入UUID库来生成唯一标识符 const EventEmitter = require('events'); import { define } from "../define/define"; import axios from "axios"; -const { machineId } = require('node-machine-id') import { DEFINE_STRING } from "../define/define_string"; import { ClipDraft } from "./Public/clipDraft"; import { Tools } from "./tools"; @@ -882,25 +881,6 @@ async function DeleteImageTaskList(value) { } -/** - * 获取指定的机械码 - */ -async function GetMachineId() { - try { - let id = await machineId(true); - global.machineId = id; - return { - code: 1, - value: id - } - } catch (error) { - return { - code: 0, - message: error.toString() - } - } -} - /** * 获取不想要的提示词 @@ -1127,7 +1107,6 @@ export const func = { DeleteVideoConfig, AddImageTask, DeleteImageTaskList, - GetMachineId, GetBadPrompt, SaveBadPrompt, DeleteBadPrompt, diff --git a/src/main/index.js b/src/main/index.js index 9eaa4a8..8b3bc2a 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -1,7 +1,5 @@ import fspromises from 'fs/promises' import { v4 as uuidv4 } from 'uuid' -import { version } from '../../package.json' -import { graphics } from 'systeminformation' import { app, shell, BrowserWindow, ipcMain, dialog, nativeTheme, session } from 'electron' import path, { join } from 'path' @@ -16,7 +14,7 @@ import { ImageGenerate } from './ReverseManage/imageGenerate.js' import { Setting } from './setting/setting.js' import { has, isEmpty } from 'lodash' import { AutoSync } from './setting/autoSync.js' -import { TaskManager } from './Service/taskManage' +import { TaskManager } from './Service/task/taskManage' import { SoftWareServiceBasic } from './Service/ServiceBasic/softwareServiceBasic' // ipc @@ -301,32 +299,6 @@ ipcMain.handle(DEFINE_STRING.ADD_DRAFT, async (event, value) => { return res }) -// 获取当前版本 -ipcMain.handle(DEFINE_STRING.GET_VERSION, async (event) => { - // 获取当前电脑的显卡信息 - let da = await graphics() - for (let i = 0; i < da.controllers.length; i++) { - // 获取第一个英伟达或者是AMD的显卡信息 - const element = da.controllers[i] - if (element.vendor.startsWith('NVIDIA')) { - global.gpu = element - global.gpu.type = 'NVIDIA' - break - } else if (element.vendor.startsWith('AMD') || element.vendor.startsWith('Advanced')) { - global.gpu = element - global.gpu.type = 'AMD' - break - } else { - global.gpu = { - name: 'OTHER' - } - global.gpu.type = 'OTHER' - } - } - - return version + ' ' + (global.gpu?.name ? global.gpu.name : '') -}) - // 监听保存SD配置 ipcMain.handle(DEFINE_STRING.SAVE_SD_CONFIG, async (event, value) => await func.SaveSDConfig(value)) @@ -372,9 +344,6 @@ ipcMain.handle( async (event, value) => await func.DeleteImageTaskList(value) ) -// 监听获取加密的机械码任务 -ipcMain.handle(DEFINE_STRING.GET_MACHINE_ID, async (event, value) => await func.GetMachineId()) - // 监听获取不想要的提示词任务 ipcMain.handle(DEFINE_STRING.GET_BAD_PROMPT, async (event) => await func.GetBadPrompt()) diff --git a/src/main/setting/setting.js b/src/main/setting/setting.js index 6a10e20..188ef7b 100644 --- a/src/main/setting/setting.js +++ b/src/main/setting/setting.js @@ -9,7 +9,7 @@ import { ImageSetting } from '../../define/setting/imageSetting' import { DEFINE_STRING } from '../../define/define_string' import { TagDefine } from '../../define/tagDefine' import { errorMessage } from '../Public/generalTools' -import { TaskManager } from '../Service/taskManage' +import { TaskManager } from '../Service/task/taskManage' import { SoftWareServiceBasic } from '../Service/ServiceBasic/softwareServiceBasic' import { FLxuAPIImageType } from '../../define/enum/image' @@ -270,45 +270,6 @@ export class Setting { } } - /** - * 检查机器码是不是存在 - * @param {*} value - * @returns - */ - async CheckMachineId(value) { - try { - // 判断机器码是不是存在 - let res = await axios.post('http://api.yu-zhile.com/GetMachineStatus', { - machineId: value - }) - - // let res = await axios.get('http://lapi.laitool.cn/api/Machine/GetMachineStatus?machineId=' + value); - if (res.status != 200) { - throw new Error('请求错误') - } - if (res.data.code == 0) { - throw new Error(res.data.message) - } - - this.global.endTime = res.data.endTime - this.global.permissions = res.data.permissions - this.global.CheckMachineId = true - // 这边初始化任务队列 - if (!global.taskManager) { - global.taskManager = new TaskManager() - global.taskManager.InitListeners() // 启动监听 - } - return { - code: 1 - } - } catch (error) { - return { - code: 0, - message: error.toString() - } - } - } - /** * 获取选择角色场景模式的options * @returns diff --git a/src/model/Setting/systemConfig.d.ts b/src/model/Setting/systemConfig.d.ts new file mode 100644 index 0000000..eb559db --- /dev/null +++ b/src/model/Setting/systemConfig.d.ts @@ -0,0 +1,16 @@ +declare namespace SystemConfig { + + /** 软件读取的系统信息,都是存储在这边 */ + type SystemConfig = { + gpu: GpuMessage + } + + /** GPU信息 */ + type GpuMessage = { + name?: string; + type?: string; + vender?: string; + updateTime?: Date; + } + +} \ No newline at end of file diff --git a/src/model/system.d.ts b/src/model/system.d.ts new file mode 100644 index 0000000..b0e23a0 --- /dev/null +++ b/src/model/system.d.ts @@ -0,0 +1,6 @@ + +declare namespace SystemModel { + + + +} \ No newline at end of file diff --git a/src/preload/index.js b/src/preload/index.js index 167dbd7..502a472 100644 --- a/src/preload/index.js +++ b/src/preload/index.js @@ -5,7 +5,7 @@ import { discord } from './discord.js' import { mj } from './mj.js' import { sd } from './sd' import { img } from './img.js' -import { system } from './system.js' +import { system } from './system' import { setting } from './setting.js' import { prompt } from './prompt.js' import { book } from './book' @@ -21,8 +21,6 @@ import { task } from './task' let events = [] const api = { //#region 基础状态 - // 获取版本信息 - GetVersion: async (callback) => callback(await ipcRenderer.invoke(DEFINE_STRING.GET_VERSION)), //#endregion // 保存通用设置 ModifySampleSetting: async (value, callback) => @@ -231,12 +229,6 @@ const api = { ipcRenderer.send(DEFINE_STRING.SHOW_NEW_WINDOW, value) }, - // 获取机械码 - GetMachineId: async (callback) => { - let res = await ipcRenderer.invoke(DEFINE_STRING.GET_MACHINE_ID) - callback(res) - }, - // 获取ADetalier配置列表 GetADetailerList: async (callback) => { let res = await ipcRenderer.invoke(DEFINE_STRING.GET_ADETAILER_LIST) diff --git a/src/preload/system.js b/src/preload/system.js deleted file mode 100644 index d75f728..0000000 --- a/src/preload/system.js +++ /dev/null @@ -1,14 +0,0 @@ -import { ipcRenderer } from "electron" -import { DEFINE_STRING } from "../define/define_string" - - -const system = { - // 打开指定的文件 - OpenFile: async (value, callback) => callback(ipcRenderer.send(DEFINE_STRING.SYSTEM.OPEN_FILE, value)), - - // 打开指定的文件夹 - OpenFolder: (value) => ipcRenderer.invoke(DEFINE_STRING.OPEN_FOLDER, value), -} -export { - system -} \ No newline at end of file diff --git a/src/preload/system.ts b/src/preload/system.ts new file mode 100644 index 0000000..98df6f7 --- /dev/null +++ b/src/preload/system.ts @@ -0,0 +1,19 @@ +import { ipcRenderer } from 'electron' +import { DEFINE_STRING } from '../define/define_string' + +const system = { + /**打开指定的文件 */ + OpenFile: async (value, callback) => + callback(ipcRenderer.send(DEFINE_STRING.SYSTEM.OPEN_FILE, value)), + /** 打开指定的文件夹 */ + OpenFolder: (value) => ipcRenderer.invoke(DEFINE_STRING.OPEN_FOLDER, value), + /** 获取软件的版本信息,和电脑的GPU信息,24小时只获取一次 */ + GetViosionAndGpuMessage: () => ipcRenderer.invoke(DEFINE_STRING.SYSTEM.GET_VISION_AND_GPU_MESSAGE), + /** 获取系统的机器码 */ + GetMachineId: () => ipcRenderer.invoke(DEFINE_STRING.SYSTEM.GET_MACHINE_ID), + /** 检查机器码状态 */ + CheckMachineStatus: (value: string) => ipcRenderer.invoke(DEFINE_STRING.SYSTEM.CHECK_MACHINE_STATUS, value) + + +} +export { system } diff --git a/src/preload/task.ts b/src/preload/task.ts index 8fdab72..cfe044c 100644 --- a/src/preload/task.ts +++ b/src/preload/task.ts @@ -1,8 +1,15 @@ import { ipcRenderer } from 'electron' import { DEFINE_STRING } from '../define/define_string' -import { BookBackTaskType, TaskExecuteType } from '../define/enum/bookEnum' +import { BookBackTaskStatus, BookBackTaskType, TaskExecuteType } from '../define/enum/bookEnum' const task = { + + /** + * 启动后台任务,判断是不是丢弃,要是丢弃的话,先将等待任务全部丢弃 + * @param isGiveUp + * @returns + */ + StartBackTask: async (isGiveUp: boolean) => await ipcRenderer.invoke(DEFINE_STRING.TASK.START_BACK_TASK, isGiveUp), /** * 添加单个任务 * @param bookId 小说ID @@ -20,12 +27,14 @@ const task = { responseMessageName: string = null) => await ipcRenderer.invoke(DEFINE_STRING.TASK.ADD_BOOK_BACK_TASK, bookId, taskType, executeType, bookTaskId, bookTaskDetailId, responseMessageName), - /** - * 同时太你家多个任务 + * 同时添加多个任务 * @param task */ AddMultiBookBackTask: async (task: TaskModal.Task[]) => await ipcRenderer.invoke(DEFINE_STRING.TASK.ADD_MULTI_BOOK_BACK_TASK, task), + + /** 获取等待中的任务 */ + GetAllStatusTaskCount: async (value: BookBackTaskStatus[]) => await ipcRenderer.invoke(DEFINE_STRING.TASK.GET_ALL_STATUS_TASK_COUNT, value), } export { task } diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue index fde8bdd..7002c5c 100644 --- a/src/renderer/src/App.vue +++ b/src/renderer/src/App.vue @@ -44,7 +44,7 @@ export default defineComponent({ let softwareStore = useSoftwareStore() onMounted(async () => { - debugger + softwareStore.SoftColor = SoftColor window.api.getSettingDafultData(async (value) => { await window.darkMode.toggle(value.theme) diff --git a/src/renderer/src/components/APIService/ApiService.vue b/src/renderer/src/components/APIService/ApiService.vue index be8da6c..92f62ed 100644 --- a/src/renderer/src/components/APIService/ApiService.vue +++ b/src/renderer/src/components/APIService/ApiService.vue @@ -18,9 +18,9 @@ export default defineComponent({ onMounted(() => { const webview = document.getElementById('lai-api') if (webview) { - debugger + const handleNewWindow = (event) => { - debugger + event.preventDefault() alert(123) const protocol = new URL(event.url).protocol diff --git a/src/renderer/src/components/Book/Components/DatatableGenerateImage.vue b/src/renderer/src/components/Book/Components/DatatableGenerateImage.vue index 447e3bc..93c9700 100644 --- a/src/renderer/src/components/Book/Components/DatatableGenerateImage.vue +++ b/src/renderer/src/components/Book/Components/DatatableGenerateImage.vue @@ -250,7 +250,7 @@ async function imageDragOver(e) { } async function ModifyLock() { - debugger + if (!data.value.imageLock) { // 锁定之前,判断是不是有 if (!outImagePath.value) { diff --git a/src/renderer/src/components/Book/Components/DatatableGptPromptButton.vue b/src/renderer/src/components/Book/Components/DatatableGptPromptButton.vue index 4f40587..92acf01 100644 --- a/src/renderer/src/components/Book/Components/DatatableGptPromptButton.vue +++ b/src/renderer/src/components/Book/Components/DatatableGptPromptButton.vue @@ -83,7 +83,6 @@ export default defineComponent({ * 提示词菜单下拉操作 */ async function ReverseSelect(key) { - debugger switch (key) { case 'remove_reverse': // 删除反推提示词 let res = await window.book.ResetGptReverseData( @@ -162,7 +161,6 @@ export default defineComponent({ // 处理批次的翻译 function TranslateBatchParams(from, to) { - debugger let translateData = [] for (let i = index.value; i < reverseManageStore.selectBookTaskDetail.length; i++) { const element = reverseManageStore.selectBookTaskDetail[i] @@ -208,7 +206,6 @@ export default defineComponent({ // 单句翻译 async function TranslateOne(key) { - debugger let translateData = [] switch (key) { case 'translate_english': @@ -243,7 +240,6 @@ export default defineComponent({ * 重选反推提示词 */ async function SelectReversePrompt() { - debugger // 判断当前是不是又反推提示词 if (!data.value.reversePrompt || data.value.reversePrompt.length <= 0) { message.error('当前没有反推提示词') diff --git a/src/renderer/src/components/Book/Components/DatatableHeaderGptPrompt.vue b/src/renderer/src/components/Book/Components/DatatableHeaderGptPrompt.vue index f2d2080..ee2e331 100644 --- a/src/renderer/src/components/Book/Components/DatatableHeaderGptPrompt.vue +++ b/src/renderer/src/components/Book/Components/DatatableHeaderGptPrompt.vue @@ -114,7 +114,7 @@ export default defineComponent({ style: `width : ${dialogWidth}px; height : ${dialogHeight}px`, maskClosable: false, onClose: async () => { - debugger + console.log(selectStyleRef) // 将数据保存到当前的数据中 // reverseManageStore.selectBookTask.styleList = toRaw(selectStyleRef.value.selectStyle) diff --git a/src/renderer/src/components/Book/Components/ImportWord/ImportWordAndSrt.vue b/src/renderer/src/components/Book/Components/ImportWord/ImportWordAndSrt.vue index 13791bd..329aea2 100644 --- a/src/renderer/src/components/Book/Components/ImportWord/ImportWordAndSrt.vue +++ b/src/renderer/src/components/Book/Components/ImportWord/ImportWordAndSrt.vue @@ -61,7 +61,7 @@ export default defineComponent({ setup(props) { let hh = props.height let maxHeight = props.height - 80 - debugger + let data = ref(JSON.parse(JSON.stringify(props.initData))) const message = useMessage() let dialog = useDialog() @@ -210,7 +210,7 @@ export default defineComponent({ style: `width : ${dialogWidth}px; min-height : ${dialogHeight}px`, maskClosable: false, onClose: async () => { - debugger + console.log(wenkeRef.value.word) let word = wenkeRef.value.data if (word == null || word == '') { @@ -565,7 +565,7 @@ export default defineComponent({ }) } } else if (type.value == 'mj_reverse' || type.value == 'sd_reverse') { - debugger + if (data.value.length != reverseManageStore.selectBookTaskDetail.length) { message.error('检测到导入的字幕数据和分镜对不上,请先对齐') return diff --git a/src/renderer/src/components/Book/Components/ManageBook/AddBook.vue b/src/renderer/src/components/Book/Components/ManageBook/AddBook.vue index 44a8ca5..d0c538d 100644 --- a/src/renderer/src/components/Book/Components/ManageBook/AddBook.vue +++ b/src/renderer/src/components/Book/Components/ManageBook/AddBook.vue @@ -188,7 +188,7 @@ export default defineComponent({ // 选择MP4文件夹 await window.api.SelectFile(ext, (value) => { - debugger + if (value.code == 0) { message.error(value.message) return @@ -227,7 +227,7 @@ export default defineComponent({ oldVideoPath: { required: true, validator(rule, value) { - debugger + if (isEmpty(value)) { // 判断是不是原创,原创不能选择视频文件,反推必选 if ( @@ -253,7 +253,7 @@ export default defineComponent({ message.error('请检查必填字段') return } - debugger + loading.value = true let res = await reverseManageStore.SaveSelectBook(cloneDeep(reverseManageStore.selectBook)) loading.value = false @@ -286,7 +286,7 @@ export default defineComponent({ */ async function OpenFolder(param) { let res = null - debugger + if (param == 'imageFolder') { res = await window.system.OpenFolder({ folderPath: reverseManageStore.selectBook.imageFolder, diff --git a/src/renderer/src/components/Book/Components/ManageBook/BookListAction.vue b/src/renderer/src/components/Book/Components/ManageBook/BookListAction.vue index f4f4757..33a272b 100644 --- a/src/renderer/src/components/Book/Components/ManageBook/BookListAction.vue +++ b/src/renderer/src/components/Book/Components/ManageBook/BookListAction.vue @@ -108,7 +108,7 @@ async function DeleteBookData(e) { negativeText: '取消', onPositiveClick: async () => { da?.destroy() - debugger + softwareStore.spin.spinning = true softwareStore.spin.tip = '正在删除小说数据。。。' let res = await window.book.DeleteBookData(book.value.id) @@ -117,7 +117,7 @@ async function DeleteBookData(e) { message.error(res.message) return } - debugger + // 这边直接把数据删除了就行 reverseManageStore.bookData = reverseManageStore.bookData.filter( (item) => item.id != book.value.id diff --git a/src/renderer/src/components/Book/Components/ManageBook/BookTaskListAction.vue b/src/renderer/src/components/Book/Components/ManageBook/BookTaskListAction.vue index b4345d6..c2e776d 100644 --- a/src/renderer/src/components/Book/Components/ManageBook/BookTaskListAction.vue +++ b/src/renderer/src/components/Book/Components/ManageBook/BookTaskListAction.vue @@ -48,7 +48,7 @@ export default defineComponent({ props: ['bookTask'], setup(props) { - debugger + let message = useMessage() let dialog = useDialog() let bookTask = ref(props.bookTask) @@ -63,7 +63,7 @@ export default defineComponent({ * @param e */ async function ReSetBookTaskDetail(e) { - debugger + e.stopPropagation() dialog.warning({ title: '重置小说任务', @@ -171,7 +171,7 @@ export default defineComponent({ */ async function ClipDraft(e) { e.stopPropagation() - debugger + dialog.info({ closeOnEsc: false, title: '生成草稿前检查', diff --git a/src/renderer/src/components/Book/Components/ManageBook/ManageBookButton.vue b/src/renderer/src/components/Book/Components/ManageBook/ManageBookButton.vue index bb08d64..f71882b 100644 --- a/src/renderer/src/components/Book/Components/ManageBook/ManageBookButton.vue +++ b/src/renderer/src/components/Book/Components/ManageBook/ManageBookButton.vue @@ -103,7 +103,7 @@ export default defineComponent({ */ async function DataTableStripedUpdate() { // 修改数据 - debugger + // 直接提交修改 let res = await softwareStore.SaveSoftware() console.log(res) @@ -115,7 +115,7 @@ export default defineComponent({ // 选择下拉菜单 async function SelectDropdown(key) { - debugger + console.log(key) softwareStore.softWare.reverse_data_table_size = key // 直接提交修改 diff --git a/src/renderer/src/components/Book/Components/ManageBook/ManageBookShowLogger.vue b/src/renderer/src/components/Book/Components/ManageBook/ManageBookShowLogger.vue index 564c711..85e0e7b 100644 --- a/src/renderer/src/components/Book/Components/ManageBook/ManageBookShowLogger.vue +++ b/src/renderer/src/components/Book/Components/ManageBook/ManageBookShowLogger.vue @@ -16,7 +16,7 @@ import { ref, onMounted, defineComponent, onUnmounted, toRaw, nextTick, watchEff import { useMessage, NLog } from 'naive-ui' import Artplayer from '../../../Components/Artplayer.vue' import { useReverseManageStore } from '../../../../../../stores/reverseManage.ts' -import { DEFINE_STRING } from '../../../../../../define/define_string.ts' +import { DEFINE_STRING } from '../../../../../../define/define_string' export default defineComponent({ components: { Artplayer, NLog }, @@ -47,7 +47,7 @@ export default defineComponent({ onMounted(async () => { // 监听返回的日志数据 window.api.setEventListen([DEFINE_STRING.SYSTEM.RETURN_LOGGER], (value) => { - debugger + debuger if (value.code == 0) { message.error('添加日志输出失败,但是不影响使用') logger.value += value.message + '\n' diff --git a/src/renderer/src/components/Book/Components/ManageBook/ManageBookTaskGenerateInformation.vue b/src/renderer/src/components/Book/Components/ManageBook/ManageBookTaskGenerateInformation.vue index bf2c3d3..1bdf1b3 100644 --- a/src/renderer/src/components/Book/Components/ManageBook/ManageBookTaskGenerateInformation.vue +++ b/src/renderer/src/components/Book/Components/ManageBook/ManageBookTaskGenerateInformation.vue @@ -73,7 +73,7 @@ export default defineComponent({ props: ['bookTask', 'type'], setup(props) { let bookTask = ref(props.bookTask) - debugger + let type = ref(props.type) let backgroundMusicOptions = ref([]) let message = useMessage() @@ -133,7 +133,7 @@ export default defineComponent({ bookTask.value.id, OperateBookType.BOOKTASK ) - debugger + if (res.code == 0) { message.error(res.message) } else { diff --git a/src/renderer/src/components/Book/Components/ManageBookDetailButton.vue b/src/renderer/src/components/Book/Components/ManageBookDetailButton.vue index fddb9e3..1bfc1d7 100644 --- a/src/renderer/src/components/Book/Components/ManageBookDetailButton.vue +++ b/src/renderer/src/components/Book/Components/ManageBookDetailButton.vue @@ -657,7 +657,7 @@ export default defineComponent({ * @param to 目标语言 */ async function TranslateService(from, to) { - debugger + let translateData = [] for (let i = 0; i < reverseManageStore.selectBookTaskDetail.length; i++) { const element = reverseManageStore.selectBookTaskDetail[i] @@ -743,7 +743,7 @@ export default defineComponent({ let tempData = [] for (let i = 0; i < reverseManageStore.selectBookTaskDetail.length; i++) { - debugger + const element = reverseManageStore.selectBookTaskDetail[i] tempData.push({ no: element.no, diff --git a/src/renderer/src/components/Book/Components/PresetLibrary/AddCharacterTag.vue b/src/renderer/src/components/Book/Components/PresetLibrary/AddCharacterTag.vue index a32095e..c297c12 100644 --- a/src/renderer/src/components/Book/Components/PresetLibrary/AddCharacterTag.vue +++ b/src/renderer/src/components/Book/Components/PresetLibrary/AddCharacterTag.vue @@ -50,6 +50,7 @@ > +
注意:人物提示词(英文)才是实际合并的提示词数据,请和出图的提示词语言保持一致(中文或英文)
翻译提示词 +
注意:场景提示词描述(英文) 才是实际合并的提示词数据,请和出图的提示词语言保持一致(中文或英文)
+
注意:风格提示词描述(英文) 才是实际合并的提示词数据,请和出图的提示词语言保持一致(中文或英文)
{ - debugger + if (value.code == 0) { message.error(value.message) imageLoading.value = false diff --git a/src/renderer/src/components/Book/MJReverse/MJReversePrompt.vue b/src/renderer/src/components/Book/MJReverse/MJReversePrompt.vue index 1426a14..441574e 100644 --- a/src/renderer/src/components/Book/MJReverse/MJReversePrompt.vue +++ b/src/renderer/src/components/Book/MJReverse/MJReversePrompt.vue @@ -51,7 +51,7 @@ export default defineComponent({ // 做个计算属性 let showReversePrompt = computed(() => { - debugger + let res = [] for (let i = 0; i < data.value.reversePrompt?.length; i++) { let item = data.value.reversePrompt[i] diff --git a/src/renderer/src/components/Book/MJReverse/ManageBookReverseTable.vue b/src/renderer/src/components/Book/MJReverse/ManageBookReverseTable.vue index 7856fb2..f666811 100644 --- a/src/renderer/src/components/Book/MJReverse/ManageBookReverseTable.vue +++ b/src/renderer/src/components/Book/MJReverse/ManageBookReverseTable.vue @@ -133,7 +133,7 @@ export default defineComponent({ ] onMounted(async () => { - debugger + calcHeight() setTimeout(() => { @@ -155,7 +155,7 @@ export default defineComponent({ }) function calcHeight() { - debugger + // 视口的高度 let height = window.innerHeight maxHeight.value = height - 120 diff --git a/src/renderer/src/components/Book/ManageBook.vue b/src/renderer/src/components/Book/ManageBook.vue index ea0d23b..25c7d27 100644 --- a/src/renderer/src/components/Book/ManageBook.vue +++ b/src/renderer/src/components/Book/ManageBook.vue @@ -82,7 +82,7 @@ export default defineComponent({ } pagination.value.pageCount = res_count - debugger + // 开始获取批次任务 let bookTask = await reverseManageStore.GetBookTaskDataFromDB({ bookId: reverseManageStore.selectBook.id @@ -99,7 +99,7 @@ export default defineComponent({ async function InitData() { try { // 初始化数据 - debugger + await GetBookByCondition() } catch (error) { message.error(error.message) diff --git a/src/renderer/src/components/Book/ManageBookDetail.vue b/src/renderer/src/components/Book/ManageBookDetail.vue index 4b1b6f9..51dd7ce 100644 --- a/src/renderer/src/components/Book/ManageBookDetail.vue +++ b/src/renderer/src/components/Book/ManageBookDetail.vue @@ -43,7 +43,7 @@ export default defineComponent({ }, setup() { - debugger + let message = useMessage() let softwareStore = useSoftwareStore() let reverseManageStore = useReverseManageStore() diff --git a/src/renderer/src/components/Book/ManageBookTask.vue b/src/renderer/src/components/Book/ManageBookTask.vue index 46906e1..693208f 100644 --- a/src/renderer/src/components/Book/ManageBookTask.vue +++ b/src/renderer/src/components/Book/ManageBookTask.vue @@ -105,7 +105,7 @@ export default defineComponent({ width: 215, fixed: 'right', render(row, index) { - debugger + return h(BookTaskListAction, { bookTask: row }) diff --git a/src/renderer/src/components/Book/Original/ODataTableCharacterAndScene.vue b/src/renderer/src/components/Book/Original/ODataTableCharacterAndScene.vue index 5370405..16dd93f 100644 --- a/src/renderer/src/components/Book/Original/ODataTableCharacterAndScene.vue +++ b/src/renderer/src/components/Book/Original/ODataTableCharacterAndScene.vue @@ -132,7 +132,7 @@ onMounted(() => {}) let UpdateCharacterTagsDebounced = debounce(UpdateCharacterTags, 500) async function UpdateCharacterTags(character, index) { - debugger + // 开始保存,获取所有的选中的人物 let checkedCharacterTags = characterTags.value .filter((item) => item.checked) @@ -154,7 +154,7 @@ async function UpdateCharacterTags(character, index) { let UpdateSceneTagsDebounced = debounce(UpdateSceneTags, 500) async function UpdateSceneTags(scene, index) { - debugger + console.log('1233', scene, index) // 开始保存,获取所有的选中的场景 let checkedSceneTags = sceneTags.value.filter((item) => item.checked).map((item) => item.id) diff --git a/src/renderer/src/components/Book/Original/ODataTableHeaderGptPrompt.vue b/src/renderer/src/components/Book/Original/ODataTableHeaderGptPrompt.vue index 1f09435..fa134a5 100644 --- a/src/renderer/src/components/Book/Original/ODataTableHeaderGptPrompt.vue +++ b/src/renderer/src/components/Book/Original/ODataTableHeaderGptPrompt.vue @@ -288,7 +288,7 @@ async function SelectStyle() { style: `width : ${dialogWidth}px; height : ${dialogHeight}px`, maskClosable: false, onClose: async () => { - debugger + console.log(selectStyleRef) // 将数据保存到当前的数据中 // reverseManageStore.selectBookTask.styleList = toRaw(selectStyleRef.value.selectStyle) diff --git a/src/renderer/src/components/Book/Original/ODatatablePrompt.vue b/src/renderer/src/components/Book/Original/ODatatablePrompt.vue index f05ba2a..581b48c 100644 --- a/src/renderer/src/components/Book/Original/ODatatablePrompt.vue +++ b/src/renderer/src/components/Book/Original/ODatatablePrompt.vue @@ -178,7 +178,7 @@ async function SingleGenerateImage() { // 下生图 async function NextGenerateImage() { - debugger + let res = undefined let bookTaskDetails = reverseManageStore.selectBookTaskDetail.filter( (item, index) => index >= props.index && !item.imageLock diff --git a/src/renderer/src/components/Book/Original/OriginalMainButton.vue b/src/renderer/src/components/Book/Original/OriginalMainButton.vue index 0394bd5..082f1ad 100644 --- a/src/renderer/src/components/Book/Original/OriginalMainButton.vue +++ b/src/renderer/src/components/Book/Original/OriginalMainButton.vue @@ -165,7 +165,7 @@ async function CharacterLibrary() { let dialogWidth = window.innerWidth * 0.6 let dialogHeight = window.innerHeight * 0.9 let word = '' // 这边要拼接一下word - debugger + let temp_arr = [] for (let i = 0; i < reverseManageStore.selectBookTaskDetail.length; i++) { const element = reverseManageStore.selectBookTaskDetail[i] @@ -235,7 +235,7 @@ async function ResetGPTPrompt() { onPositiveClick: async () => { da?.destroy() softwareStore.spin.spinning = true - debugger + softwareStore.spin.tip = '正在重置推理提示词,请稍后。。。' let res = await window.book.ResetGptReverseData( reverseManageStore.selectBookTask.id, @@ -373,7 +373,7 @@ async function GetPromptAll() { * @param {Boolean} cover - 是否覆盖现有图像 */ async function AddFluxImageAll(type, cover) { - debugger + let messageName = DEFINE_STRING.BOOK.FLUX_API_IMAGE_GENERATE_RETURN let taskType = BookBackTaskType.FLUX_API_IMAGE if (type == BookImageCategory.FLUX_FORGE) { diff --git a/src/renderer/src/components/Book/Original/OriginalMainDatatable.vue b/src/renderer/src/components/Book/Original/OriginalMainDatatable.vue index 3e7d276..632e387 100644 --- a/src/renderer/src/components/Book/Original/OriginalMainDatatable.vue +++ b/src/renderer/src/components/Book/Original/OriginalMainDatatable.vue @@ -96,7 +96,6 @@ const createColumns = ({}) => { className: 'empty-margin', fixed: 'left', render(row, index) { - console.log('row', row, index) return h(DatatableAfterGpt, { initData: row, index: index }) } }, diff --git a/src/renderer/src/components/Book/ReverseManage.vue b/src/renderer/src/components/Book/ReverseManage.vue index 90f080e..6984b88 100644 --- a/src/renderer/src/components/Book/ReverseManage.vue +++ b/src/renderer/src/components/Book/ReverseManage.vue @@ -31,7 +31,7 @@ export default defineComponent({ onMounted(() => {}) onUnmounted(() => { - debugger + reverseManageStore.selectBookTaskDetail = undefined }) diff --git a/src/renderer/src/components/Components/CheckMachineId.vue b/src/renderer/src/components/Components/CheckMachineId.vue index bd2ef67..82bb616 100644 --- a/src/renderer/src/components/Components/CheckMachineId.vue +++ b/src/renderer/src/components/Components/CheckMachineId.vue @@ -2,7 +2,12 @@
- + -