英飒
- Implemented logic to notify users when challenge scores are confirmed, prompting a refresh of match details. - Updated the match controller to use sendToUser for sending challenge response notifications, improving notification handling. - Added checks to ensure match details are only refreshed for the relevant match, enhancing data accuracy and user experience. |
||
|---|---|---|
| .trae/documents | ||
| admin | ||
| logo | ||
| miniprogram | ||
| server | ||
| .gitignore | ||
| README.md | ||
英飒俱乐部 - 羽毛球/网球俱乐部管理系统
一个完整的英飒俱乐部会员管理系统,包含微信小程序端和后台管理界面。
项目结构
yingsha/
├── server/ # Node.js 后端服务
├── admin/ # Vue3 后台管理界面
├── miniprogram/ # 微信小程序
└── README.md
技术栈
- 后端: Node.js + Express + Sequelize + MySQL + WebSocket
- 管理后台: Vue 3 + Element Plus + Pinia + Vite
- 小程序: 原生微信小程序
功能特性
小程序端
- 用户自动注册,生成唯一会员码
- 天梯排名系统(按战力值排序,区分男女)
- 挑战赛(扫码发起挑战,实时通知)
- 排位赛(单循环赛制,自动匹配,淘汰赛)
- 积分商城(兑换商品,二维码核销)
- 多门店支持
后台管理
- 用户管理(超级管理员)
- 门店管理(多门店)
- 天梯用户管理(等级、战力值)
- 比赛管理(挑战赛、排位赛)
- 积分行为管理(扫码加分)
- 积分商品管理
- 兑换订单管理(扫码核销)
- 系统用户管理(权限控制)
快速开始
1. 后端服务
cd server
# 安装依赖
npm install
# 配置环境变量
copy env-template.txt .env # Windows
# cp env-template.txt .env # Linux/Mac
# 编辑 .env 文件,填入实际配置
# 初始化数据库(首次运行)
npm run db:init
# 启动服务
npm run dev
环境变量配置
在 server 目录下创建 .env 文件,配置以下参数:
必需配置
| 参数 | 说明 | 示例 |
|---|---|---|
DB_PASSWORD |
MySQL 数据库密码 | your_password |
JWT_SECRET |
JWT 签名密钥(建议 32 位以上) | a1b2c3d4... |
WX_APPID |
微信小程序 AppID | wx1234567890abcdef |
WX_SECRET |
微信小程序 AppSecret | your_secret_key |
可选配置
| 参数 | 默认值 | 说明 |
|---|---|---|
NODE_ENV |
development |
运行环境:development / production |
PORT |
3000 |
服务端口 |
DB_HOST |
localhost |
数据库主机 |
DB_PORT |
3306 |
数据库端口 |
DB_NAME |
yingsha |
数据库名称 |
DB_USER |
root |
数据库用户名 |
JWT_EXPIRES_IN |
7d |
Token 过期时间 |
生成 JWT 密钥
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
完整配置示例
# 服务器配置
NODE_ENV=development
PORT=3000
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_NAME=yingsha
DB_USER=root
DB_PASSWORD=your_password
# JWT 配置
JWT_SECRET=your_32_character_secret_key_here
JWT_EXPIRES_IN=7d
# 微信小程序配置
WX_APPID=wx1234567890abcdef
WX_SECRET=your_wechat_secret_key
⚠️ 安全提示:
.env文件包含敏感信息,请勿提交到版本控制系统
2. 后台管理界面
cd admin
# 安装依赖
npm install
# 配置环境变量(可选,用于地图功能)
copy env-template.txt .env.local # Windows
# cp env-template.txt .env.local # Linux/Mac
# 启动开发服务
npm run dev
访问 http://localhost:8080,默认账号:admin / admin123
管理后台环境变量
在 admin 目录下创建 .env.local 文件(详细模板见 admin/env-template.txt):
| 参数 | 必需 | 默认值 | 说明 |
|---|---|---|---|
VITE_API_URL |
否 | /api |
后端 API 地址 |
VITE_AMAP_KEY |
是* | 无 | 高德地图 JS API Key |
VITE_AMAP_SECURITY_CODE |
是* | 无 | 高德地图安全密钥 |
VITE_APP_TITLE |
否 | 英飒俱乐部管理后台 |
应用标题 |
*注:如不使用门店地址定位功能,可不配置高德地图相关参数
完整配置示例:
# 后端 API 地址(使用 Vite 代理时保持默认)
VITE_API_URL=/api
# 高德地图配置(用于门店地址定位)
VITE_AMAP_KEY=your_amap_js_api_key
VITE_AMAP_SECURITY_CODE=your_security_code
# 应用标题
VITE_APP_TITLE=英飒俱乐部管理后台
高德地图配置说明
门店管理中的地址定位功能需要配置高德地图 JS API:
- 访问 高德开放平台 注册账号
- 进入「应用管理」→「我的应用」→「创建新应用」
- 添加 Key,选择「Web 端(JS API)」
- 在应用详情页生成「安全密钥」
- 将 Key 和安全密钥填入
admin/.env.local:VITE_AMAP_KEY= 你的 KeyVITE_AMAP_SECURITY_CODE= 你的安全密钥
💡 高德地图提供免费配额,个人开发者每日调用量足够使用
3. 微信小程序
- 使用微信开发者工具打开
miniprogram目录 - 修改
app.js中的baseUrl为你的后端服务地址 - 在
project.config.json中填入你的小程序 AppID
数据库
使用 MySQL 数据库,首次运行 npm run db:init 会自动创建表结构和初始数据。
主要数据表
| 表名 | 说明 |
|---|---|
| users | 小程序用户 |
| stores | 门店 |
| ladder_users | 天梯用户 |
| matches | 比赛 |
| match_games | 对局 |
| point_actions | 积分行为 |
| point_products | 积分商品 |
| point_orders | 兑换订单 |
| system_users | 后台用户 |
战力值计算规则
- 基础胜场分:+15 分
- 基础负场分:-5 分
- 以下克上:分差 ≥100 时,额外+10%分差奖励
- 新手保护:Lv1-2 前 5 场输分减半
- 单场封顶:±50 分
- 比赛权重:日常 x1.0,挑战赛 x1.5,总决赛 x2.0
升降级规则
- 月度排位赛冠亚军:晋升
- 月度排位赛末位:降级
- 每月至少 3 场比赛才计入排名
等级说明
| 等级 | 名称 | 描述 |
|---|---|---|
| Lv1 | 新锐 | 掌握基础动作,能进行多拍回合 |
| Lv2 | 精锐 | 技术较全面,具备初步战术意识 |
| Lv3 | 高手 | 技术稳定,战术意图清晰 |
| Lv4 | 大师 | 英飒俱乐部顶尖战力 |
| Lv5 | 宗师 | 技术全面,英飒俱乐部标杆 |
主题配色
- 主色:
#FF6B35活力橙 - 辅助色:
#2EC4B6清新青 - 强调色:
#FFBA08能量黄 - 深色背景:
#1A1A2E - 浅色背景:
#F8F9FA
许可证
MIT License