# qrcode3.0_win **Repository Path**: caidog/qrcode3.0_win ## Basic Information - **Project Name**: qrcode3.0_win - **Description**: 我用于测试的个人小工具 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-12 - **Last Updated**: 2026-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GO QRCode 3.0 服務管理系統 ## 專案概述 GO QRCode 3.0 是一款 Windows 桌面應用程序,用於管理餐飲 QRCode 點餐系統的後端服務。採用 Tkinter GUI + pystray 系統托盤架構,提供直覺的圖形化介面來管理三個核心 Windows 服務。 ## 功能特性 - **服務管理**:一鍵安裝、卸載、啟動、重啟、停止 Windows 系統服務 - **狀態監控**:即時監控三個服務的運行狀態,支援托盤圖示顏色指示 - **系統托盤**:支援最小化到托盤、後台運行 - **配置管理**:圖形化介面修改門店配置(MC_ID、店名、SHOP_ID) - **備份還原**:一鍵備份和還原系統配置 - **版本更新**:支援 OTA 更新功能 - **日誌清理**:定時自動清理日誌檔案,支援自定義清理間隔 ## 系統架構 ### 管理的服務 | 服務名稱 | 說明 | |----------|------| | webman-service | PHP 應用服務(基於 webman-framework) | | node-service | Node.js 前端服務(基於 Vite + Vue) | | redis-service | Redis 緩存服務 | ### 專案目錄結構 ``` qrcode3.0_win/ ├── main.py # 主程序入口(pywebview + pystray) ├── src/ # Python 源碼 │ ├── core/ # 核心模塊 │ │ ├── service_manager.py # 服務管理器(安裝/啟動/停止/卸載) │ │ ├── config_manager.py # 配置管理 │ │ ├── backup_manager.py # 備份管理 │ │ ├── log_manager.py # 日誌管理 │ │ └── app_settings.py # 應用設置 │ └── api/ # API 橋接 │ └── bridge.py # pywebview API 橋接 ├── frontend/ # 前端(Vue 3 + Vite) │ ├── src/ # Vue 源碼 │ ├── dist/ # 構建輸出 │ └── node_modules/ # npm 依賴 ├── projects/ # 業務項目代碼(不納入版本控制) │ ├── node/ # Node.js 前端服務源碼 │ ├── webman/ # PHP 後端服務源碼 │ └── report/ # 報表服務 ├── server/ # 服務器運行環境 │ ├── node22/ # Node.js 22.x │ ├── php82/ # PHP 8.2 │ └── redis/ # Redis 緩存 ├── tools/ # 工具 │ └── nssm/ # NSSM 服務管理工具 ├── config/ # 配置文件 ├── backup/ # 備份文件存放(不納入版本控制) ├── logs/ # 服務日誌(不納入版本控制) ├── update/ # 更新包(不納入版本控制) ├── backup.bat # 備份腳本 ├── restore.bat # 還原腳本 ├── update.bat # 更新腳本 ├── requirements.txt # Python 依賴 └── pyproject.toml # 項目配置 ``` ## 技術棧 - **前端框架**:Vue 3 + Vite + TypeScript + Element Plus - **後端框架**:Webman (PHP) - **消息隊列**:MQTT (Aedes Broker) - **緩存**:Redis - **桌面框架**:pywebview (Python) - **系統托盤**:pystray - **圖標處理**:Pillow (PIL) - **服務管理**:NSSM + Windows Service API ## 安裝與運行 ### 環境需求 - Windows 作業系統(Windows 10/11) - Python 3.10+ - 管理員權限(用於安裝 Windows 服務) ### 安裝依賴 ```bash pip install -r requirements.txt ``` ### 開發模式運行 ```bash # 啟動前端開發服務器 cd frontend npm install npm run dev # 在另一個終端啟動主程序(開發模式) set PYWEBVIEW_DEV=1 python main.py ``` ### 生產模式運行 ```bash # 先構建前端 cd frontend npm run build # 運行主程序 python main.py ``` ### 構建可執行文件 ```bash pyinstaller main.spec ``` 輸出文件:`dist/GO_QRCode_3.0.exe` ## 配置文件 ### 主配置 - `projects/node/public/config.js` - 前端配置文件 - `projects/webman/config/think-orm.php` - 資料庫配置 - `projects/webman/config/database.php` - 資料庫連接 - `config.json` - 應用程序設置(自動備份、日誌清理等) ### 日誌 - `logs/app.log` - 主程序日誌 - `logs/*.log` - 各服務日誌 ## 使用方式 ### 圖形化界面(推薦) ```bash python main.py ``` 啟動後將打開桌面應用窗口,提供以下功能: | 功能 | 說明 | |------|------| | 服務安裝 | 安裝 webman-service、node-service、redis-service、report-service | | 服務啟動 | 一鍵啟動所有服務(自動檢查端口占用) | | 服務停止 | 一鍵停止所有服務 | | 服務重啟 | 一鍵重啟所有服務 | | 服務卸載 | 卸載所有 Windows 服務(需密碼驗證) | | 配置編輯 | 修改門店配置(MC_ID、店名、SHOP_ID) | | 備份還原 | 一鍵備份/還原系統配置 | | 系統更新 | OTA 在線更新 | | 日誌清理 | 定時自動清理日誌檔案 | ### 系統托盤 主窗口關閉後會最小化到系統托盤,右鍵托盤圖標可: - 顯示主窗口 - 啟動/停止/重啟服務 - 退出程序 ### 命令行腳本(保留) | 腳本 | 功能 | 說明 | |------|------|------| | backup.bat | 備份配置 | 備份 projects/node 和 projects/webman 的源碼到 backup/ | | restore.bat | 還原配置 | 從 backup/.zip 恢復配置 | | update.bat | 更新系統 | 從服務器下載更新包並應用 | > **注意**:install/stop/remove/restart/set_port 等腳本已棄用,功能已整合到主程序的 `ServiceManager` 類中。 ## 核心架構 ### ServiceManager(服務管理) 位於 `src/core/service_manager.py`,提供統一的服務管理接口: ```python from src.core.service_manager import ServiceManager sm = ServiceManager(base_dir=".") # 安裝服務(自動添加防火牆規則) sm.install_all() # 啟動服務(自動檢查端口) sm.start_all() # 停止服務 sm.stop_all() # 重啟服務 sm.restart_all() # 卸載服務 for svc in sm.SERVICES: sm.uninstall_service(svc) ``` ### 管理的服務 | 服務名稱 | 說明 | 端口 | |----------|------|------| | webman-service | PHP 應用服務(webman-framework) | 8787 | | node-service | Node.js 前端服務(Vite + Vue) | 1188 | | redis-service | Redis 緩存服務 | 6379 | | report-service | 報表服務 | 1410 | ### 防火牆端口 安裝服務時自動放行以下端口: - 1188, 3306, 8787, 1883, 8084, 1410 ## 安全性 - 卸載服務需要輸入密碼驗證 - 密碼格式:`3308` + 月份(2位,不足補0) - 單例模式:使用文件鎖防止重複運行 - 服務管理:使用 NSSM 以 SYSTEM 權限運行服務 - 防火牆:自動添加 Windows 防火牆入站/出站規則 ## 版本歷史 | 版本 | 日期 | 說明 | |------|------|------| | V3.0 | 2026-04 | 重構版本,使用 pywebview + Vue 3 替代 Tkinter | | V1.1 | 2026-03-27 | 含優化改進及日誌清理功能 | | V1.0 | - | 初版發布 | ## 重構說明 ### V3.0 主要改進 - **UI 重構**:從 Tkinter 遷移到 Vue 3 + pywebview,提供更好的用戶體驗 - **服務管理**:統一的 `ServiceManager` 類管理所有 Windows 服務 - **防火牆集成**:安裝服務時自動添加防火牆規則 - **端口檢查**:啟動服務前自動檢測端口占用 - **代碼結構**:清晰的 MVC 架構,易於維護 ## 依賴套件 ### Python 依賴 ``` pywebview>=5.0 pystray>=0.19.0 Pillow>=9.0.0 pydantic>=2.0 ``` 詳見 `requirements.txt` ### 前端依賴 ``` Vue 3 Vite Element Plus Vue I18n ``` 詳見 `frontend/package.json` ## 許可證 專案僅供內部使用。