feat: init ts

This commit is contained in:
gaoshuaixing
2025-01-07 19:08:48 +08:00
parent 3bee5f6d82
commit 8feb15ff4e
36 changed files with 1 additions and 55 deletions

View File

@@ -1,270 +0,0 @@
'use strict';
const dayjs = require('dayjs');
const path = require('path');
const fs = require('fs');
const { exec } = require('child_process');
const { app: electronApp, shell } = require('electron');
const { getExtraResourcesDir } = require('ee-core/ps');
const { logger } = require('ee-core/log');
const { getConfig } = require('ee-core/config');
const { frameworkService } = require('../service/framework');
const { sqlitedbService } = require('../service/database/sqlitedb');
const { autoUpdaterService } = require('../service/os/auto_updater');
/**
* framework - demo
* @class
*/
class FrameworkController {
/**
* 所有方法接收两个参数
* @param args 前端传的参数
* @param event - ipc通信时才有值。详情见控制器文档
*/
/**
* sqlite数据库操作
*/
async sqlitedbOperation(args) {
const { action, info, delete_name, update_name, update_age, search_age, data_dir } = args;
const data = {
action,
result: null,
all_list: [],
code: 0
};
try {
// test
sqlitedbService.getDataDir();
} catch (err) {
console.log(err);
data.code = -1;
return data;
}
switch (action) {
case 'add' :
data.result = await sqlitedbService.addTestDataSqlite(info);;
break;
case 'del' :
data.result = await sqlitedbService.delTestDataSqlite(delete_name);;
break;
case 'update' :
data.result = await sqlitedbService.updateTestDataSqlite(update_name, update_age);
break;
case 'get' :
data.result = await sqlitedbService.getTestDataSqlite(search_age);
break;
case 'getDataDir' :
data.result = await sqlitedbService.getDataDir();
break;
case 'setDataDir' :
data.result = await sqlitedbService.setCustomDataDir(data_dir);
break;
}
data.all_list = await sqlitedbService.getAllTestDataSqlite();
return data;
}
/**
* 调用其它程序exe、bash等可执行程序
*
*/
openSoftware(args) {
const { softName } = args;
const softwarePath = path.join(getExtraResourcesDir(), softName);
logger.info('[openSoftware] softwarePath:', softwarePath);
// 检查程序是否存在
if (!fs.existsSync(softwarePath)) {
return false;
}
// 命令行字符串 并 执行, start 命令后面的路径要加双引号
const cmdStr = `start "${softwarePath}"`;
exec(cmdStr);
// 方法二
// 使用cross模块
return true;
}
/**
* 检测http服务是否开启
*/
async checkHttpServer() {
const { enable, protocol, host, port } = getConfig().httpServer;
const url = protocol + host + ':' + port;
console.log('[checkHttpServer] url:', url);
const data = {
enable: enable,
server: url
}
return data;
}
/**
* 一个 http 请求
* args 是 前端传的参数
* ctx 是 koa 的 ctx 对象
*/
async doHttpRequest(args, ctx) {
const httpInfo = {
args,
method: ctx.request.method,
query: ctx.request.query,
body: ctx.request.body
}
logger.info('httpInfo:', httpInfo);
const { id } = args;
if (!id) {
return false;
}
const dir = electronApp.getPath(id);
shell.openPath(dir);
return true;
}
/**
* 一个socket io请求访问此方法
*/
async doSocketRequest(args) {
const { id } = args;
if (!id) {
return false;
}
const dir = electronApp.getPath(id);
shell.openPath(dir);
return true;
}
/**
* 异步消息类型
*/
async ipcInvokeMsg(args) {
let timeNow = dayjs().format('YYYY-MM-DD HH:mm:ss');
const data = args + ' - ' + timeNow;
return data;
}
/**
* 同步消息类型
*/
async ipcSendSyncMsg(args) {
let timeNow = dayjs().format('YYYY-MM-DD HH:mm:ss');
const data = args + ' - ' + timeNow;
return data;
}
/**
* 双向异步通信
*/
ipcSendMsg(args, event) {
const { type, content } = args;
const data = frameworkService.bothWayMessage(type, content, event);
return data;
}
/**
* 任务
*/
someJob(args, event) {
const { jobId, action} = args;
let result;
switch (action) {
case 'create':
result = frameworkService.doJob(jobId, action, event);
break;
case 'close':
frameworkService.doJob(jobId, action, event);
break;
case 'pause':
frameworkService.doJob(jobId, action, event);
break;
case 'resume':
frameworkService.doJob(jobId, action, event);
break;
default:
}
let data = {
jobId,
action,
result
}
return data;
}
/**
* 创建任务池
*/
async createPool(args, event) {
let num = args.number;
frameworkService.doCreatePool(num, event);
// test monitor
frameworkService.monitorJob();
return;
}
/**
* 通过进程池执行任务
*/
someJobByPool(args, event) {
const { jobId, action } = args;
let result;
switch (action) {
case 'run':
result = frameworkService.doJobByPool(jobId, action, event);
break;
default:
}
let data = {
jobId,
action,
result
}
return data;
}
/**
* 检查是否有新版本
*/
checkForUpdater() {
autoUpdaterService.checkUpdate();
return;
}
/**
* 下载新版本
*/
downloadApp() {
autoUpdaterService.download();
return;
}
/**
* 测试接口
*/
hello(args) {
logger.info('hello ', args);
}
}
FrameworkController.toString = () => '[class FrameworkController]';
module.exports = FrameworkController;