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
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
比较全面的PHP数组的使用方法小结
Sep 23 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
PHP laravel中的多对多关系实例详解
Jun 07 PHP
PHP学习笔记之session
May 06 PHP
PHP利用DWZ.CN服务生成短网址
Aug 11 PHP
php写app用的框架整理
Sep 29 PHP
关于PHP5.6+版本“No input file specified”问题的解决
Dec 11 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
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
PHP 八种基本的数据类型小结
2011/06/01 PHP
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
php+ajax登录跳转登录实现思路
2016/07/31 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
python设计模式大全
2016/06/27 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
Python如何给你的程序做性能测试
2020/07/29 Python
Python 如何测试文件是否存在
2020/07/31 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
python中spy++的使用超详细教程
2021/01/29 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
五水共治一句话承诺
2014/05/30 职场文书
初三语文教学计划
2015/01/22 职场文书
家长会感言
2015/08/01 职场文书
如何撰写创业策划书
2019/06/27 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
javascript实现计算器功能详解流程
2021/11/01 Javascript
pt-archiver 主键自增
2022/04/26 MySQL