提交额外资源

This commit is contained in:
2025-10-16 20:18:20 +08:00
parent 9b02fea0c0
commit 12af3c74f2
9 changed files with 1600 additions and 0 deletions

100
electron/controller/java.js Normal file
View File

@@ -0,0 +1,100 @@
const path = require('path');
// 动态获取 scripts 目录路径
function getScriptsPath(scriptName) {
// 开发环境
const devPath = path.join(__dirname, '../../scripts', scriptName);
// 生产环境(打包后)
const prodPath = path.join(process.resourcesPath, 'scripts', scriptName);
try {
// 先尝试开发环境路径
require.resolve(devPath);
return devPath;
} catch (e) {
// 如果开发环境路径不存在,使用生产环境路径
return prodPath;
}
}
// 延迟加载 JavaRunner
let JavaRunner = null;
function getJavaRunner() {
if (!JavaRunner) {
JavaRunner = require(getScriptsPath('java-runner'));
}
return JavaRunner;
}
/**
* Java 控制器 - 提供 JRE 管理和 Java 程序调用接口
*/
class JavaController {
/**
* 检查 JRE 是否可用
*/
async checkAvailability() {
try {
const JavaRunnerClass = getJavaRunner();
const javaRunner = new JavaRunnerClass();
const available = javaRunner.isJREAvailable();
return { success: true, data: { available } };
} catch (error) {
return { success: false, message: error.message };
}
}
/**
* 获取 Java 版本
*/
async getVersion() {
try {
const JavaRunnerClass = getJavaRunner();
const javaRunner = new JavaRunnerClass();
const version = await javaRunner.getVersion();
return { success: true, data: { version } };
} catch (error) {
return { success: false, message: error.message };
}
}
/**
* 获取 JRE 路径信息
*/
async getPathInfo() {
try {
const JavaRunnerClass = getJavaRunner();
const javaRunner = new JavaRunnerClass();
const pathInfo = javaRunner.getPathInfo();
return { success: true, data: pathInfo };
} catch (error) {
return { success: false, message: error.message };
}
}
/**
* 运行 JAR 文件(异步,等待完成)
* @param {Object} params - { jarPath, args }
*/
async runJar(params) {
const { jarPath, args = [] } = params;
if (!jarPath) {
return { success: false, message: 'JAR path is required' };
}
try {
const JavaRunnerClass = getJavaRunner();
const javaRunner = new JavaRunnerClass();
const exitCode = await javaRunner.runJarAsync(jarPath, args);
return { success: true, data: { exitCode } };
} catch (error) {
return { success: false, message: error.message };
}
}
}
JavaController.toString = () => '[class JavaController]';
module.exports = JavaController;

View File

@@ -0,0 +1,75 @@
const path = require('path');
// 动态获取 scripts 目录路径
function getScriptsPath(scriptName) {
// 开发环境
const devPath = path.join(__dirname, '../../scripts', scriptName);
// 生产环境(打包后)
const prodPath = path.join(process.resourcesPath, 'scripts', scriptName);
try {
// 先尝试开发环境路径
require.resolve(devPath);
return devPath;
} catch (e) {
// 如果开发环境路径不存在,使用生产环境路径
return prodPath;
}
}
// 延迟加载 MySQLManager
let MySQLManager = null;
function getMySQLManager() {
if (!MySQLManager) {
MySQLManager = require(getScriptsPath('start-mysql'));
}
return MySQLManager;
}
class MySQLController {
/**
* 启动MySQL服务
*/
async start() {
try {
const MySQLManagerClass = getMySQLManager();
const mysqlManager = new MySQLManagerClass();
await mysqlManager.start();
return { success: true, message: 'MySQL started successfully' };
} catch (error) {
return { success: false, message: error.message };
}
}
/**
* 停止MySQL服务
*/
async stop() {
try {
const MySQLManagerClass = getMySQLManager();
const mysqlManager = new MySQLManagerClass();
await mysqlManager.stop();
return { success: true, message: 'MySQL stopped successfully' };
} catch (error) {
return { success: false, message: error.message };
}
}
/**
* 获取MySQL连接配置
*/
async getConnectionConfig() {
try {
const MySQLManagerClass = getMySQLManager();
const mysqlManager = new MySQLManagerClass();
const config = mysqlManager.getConnectionConfig();
return { success: true, data: config };
} catch (error) {
return { success: false, message: error.message };
}
}
}
MySQLController.toString = () => '[class MySQLController]';
module.exports = MySQLController;