用户行为返利
2025/12/21...大约 2 分钟
用户行为返利业务流程实现
1.引言
在面向用户的平台中,可以在用户各种行为(如支付,签到)实现后进行用户返利(优惠券发放、积分发放等等),可以使用户习惯操作提升系统用户留存与使用。但是简单的硬编码会随着业务增长迅速变得难以维护。本文以 “签到返利” 这一场景为例,记录我在实际项目中从设计落地方案。我通过将返利配置、订单化、异步化,并通过 “策略模式”与“幂等性” ,实现返利的高可用性和安全性。
用户行为触发 → 系统自动、无重复地完成权益发
2.实现
这是我画的大概流程图:

本文以签到行为返利为例,记录我在项目中的用户行为返利的实现流程方案与相关容错。
**1、行为返利配置:**首先我们需要将用户的不同行为返利配置到数据库表(rebate_config_table)中,主要含如下三个关键字段:
rebate_config_table{
用户行为, // 表明在用户的哪些行为后触发(支付、签到、购买等等)
返利类型, // 表明行为触发哪些返利(优惠券、积分等等)
返利配置 // 表明返利类型的配置(如优惠券->几折?、积分->100分?、小商品赠送->skuID)
}**2、行为入库:**我们在进行返利时,将每次行为的返利抽象为一笔订单,设计数据库表rebate_order,每一次行为返利进行的返利项目,生成对应的订单,并且把每一笔返利项目写入TASK表并sendMQ。
order_no (主键,返利订单号,全局唯一),
user_id,
behavior_type,
config_id (关联的配置ID),
order_status (处理中/成功/失败),
total_reward_items (返利总项数),
created_time**3、返利项目到账:**MQ监听上一步给到的返利项目,通过策略模式,根据不同的Rebate_Type实现不同的返利实现,并且以行为订单单号作为OutBusinessNO实现返利幂等。
3、总结
具体实现代码不贴了。目前只实现签到返利,但是支付等行为返利差不多的,比如说支付就回调函数里面调用一下应该就行了。