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 相关文章推荐
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
聊天室php&amp;mysql(一)
Oct 09 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
PHP操作xml代码
Jun 17 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
四个PHP非常实用的功能
Sep 29 PHP
PHP设计模式之迭代器模式
Jun 17 PHP
PHP数组内存利用率低和弱类型详细解读
Aug 10 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
Apr 04 PHP
yii框架数据库关联查询操作示例
Oct 14 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得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
php使用codebase生成随机数
2014/03/25 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
python实现电子词典
2020/04/23 Python
python fabric实现远程操作和部署示例
2014/03/25 Python
python使用7z解压apk包的方法
2015/04/18 Python
python实现excel读写数据
2021/03/02 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
2013年军训通讯稿
2014/02/05 职场文书
采购类个人求职的自我评价
2014/02/18 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书