提交额外资源
This commit is contained in:
100
electron/controller/java.js
Normal file
100
electron/controller/java.js
Normal 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;
|
||||
|
||||
75
electron/controller/mysql.js
Normal file
75
electron/controller/mysql.js
Normal 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;
|
||||
Reference in New Issue
Block a user