php 处理递归提成的方案

简介: 好久没有写blog了,最近CRM项目中用到了递归提成的方案 CREATE TABLE `crm_proxy_bonux_rule` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '超过的部份提成规则ID', `bouns_rule_name`...

好久没有写blog了,最近CRM项目中用到了递归提成的方案

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;
 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;
}

 

目录
相关文章
|
7月前
|
安全 Java PHP
PHP/JAVA交易所系统开发(成熟案例)丨需求步骤丨指南详细丨方案逻辑丨逻辑教程丨源码功能
An exchange refers to an institution or platform that provides a centralized market for buying and selling transactions, where participants can trade various assets, such as securities, commodities, cryptocurrencies, etc. Exchanges provide market infrastructure and rules to facilitate compliant, saf
|
4月前
|
算法 小程序 PHP
PHP实现递归排序
在leetcode练习算法的时候,发现一个算法需要用到递归。 递归是个好东西,但是吧,一般不理解其精髓的,很难写出一个好的递归。 递归其实就是函数本身直接或者间接地调用自身的一种编程方法(我自己调用我自己~),也可以理解为有反复执行过程的一种方法,这个就与循环非常相似,但是递归调用的函数中必须要有终止条件,也就是一定
28 1
|
7月前
|
自然语言处理 安全 Java
JAVA丨PHP交易所源码,JAVA/PHP交易所系统开发稳定版/多语言/海外版/多版本/成熟技术/方案详细/逻辑功能/规则案例
Identify requirements and design the system: Clarify your business requirements and design the architecture and functionality of the system. This includes determining the supported transaction types, user authentication, transaction matching engines, order management, fund management, etc.
|
9月前
|
关系型数据库 MySQL BI
mysql高级进阶:php语句操作mysql进行最大值、最小值、平均值和中位数的报表导出方案
mysql高级进阶:php语句操作mysql进行最大值、最小值、平均值和中位数的报表导出方案
97 0
|
9月前
|
关系型数据库 MySQL PHP
lockdatav-API在开发过程中php和mysql语法的优化方案
lockdatav-API在开发过程中php和mysql语法的优化方案
52 0
|
9月前
|
JSON 前端开发 PHP
PHP中使用CURL获得快递100API接口JSON数据的文件头处理方案
PHP中使用CURL获得快递100API接口JSON数据的文件头处理方案
73 0
|
10月前
|
PHP
PHP递归和循环的速度测试
写了一个可以对 $_GET`, `$_POST 等输入进行过滤的函数,做了PHP递归和循环的速度测试。
55 0
|
10月前
|
存储 算法 安全
PHP/JAVA原生交易所系统开发详细案例丨交易所系统开发(逻辑方案)及成熟源码
狭义来讲,区块链是一种按照时间顺序将数据区块(什么是区块)以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本.