php实现的递归提成方案实例

 更新时间:2015年11月14日 10:35:44   作者:jackluo  
这篇文章主要介绍了php实现的递归提成方案,以完整实例形式较为详细的分析了php提成方案的数据库设计及功能实现技巧,涉及PHP数学运算的相关技巧,需要的朋友可以参考下

本文实例讲述了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 curl get post 请求的封装函数示例【get、post、put、delete等请求类型】

    PHP curl get post 请求的封装函数示例【get、post、put

    这篇文章主要介绍了PHP curl get post 请求的封装函,包含了php使用curl针对get、post、put、delete等请求类型进行封装的操作技巧,以及CURLOPT_CUSTOMREQUEST控制DELETE、PUT请求类型的实现方法,需要的朋友可以参考下
    2023-04-04
  • PHP开发不能违背的安全规则 过滤用户输入

    PHP开发不能违背的安全规则 过滤用户输入

    作为PHP程序员,特别是新手,对于互联网的险恶总是知道的太少,对于外部的入侵有很多时候是素手无策的,他们根本不知道黑客是如何入侵的、提交入侵、上传漏洞、sql 注入、跨脚本攻击等等。
    2011-05-05
  • php实现在多维数组中查找特定value的方法

    php实现在多维数组中查找特定value的方法

    这篇文章主要介绍了php实现在多维数组中查找特定value的方法,实例分析了php实现多维数组的遍历及unset删除的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • php发送http请求的常用方法分析

    php发送http请求的常用方法分析

    这篇文章主要介绍了php发送http请求的常用方法,结合实例形式较为详细的分析了php使用curl及socket发送post请求的操作技巧,需要的朋友可以参考下
    2016-11-11
  • 解析php 版获取重定向后的地址(代码)

    解析php 版获取重定向后的地址(代码)

    本篇文章是对php版获取重定向后的地址实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php实现读取手机客户端浏览器的类

    php实现读取手机客户端浏览器的类

    这篇文章主要介绍了php实现读取手机客户端浏览器的类,可实现取手机号码,浏览器报头信息,取得手机类型,取得手机IP等功能,需要的朋友可以参考下
    2015-01-01
  • php 去除html标记--strip_tags与htmlspecialchars的区别详解

    php 去除html标记--strip_tags与htmlspecialchars的区别详解

    本篇文章是对php中去除html标记以及strip_tags与htmlspecialchars的区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • CodeIgniter php mvc框架 中国网站

    CodeIgniter php mvc框架 中国网站

    CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序。如果你是一个使用共享主机,并且为客户所要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架
    2008-05-05
  • php实现将任意进制数转换成10进制的方法

    php实现将任意进制数转换成10进制的方法

    这篇文章主要介绍了php实现将任意进制数转换成10进制的方法,涉及php数制转换的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 支持汉转拼和拼音分词的PHP中文工具类ChineseUtil

    支持汉转拼和拼音分词的PHP中文工具类ChineseUtil

    本文给大家推荐的是一款PHP的中文分词工具类,功能包括支持汉字转拼音、拼音分词、简繁互转。非常不错,有需要的小伙伴可以参考下
    2018-02-02

最新评论