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 相关文章推荐
php echo 输出字符串函数详解
May 13 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
Dec 25 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
PHP多维数组遍历方法(2种实现方法)
Dec 10 PHP
使用symfony命令创建项目的方法
Mar 17 PHP
PHP获取当前文件的父目录方法汇总
Jul 21 PHP
PHP文件操作详解
Dec 30 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
PHP数组array类常见操作示例
May 15 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中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
php GUID生成函数和类
2014/03/10 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
js实现登录与注册界面
2017/11/01 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
微信小程序中为什么使用var that=this
2019/08/27 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
js实现列表按字母排序
2020/08/11 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
Python高效编程技巧
2013/01/07 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
ddl,dml和dcl的含义
2016/05/08 面试题
保安的辞职报告怎么写
2014/01/20 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
单位工资证明范本
2015/06/12 职场文书
公司出差管理制度范本
2015/08/05 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
服务器间如何实现文件共享
2022/05/20 Servers