billiards
本页由项目自动归档生成,源码与最新进展以 GitHub 仓库为准。
项目简介
撞球派(billiards)是面向球房老板的台球赛事管理小程序,提供从球房注册、赛事发布、球员导入到球桌排产、比分登记、对阵图渲染的完整闭环。后端同时支持微信云开发与 Supabase 两种方案,并配套一个用于现场直播的 Web 电视大屏端,定位为轻量级 B2B2C 赛事 SaaS。
技术栈
| 维度 | 技术 |
|---|---|
| 主要语言/框架 | 微信小程序原生(WXML/WXSS/JS),appid wx1702ae609b433c63 |
| 关键依赖/库 | 微信云开发、Supabase JS、exceljs、express、pg、Cloudflare Workers |
| 数据存储 | 微信云开发数据库 / Supabase Postgres(clubs、players、tournaments、matches 四张表) |
| 运行/部署方式 | 微信开发者工具构建运行;Web 端 web/ 用 Express + pg 经 Docker 部署;Supabase 用 migrations + Edge Functions,经 Cloudflare Worker(api.zhuangqiupai.hummingg.com)代理 |
后端切换由 utils/api.js 的 USE_CLOUD 开关控制:true 走微信云开发 callFunction,false 走 Supabase Edge Function(经 CF Worker 代理,正式版必走备案域名)。
核心功能 / 亮点
- 球房管理:
cloudfunctions/createClub、deleteClub、getMyClub,支持绑定微信 OpenID、按1,2-5,银1-银3格式解析球桌(updateClubTables)。 - 赛事发布:
createTournament支持单败 / 双败 / 小组赛+淘汰赛制,勾选启用球桌并生成 6 位赛事码。 - 球员导入:
importPlayers接收微信群接龙文本,用正则批量提取选手姓名。 - 球桌排产:
dispatchTables实现 FIFO 自动叫号、空桌即时补位,并支持手动指定「对阵→桌号」映射。 - 比分登记:
submitScore录分后自动流转赢家到下一轮、清空桌号、触发补位;另有submitGroupScore、getMatchData。 - 对阵图:
drawBracket/drawGroupBracket渲染树状晋级图与小组赛积分榜。 - 小组赛 + 淘汰赛:
generateKnockout由小组排名生成淘汰赛对阵,getGroupStandings计算含相互战绩(H2H)排序的积分榜。 - 双败赛制:胜者组 / 败者组 / 总决赛完整流转,含败者组冠军加赛机制。
- TV 大屏:
web/目录下的 Express Web 端为双栏看板(当前对局 + 候场队列),每 5 秒轮询刷新。 - 导出 Excel:
exportExcel借助 exceljs 导出含小组赛积分榜与淘汰赛对阵表的赛事数据。
目录结构
1 | billiards/ |
相关链接
- GitHub 仓库:billiards