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 相关文章推荐
如何实现给定日期的若干天以后的日期
Oct 09 PHP
php中将网址转换为超链接的函数
Sep 02 PHP
ThinkPHP3.1基础知识快速入门
Jun 19 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
Mar 03 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
php实现微信支付之退款功能
May 30 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 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采集腾讯微博的实现代码
2012/01/19 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
PHP生成树的方法
2015/07/28 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
python使用KNN算法手写体识别
2018/02/01 Python
python绘制热力图heatmap
2020/03/23 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
详解python metaclass(元类)
2020/08/13 Python
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
函数指针的定义是什么
2016/08/14 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
网络事业创业计划书范文
2014/01/09 职场文书
三年级语文教学反思
2014/02/01 职场文书
买房协议书
2014/04/11 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
升职自荐信怎么写
2015/03/05 职场文书
人事行政助理岗位职责
2015/04/11 职场文书