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 新手入门教程
Aug 03 PHP
深入浅析用PHP实现MVC
Mar 02 PHP
[原创]php简单隔行变色功能实现代码
Jul 09 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
PHP设计模式之原型设计模式原理与用法分析
Apr 25 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
php中yar框架实例用法讲解
Dec 27 PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 PHP
一文搞懂php的垃圾回收机制
Jun 18 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中动态HTML的输出技术
2006/10/09 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
jQuery分组选择器简单用法示例
2019/04/04 jQuery
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
python实现石头剪刀布小游戏
2021/01/20 Python
python实现ip地址的包含关系判断
2020/02/07 Python
详解python tcp编程
2020/08/24 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
应届毕业生求职信范文分享
2013/12/26 职场文书
军训感想500字
2014/02/20 职场文书
销售求职信范文
2014/05/26 职场文书
119消防日活动总结
2014/08/29 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
团支部书记竞选稿
2015/11/21 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android