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 相关文章推荐
java EJB 加密与解密原理的一个例子
Jan 11 PHP
php date与gmdate的获取日期的区别
Feb 08 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
php + nginx项目中的权限详解
May 23 PHP
php-fpm开启状态统计的方法详解
Jun 23 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
PHP简单实现记录网站访问量功能示例
Jun 06 PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 PHP
phpstorm激活码2020附使用详细教程
Sep 25 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图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
Python 实现自动登录+点击+滑动验证功能
2020/06/10 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
linux面试题参考答案(8)
2015/08/11 面试题
秘书英文求职信范文
2014/01/31 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
学习保证书100字
2015/02/26 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
个人求职自荐信范文
2015/03/06 职场文书