添加软件基础配置
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
export enum OptionType {
|
||||
String = 1,
|
||||
JSON = 2,
|
||||
Number = 3,
|
||||
}
|
||||
@@ -1,9 +1,7 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
import { request, useModel } from '@umijs/max';
|
||||
import CryptoJS from 'crypto-js';
|
||||
import { TokenStorage } from '../define/tokenStorage';
|
||||
import { errorMessage, successMessage } from './response';
|
||||
import { getCurrentUser } from './user';
|
||||
import forge from 'node-forge';
|
||||
|
||||
@@ -124,14 +122,14 @@ export async function login(body: API.LoginParams, options?: { [key: string]: an
|
||||
export async function UserRegistr(params: UserModel.UserRegisterParams): Promise<void> {
|
||||
let publicKey = await getPublicKey();
|
||||
// 加密密码
|
||||
debugger;
|
||||
|
||||
let secPassword = encryptPassword(publicKey.publicKey, params.password);
|
||||
let bodyData = {
|
||||
userName: params.userName,
|
||||
email: params.email ?? '',
|
||||
password: secPassword,
|
||||
tokenId: publicKey.token,
|
||||
affiliateCode : params.affiliateCode
|
||||
affiliateCode: params.affiliateCode
|
||||
}
|
||||
let res = await request<ApiResponse.SuccessItem<string>>('/lms/User/Register', {
|
||||
method: 'POST',
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
import { OptionType } from "@/services/enum/optionEnum";
|
||||
import { isEmpty } from "lodash";
|
||||
|
||||
/**
|
||||
* 获取指定键名的选项值。
|
||||
*
|
||||
* @template T - 返回值的类型。
|
||||
* @param {OptionModel.Option[]} options - 选项数组。
|
||||
* @param {string} keyName - 要查找的键名。
|
||||
* @param {T} [defaultValue] - 默认值,当选项值为空时返回。
|
||||
* @returns {T} - 指定键名的选项值。
|
||||
* @throws {Error} - 当选项数组为空时抛出错误。
|
||||
* @throws {Error} - 当找不到指定键名的选项时抛出错误。
|
||||
* @throws {Error} - 当处理选项值时发生错误时抛出错误。
|
||||
*/
|
||||
export function getOptionsValue<T>(options: OptionModel.Option[], keyName: string, defaultValue?: T): T {
|
||||
|
||||
const option = options.find(x => x.key === keyName);
|
||||
if (!option) {
|
||||
throw new Error(`Option with key '${keyName}' not found`);
|
||||
}
|
||||
|
||||
if (isEmpty(option.value) && defaultValue) {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
try {
|
||||
switch (option.type) {
|
||||
case OptionType.String:
|
||||
return option.value as T;
|
||||
case OptionType.JSON:
|
||||
return JSON.parse(option.value) as T;
|
||||
case OptionType.Number:
|
||||
return Number(option.value) as T;
|
||||
default:
|
||||
throw new Error(`Unsupported option type: ${option.type}`);
|
||||
}
|
||||
} catch (error: any) {
|
||||
throw new Error(`Error processing option '${keyName}': ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定键名的选项字符串值。
|
||||
*
|
||||
* @param options - 包含选项的数组。
|
||||
* @param keyName - 要查找的选项键名。
|
||||
* @param defaultValue - 如果未找到选项或选项值为空时返回的默认值(可选)。
|
||||
* @returns 对应键名的选项字符串值。
|
||||
* @throws 如果选项数组为空时抛出错误。
|
||||
* @throws 如果未找到指定键名的选项且未提供默认值时抛出错误。
|
||||
* @throws 如果处理选项值时发生错误抛出错误。
|
||||
*/
|
||||
export function getOptionsStringValue(options: OptionModel.Option[], keyName: string, defaultValue?: string): string {
|
||||
// if (options.length === 0) {
|
||||
// throw new Error("Options array is empty");
|
||||
// }
|
||||
const option = options.find(x => x.key === keyName);
|
||||
if (!option) {
|
||||
if (defaultValue !== undefined) {
|
||||
return defaultValue;
|
||||
}
|
||||
throw new Error(`Option with key '${keyName}' not found`);
|
||||
}
|
||||
|
||||
if (isEmpty(option.value)) {
|
||||
return defaultValue ?? "";
|
||||
}
|
||||
|
||||
try {
|
||||
switch (option.type) {
|
||||
case OptionType.String:
|
||||
case OptionType.JSON:
|
||||
return String(option.value);
|
||||
case OptionType.Number:
|
||||
return String(Number(option.value));
|
||||
default:
|
||||
throw new Error(`Unsupported option type: ${option.type}`);
|
||||
}
|
||||
} catch (error) {
|
||||
if (error instanceof Error) {
|
||||
throw new Error(`Error processing option '${keyName}': ${error.message}`);
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
import { request } from "@umijs/max";
|
||||
|
||||
/**
|
||||
* 获取 TTS 选项
|
||||
* @returns {Promise<OptionModel.Option[]>} 返回一个包含 OptionModel.Option 对象的 Promise
|
||||
* @throws {Error} 如果响应代码不是 1,则抛出错误
|
||||
*/
|
||||
export async function GetOptions(optionsKey: string): Promise<OptionModel.Option[]> {
|
||||
let res = await request<ApiResponse.SuccessItem<OptionModel.Option[]>>(`/lms/LaitoolOptions/GetAllOptions/${optionsKey}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
});
|
||||
console.log("GetTTSOptions", res)
|
||||
if (res.code != 1) {
|
||||
throw new Error(res.message);
|
||||
}
|
||||
return res.data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存选项
|
||||
* @param {string} key 选项的键
|
||||
* @param {string} value 选项的值
|
||||
* @returns {Promise<void>} 返回一个 Promise
|
||||
* @throws {Error} 如果响应代码不是 1,则抛出错误
|
||||
*/
|
||||
export async function SaveOptions(options: object): Promise<void> {
|
||||
|
||||
let data: { key: string; value: any; }[] = [];
|
||||
Object.entries(options).reduce((acc, [key, value]) => {
|
||||
data.push({ key: key, value: value });
|
||||
return "";
|
||||
}, {});
|
||||
console.log("SaveOptionsDataParams", data)
|
||||
|
||||
let res = await request<ApiResponse.SuccessItem<boolean>>('/lms/LaitoolOptions/ModifyOptions', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: data
|
||||
});
|
||||
if (res.code != 1) {
|
||||
throw new Error(res.message);
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ import { errorMessage } from './response';
|
||||
*/
|
||||
export async function getPromptSample(typeId: string, pageSize: number | undefined, current: number | undefined, options?: { [key: string]: any }): Promise<API.SuccessItem | API.ErrorItem> {
|
||||
try {
|
||||
debugger
|
||||
|
||||
return await request(`/api/Prompt/GetPromptString/${typeId}/${pageSize}/${current}`, {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
@@ -24,7 +24,7 @@ export async function getPromptSample(typeId: string, pageSize: number | undefin
|
||||
|
||||
export async function getPromptDetail(id: string): Promise<API.SuccessItem | API.ErrorItem> {
|
||||
try {
|
||||
debugger
|
||||
|
||||
return await request(`/api/Prompt/GetPromptDetailById/${id}`, {
|
||||
method: 'GET',
|
||||
});
|
||||
@@ -122,7 +122,7 @@ export async function addPromptType(data: Prompt.AddPromptType): Promise<API.Suc
|
||||
*/
|
||||
export async function editPromptType(data: Prompt.AddPromptType): Promise<API.SuccessItem | API.ErrorItem> {
|
||||
try {
|
||||
debugger
|
||||
|
||||
let res = await request('/api/Prompt/ModifyPromptType', {
|
||||
method: 'POST',
|
||||
data: {
|
||||
|
||||
Vendored
+7
@@ -18,6 +18,13 @@ declare namespace AccessType {
|
||||
isAdminOrSuperAdmin: boolean;
|
||||
//#endregion
|
||||
|
||||
//#region 软件配置项操作权限
|
||||
/** 是不是可以操作配置型 */
|
||||
canOptions : boolean;
|
||||
/** 是不是可以操作软件配置项 */
|
||||
canLaitoolOptions : boolean;
|
||||
//#endregion
|
||||
|
||||
//#region 机器权限
|
||||
/** 是不是显示机器码管理的菜单 */
|
||||
canMachineManagement: boolean
|
||||
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
declare namespace DubModel {
|
||||
|
||||
//#region EdgeTTs
|
||||
|
||||
/** Edge TTS 的配音角色数据 */
|
||||
type EdgeTTsRole = {
|
||||
value: string,
|
||||
gender: string | 'Female' | "Male",
|
||||
label: string,
|
||||
lang: string,
|
||||
}
|
||||
|
||||
//#endregion
|
||||
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
|
||||
declare namespace OptionModel {
|
||||
|
||||
type Option = {
|
||||
key: string;
|
||||
value: string;
|
||||
type: OptionType;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user