☰
GogoAI健身会员储值卡次卡管理系统功能拆解
2026/10/16 3:00:51 网站建设 项目流程

GogoAI健身会员储值卡次卡管理系统功能拆解

痛点分析

自助健身房储值卡、次卡是核心营收载体,但很多系统将余额、次数混在一起管理,缺少独立的资产模型。传统方案存在不少问题:储值余额并发扣减容易超扣、出现负数;次卡区分不清购买次数和赠送次数,核销时优先扣赠送还是本金没有统一规则;卡种权限和门禁入场、私教约课脱节,办卡后需要人工开通通行权限。

连锁场景下,通用卡、单店卡跨门店核销规则混乱;卡状态缺少标准化状态机,开卡、充值、扣次、冻结、延期、退卡、过期流程没有约束;流水记录简单,对账、退费、客诉回溯困难;缺少挂失、换卡、转让、请假延期等运营能力;团购核销、线下收银、小程序充值多渠道发卡,容易造成资产不一致。同时24小时无人场馆,会员自助扣次入场,一旦扣次逻辑异常,直接影响门店正常通行。

GogoAI会员储值次卡模块,把储值资产和计次资产做隔离建模,基于状态机管控卡片生命周期,搭配CAS并发控制、完整流水审计,打通门禁、约课、收银、团购核销模块,适配直营和加盟连锁自助场馆。

模块整体结构设计

整个模块拆分为卡模板管理、会员卡资产、资产核销引擎、卡生命周期管理、流水对账、权限联动六个子模块。
卡模板用于总部预设卡类型,配置是储值卡还是次卡、适用门店范围、有效期、是否支持跨店、扣减优先级、赠送规则;会员卡资产是会员名下实际持有的卡包;核销引擎统一处理消费、扣次、余额扣减;生命周期负责冻结、挂失、延期、退卡、过期处理;流水对账记录每一笔资产变更;权限联动模块同步卡权益到IoT网关用于门禁校验。

核心数据表:card_template卡模板表、member_card会员卡包表、card_item次卡资产明细、card_balance储值余额、card_flow资产变更流水。
卡片状态枚举:正常、冻结、挂失、已过期、已退卡。
次卡资产区分本金次数、赠送次数,支持配置扣减优先级:先扣赠送次数或者先扣本金次数。

次卡扣减核心Java代码实现

采用数据库乐观锁控制并发,事务内完成次数扣减+流水落库,防止超扣,扣减完成同步更新门禁权限缓存。

