# 双色球模拟器 **Repository Path**: orange_half/LottoSim ## Basic Information - **Project Name**: 双色球模拟器 - **Description**: 双色球模拟器 娱乐版 - **Primary Language**: NodeJS - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-30 - **Last Updated**: 2026-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 双色球模拟器 基于 Vue 3 + Koa 的双色球模拟投注系统,支持实时开奖和奖池累计功能。 ## 功能特性 - 🎯 **自选/机选号码** - 支持手动选择或随机生成投注号码 - 💰 **奖池累计** - 一等奖无人中奖时,奖池金额自动滚入下一期 - 🔔 **实时开奖** - 通过 WebSocket 实时推送开奖结果 - 📊 **投注记录** - 完整的中奖记录和奖金查询 - 👤 **个人中心** - 余额管理、昵称修改等功能 - 🔐 **管理员面板** - 开奖管理、系统设置(后台地址:`/admin`) ## 技术栈 **后端** - Koa 2 + koa-router - Socket.io(实时通信) - Cron(定时开奖任务) - JSON 文件存储 **前端** - Vue 3 + Composition API - Vite(构建工具) - Socket.io-client - Axios ## 项目结构 ``` LottoSim/ ├── backend/ # 后端服务 │ ├── routes/ # API 路由 │ │ ├── user.js # 用户相关 │ │ ├── bet.js # 投注相关 │ │ ├── issue.js # 期数相关 │ │ └── admin.js # 管理员相关 │ ├── services/ # 业务逻辑 │ │ └── lotteryService.js # 开奖服务 │ ├── utils/ # 工具函数 │ │ ├── lottery.js # 彩票算法 │ │ ├── issue.js # 期数管理 │ │ ├── file.js # 文件操作 │ │ └── sensitive.js # 敏感词过滤 │ ├── data/ # 数据存储 │ │ ├── users.json # 用户数据 │ │ ├── bets.json # 投注记录 │ │ ├── issues.json # 期数信息 │ │ ├── wallet.json # 钱包余额 │ │ └── settings.json # 系统设置 │ └── server.js # 服务入口 ├── frontend/ # 前端应用 │ ├── src/ │ │ ├── api/ # API 请求 │ │ ├── components/ # 公共组件 │ │ ├── pages/ # 页面组件 │ │ └── router/ # 路由配置 │ └── dist/ # 构建输出 ``` ## 中奖规则 | 奖项 | 中奖条件 | 奖金说明 | |------|----------|----------| | 一等奖 | 6+1(6个红球+蓝球全中) | 奖池70% | | 二等奖 | 6+0(6个红球全中) | 奖池20% | | 三等奖 | 5+1 | ¥1000 | | 四等奖 | 5+0 或 4+1 | ¥100 | | 五等奖 | 4+0 或 3+1 | ¥10 | | 六等奖 | 2+1、3+0、1+1 或 0+1 | ¥5 | ## 快速启动 ### 1. 启动后端服务 ```bash cd backend npm install npm run dev ``` 后端服务默认运行在 `http://localhost:3100` ### 2. 启动前端服务 ```bash cd frontend npm install npm run dev ``` 前端默认运行在 `http://localhost:5173` ## 打包部署 ### 前端部署 ```bash cd frontend npm run build ``` 构建产物输出到 `frontend/dist/` 目录,可直接部署到任意静态服务器(如 Nginx、Apache)或对象存储(OSS、COS 等)。 **Nginx 配置示例:** ```nginx server { listen 80; server_name your-domain.com; root /path/to/LottoSim/frontend/dist; index index.html; location / { try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:3100; } location /socket.io { proxy_pass http://localhost:3100; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } ``` ### 后端部署 ```bash cd backend npm install npm start ``` 后端服务默认运行在 `http://localhost:3100`,需确保端口未被占用。 **使用 PM2 部署(推荐):** ```bash npm install -g pm2 pm2 start server.js --name lotto-backend pm2 save pm2 startup ``` **使用 Docker 部署:** ```dockerfile FROM node:18-alpine WORKDIR /app COPY backend/package*.json ./ RUN npm install COPY backend/ . EXPOSE 3100 CMD ["npm", "start"] ``` ### 部署目录结构 推荐部署目录结构如下: ``` /opt/LottoSim/ ├── backend/ │ ├── data/ # 数据目录(需可写权限) │ ├── node_modules/ │ ├── server.js │ └── package.json └── frontend/ └── dist/ # 前端构建产物 ``` ### 环境变量 后端支持以下环境变量配置: | 变量名 | 说明 | 默认值 | |--------|------|--------| | `PORT` | 服务端口 | `3100` | | `DATA_DIR` | 数据存储目录 | `./data` | ## 管理员功能 访问 `/admin` 进入管理后台,可进行以下操作: - 查看系统运行状态 - 手动开奖 - 暂停/恢复定时开奖任务 - 修改每日开奖时间 - 清空数据库 ## 注意事项 - 本项目为娱乐模拟项目,无真实货币交易 - 单注投注价格为 2 金币 - 开奖时间:每日 20:00(可配置) - 默认管理员账号密码均为 `admin`