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

 

目录
相关文章
|
安全 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
|
3月前
|
NoSQL 安全 PHP
hyperf-wise-locksmith,一个高效的PHP分布式锁方案
`hyperf-wise-locksmith` 是 Hyperf 框架下的互斥锁库,支持文件锁、分布式锁、红锁及协程锁,有效防止分布式环境下的竞争条件。本文介绍了其安装、特性和应用场景,如在线支付系统的余额扣减,确保操作的原子性。
47 4
|
4月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
算法 小程序 PHP
PHP实现递归排序
在leetcode练习算法的时候,发现一个算法需要用到递归。 递归是个好东西,但是吧,一般不理解其精髓的,很难写出一个好的递归。 递归其实就是函数本身直接或者间接地调用自身的一种编程方法(我自己调用我自己~),也可以理解为有反复执行过程的一种方法,这个就与循环非常相似,但是递归调用的函数中必须要有终止条件,也就是一定
58 1
|
自然语言处理 安全 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.
|
关系型数据库 MySQL BI
mysql高级进阶:php语句操作mysql进行最大值、最小值、平均值和中位数的报表导出方案
mysql高级进阶:php语句操作mysql进行最大值、最小值、平均值和中位数的报表导出方案
161 0
|
关系型数据库 MySQL PHP
lockdatav-API在开发过程中php和mysql语法的优化方案
lockdatav-API在开发过程中php和mysql语法的优化方案
78 0
|
JSON 前端开发 PHP
PHP中使用CURL获得快递100API接口JSON数据的文件头处理方案
PHP中使用CURL获得快递100API接口JSON数据的文件头处理方案
105 0
|
PHP
PHP递归和循环的速度测试
写了一个可以对 $_GET`, `$_POST 等输入进行过滤的函数,做了PHP递归和循环的速度测试。
92 0

热门文章

最新文章