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 相关文章推荐
在Windows版的PHP中使用ADO
Oct 09 PHP
PHP的FTP学习(四)
Oct 09 PHP
PHP的中问验证码
Nov 25 PHP
增加反向链接的101个方法 站长推荐
Jan 31 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
PHP flush()与ob_flush()的区别详解
Jun 03 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
PHP生成指定长度随机数最简洁的方法
Jul 14 PHP
php实现图片上传并利用ImageMagick生成缩略图
Mar 14 PHP
浅谈PHP中静态方法和非静态方法的相互调用
Oct 04 PHP
Laravel模型间关系设置分表的方法示例
Apr 21 PHP
PHP字符串中抽取子串操作实例分析
Jun 22 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
example1.php
2006/10/09 PHP
php tp验证表单与自动填充函数代码
2012/02/22 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
js登录弹出层特效
2014/03/07 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
python实现计算器功能
2019/10/31 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
开学典礼主持词
2014/03/19 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript