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中的cookie
Nov 26 PHP
在同一窗体中使用PHP来处理多个提交任务
May 08 PHP
php 异常处理实现代码
Mar 10 PHP
php 常用类汇总 推荐收藏
May 13 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
php使用codebase生成随机数
Mar 25 PHP
php文件夹的创建与删除方法
Jan 24 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
各种快递查询--Api接口
Apr 26 PHP
PHP图像识别技术原理与实现
Oct 27 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 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开发者事半功倍的十大技巧小结
2010/04/20 PHP
深入php之规范编程命名小结
2013/05/15 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
JS中style属性
2006/10/11 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
Python中模块与包有相同名字的处理方法
2017/05/05 Python
Python实现Linux中的du命令
2017/06/12 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
生活小常识广播稿
2014/09/16 职场文书
单位政审意见范文
2015/06/04 职场文书
爱国主义主题班会
2015/08/14 职场文书
会计专业自荐信范文
2019/05/22 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle