首先我们要知道什么是分销系统?

分销系统指通过互联网将供应商与经销商有机地联系在一起,为企业的业务经营及与贸易伙伴的合作提供了一种全新的模式。供应商、分支机构和经销商之间可以实现实时地提交业务单据、查询产品供应和库存状况、并获得市场、销售信息及客户支持,实现了供应商、分支机构与经销商之间端到端的供应链管理,有效地缩短了供销链。

知识付费的分销功能主要体现在专题课程及会员模块;用户购买专题课程、会员后会给用户的上级和上上级返佣。

那么分销系统是如何实现的呢?

知识付费系统中在用户进入系统时若是带有上级的信息,那么这个用户就是别的用户发展的下级,我们就需要记录该用户的上级信息。数据库用户表eb_user表中有字段spread_uid(推广员id),该字段记录的是用户的上级id。
首先确定什么时候执行分销功能?分销功能执行肯定是需要订单结束后,这样可以避免大多数用户退款后的佣金返还问题。

然后就是分销代码的书写了,知识付费分销分为人人分销和指定分销;人人分销是指系统中的所有用户均可参与分销活动,并且在下级用户购买后可以获得佣金。指定分销是指只有系统设置推广权限的用户才能在下级用户购买后获得佣金。因为知识付费的分销是二级分销,所有我们是直接写了一级返佣和二级返佣的方法,在执行完一级返佣后执行二级返佣,这是分销的最简单逻辑了。
以专题课程为例,在专题课程购买成功后执行返佣。(注:以下代码为部分代码,详细见知识付费https://gitee.com/ZhongBangKeJi/crmeb_zzff_class/tree/master)

/*** //TODO 专题支付成功后* @param $orderId* @param $notify* @return bool*/
public static function paySuccess($orderId)
{$order = self::where('order_id', $orderId)->where('type',0)->find();if(!$order) return false;User::bcInc($order['uid'], 'pay_count', 1, 'uid');$res = self::where('order_id', $orderId)->where('type',0)->update(['paid' => 1, 'pay_time' => time()]);try {//专题返佣User::backOrderBrokerage($order);} catch (\Throwable $e) {}StoreOrderStatus::status($order->id, 'pay_success', '用户付款成功');return false !== $res;
}
/*** 一级推广 专题* @param $orderInfo* @return bool*/
public static function backOrderBrokerage($orderInfo)
{$userInfo = User::getUserInfo($orderInfo['uid']);if (!$userInfo || !$userInfo['spread_uid']) return true;$course_distribution_switch = SystemConfigService::get('course_distribution_switch');//课程分销开关if($course_distribution_switch==0) return true;$storeBrokerageStatu = SystemConfigService::get('store_brokerage_statu') ?: 1;//获取后台分销类型if ($storeBrokerageStatu == 1) {if (!User::be(['uid' => $userInfo['spread_uid'], 'is_promoter' => 1])) return true;}$brokerageRatio = bcdiv(SystemConfigService::get('store_brokerage_ratio'),100,2);if ($brokerageRatio <= 0) return true;$brokeragePrice = bcmul($orderInfo['pay_price'], $brokerageRatio, 2);if ($brokeragePrice <= 0) return true;$mark = '一级推广人' .$userInfo['nickname'] . '消费' . floatval($orderInfo['pay_price']) . '元购买专题,奖励推广佣金' . floatval($brokeragePrice);self::beginTrans();$res1 = UserBill::income('购买专题返佣', $userInfo['spread_uid'], 'now_money', 'brokerage', $brokeragePrice, $orderInfo['id'], 0, $mark);$res2 = self::bcInc($userInfo['spread_uid'], 'brokerage_price', $brokeragePrice, 'uid');$res = $res1 && $res2;self::checkTrans($res);if ($res) self::backOrderBrokerageTwo($orderInfo);return $res;
}
/*** 二级推广 专题* @param $orderInfo* @return bool*/
public static function backOrderBrokerageTwo($orderInfo)
{$userInfo = User::getUserInfo($orderInfo['uid']);$userInfoTwo = User::getUserInfo($userInfo['spread_uid']);if (!$userInfoTwo || !$userInfoTwo['spread_uid']) return true;$course_distribution_switch = SystemConfigService::get('course_distribution_switch');//课程分销开关if($course_distribution_switch==0) return true;$storeBrokerageStatu = SystemConfigService::get('store_brokerage_statu') ?: 1;//获取后台分销类型if ($storeBrokerageStatu == 1) {if (!User::be(['uid' => $userInfoTwo['spread_uid'], 'is_promoter' => 1])) return true;}$brokerageRatio = bcdiv(SystemConfigService::get('store_brokerage_two'),100,2);if ($brokerageRatio <= 0) return true;$brokeragePrice = bcmul($orderInfo['pay_price'], $brokerageRatio, 2);if ($brokeragePrice <= 0) return true;$mark = '二级推广人' . $userInfo['nickname'] . '消费' . floatval($orderInfo['pay_price']) . '元购买专题,奖励推广佣金' . floatval($brokeragePrice);self::beginTrans();$res1 = UserBill::income('购买专题返佣', $userInfoTwo['spread_uid'], 'now_money', 'brokerage', $brokeragePrice, $orderInfo['id'], 0, $mark);$res2 = self::bcInc($userInfoTwo['spread_uid'], 'brokerage_price', $brokeragePrice, 'uid');$res = $res1 && $res2;self::checkTrans($res);return $res;
}

这样专题课程的二级分销就完成了,若是想再加第三级分销,我们一样的逻辑,获取二级的上级,然后判断返佣即可。
如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star: http://github.crmeb.net/u/defu 不胜感激 !

知识付费如何二开分销功能相关推荐

  1. 盲盒app源码,可搭建部署二开.模式功能介绍.

    一  栏目 功能 说明 登录注册 注册 输入手机号,获取验证码,输入密码,选填邀请码,勾选<用户协议> 密码登录 手机号+密码 忘记密码 输入手机号,获取验证码,输入新密码 底部导航 开盲 ...

  2. 2023最新彩虹商城时光知识付费源码/UI好看/功能强大

    正文: 已含最新功能: 三级中转不死域名系统 二级分类 投稿 一键查重 可添加卡密和链接 批量对接 有兴趣的自行去安装体验吧. 程序: wweorh.lanzoup.com/iZzm90wi5kde ...

  3. 知识付费系统如何快速二开

    知识付费系统是系统基于ThinkPhp5.0+layui+Vue开发,功能包含在线直播.付费视频.付费音频.付费阅读.会员系统.分销系统.拼团活动.直播带货.直播打赏.商城系统.线下活动.资料下载.课 ...

  4. 暗流涌动的知识付费市场

    2016年被称为"知识付费元年".在互联网快速发展的时代,知识付费成为引领积极向上的网络文化和全民学习内容变现的产物.其本质就是把知识变成产品或服务,以实现商业价值.经过5年的快速 ...

  5. CRMEB在线教育知识付费系统应用领域及功能介绍

    CRMEB知识付费系统安装教程 CRMEB知识付费系统安装教程[第一集宝塔安装配置] 完整源码下载.详细安装视屏.演示站评论区有 清风流流雨霏霏,桃花赧颜遮纱帏. 千林万树更新绿,村妇篮中荠菜肥. 暮 ...

  6. 素人做知识付费,还有没有机会

    最近视频号直播还挺上瘾的,前两天连麦撩杨涛,结果对方抛出很多问题,现场回答了一波,那么不是很有急智,缺乏准备,所以有些问题回答的自己也不是很满意.退出连麦后,我注意到杨涛提到,还有一个问题没有问,就是 ...

  7. 知识付费对接微信公众号订阅消息

    订阅通知是一个用户主动订阅.服务号按需下发的通知能力.使用过程请遵守<微信公众平台服务协议><微信公众平台运营规范>. 用户在前述场景主动订阅后,服务号可通过接口向用户发送订阅 ...

  8. 最新云豹二开直/播短视频完整系统源码+带开发文档/教程

    正文: 最新云豹二开直/播短视频完整系统源码+带开发文档/教程,好友给我分享的,属于云豹二开,功能非常的强大,且有非常完整的开发文档和教程. 但是说实话这类程序不属于好部署的那一种,比较吃一定的技术, ...

  9. 知识付费直播间即时通讯

    知识付费直播间即时通讯使用WebSocket创建.目前,直播间的发信息.送礼物.在线人数.欢迎语和开关播提示都是基于此进行通讯. 浏览器通过JavaScript向服务器发出建立WebSocket连接的 ...

最新文章

  1. js、jQuery、layer实现弹出层的打开、关闭
  2. python数字类型及运算_Python基础之(基本数据类型及运算)
  3. 变分自编码器:球面上的VAE(vMF-VAE)
  4. codeforces1454 F. Array Partition
  5. java中异常+连接重置_是什么导致我的java.nett.ocketException:连接重置?
  6. 总结 贪心算法_用经典例题轻松帮你搞定贪心算法
  7. Unsupported major.minor version 51.0 jdk版本错误解决方案 eclipse版
  8. 计算机二级法律一班题目,湖南省计算机二级考试  程序设计题目精选30道
  9. 图像检索:一维直方图+欧几里得距离+flann+KNN
  10. eight_queens
  11. IT公司是怎样面试的? (转载)
  12. MVC中验证码的生成
  13. Java使用自动化测试脚本selenium
  14. 从Master到百度《最强大脑》人机大战:AI成坊间话题意味着什么?
  15. 前台应用保活-适配华为
  16. CSS+CSS3超详细教程
  17. Python 面向对象 (六) 实例学员管理系统
  18. relative的使用
  19. 操作系统权限提升(十五)之绕过UAC提权-基于白名单DLL劫持绕过UAC提权
  20. 基于微信小程序的体育课评分系统小程序

热门文章

  1. Swift 波浪动画
  2. swagger:IP可以访问正常,域名访问异常 报错TypeError: Failed to fetch
  3. 5G多卡聚合路由保障疫情数据监控系统网络稳定通畅
  4. 设计系统(Design System),设计和开发之间的“DevOps”
  5. ssm+jsp电影院在线订票选座管理系统 java
  6. Cadence Allegro如何在焊盘上显示网络名称
  7. Canon 佳能 EOS500D 入手——之四(UV镜安装篇)
  8. rt-thread nano移植到新唐M031
  9. (二)基于IMX6Q的VxWorks7系统功能测试及DKM项目测试
  10. Tensorflow报错:ValueError: Trying to share variable ..., but specified shape ... and found shape ...