# PQS-9100 Tool Client ## 项目简介 这是一个基于 Electron 的桌面端小工具,用于离线生成和管理设备激活码。 项目定位: - 面向 C 端桌面使用场景 - 不依赖后端服务 - 数据保存在本地内置 SQLite 数据库 - 当前核心业务为设备激活记录管理 该项目是在 `electron-egg` 模板基础上裁剪和扩展得到,现阶段实际业务代码集中在“设备激活”模块。 ## 技术栈 - 桌面框架:Electron 31 - Electron 应用框架:electron-egg / ee-core - 前端框架:Vue 3 - UI 组件库:Ant Design Vue - 构建工具:Vite 6 - 本地数据库:better-sqlite3 - 日期处理:dayjs - 加解密:jsencrypt ## 项目结构 ```text . ├─electron/ Electron 主进程代码 │ ├─config/ 应用配置 │ ├─controller/ IPC 控制器 │ ├─preload/ 应用启动与 preload 逻辑 │ ├─service/ 主进程服务 │ │ ├─database/ 本地数据库封装 │ │ └─os/ 托盘、窗口、安全、更新等系统能力 │ └─main.ts Electron 入口 ├─frontend/ Vue 前端应用 │ ├─src/ │ │ ├─api/ IPC 路由定义 │ │ ├─assets/ 静态资源与样式 │ │ ├─layouts/ 页面布局 │ │ ├─router/ 路由配置 │ │ ├─utils/ 工具函数 │ │ └─views/activate/ 激活业务页面 │ ├─.env.development 开发环境变量 │ ├─.env.production 生产环境变量 │ └─vite.config.ts 前端构建配置 ├─build/ 打包资源 ├─cmd/ electron-builder 配置 ├─public/ Electron 公共资源 ├─package.json 根脚本与 Electron 依赖 └─README.md 项目说明 ``` ## 核心功能 ### 1. 设备激活码生成 前端页面提供以下能力: - 录入设备申请码 - 选择需要激活的模块 - 生成设备激活码 - 复制激活码 - 填写备注 当前支持的模块有: - `simulate` - `digital` - `contrast` ### 2. 激活记录管理 激活记录页面支持: - 按 `macAddress` 查询 - 按模块组合查询 - 查看历史激活记录 - 复制历史记录中的激活码 - 将新生成的激活记录保存到本地数据库 ### 3. 本地数据库存储 项目不依赖后端,激活记录直接写入本地 SQLite。 当前数据库文件名: - `pqs9100-tool.db` 当前表: - `activate_record` 主要字段: - `id` - `macAddress` - `applicationCode` - `module` - `activationCode` - `createTime` - `remark` ## 业务流程 整体流程如下: 1. 用户在前端输入设备申请码。 2. 前端使用 RSA 私钥解密申请码,解析出设备信息。 3. 用户选择需要激活的模块。 4. 前端组装激活码明文后,再用 RSA 公钥加密生成激活码。 5. 用户点击保存后,前端通过 IPC 调用主进程。 6. 主进程将记录写入本地 SQLite 数据库。 7. 列表页面通过 IPC 查询本地数据库并展示历史记录。 ## 核心代码说明 ### Electron 主进程 - `electron/main.ts` - 应用启动入口 - 注册生命周期与 preload - `electron/preload/index.ts` - 启动时初始化托盘 - 初始化安全服务 - 初始化自动更新服务 - 初始化本地数据库 - `electron/preload/lifecycle.ts` - 控制应用 ready、窗口 ready、关闭前等生命周期行为 - 启动后自动设置主窗口大小和位置 ### 数据库相关 - `electron/service/database/basedb.ts` - SQLite 基础封装 - 负责数据库文件路径和连接初始化 - `electron/service/database/activateRecord.ts` - `activate_record` 表初始化 - 保存激活记录 - 查询激活记录 - 删除记录等数据库操作 - `electron/controller/activateRecord.ts` - 暴露激活记录相关 IPC 接口 ### 前端相关 - `frontend/src/main.ts` - Vue 应用入口 - 注册 Ant Design Vue 和全局组件 - `frontend/src/router/routerMap.ts` - 当前仅注册一个业务页面:`/activate` - `frontend/src/layouts/AppSider.vue` - 左侧菜单布局 - 当前只包含“设备激活”菜单 - `frontend/src/views/activate/index.vue` - 激活记录查询页面 - 激活记录展示、查询、复制、保存入口 - `frontend/src/views/activate/ActiveForm.vue` - 激活码生成表单 - 处理申请码解析、模块选择、激活码生成 - `frontend/src/utils/rsa.ts` - RSA 加解密封装 - `frontend/src/utils/ipcRenderer.ts` - 渲染进程 IPC 调用封装 ## 路由与界面 当前前端只有一条实际业务路由: - `/activate` 设备激活页面 左侧菜单当前也只有一个入口: - 设备激活 因此,整个系统目前可以理解为“单页面桌面工具”,所有主要功能都集中在这一个界面中完成。 当前页面的详细说明已单独整理到: - `docs/current-page.md` ## 配置说明 ### 根目录脚本 常用命令: - `npm run dev` 启动 Electron + 前端开发环境 - `npm run dev-frontend` 仅启动前端 - `npm run dev-electron` 仅启动 Electron - `npm run build` 构建前端、Electron 并执行加密 - `npm run build-w` 构建 Windows 安装包 ### 前端环境变量 位于: - `frontend/.env.development` - `frontend/.env.production` 当前已使用的变量主要有: - `VITE_TITLE` - `VITE_RSA_PUBLIC_KEY` - `VITE_RSA_PRIVATE_KEY` - `VITE_RSA_CAN_EDIT` ## 数据存储说明 数据库由主进程在应用启动时初始化。 数据库初始化入口: - `electron/preload/index.ts` 数据库基础路径由 `ee-core` 提供的数据目录决定,实际数据库文件保存在应用数据目录下的 `db` 子目录中。 ## 当前项目特征总结 从当前代码看,项目有以下特点: - 业务功能集中,当前只有激活工具这一个主要模块 - 没有后端依赖,所有数据均在本地处理和存储 - 前端负责激活码的生成逻辑 - 主进程负责数据库初始化与数据持久化 - 项目仍保留部分 `electron-egg` 模板能力和示例代码 - 现有目录中存在一些当前业务未直接使用的模板模块,可在后续按需要继续裁剪 ## 适合后续演进的方向 结合当前项目现状,后续工作更适合围绕以下方向展开: - 梳理并精简模板残留代码 - 完善激活记录管理能力 - 增加导入、导出、删除、编辑等本地数据操作 - 统一页面文案、编码和可维护性 - 补充更明确的项目文档与交付说明 ## 运行说明 ### 开发环境 ```bash npm install npm run dev ``` ### 构建 ```bash npm run build ``` Windows 安装包构建: ```bash npm run build-w ``` ## 补充说明 - 原仓库中的 `README.zh-CN.md` 更偏向上游模板说明 - 当前 `README.md` 旨在描述本项目自身,而不是 `electron-egg` 模板本身 - 如果后续继续迭代业务,建议优先维护本文件,保证项目文档与实际实现一致