# noladmin **Repository Path**: koeiol/noladmin ## Basic Information - **Project Name**: noladmin - **Description**: 游戏事件后端服务 这是一个轻量级的游戏事件数据收集和分析后端,支持企业微信小工具接入。 功能特点 接收游戏脚本发送的事件数据 存储事件数据到 SQLite 数据库 提供事件数据统计分析 API 支持企业微信小工具接入 Docker 容器化部署 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-28 - **Last Updated**: 2025-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 游戏事件后端服务 这是一个轻量级的游戏事件数据收集和分析后端,支持企业微信小工具接入。 ## 功能特点 - 接收游戏脚本发送的事件数据 - 存储事件数据到 SQLite 数据库 - 提供事件数据统计分析 API - 支持企业微信小工具接入 - Docker 容器化部署 ## 技术栈 - Node.js + Express - SQLite 数据库 - Docker 容器化 ## 快速开始 ### 本地开发 1. 复制环境变量配置文件: ```bash cp .env-example .env ``` 2. 安装依赖: ```bash npm install ``` 3. 启动开发服务器: ```bash npm run dev ``` 或者使用启动脚本: ```bash ./start.sh ``` ### Docker 部署 1. 构建 Docker 镜像: ```bash docker-compose build ``` 2. 启动服务: ```bash docker-compose up -d ``` ## API 接口 ### 记录事件 ``` POST /api/events/record ``` 请求体示例: ```json { "event_type": "game_start", "event_data": { "level": 1 }, "user_id": "user123", "session_id": "sess456", "script_source": "game_client_v1", "script_version": "1.0.0" } ``` ### 获取统计数据 ``` GET /api/events/stats ``` 可选查询参数:`script_source` - 按脚本来源筛选 ### 获取脚本来源列表 ``` GET /api/events/sources ``` ### 企业微信数据接口 ``` POST /api/wework/data ``` 可选查询参数:`script_source` - 按脚本来源筛选 ### 脚本来源管理 ``` GET /api/script-sources ``` 获取所有脚本来源详情 ``` POST /api/script-sources ``` 添加新的脚本来源,请求体示例: ```json { "name": "game_client_v2", "description": "游戏客户端V2版本" } ``` ``` PUT /api/script-sources/:id ``` 更新脚本来源信息,请求体示例: ```json { "description": "更新后的描述" } ``` ## 配置说明 在 `.env` 文件中配置以下参数: - `BIND_HOST`: 容器绑定的主机地址 - `BIND_PORT`: 容器绑定的主机端口 - `SERVER_PORT`: 服务器端口号 - `PROTOCOL`: 协议类型(http 或 https),决定生成的链接使用哪种协议 - `DB_PATH`: SQLite 数据库文件路径 - `WEWORK_CORP_ID`: 企业微信企业 ID - `WEWORK_AGENT_ID`: 企业微信应用 ID - `WEWORK_SECRET`: 企业微信应用密钥 ## 域名配置 使用 Nginx 或 Caddy 配置反向代理和 HTTPS。 ### Nginx 配置示例 ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } ``` ### Caddy 配置示例 ``` your-domain.com { reverse_proxy localhost:3000 } ``` ## 测试 API ### 使用 curl 或 Postman 测试 API ```bash # 记录事件 curl -X POST http://localhost:3000/api/events/record \ -H "Content-Type: application/json" \ -d '{"event_type":"game_start","event_data":{"level":1},"user_id":"user123","session_id":"sess456","script_source":"game_client_v1","script_version":"1.0.0"}' # 获取统计数据 curl http://localhost:3000/api/events/stats ``` ### 使用测试脚本 项目包含一个测试脚本,可以模拟不同脚本来源发送事件数据: ```bash # 发送20个随机事件(默认) node test-events.js # 发送指定数量的随机事件 node test-events.js 50