V 3.2.5(2025.02.26)

1. 修复新用户合并MJ设置初始化问题
2. 修复原创MJ设置数据缺失
This commit is contained in:
lq1405 2025-02-26 12:03:01 +08:00
parent 03d3ff7e9d
commit 77ee38d302
10 changed files with 85 additions and 66 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "laitool", "name": "laitool",
"version": "3.2.4", "version": "3.2.5",
"description": "An AI tool for image processing, video processing, and other functions.", "description": "An AI tool for image processing, video processing, and other functions.",
"main": "./out/main/index.js", "main": "./out/main/index.js",
"author": "laitool.cn", "author": "laitool.cn",

Binary file not shown.

View File

@ -1,16 +1,15 @@
import Realm, { UpdateMode } from 'realm' import Realm, { UpdateMode } from 'realm'
import path from 'path' import { successMessage } from '../../../../main/Public/generalTools'
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 { BaseSoftWareService } from './softwareBasic.js' import { BaseSoftWareService } from './softwareBasic.js'
import { isEmpty, isNumber } from 'lodash' import { cloneDeep, isEmpty } from 'lodash'
const { v4: uuidv4 } = require('uuid') const { v4: uuidv4 } = require('uuid')
import { version } from '../../../../../package.json' import { version } from '../../../../../package.json'
import { GeneralResponse } from '../../../../model/generalResponse' import { GeneralResponse } from '../../../../model/generalResponse'
import { MJCategroy } from '../../../enum/bookEnum' 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 { export class MJSettingService extends BaseSoftWareService {
static instance: MJSettingService | null = null static instance: MJSettingService | null = null
@ -462,21 +461,29 @@ export class MJSettingService extends BaseSoftWareService {
* @param mjSettingQuery Id null * @param mjSettingQuery Id null
* @returns * @returns
*/ */
GetMjSetting(mjSettingQuery) { GetMjSetting() {
try { try {
let mjSettings = this.realm.objects('MjSetting')
if (mjSettingQuery?.id) { let res = this.realm.objects('Options').filtered(`key = "${OptionKeyName.MJ_GlobalSetting}"`);
mjSettings = this.realm.objects('MjSetting').filtered('id = $0', mjSettingQuery.id)
}
let resMjSetting = Array.from(mjSettings).map((mjSetting) => { let mjSetting: OptionModel.OptionItem | null = null;
return { if (res.length > 0) {
...mjSetting let resData = Array.from(res).map((item) => {
let resObj = {
...item
} }
return cloneDeep(resObj)
}) })
mjSetting = resData[0] as OptionModel.OptionItem
return successMessage(resMjSetting, '获取MJ基础设置成功', 'MJSettingService_getMjSetting') if (!ValidateJson(mjSetting.value)) {
throw new Error('MJ设置的数据格式不正确请检查数据格式')
}
return JSON.parse(mjSetting.value)?.mj_simpleSetting
} else {
throw new Error('没有找到MJ的设置信息请检查')
}
} catch (error) { } catch (error) {
throw error throw error
} }
@ -582,11 +589,14 @@ export class MJSettingService extends BaseSoftWareService {
GetMJSettingTreeData() { GetMJSettingTreeData() {
try { try {
// 获取MJ的基础配置信息 // 获取MJ的基础配置信息
let mjSettings = this.GetMjSetting(null) let mjSettings = this.GetMjSetting()
if (mjSettings.data.length <= 0) { // if (mjSettings.data.length <= 0) {
this.InitData(); // this.InitData();
mjSettings = this.GetMjSetting(null) // mjSettings = this.GetMjSetting(null)
// }
if (mjSettings == null) {
throw new Error('未找到MJ的设置信息请检查');
} }
// 获取API的配置信息 // 获取API的配置信息
let apiSettings = this.GetAPIMjSetting(null) let apiSettings = this.GetAPIMjSetting(null)
@ -594,7 +604,7 @@ export class MJSettingService extends BaseSoftWareService {
let remoteSettings = this.GetRemoteMJSettings(null) let remoteSettings = this.GetRemoteMJSettings(null)
// 获取浏览器模式的配置信息 // 获取浏览器模式的配置信息
let browserSettings = this.GetBrowserMJSetting(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.apiSetting = apiSettings.data.length > 0 ? apiSettings.data[0] : null
mjSetting.remoteSetting = remoteSettings.data.length > 0 ? remoteSettings.data[0] : null mjSetting.remoteSetting = remoteSettings.data.length > 0 ? remoteSettings.data[0] : null
mjSetting.browserSetting = browserSettings.data.length > 0 ? browserSettings.data[0] : null mjSetting.browserSetting = browserSettings.data.length > 0 ? browserSettings.data[0] : null

View File

@ -23,6 +23,9 @@ import path from "path"
const { v4: uuidv4 } = require('uuid') const { v4: uuidv4 } = require('uuid')
import fs from "fs" import fs from "fs"
import { TaskModal } from "@/model/task"; 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 const fspromise = fs.promises
export class MJOpt { export class MJOpt {
@ -34,6 +37,8 @@ export class MJOpt {
bookServiceBasic: BookServiceBasic bookServiceBasic: BookServiceBasic
presetService: PresetService presetService: PresetService
softWareServiceBasic: SoftWareServiceBasic softWareServiceBasic: SoftWareServiceBasic
mj_globalSetting: MJSettingModel.MJ_GlobalSettingModel
constructor() { constructor() {
this.imageStyle = new ImageStyle() this.imageStyle = new ImageStyle()
this.logScheduler = new LogScheduler() this.logScheduler = new LogScheduler()
@ -48,9 +53,20 @@ export class MJOpt {
* MJ设置 * MJ设置
*/ */
async GetMJSetting() { async GetMJSetting() {
if (!this.mjSimpleSetting) { let optionServices = new OptionServices()
this.mjSimpleSetting = await this.softWareServiceBasic.GetMjSetting() 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 suffixParam = imageBaseSetting.mj_config.image_suffix ; // 没有就直接报错
let mjSettingDb = await this.softWareServiceBasic.GetMjSetting() let suffixParam = this.mjSimpleSetting.imageSuffix
let suffixParam = mjSettingDb.imageSuffix
// let styleString = ''; // let styleString = '';
// 拿到所有的风格 // 拿到所有的风格

View File

@ -36,11 +36,11 @@ class MJApi {
*/ */
async InitMJSetting(): Promise<void> { async InitMJSetting(): Promise<void> {
// 获取MJ配置从数据库中 // 获取MJ配置从数据库中
let _mjSettingService = await MJSettingService.getInstance() // let _mjSettingService = await MJSettingService.getInstance()
let mjSettings = _mjSettingService.GetMJSettingTreeData() // let mjSettings = _mjSettingService.GetMJSettingTreeData()
if (mjSettings.code == 0) { // if (mjSettings.code == 0) {
throw new Error(mjSettings.message) // throw new Error(mjSettings.message)
} // }
let mjSettingData = await this.optionServices.GetOptionByKey(OptionKeyName.MJ_GlobalSetting); let mjSettingData = await this.optionServices.GetOptionByKey(OptionKeyName.MJ_GlobalSetting);

View File

@ -87,16 +87,9 @@ export class SoftWareServiceBasic {
*/ */
async GetMjSetting(): Promise<MJSettingModel.MjSimpleSettingModel> { async GetMjSetting(): Promise<MJSettingModel.MjSimpleSettingModel> {
await this.InitService(); await this.InitService();
let mjSetting = this.mjSettingService.GetMjSetting({}) let mjSetting = this.mjSettingService.GetMjSetting()
if (mjSetting.code == 1) {
if (mjSetting.data.length <= 0) { return mjSetting
throw new Error("未找到MJ的设置信息请检查");
}
// 这边只是返回第一个
return mjSetting.data[0]
} else {
throw new Error(mjSetting.message)
}
} }
//#endregion //#endregion

View File

@ -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 (mjSetting.code == 1 && mjSetting.data.length <= 0) {
//判断数据然后选择同步 //判断数据然后选择同步
if ( if (

View File

@ -93,7 +93,7 @@ export class MJSetting {
async GetMJSetting(mjSettingQuery) { async GetMJSetting(mjSettingQuery) {
try { try {
let _mjSetting = await MJSettingService.getInstance() let _mjSetting = await MJSettingService.getInstance()
let res = _mjSetting.GetMjSetting(mjSettingQuery) let res = _mjSetting.GetMjSetting()
return res return res
} catch (error) { } catch (error) {
return errorMessage( return errorMessage(

View File

@ -157,6 +157,9 @@ import {
import { DEFINE_STRING } from '../../../../../define/define_string' import { DEFINE_STRING } from '../../../../../define/define_string'
import InputDialogContent from './InputDialogContent.vue' import InputDialogContent from './InputDialogContent.vue'
import { v4 as uuidv4 } from 'uuid' 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({ export default defineComponent({
components: { components: {
@ -230,35 +233,28 @@ export default defineComponent({
character_select_model_options.value = value.data character_select_model_options.value = value.data
}) })
} }
let mj_globalSetting
/** /**
* 初始化MJ的option * 初始化MJ的option
*/ */
async function InitMjOptions() { async function InitMjOptions() {
// mj let mjSettingData = await window.options.GetOptionByKey(OptionKeyName.MJ_GlobalSetting)
let res = await window.setting.GetMjSetting() if (mjSettingData.code == 0) {
if (res.code == 0) { throw new Error('加载MJ设置失败失败原因如下' + mjSettingData.message)
message.error(res.message) }
return if (mjSettingData.data == null) {
throw new Error('加载MJ设置失败失败原因如下没有找到对应的MJ设置请先去MJ设置中设置')
}
if (!ValidateJson(mjSettingData.data.value)) {
throw new Error('MJ设置的数据格式不正确请检查数据格式')
} }
if (res.data.length <= 0) { mj_globalSetting = JSON.parse(mjSettingData.data.value)
message.error('当前没有MJ配置信息请先配置MJ信息') let mjSimpleSetting = mj_globalSetting.mj_simpleSetting
return
}
mjSetting.value = Object.assign(mjSetting.value, res.data[0]) mjSetting.value = Object.assign(mjSetting.value, mjSimpleSetting)
await window.mj.GetMJGenerateCategory((value) => { request_model_options.value = MJDefine.GetMJRequestModelOptions()
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
}
})
mj_speed_options.value = [ mj_speed_options.value = [
{ {
@ -324,8 +320,13 @@ export default defineComponent({
} }
}) })
debugger
// MJ // 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) { if (saveMjRes.code == 0) {
throw new Error(saveMjRes.message) throw new Error(saveMjRes.message)
} }