php实现的递归提成方案实例


Posted in PHP onNovember 14, 2015

本文实例讲述了php实现的递归提成方案。分享给大家供大家参考,具体如下:

最近CRM项目中用到了递归提成的方案,分析如下:

SQL语句如下:

CREATE TABLE `crm_proxy_bonux_rule` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '超过的部份提成规则ID',
`bouns_rule_name` varchar(20) NOT NULL COMMENT '规则名称,如D套餐0-20范围',
`rid` bigint(20) DEFAULT NULL COMMENT '为0,就是默认的全局设置',
`start_rang` smallint(6) DEFAULT NULL COMMENT '开始范围',
 `end_rang` smallint(6) DEFAULT NULL COMMENT '结束范围',
`bonus_rate` smallint(6) DEFAULT NULL COMMENT '提成率',
`bonus_reward` decimal(8,2) DEFAULT NULL COMMENT '奖励现金',
`chain_pre` int(11) DEFAULT NULL COMMENT '链表上一个值默认为0,表示根结点',
`chain_next` int(11) DEFAULT NULL COMMENT '链表下一个值',
`is_standard` enum('0','1') DEFAULT '0' COMMENT '是否是标准',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

PHP实现代码如下:

private function bouns_recursion($range,$standard,&$rule_list,$amount){
   $price = 1000;
   $max = $standard['end_rang']  ;//最大值
   $min = $standard['start_rang']  ;//最小值
   $bonus_rate = $standard['bonus_rate'];//分红率
   if($range<$min){
      return false;
   }
   $standard_amount = 0;
   $plus = 0;
   //是否是标准 第一个
   if($standard['is_standard']==1){
       $standard_amount = $price * $min * $bonus_rate / 100; //求提成 600  300 
    }else{
      $plus = 1; //第二次要累加
   }
   if($range > $max){
     $number = ($max - $min) + $plus;//算出差值值 5 4-3 == 1
     $amount = ($price * $number * $bonus_rate / 100); //求提成 200
   }else{
      $number = ($range - $min ) + $plus;//算出差值值 4 1
      $amount = ($price * $number * $bonus_rate / 100); //求提成 
  }
   $amount = $amount + $standard_amount;//800
   if(!empty($rule_list[$standard['chain_next']]) && $range > $max){
      return $amount += $this->bouns_recursion($range, $rule_list[$standard['chain_next']], $rule_list,$amount);
  }
  return $amount;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一段php加密解密的代码
Oct 09 PHP
Apache+php+mysql在windows下的安装与配置图解(最新版)
Nov 30 PHP
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
Oct 31 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
php生成百度sitemap站点地图类函数实例
Oct 17 PHP
Yii清理缓存的方法
Jan 06 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 #PHP
开启PHP Static 关键字之旅模式
Nov 13 #PHP
php正则表达式学习笔记
Nov 13 #PHP
php邮箱地址正则表达式验证
Nov 13 #PHP
合格的PHP程序员必备技能
Nov 13 #PHP
PHP基于yii框架实现生成ICO图标
Nov 13 #PHP
php中session定期自动清理的方法
Nov 12 #PHP
You might like
PHP 程序员的调试技术小结
2009/11/15 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
javascript中的有名函数和无名函数
2007/10/17 Javascript
jQuery 事件队列调整方法
2009/09/18 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
销售经理工作职责范文
2013/12/03 职场文书
入党积极分子思想汇报范文
2014/01/05 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
js实现自动锁屏功能
2021/06/02 Javascript