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 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
Sep 30 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
Jul 05 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
PHP动态柱状图实现方法
Mar 30 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
Nov 14 PHP
php自定义扩展名获取函数示例
Dec 12 PHP
基于php数组中的索引数组和关联数组详解
Mar 12 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 PHP
PHP设计模式之命令模式示例详解
Dec 20 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 Socket配置以及实例的详细介绍
2013/06/13 PHP
php去除数组中重复数据
2014/11/18 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
详解Python中的各种函数的使用
2015/05/24 Python
基于python时间处理方法(详解)
2017/08/14 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
基于FME使用Python过程图解
2020/05/13 Python
机械设计制造专业个人求职信
2013/09/25 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
python+opencv实现视频抽帧示例代码
2021/06/11 Python