面向羽毛球馆高峰预订场景的全栈运营平台,以异步 I/O、分布式锁和数据库事务控制预约冲突,并连接会员、支付、商城、赛事与后台运营。
Greenbird 以最容易产生竞争条件的场地时段预订为核心,向外连接会员账户、余额支付、预约订单、商城库存、赛事报名、球友社区、通知和运营统计。用户侧与管理侧共享同一套业务状态,避免前台显示、资金流水和后台处理互相脱节。
前端使用 Vue 3、TypeScript、Pinia 与 Element Plus,后端采用 Tornado 异步请求模型,通过 aiomysql 连接池和异步 Redis 客户端处理网络与数据库 I/O。
同一场地和起止时间首先通过 Redis SET NX EX 获取带 TTL 的分布式锁;释放时执行 Lua 脚本校验锁持有者,避免一个请求误删另一个请求的锁。进入持久化阶段后,MySQL 事务通过 FOR UPDATE 锁定用户、场地、会员账户与冲突预约,再原子创建预约和待支付订单。
场地页按日期、营业时间和配置化时间粒度生成时段状态,并把 Redis 临时锁与数据库有效预约合并为可预订、锁定、已预订、不可用四类结果。选择场地和时段后,系统即时计算时长、会员折扣、应付金额及可用余额。
创建后的预约进入待支付订单,支付成功后同步扣减会员余额、记录资金流水并发送通知;取消、超时和管理员退款分别进入对应事务流程,保证预约状态、订单状态和余额变化一致。
会员中心统一管理等级、有效期、余额、积分与完整流水。预约消费、取消退款、商城购买和商城退款都会写入同一账本,保留变更前后余额、积分、原因和操作人,便于用户核对和管理员审计。
平台还提供活动赛事报名、球友圈、公告和通知中心,使场馆系统同时覆盖交易、组织与社群触达,而不是停留在单一预约工具。
商城支持商品搜索、购物车、余额支付、到店领取、订单查询和退款申请。下单事务按固定顺序锁定商品,复核库存后原子扣减库存、会员余额并生成订单明细,降低并发购买下的超卖和账实不一致风险。
管理员可以管理用户角色、会员账户、场地状态、预约与退款、商品库存、赛事、公告、通知和社区内容。统计模块按日期聚合预约状态、活跃用户、场地使用率和热门时段,健康检查同时覆盖应用、MySQL 与 Redis。