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 相关文章推荐
教你IIS6的PHP最佳配置方法
Sep 05 PHP
phpmail类发送邮件函数代码
Feb 20 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
php生成短域名函数
Mar 23 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
php htmlentities()函数的定义和用法
May 13 PHP
php生成无限栏目树
Mar 16 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 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表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
javaScript arguments 对象使用介绍
2013/10/18 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
Web技术实现移动监测的介绍
2017/09/18 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
Python3基础之基本数据类型概述
2014/08/13 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
简单的命令查看安装的python版本号
2020/08/28 Python
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
2014年计算机专业个人自我评价
2014/01/19 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
获奖感言一句话
2015/07/31 职场文书