一、相关概念介绍
1.1、CPS概念简介
什么是 CPS,CPS 是以实际销售产品数量来换算广告刊登金额,根据每个订单/每次交易来收费的方式。在美业的场景下,客户帮商家卖产品获得佣金。美业的推广员系统正好满足了商家做 CPS 营销的需求。
1.2、美业推广员系统介绍
有赞美业的商家目前的获客渠道较为常规、传统,商家亟需开拓新的获客方式,提升门店的到客量。利用美业推广员系统,商家可将员工、顾客、合作方等人群发展成自己的推广员,推广员利用自己的社交关系,帮助商家推广网店中的商品。客户根据推广员的推广商品进行下单,给商家带来大量订单,推广成功后,推广员获得一定额度的佣金提成。有赞美业推广员系统产生的订单占整个营销订单的50%以上。但是其中有几个问题,可能让商家和推广员之间产生利益纠纷,且看有赞美业是如何通过合理的设计解决它的。
1.3、问题描述
- 推广员推广商品,当客户通过推广员的推广下单后,推广员何时看到推广佣金,何时能拿到推广佣金;延迟消费类商品的佣金如何计算以及何时发放。
- 推广订单产生后,如何根据需求灵活进行结算。
接下来,笔者会针对以上两个问题,给出适合有赞美业业务的解决方案。首先,先看下业务模型。
二、业务模型
上图是有赞美业推广员系统的业务模型。
- 推广员、推广员分组、推广商品、推广订单和绑定关系几部分组成有赞美业推广员系统;
- 会员、交易、商品、店铺和财务是支撑推广员系统的底层业务模块。
了解了业务模型后,即可针对以上提出的问题,设计合理的解决方案来解决这些问题。
三、解决方案
商家的诉求是卖更多的产品,推广员的诉求是获取更多的回报,这里涉及到资金的流转、划拨,涉及到复杂的财务清结算。在推广员系统里,需要对推广流程进行严格地划分,以保证流程清晰、合理、适合业务正常运营与发展。下面简单介绍下财务中的清结算概念。
3.1、概念简介
清分:对交易数据依据机构和交易类型进行分类汇总,并计算结算金额的过程。
例如支付宝在账本上记录下,银行要给支付宝100元,支付宝要给银行50元,简单一点理解是记账。
清算:根据清分结果对交易数据进行净额轧差和提交并完成资金划拨的全过程。
两个资金放在一起算一下,最终银行还要给支付宝50元
结算:转账,接收到清算指令后,通过结算指令与相关支付系统对接,与给对方划账。
最后银行把50元资金转账给了支付宝
对于有赞美业推广员来说,如果按照这个清结算流程来设计系统,可以做到在业务上和系统上分层,灵活的应对变化。接下来看看我们是如何进行清分清算的。
3.2、清分清算流程
3.2.1、普通商品清分清算流程设计
如果A推广员推广一个商品给B客户,B客户支付下单了,但是A一直看不到B客户下的推广订单和他应得的佣金,这样会严重影响推广员的积极性,甚至和商家产生经济纠纷,不利于商家的正常经营,那应该如何解决这个问题呢?
首先应该确定的是规则,何时生成推广订单,何时清分清算。如果客户确认收货,订单状态扭转为完成后,生成推广员能看到的推广订单,对于服务或者卡项这类虚拟商品没有发货的流程,客户支付订单后订单已经处于完成状态,不会受到影响;但是如果是需要邮寄的产品,由于有发货、物流配送、客户收货等流程,导致客户下单后,推广员很长时间才能看到推广订单。站在推广员的角度,推广员希望客户下单支付后就能立即看到推广订单和此笔订单的佣金。
因此,我们规定客户支付订单后,立即生成推广订单,以及清分清算此笔订单应该结算给推广员的佣金。但是我们应该如何生成推广订单和计算推广员的佣金呢?在这里,我们使用前面介绍的清分、清算流程生成推广订单、计算佣金。订单明细中详细记录了此笔订单使用了何种优惠金额、是否包邮、商品等信息,根据这些信息,我们可以顺利地计算出推广员在此次推广中的佣金,并生成推广订单。
接下来我们看一下应该如何生成清算单,先看第一版流程:
1、用户下单,支付订单,订单发送支付消息
2、消息队列 消费者接收订单的支付消息
3、根据订单消息查询订单,并将订单转化成清算单实体
4、执行清分流程,进行各种条件判断、佣金计算等
5、最后生成清算单 ,入库
这个流程完成了基本的功能,但是清分流程做的事情过多过杂,它需要处理优惠、邮费、推广员身份校验、佣金计算等。如果推广员系统再增加一点规则,需要更改清分流程,容易引发问题,违背了开闭原则。
为了解决这个问题,我们需要认真思考一下,入口是清分,优惠、邮费、推广员身份校验、佣金计算等是这里需要完成的事情,我们可以将其抽取为单独的行为,独立运行。但是如果增加新的规则,依然需要更改清分流程的代码,仍然不满足开闭原则。
如果将优惠、邮费、推广员身份校验、佣金计算等处理单独抽取成类,形成一个一个节点串联起来,链式处理,完美地解决这个问题,第二版流程如下:
1、用户下单,支付订单,订单发送支付消息
2、消息队列消费者接收订单的支付消息
3、根据订单消息查询订单,并将订单转化成推广员业务需要的业务对象
4、执行清分流程,开始责任链处理
4.1、判断推广员身份
4.2、处理邮费
4.3、处理优惠
4.4、计算佣金
5、最后生成清算单,入库
第二版的清分流程引入责任链设计模式后,可以根据业务规则,增删节点,不影响原有的流程处理,符合开闭原则。普通商品生成推广订单、计算佣金的方案完成了,但是对于像次卡类延迟消费类商品的佣金发放流程该如何设计呢?
3.2.2、延迟消费类商品清分流程
对于像次卡类延迟消费类商品来说,客户购买这种商品后立即计算推广员的佣金并发生清结算,对于商家来说风险很大。
例如推广员A给客户C推广了一张权益为10次的次卡,其售价为1000元,推广提成比例为30%,按照普通商品的清结算流程,如果客户C购买这张卡,商家应该给推广员A 300元的提成。但是如果客户C没有使用次卡,并且要求商家退款,那么商家将承担给推广员A的300元推广佣金的资金损失。
所以针对次卡这种延迟消费权益类的商品,需要单独对其进行清结算,最大程度保护商家利益。因此设计出父子清算单模型,购买次卡生成的清算单为父清算单,父清算单不能立即发生结算动作;客户每一次使用次卡,消费次卡订单生成清算单为子清算单,并关联父清算单,此时对子清算单进行结算即可。
1、用户下单,支付订单,订单发送支付消息
2、消息队列消费者接收订单的支付消息
3、根据订单消息查询订单,并将订单转化成推广员业务需要的业务对象
4、进入清分流程,开始责任链处理
4.1、判断推广员身份
4.2、处理邮费
4.3、处理优惠
4.4、计算佣金
4.5、判断如果是次卡消费订单,则需要关联父清算单
5、最后生成清算单,入库
清分、清算流程到这里已经完成,推广员能立即看到其推广的订单和应该得到的佣金。订单完成后,系统会给推广员结算佣金。接下来设计结算流程,让推广员能真正拿到提成。
3.2、结算流程
当客户购买商品支付订单后,进入推广员系统的清分流程,生成清算单并计算推广员的佣金,这一步完成了清分和清算。接下来处理推广订单的结算。结算可以根据商家配置的不同账期灵活结算。
当订单完成之后,清算单的状态被更改成待清算。编写一个定时任务,定时扫描状态为待清算的清算单,将其转化成结算单。如果此时商家不想让推广订单立马发生结算,防止推广员和客户合伙损害商家的利益,因此商家可以配置订单完成后在某个账期发生结算,所以在定时任务筛选出清算单后,判断是否处于结算账期,处于结算账期的生成结算单。结算单有结算的行为,当结算行为被调用时,推广佣金被结算到推广员的账户上。
结算单生成后,发送异步消息,异步调用结算单的结算方法,远程调用财务中台的接口,将商家账户的余额扣减,将推广员账户上的余额增加,推广员的佣金发放成功,整个推广的完整流程结束,形成了一个完整的闭环。整个流程如下:
1、查询待清算的清算单
2、判断账期
3、满足账期,生成结算单
4、发送异步消息
5、处理异步消息
5.1、调用结算单的结算方法
5.2、调用财务中台的分润接口
5.3、异步处理分润结果
到这里,一个核心的推广员系统设计可以告一段落了。一切以解决问题为中心,层层展开分析与设计,关注核心点,找到适合业务的解决方案。介于篇幅有限,推广员系统还有很多细节、异常流程以及扩展点需要处理,但是核心的涉及清结算及佣金的计算与发放已经给出了解决方案。最后做一个简单的总结。
3.3、总结与思考
本文主要介绍了推广员系统中可能出现的一些问题,并以业务为导向,以解决问题为目标,进行仔细的分析与思考。为了激励推广员的推广热情,为商家更多的售卖产品,我们利用清分清算计算佣金。当推广员推广商品,客户下单支付后,推广员系统接收订单的支付消息,利用责任链模式进行清分流程,推广员立马可以看到推广的订单和相应的佣金;对于延迟消费类的产品做到了按次消费按次计算佣金的子流程。在系统处理流程上,责任链做到了按照需求增删节点,不会影响原有的流程;在业务场景下,推广员能够实时看到待结算的订单和收益,提高推广员推广的积极性。引入清分,清算,结算的流程,并让各个流程独立,清分清算解决算账的问题,结算解决分发佣金问题,每个流程的 职责单一,容易扩展和维护。但是这些还远远不够,其中还有许许多多异常的场景需要处理,例如清分清算流程失败了如何处理,结算失败了如何处理,如何校对佣金等。这些就留给广大读者根据自身业务特点进行灵活的思考与应用吧。