diff --git a/package.json b/package.json index 02c8e6c..7963d34 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "laitool", - "version": "3.2.4", + "version": "3.2.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/scripts/db/book.realm.lock b/resources/scripts/db/book.realm.lock index 8d08189..dec7719 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 109d2d9..131a685 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/SoftWare/mjSettingService.ts b/src/define/db/service/SoftWare/mjSettingService.ts index 185790e..72c24b8 100644 --- a/src/define/db/service/SoftWare/mjSettingService.ts +++ b/src/define/db/service/SoftWare/mjSettingService.ts @@ -1,16 +1,15 @@ import Realm, { UpdateMode } from 'realm' -import path from 'path' -import { BaseService } from '../baseService' -import { define } from '../../../define' -import { SoftwareModel } from '../../model/SoftWare/software' -import { ComponentSize, SoftwareThemeType } from '../../../enum/softwareEnum.js' -import { errorMessage, successMessage } from '../../../../main/Public/generalTools' +import { successMessage } from '../../../../main/Public/generalTools' import { BaseSoftWareService } from './softwareBasic.js' -import { isEmpty, isNumber } from 'lodash' +import { cloneDeep, isEmpty } from 'lodash' const { v4: uuidv4 } = require('uuid') import { version } from '../../../../../package.json' import { GeneralResponse } from '../../../../model/generalResponse' import { MJCategroy } from '../../../enum/bookEnum' +import { OptionRealmService } from './optionRealmService' +import { OptionKeyName } from '@/define/enum/option' +import { OptionModel } from '@/model/option/option' +import { ValidateJson } from '@/define/Tools/validate' export class MJSettingService extends BaseSoftWareService { static instance: MJSettingService | null = null @@ -462,21 +461,29 @@ export class MJSettingService extends BaseSoftWareService { * @param mjSettingQuery 查询的条件 Id ,null 返回全部 * @returns */ - GetMjSetting(mjSettingQuery) { + GetMjSetting() { try { - let mjSettings = this.realm.objects('MjSetting') - if (mjSettingQuery?.id) { - mjSettings = this.realm.objects('MjSetting').filtered('id = $0', mjSettingQuery.id) - } + let res = this.realm.objects('Options').filtered(`key = "${OptionKeyName.MJ_GlobalSetting}"`); - let resMjSetting = Array.from(mjSettings).map((mjSetting) => { - return { - ...mjSetting + let mjSetting: OptionModel.OptionItem | null = null; + if (res.length > 0) { + let resData = Array.from(res).map((item) => { + let resObj = { + ...item + } + return cloneDeep(resObj) + }) + mjSetting = resData[0] as OptionModel.OptionItem + + if (!ValidateJson(mjSetting.value)) { + throw new Error('MJ设置的数据格式不正确,请检查数据格式') } - }) + return JSON.parse(mjSetting.value)?.mj_simpleSetting - return successMessage(resMjSetting, '获取MJ基础设置成功', 'MJSettingService_getMjSetting') + } else { + throw new Error('没有找到MJ的设置信息,请检查') + } } catch (error) { throw error } @@ -582,11 +589,14 @@ export class MJSettingService extends BaseSoftWareService { GetMJSettingTreeData() { try { // 获取MJ的基础配置信息 - let mjSettings = this.GetMjSetting(null) - if (mjSettings.data.length <= 0) { - this.InitData(); - mjSettings = this.GetMjSetting(null) + let mjSettings = this.GetMjSetting() + // if (mjSettings.data.length <= 0) { + // this.InitData(); + // mjSettings = this.GetMjSetting(null) + // } + if (mjSettings == null) { + throw new Error('未找到MJ的设置信息,请检查'); } // 获取API的配置信息 let apiSettings = this.GetAPIMjSetting(null) @@ -594,7 +604,7 @@ export class MJSettingService extends BaseSoftWareService { let remoteSettings = this.GetRemoteMJSettings(null) // 获取浏览器模式的配置信息 let browserSettings = this.GetBrowserMJSetting(null) - let mjSetting = mjSettings.data[0] + let mjSetting = mjSettings mjSetting.apiSetting = apiSettings.data.length > 0 ? apiSettings.data[0] : null mjSetting.remoteSetting = remoteSettings.data.length > 0 ? remoteSettings.data[0] : null mjSetting.browserSetting = browserSettings.data.length > 0 ? browserSettings.data[0] : null diff --git a/src/main/Service/MJ/mj.ts b/src/main/Service/MJ/mj.ts index 15e501d..dd9028b 100644 --- a/src/main/Service/MJ/mj.ts +++ b/src/main/Service/MJ/mj.ts @@ -23,6 +23,9 @@ import path from "path" const { v4: uuidv4 } = require('uuid') import fs from "fs" import { TaskModal } from "@/model/task"; +import { OptionServices } from "../Options/optionServices"; +import { OptionKeyName } from "@/define/enum/option"; +import { ValidateJson } from "@/define/Tools/validate"; const fspromise = fs.promises export class MJOpt { @@ -34,6 +37,8 @@ export class MJOpt { bookServiceBasic: BookServiceBasic presetService: PresetService softWareServiceBasic: SoftWareServiceBasic + mj_globalSetting: MJSettingModel.MJ_GlobalSettingModel + constructor() { this.imageStyle = new ImageStyle() this.logScheduler = new LogScheduler() @@ -48,9 +53,20 @@ export class MJOpt { * 获取MJ设置 */ async GetMJSetting() { - if (!this.mjSimpleSetting) { - this.mjSimpleSetting = await this.softWareServiceBasic.GetMjSetting() + let optionServices = new OptionServices() + let mjSettingData = await optionServices.GetOptionByKey(OptionKeyName.MJ_GlobalSetting); + if (mjSettingData.code == 0) { + throw new Error("加载MJ设置失败,失败原因如下:" + mjSettingData.message) } + if (mjSettingData.data == null) { + throw new Error("加载MJ设置失败,失败原因如下:没有找到对应的MJ设置,请先去MJ设置中设置") + } + if (!ValidateJson(mjSettingData.data.value)) { + throw new Error("MJ设置的数据格式不正确,请检查数据格式") + } + + this.mj_globalSetting = JSON.parse(mjSettingData.data.value) as MJSettingModel.MJ_GlobalSettingModel + this.mjSimpleSetting = this.mj_globalSetting.mj_simpleSetting } @@ -378,8 +394,7 @@ export class MJOpt { } // let suffixParam = imageBaseSetting.mj_config.image_suffix ; // 没有就直接报错 - let mjSettingDb = await this.softWareServiceBasic.GetMjSetting() - let suffixParam = mjSettingDb.imageSuffix + let suffixParam = this.mjSimpleSetting.imageSuffix // let styleString = ''; // 拿到所有的风格 diff --git a/src/main/Service/MJ/mjApi.ts b/src/main/Service/MJ/mjApi.ts index 0874030..84ec4cc 100644 --- a/src/main/Service/MJ/mjApi.ts +++ b/src/main/Service/MJ/mjApi.ts @@ -36,11 +36,11 @@ class MJApi { */ async InitMJSetting(): Promise { // 获取MJ配置,从数据库中 - let _mjSettingService = await MJSettingService.getInstance() - let mjSettings = _mjSettingService.GetMJSettingTreeData() - if (mjSettings.code == 0) { - throw new Error(mjSettings.message) - } + // let _mjSettingService = await MJSettingService.getInstance() + // let mjSettings = _mjSettingService.GetMJSettingTreeData() + // if (mjSettings.code == 0) { + // throw new Error(mjSettings.message) + // } let mjSettingData = await this.optionServices.GetOptionByKey(OptionKeyName.MJ_GlobalSetting); diff --git a/src/main/Service/ServiceBasic/softwareServiceBasic.ts b/src/main/Service/ServiceBasic/softwareServiceBasic.ts index 500f17b..235b3f8 100644 --- a/src/main/Service/ServiceBasic/softwareServiceBasic.ts +++ b/src/main/Service/ServiceBasic/softwareServiceBasic.ts @@ -87,16 +87,9 @@ export class SoftWareServiceBasic { */ async GetMjSetting(): Promise { await this.InitService(); - let mjSetting = this.mjSettingService.GetMjSetting({}) - if (mjSetting.code == 1) { - if (mjSetting.data.length <= 0) { - throw new Error("未找到MJ的设置信息,请检查"); - } - // 这边只是返回第一个 - return mjSetting.data[0] - } else { - throw new Error(mjSetting.message) - } + let mjSetting = this.mjSettingService.GetMjSetting() + + return mjSetting } //#endregion diff --git a/src/main/setting/autoSync.js b/src/main/setting/autoSync.js index 89b779a..f172246 100644 --- a/src/main/setting/autoSync.js +++ b/src/main/setting/autoSync.js @@ -142,7 +142,7 @@ async function AutoSyncMJConfig2210() { } // 判断基础数据,不存在同步 - let mjSetting = _mjSettingService.GetMjSetting(null) + let mjSetting = _mjSettingService.GetMjSetting() if (mjSetting.code == 1 && mjSetting.data.length <= 0) { //判断数据然后选择同步 if ( diff --git a/src/main/setting/mjSetting.js b/src/main/setting/mjSetting.js index 7306146..f9d328f 100644 --- a/src/main/setting/mjSetting.js +++ b/src/main/setting/mjSetting.js @@ -93,7 +93,7 @@ export class MJSetting { async GetMJSetting(mjSettingQuery) { try { let _mjSetting = await MJSettingService.getInstance() - let res = _mjSetting.GetMjSetting(mjSettingQuery) + let res = _mjSetting.GetMjSetting() return res } catch (error) { return errorMessage( diff --git a/src/renderer/src/components/Original/Components/PromptSetting.vue b/src/renderer/src/components/Original/Components/PromptSetting.vue index 61b17d0..3a9ac44 100644 --- a/src/renderer/src/components/Original/Components/PromptSetting.vue +++ b/src/renderer/src/components/Original/Components/PromptSetting.vue @@ -157,6 +157,9 @@ import { import { DEFINE_STRING } from '../../../../../define/define_string' import InputDialogContent from './InputDialogContent.vue' import { v4 as uuidv4 } from 'uuid' +import MJDefine from '@/main/Service/MJ/mjDefine' +import { OptionKeyName, OptionType } from '@/define/enum/option' +import { ValidateJson } from '@/define/Tools/validate' export default defineComponent({ components: { @@ -230,35 +233,28 @@ export default defineComponent({ character_select_model_options.value = value.data }) } - + let mj_globalSetting /** * 初始化MJ的option */ async function InitMjOptions() { - // 获取当前mj配置信息,加载基础信息 - let res = await window.setting.GetMjSetting() - if (res.code == 0) { - message.error(res.message) - return + let mjSettingData = await window.options.GetOptionByKey(OptionKeyName.MJ_GlobalSetting) + if (mjSettingData.code == 0) { + throw new Error('加载MJ设置失败,失败原因如下:' + mjSettingData.message) + } + if (mjSettingData.data == null) { + throw new Error('加载MJ设置失败,失败原因如下:没有找到对应的MJ设置,请先去MJ设置中设置') + } + if (!ValidateJson(mjSettingData.data.value)) { + throw new Error('MJ设置的数据格式不正确,请检查数据格式') } - if (res.data.length <= 0) { - message.error('当前没有MJ配置信息,请先配置MJ信息') - return - } + mj_globalSetting = JSON.parse(mjSettingData.data.value) + let mjSimpleSetting = mj_globalSetting.mj_simpleSetting - mjSetting.value = Object.assign(mjSetting.value, res.data[0]) + mjSetting.value = Object.assign(mjSetting.value, mjSimpleSetting) - await window.mj.GetMJGenerateCategory((value) => { - if (value.code == 0) { - message.error(value.message) - return - } - request_model_options.value = value.data.filter((item) => !item.disable) - if (request_model_options.value.length > 0 && mjSetting.value.request_model == null) { - mjSetting.value.request_model = request_model_options.value[0].value - } - }) + request_model_options.value = MJDefine.GetMJRequestModelOptions() mj_speed_options.value = [ { @@ -324,8 +320,13 @@ export default defineComponent({ } }) + debugger // 保存MJ的基础设置 - let saveMjRes = await window.setting.UpdateMJSetting(toRaw(mjSetting.value)) + let saveMjRes = await window.options.ModifyOptionByKey( + OptionKeyName.MJ_GlobalSetting, + JSON.stringify({ ...mj_globalSetting, mj_simpleSetting: mjSetting.value }), + OptionType.JSON + ) if (saveMjRes.code == 0) { throw new Error(saveMjRes.message) }