日期:2026-07-24
我们当时接手的客户是某民营加油站连锁集团,旗下数百座加油站分布在多个省份。这个项目里最棘手的不是交易本身,而是会员资产的割裂。加油站有加油卡体系,便利店有独立的会员积分系统,两套账户互不连通,会员加油和便利店消费是两张皮。我们采用的 XpShop 新普MALL 多终端一套配置能力,本可以把加油权益和非油商品放在同一个会员视图里,但客户原有的加油卡数据是存量,无法直接抹掉重写。
当时业务侧给我们的目标是:把加油卡会员和便利店会员归一,做统一会员与加油权益,让便利店非油商品和加油联动,积分通兑,并且让站长能用移动端做日常运营。真正难的是,会员价值挖不透,复购弱,交叉销售几乎为零,而这恰恰是便利店非油业务增长的关键。我们评估过直接采购现成会员中台,但客户对私有化部署和数据不出站有硬性要求,最终选择在我们采用的 XpShop 新普MALL 体系内自建会员归一层,而不是外挂一套独立系统。
我们在这个项目里落地了四个场景。第一是统一会员与加油权益:加油卡会员和便利店会员归一后,会员在任意站点加油或进便利店消费都累计到同一积分池。第二是便利店非油商品与加油联动营销:比如加油满额送便利店优惠券,或在小程序下单非油商品到店核销。第三是积分通兑:加油积分可以直接在便利店抵扣,便利店积分也能用于加油优惠。第四是站长移动运营:站长在手机上能看本站会员结构、非油动销、库存预警,并一键发起站内营销。
这些场景背后,我们采用的 XpShop 新普MALL 门店POS与私域会员能力承接了站级交易,订单对接供应链与仓储,保证了非油商品的库存和履约一致性。站长的移动运营端不直连核心库,而是读我们沉淀的站级宽表,避免一线操作影响交易主链路。
挑战一:加油卡与便利店会员归一。 两套系统账户主键不同,加油卡以卡号为主键,便利店会员以手机号为主键,历史数据有重叠也有冲突。我们没有强制一次性合并,而是设计了一个会员身份映射层:以手机号为主身份,卡号作为绑定凭证。对冲突账户,按「最近活跃时间 + 消费金额」加权仲裁归属,并写一条归并审计日志。归一过程采用双写过渡,老加油卡交易仍落原表,同时异步同步到统一会员中心,灰度一周后切读统一视图,避免一次性切换带来的资损风险。这里踩过的坑是:最初仲裁权重反过来(金额 0.6、活跃 0.4),结果一批沉睡高余额卡被归到近期活跃但低消费的账户,引发客诉,调权后才平稳。
挑战二:非油商品与加油联动营销。 联动本质上是一个跨域事件。加油完成后需触发便利店优惠发放,但加油系统和便利店系统是两个服务,存在一致性窗口。我们采用了消息驱动方案:加油支付成功事件写入业务消息总线(与 AI 网关计量层解耦),便利店侧消费该事件并发券,发券失败走补偿队列重试三次,超次转人工。这里的关键取舍是放弃强一致,换取加油站高峰期的吞吐,因为营销券迟到几秒对体验影响远小于支付卡顿。压测时我们模拟晚高峰单站每秒数十笔加油,消息总线在峰值下端到端发券延迟控制在可接受范围,未出现券堆积。
挑战三:积分通兑与防刷。 积分通兑最怕批量刷分。我们在积分服务前置了规则引擎:单会员单日兑换上限、同设备指纹聚合限流、异常时段(如凌晨批量核销)触发风控评分。具体配置上,我们用 Redis 滑动窗口做频次控制,key 设计为 point:exchange:{memberId}:{yyyyMMdd},窗口为五分钟,超过阈值临时冻结并报警。同时积分流水全部落审计表,支持按 memberId 回溯。上线首周风控就拦下了一批利用凌晨窗口批量核销的异常账户,说明防刷规则必须前置而非事后对账。
挑战四:站级库存与补货。 便利店非油商品 sku 不多但站点分散,总部要看到实时库存又要避免补货风暴。我们采用的 XpShop 新普MALL 订单对接仓储能力做日级同步,站级用本地缓存兜底,断网时仍可售卖并事后回写。补货策略采用安全库存加移动平均销量预测,站均 sku 控制在可运营范围内,避免站长补货负担过重。最初我们尝试全站统一补货阈值,结果城区大站和高速小站动销差异巨大,后来改为按站聚类分档配置,缺货率和周转才同时改善。
下面是脱敏示意数据,全部取约数,不构成审计级结论。
| 指标 | 改造前 | 改造后 | 说明 |
|---|---|---|---|
| 会员复购率 | 约 22% | 约 34% | 统一会员后交叉触达提升 |
| 非油销售占比 | 约 8% | 约 15% | 加油联动营销带动 |
| 积分核销率 | 约 31% | 约 58% | 通兑打通使用场景 |
| 客单价提升 | 约 0 | 约 +12% | 联动券引导加购 |
案例片段(已脱敏): 会员归一与积分通兑核心配置片段:
yaml member_merge: primary_key: mobile bind_credential: card_no conflict_resolve: weight: { last_active: 0.6, amount: 0.4 } audit_log: true point_exchange: daily_limit: 5000 device_fingerprint_rate: 20/min window: 300s freeze_on_exceed: true
这个项目给我们的第一个经验是:会员先归一再交叉销售。我们一开始想直接做联动营销,但两套会员不归一,所有营销都是空中楼阁。先花人力把身份映射层做扎实,后面的交叉销售才跑得通。第二个经验是:非油是加油的增量,不要把非油当成独立业务线去考核,它天生依附于加油流量,运营节奏要跟着加油高峰走。第三个经验是站级运营要轻,站长移动端只给最关键的三个动作,补货、动销、发券,复杂配置收回总部,避免一线被系统拖垮。第四个经验是防刷规则必须前置,积分通兑一旦上线,刷分行为会立刻试探边界,风控和计量要联动,而非事后靠对账兜底。