@Service@Slf4jpublicclassCardConsumeService{@AutowiredprivateMemberCardMappermemberCardMapper;@AutowiredprivateCardFlowMappercardFlowMapper;@AutowiredprivateAccessAuthSyncServiceauthSyncService;@Transactional(rollbackFor=Exception.class)publicResultDTOconsumeCard(ConsumeDTOdto){// 查询会员次卡,带版本号乐观锁MemberCardmemberCard=memberCardMapper.selectByIdForUpdate(dto.getCardId());if(memberCard==null){returnResultDTO.fail("卡片不存在");}if(!"NORMAL".equals(memberCard.getCardStatus())){returnResultDTO.fail("卡片状态异常,不可核销");}if(memberCard.getValidEndTime()!=null&&newDate().after(memberCard.getValidEndTime())){returnResultDTO.fail("卡片已过期");}BigDecimalconsumeNum=dto.getConsumeNum();// 判断扣减优先级booleanuseGiftFirst=memberCard.getUseGiftFirst();BigDecimalrealConsume=consumeNum;BigDecimalgiftRemain=memberCard.getGiftTimes();BigDecimalbaseRemain=memberCard.getBaseTimes();if(useGiftFirst&&giftRemain.compareTo(BigDecimal.ZERO)>0){if(giftRemain.compareTo(realConsume)>=0){memberCard.setGiftTimes(giftRemain.subtract(realConsume));}else{realConsume=realConsume.subtract(giftRemain);memberCard.setGiftTimes(BigDecimal.ZERO);memberCard.setBaseTimes(baseRemain.subtract(realConsume));}}else{if(baseRemain.compareTo(realConsume)<0){returnResultDTO.fail("剩余次数不足");}memberCard.setBaseTimes(baseRemain.subtract(realConsume));}memberCard.setVersion(memberCard.getVersion()+1);intupdate=memberCardMapper.updateById(memberCard);if(update<=0){thrownewOptimisticLockException("卡片并发冲突,请重试");}// 写入资产流水,用于对账追溯CardFlowflow=newCardFlow();flow.setCardId(memberCard.getId());flow.setMemberId(memberCard.getMemberId());flow.setFlowType("CONSUME");flow.setConsumeNum(consumeNum);flow.setRemainBase(memberCard.getBaseTimes());flow.setRemainGift(memberCard.getGiftTimes());flow.setStoreId(dto.getStoreId());flow.setBizType(dto.getBizType());flow.setCreateTime(newDate());cardFlowMapper.insert(flow);// 同步权限到边缘网关authSyncService.syncCardAuth(memberCard.getMemberId(),dto.getStoreId());returnResultDTO.success("核销扣次成功");}}

卡模板与发卡能力

总部后台创建卡模板,区分储值模板、次卡模板。模板配置项包含适用门店范围、有效期类型(按天有效/固定截止日)、跨店开关、赠送规则、是否允许延期、是否支持退卡、可消费项目(健身入场、私教、团课)。
模板下发支持总部统一发布,门店可在模板基础上修改售价,基础权益锁定。发卡渠道覆盖线下收银、小程序购买、团购核销赠送、后台手动赠卡。发卡时自动拆分本金和赠送资产,分开记录,退卡时赠送次数自动作废,只核算本金资产。

储值卡支持充值赠送金额,同样区分本金余额、赠送余额,消费优先级可配置,充值操作记录充值流水,生成充值订单,参与财务统计。

卡片生命周期功能拆解

开卡:会员支付成功后生成member_card记录,初始化余额或者次数,状态置为正常,同步权限;
充值/充次:追加余额或者次数,区分本金、赠送,生成充值流水;
消费扣减:入场、私教签到、商品消费触发扣余额或者扣次;
冻结/解冻:会员违规、卡片异常时冻结,冻结期间无法核销入场;
挂失换卡:原卡挂失锁定资产,生成新卡,资产迁移,旧卡作废;
延期/请假:支持会员申请冻结有效期,请假期间不计入有效期,适合长期无法到店的会员;
退卡退费:按规则计算可退本金,赠送资产清零,卡片流转至已退卡,同时回收门禁通行权限;
过期处理:定时任务扫描过期卡片,状态变更,可配置过期后是否允许续费激活。

所有状态变更都写入审计日志,记录操作人、变更前后状态,满足预付费资产追溯要求。

连锁权限与跨店核销控制

复用多门店数据权限体系,总部可以查看全部门店卡资产,门店店长只能查看本店售出卡片。
卡模板配置门店范围分为单店可用、全部门店通用。会员持通用次卡,在任意门店扫码入场都可以正常扣次;单店卡只能在发卡门店核销,跨店校验直接拦截。
跨店核销的流水会标记消费门店,财务报表可以统计发卡门店收入、消费门店消耗,方便加盟模式下分账结算。

对账、报表与告警能力

每一次充值、消费、退卡、延期都会生成独立流水,流水和订单号、核销记录关联,支持按会员、门店、时间区间导出资产对账表。报表维度包含发卡量、充值金额、耗次数量、退卡金额、卡余额沉淀、沉睡卡统计。
系统内置告警规则:卡片即将过期、余额不足、次数不足自动推送消息给会员;大额退卡、批量冻结卡片推送告警给总部运营;并发冲突、扣减失败进入异常工单,人工复核处理。

和上下游业务模块联动逻辑

和IoT门禁模块联动:会员扫码入场时,权限引擎读取次卡/储值卡资产,校验通过下发开门指令,入场成功触发自动扣次或者扣储值余额;
和团购核销模块联动:团购券核销后自动发卡、赠送次数;
和私教排课模块联动:预约私教签到时扣减次卡次数;
和收银模块联动:线下收银充值、买卡生成卡资产;
和消息推送模块联动:充值成功、扣次提醒、卡片到期、余额不足推送通知;
和能耗模块联动:会员入场事件同步给能耗系统,触发分区灯光空调开启。

落地开发踩坑与优化方案

第一,储值余额和次卡次数必须分开存储,不要用同一个字段维护,避免财务核算混乱;本金和赠送资产分开记录,退卡、对账逻辑更容易实现;
第二,并发扣减一定要加乐观锁或者分布式锁,自助场馆大量会员同时入场,很容易出现超扣;
第三,跨店卡、单店卡的门店范围在校验层拦截,不要只靠前端控制;
第四,过期定时任务分批分片执行,不要一次性全表扫描,防止锁表影响业务;
第五,退卡逻辑谨慎处理,赠送资产、已消耗部分不能退费,每一笔退费都要留存凭证和流水;
第六,资产变更流水不可删除,只允许新增记录,满足预付费资金审计要求。

落地效果总结

这套储值次卡管理模块已经在多家连锁自助健身门店上线,独立的资产模型清晰区分储值余额、次卡本金、赠送资产,状态机约束卡片全生命周期,减少人工操作带来的数据错误。
自助入场自动扣次、扣余额,满足无人场馆的运营需求;总部统一卡模板管控,门店灵活售卖,跨店核销和分账能力适配加盟连锁模式。模块和门禁、团购、排课、收银打通,构成会员资产的核心底座,为财务对账、运营分析、客诉追溯提供完整的数据支撑。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询