添加软件基础配置

This commit is contained in:
2024-10-18 12:46:58 +08:00
parent 9618ae6b14
commit 11a23c92df
21 changed files with 482 additions and 22 deletions
+5
View File
@@ -0,0 +1,5 @@
export enum OptionType {
String = 1,
JSON = 2,
Number = 3,
}
+2 -4
View File
@@ -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);
}
}
+3 -3
View File
@@ -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: {
+7
View File
@@ -18,6 +18,13 @@ declare namespace AccessType {
isAdminOrSuperAdmin: boolean;
//#endregion
//#region 软件配置项操作权限
/** 是不是可以操作配置型 */
canOptions : boolean;
/** 是不是可以操作软件配置项 */
canLaitoolOptions : boolean;
//#endregion
//#region 机器权限
/** 是不是显示机器码管理的菜单 */
canMachineManagement: boolean
+15
View File
@@ -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
View File
@@ -0,0 +1,9 @@
declare namespace OptionModel {
type Option = {
key: string;
value: string;
type: OptionType;
}
}