Distribution

统一分销模块,支持多种模式。

本模块依赖 Drupal Commerce 8.x-2.5 或以上版本。

重要概念

普通用户分销用户

普通用户 是指没有 推广资格 的用户,他们无法通过推广商品来获取佣金。

分销用户 是指具有 推广资格 的用户,他们可以通过推广商品来获取佣金, 而且可以发展更多的 下级分销用户(即下线)分销用户 可以通过多种方式来发展下线。

普通用户 可以通过多种方式 转化分销用户。 如果该转化是由某已有的 分销用户发展行为 所促成的, 那么该新 分销用户 将成为其下线。

推广行为

推广行为 是指 分销用户 通过分享商品来促成 普通用户 的购买行为。

同一 普通用户 可能会接受过来自不同 分销用户 的推广, 也就是查看过多个来自不同 分销用户 的分享的内容。

如果 普通用户 产生了购买行为,那么这些 推广者 可以平分一笔 推广佣金

分销用户 之间的上下级关系与 链级佣金

分销用户 可以通过多种方式来发展下线。

当一个 分销用户 或其 最后推广用户 产生购买行为时,将产生 链级佣金。 该用户的所有上级,将按设定的比例和特定方式分割这笔 链级佣金

购买行为

购买行为 是指用户购买商品,产生订单的行为。

  • 普通用户 的购买行为。

    有两种情况:

    • 自主购买

      没有接受过 推广者 的推广行为,自行主动购买。 不会产生佣金。

    • 推广购买

      接受过 推广者 的推广行为,推广者将获得 推广佣金。 最后一位 推广者 将作为 1级分佣者,产生 链级佣金

  • 分销用户 的购买行为。

    如果开启了分销佣金直抵,那么该 分销用户 将作为 1级分佣者,产生的 链级佣金作为订单价值直接调整。 该 分销用户 的上级将变为 2级分佣者,他的上级以此类推。

    如果没有开启分销佣金直抵,那么产生的 链级佣金,和普通用户产生的 链级佣金 是一样的,都从他的直接上级分销用户开始分配佣金。

团队团队领导

分销用户 可以进一步提升为 团队领导,这意味着其所有下线发生购买行为时, 该 团队领导 都能获得一定的 团队佣金

团队领导 的下线可能也是 团队领导,但仅限一层下级,这种二级团队领导称为 组长组长 的下线或者下线的推广用户发生购买行为时,其 上级团队领导 会把一部分团队佣金 分给 组长

分销用户 提升为 团队领导 是有多种途径的。

佣金 的来源

推广佣金链级佣金团队佣金 三种。 它们分别取于商品购买价格中的一定比例,但本质上,它们只是针对特定商品所设定 的三个数字。

分销折扣

普通用户 接受推广而发生购买时,商品价格会进行折扣调整,称为 分销折扣。 但如果 普通用户 是自主购买,则不能享受 分销折扣

分销用户 发生购买行为时, 也能享受 分销折扣

分销折扣 本质上是针对特定商品设定的一个优惠金额。

分销折扣 是可以选择是否开启的。

数据结构

Content Entity

  • distributor 分销用户
  • leader 团队领导
  • target 分销商品
  • level 分佣链级分佣比例设置
  • event 分销事件
  • commission 分佣项
  • promoter 普通用户绑定的推广者(分销用户)

服务

  • DistributionManager

    各种事件或接口,或外部模块可调用的服务。

Finance AccountType

本模块使用 Finance 模块来对分销用户的佣金进行管理。 本模块定义了2个账户类型 distributiondistribution_pending

每个分销用户创建时,都会同时创建一个 distribution 类型和一个 distribution_pending 类型的记账账户。

当订单付款后,佣金会先进入 distribution_pending 账户,当订单完成时,佣金会从 distribution_pending 账户 转账到 distribution 账户。

事件处理器

  • 订单place时
    • 对订单进行分佣处理
    • 把用户转化为分销用户 (如果配置启用了自动转化)
  • 订单 cancel 时,取消佣金
  • 订单 complete 时,把佣金从 distribution_pending 账户转账到 distribution 账户

界面

  • 设置
  • 申请成为分销商接口
  • 设置推广关系接口
  • 分销用户管理列表
  • 分销用户审核
  • 把分销用户提升为团队领导
  • 为commerce_product_variation entity 编辑表单添加佣金编辑功能

任务奖励系统

系统可以添加一系列的任务,分销会员 可以领取任务,当他完成领取的任务后,可以得到任务所设定的奖励。

如果一个任务是 新手任务,那么它会被新转化的 分销会员 自动领取。 如果一个任务设定了完成任务后升级,那么领取此任务的 分销会员 完成任务后,可以自动升级为 高级分销会员,升级后享受的佣金会增加。

Entities

  • Content Entity
    • Task 代表可领取的任务
    • Acceptance 代表用户领取的任务
    • Achievement 记录已领取任务的完成进度

Entity Bundle Plugin

  • TaskType 用于定义 Task的类型
    • OrderQuantity 以推广的订单数量为任务指标的一种任务类型

事件处理器

  • 当新的 分销用户 被创建时,自动领取所有新手任务。
  • 当一个订单付款时,为订单的直属 分销用户 创建任务成绩。
  • 当一个订单取消时,为订单的直属 分销用户 取消相对的任务成绩。
  • 当一个领取任务完成时,执行相应的任务奖励。

服务

  • TaskManger

月度奖励系统 Monthly Reward

每成交一笔分销订单,从成交的产品价格中取一定比例,累计为月度奖励奖金基数。 这个比例是针对每一个商品进行可以有不同设置的。

当一个月度结束时,把这笔月度奖金按一定的分配策略奖励给符合条件的分销用户。

Cron任务

每月结束时,生成月度奖励报告

Content Entities

  • MonthlyStatement
    • month 月份
    • reward_total 奖金总额
    • reward_assigned 奖金分配总额
    • quantity_assigned 达到奖励条件的总人数

CommissionType

  • 月度奖金

Financial 账户

  • distribution_monthly_reward_pool 平台月度奖金池账户
  • distribution_mr_order_quantity 用户奖励条件计算账户(3级业绩率专用)
  • distribution_tla_inside 用户3级以内业绩计算账户(3级业绩率专用)
  • distribution_tla_outside 用户3级以外业绩计算账户(3级业绩率专用)

Plugin

月度奖励策略:

  • MonthlyRewardCondition 检查给定分销用户是否达到奖励条件
    • OrderQuantity 以订单数量为条件
  • MonthlyRewardStrategy 计算给定分销用户可以得到的奖励金额
    • ThreeLevelAchievement 3级业绩率

Config Entities

  • MonthlyRewardCondition
  • MonthlyRewardStrategy

service

  • MonthlyRewardManager