diff --git a/addon/fenxiao/model/Config.php b/addon/fenxiao/model/Config.php index 3285a2b..c20befe 100644 --- a/addon/fenxiao/model/Config.php +++ b/addon/fenxiao/model/Config.php @@ -40,7 +40,9 @@ class Config extends BaseModel 'is_support_cashier' => $data[ 'is_support_cashier' ],//是否开启商品详情一级佣金 'direct_rate' => $data[ 'direct_rate' ],//默认直推 'indirect_rate' => $data[ 'indirect_rate' ],//默认间推 - 'founder_rate' => $data[ 'founder_rate' ],//默认间推 + 'founder_rate' => $data[ 'founder_rate' ],//创始人分红比例 + 'four_rate' => $data[ 'four_rate' ],//创始人分红比例 + ]; $config->setConfig($basics_data, '分销基本配置', $is_use, [ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'FENXIAO_BASICS_CONFIG' ] ]); //分销商设置 @@ -85,6 +87,7 @@ class Config extends BaseModel 'direct_rate' => 0,//是否开启商品详情一级佣金 'indirect_rate' => 0,//是否开启商品详情一级佣金 'founder_rate' => 0,//是否开启商品详情一级佣金 + 'four_rate' => 0,//是否开启商品详情一级佣金 ]; } $res[ 'data' ][ 'value' ][ 'is_commission_money' ] = $res[ 'data' ][ 'value' ][ 'is_commission_money' ] ?? 1; @@ -95,6 +98,7 @@ class Config extends BaseModel $res[ 'data' ][ 'value' ][ 'direct_rate' ] = $res[ 'data' ][ 'value' ][ 'direct_rate' ] ?? 0; $res[ 'data' ][ 'value' ][ 'indirect_rate' ] = $res[ 'data' ][ 'value' ][ 'indirect_rate' ] ?? 0; $res[ 'data' ][ 'value' ][ 'founder_rate' ] = $res[ 'data' ][ 'value' ][ 'founder_rate' ] ?? 0; + $res[ 'data' ][ 'value' ][ 'four_rate' ] = $res[ 'data' ][ 'value' ][ 'four_rate' ] ?? 0; return $res; } diff --git a/addon/fenxiao/model/FenxiaoOrder.php b/addon/fenxiao/model/FenxiaoOrder.php index 977568e..bc4017c 100644 --- a/addon/fenxiao/model/FenxiaoOrder.php +++ b/addon/fenxiao/model/FenxiaoOrder.php @@ -90,7 +90,7 @@ class FenxiaoOrder extends BaseModel if($goods_info['goods_kind_id']){ $order_fenxiao_data = $this->getPushFenXiaoCommission($fenxiao_info,$v,$order_fenxiao_data,$goods_info['fenxiao_type'],$fenxiao_basic_config); } - $order_fenxiao_data = $this->getWholesaleFenXiaoCommission($fenxiao_info,$v,$order_fenxiao_data,$goods_info['fenxiao_type'],$fenxiao_basic_config,$goods_info['goods_kind_id']); + $order_fenxiao_data = $this->getWholesaleFenXiaoCommission($fenxiao_info,$v,$order_fenxiao_data,$fenxiao_basic_config,$goods_info['goods_kind_id']); if($order_fenxiao_data['commission'] && $order_fenxiao_data['commission_rate']){ $data = [ 'order_id' => $order['order_id'], @@ -183,9 +183,9 @@ class FenxiaoOrder extends BaseModel return $order_fenxiao_data; } - private function getWholesaleFenXiaoCommission($fenxiao_info,$v,&$order_fenxiao_data,$type,$config,$goods_kind = 0){ + private function getWholesaleFenXiaoCommission($fenxiao_info,$v,&$order_fenxiao_data,$config,$goods_kind = 0){ //不是报单商品才有自购 - if($config['self_purchase_rebate'] && $fenxiao_info['level_num'] > 0 && $goods_kind === 1){ + if($config['self_purchase_rebate'] && $fenxiao_info['level_num'] > 0 && $goods_kind === 0){ $order_fenxiao_data['wholesale_fenxiao_id'][] = $fenxiao_info['fenxiao_id']; $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] = $fenxiao_info[ 'one_rate' ]; $commission = $fenxiao_info[ 'one_rate' ] * $v[ 'real_goods_money' ] / 100; @@ -210,31 +210,32 @@ class FenxiaoOrder extends BaseModel ->join('fenxiao_level l', 'f.level_id = l.level_id', 'right') ->where('f.fenxiao_id', '<>', $fenxiao_info['fenxiao_id']) ->whereIn('f.fenxiao_id', $chain) - ->field('f.fenxiao_id,f.fenxiao_name,f.member_id,f.level_id,f.site_id,f.fenxiao_name,f.status,l.level_num,l.one_rate,l.two_rate') + ->field('f.fenxiao_id,f.fenxiao_name,f.member_id,f.level_id,f.site_id,f.fenxiao_name,f.status,l.level_num,l.rank') ->select(); //获取上级用户 $nodeUser = $nodeUser ? $nodeUser->toArray() : []; if(count($nodeUser) > 0){ - $order_fenxiao_data = $this->getWholesaleCommission($nodeUser,$v,$order_fenxiao_data,$chain,$fenxiao_info['level_num'] + 1,$type,$config,$goods_kind); + $order_fenxiao_data = $this->getWholesaleCommission($nodeUser,$v,$order_fenxiao_data,$chain,$config,$goods_kind); } } return $order_fenxiao_data; } - protected function getWholesaleCommission($nodeUser,$v,&$order_fenxiao_data,$chain,$leve_num,$type,$config,$goods_kind){ + protected function getWholesaleCommission($nodeUser,$v,&$order_fenxiao_data,$chain,$config,$goods_kind){ //不考虑商品单独规则 $fenxiao_user_id = array_column($nodeUser,'fenxiao_id'); $max_level_num = (int)model('fenxiao_level')->stat([['site_id' ,'=' , $v['site_id']]],'max','level_num'); foreach($chain as $k => $value){ $key = array_search($value,$fenxiao_user_id); $user = $nodeUser[$key]; - if(isset($user) && !empty($user) && $user['level_num'] == $leve_num && $leve_num > 1){ + $rank = count($order_fenxiao_data['wholesale_fenxiao_id']); + if(!empty($user) && $rank < $user['rank'] && $rank <= 4){ + $rate = $this->getLevelRate($rank,$v['site_id'],$config); $order_fenxiao_data['wholesale_fenxiao_id'][] = $user['fenxiao_id']; - $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] += $user[ 'two_rate' ]; - $commission = $user[ 'two_rate' ] * $v[ 'real_goods_money' ] / 100; + $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] += $rate; + $commission = $rate * $v[ 'real_goods_money' ] / 100; $order_fenxiao_data['commission'] += $order_fenxiao_data[ 'wholesale_commission' ] += $commission; $order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission]; - ++$leve_num; } //联合创始人分红 if(isset($user) && !empty($user) && $max_level_num == $user['level_num'] && $config['founder_rate'] && $goods_kind === 0){ @@ -281,6 +282,17 @@ class FenxiaoOrder extends BaseModel return $order_fenxiao_data; } + protected function getLevelRate($rank,$site_id,$config){ + $level_config = model('fenxiao_level')->getInfo([['site_id' ,'=',$site_id],['level_num' ,'=' ,0],['is_default', '=' ,1]],'one_rate,two_rate,three_rate'); + $rates = [ + $level_config['one_rate'] ?? 0, + $level_config['two_rate'] ?? 0, + $level_config['three_rate'] ?? 0, + $config['four_rate'] ?? 0, + ]; + return $rates[$rank]; + } + /** * 订单退款 * @param $order_goods_id diff --git a/addon/fenxiao/shop/controller/Config.php b/addon/fenxiao/shop/controller/Config.php index 7f9c760..11bb385 100644 --- a/addon/fenxiao/shop/controller/Config.php +++ b/addon/fenxiao/shop/controller/Config.php @@ -49,6 +49,7 @@ class Config extends BaseShop 'one_rate' => input('one_rate', 0.00), 'two_rate' => input('two_rate', 0.00), 'three_rate' => input('three_rate', 0.00), + 'four_rate' => input('four_rate', 0.00), 'direct_rate' => input('direct_rate', 0.00), 'indirect_rate' => input('indirect_rate', 0.00), 'founder_rate' => input('founder_rate', 0.00), diff --git a/addon/fenxiao/shop/controller/Level.php b/addon/fenxiao/shop/controller/Level.php index 34e6e93..1ee3b5e 100644 --- a/addon/fenxiao/shop/controller/Level.php +++ b/addon/fenxiao/shop/controller/Level.php @@ -27,7 +27,7 @@ class Level extends BaseShop public function lists() { $model = new FenxiaoLevelModel(); - $field = 'level_id,level_num,level_name,one_rate,two_rate,three_rate,status,create_time,is_default,one_fenxiao_order_num,one_fenxiao_order_money,one_fenxiao_total_order,order_num,order_money,one_child_num,one_child_fenxiao_num,upgrade_type,goods_ids'; + $field = 'level_id,level_num,level_name,one_rate,two_rate,three_rate,rank,status,create_time,is_default,one_fenxiao_order_num,one_fenxiao_order_money,one_fenxiao_total_order,order_num,order_money,one_child_num,one_child_fenxiao_num,upgrade_type,goods_ids'; if (request()->isAjax()) { $page = input('page', 1); @@ -69,6 +69,7 @@ class Level extends BaseShop 'one_rate' => input('one_rate',''), 'two_rate' => input('two_rate',''), 'three_rate' => input('three_rate',''), + 'rank' => input('rank',0), 'upgrade_type' => input('upgrade_type',''), 'level_num' => input('level_num',1), 'fenxiao_order_num' => input('fenxiao_order_num',''), @@ -116,6 +117,7 @@ class Level extends BaseShop 'one_rate' => input('one_rate',''), 'two_rate' => input('two_rate',''), 'three_rate' => input('three_rate',''), + 'rank' => input('rank',0), 'upgrade_type' => input('upgrade_type',''), 'level_num' => input('level_num',0), 'fenxiao_order_num' => input('fenxiao_order_num',''), diff --git a/addon/fenxiao/shop/view/config/basics.html b/addon/fenxiao/shop/view/config/basics.html index 9277fef..cab9a88 100644 --- a/addon/fenxiao/shop/view/config/basics.html +++ b/addon/fenxiao/shop/view/config/basics.html @@ -30,7 +30,7 @@ -
+
@@ -189,7 +189,7 @@

会员购买后给对应分销商的返佣比例

-
= 2}style="display:none"{/if}> +
@@ -201,7 +201,7 @@

会员购买后给对应分销商的上级分销商返佣比例

-
+
@@ -213,6 +213,18 @@

会员购买后给当前等级分销商的上上级分销商返佣比例

+
+
+ +
+ +
+
%
+
+
+

会员购买后给当前等级分销商的上上上级分销商返佣比例

+
+
@@ -222,7 +234,7 @@
%
-

会员购买后给对应分销商的默认直推返佣比例

+

会员购买报单商品后给对应分销商的默认直推返佣比例

@@ -234,7 +246,7 @@
%
-

会员购买后给对应分销商的默认间推返佣比例

+

会员购买报单商品后给对应分销商的默认间推返佣比例

diff --git a/addon/fenxiao/shop/view/goods/config.html b/addon/fenxiao/shop/view/goods/config.html index a3d9723..7809b2d 100644 --- a/addon/fenxiao/shop/view/goods/config.html +++ b/addon/fenxiao/shop/view/goods/config.html @@ -187,13 +187,13 @@

价格

分销商等级名称

- 一级佣金比例 - {if $fenxiao_config.level >= 2} - 二级佣金比例 - {/if} - {if $fenxiao_config.level >= 3} - 三级佣金比例 - {/if} + + + + + + + 直推佣金比例 间推佣金比例 @@ -217,55 +217,55 @@ {$level.level_name} - - {foreach $goods_info['sku_data'] as $sku} - {if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])} -
-
0}disabled{/if} > %
-
0}disabled{/if} > 元
-
- {else/} -
-
%
-
-
- {/if} - {/foreach} - - {if $fenxiao_config.level >= 2} - - {foreach $goods_info['sku_data'] as $sku} - {if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])} -
-
0}disabled{/if} > %
-
0}disabled{/if} > 元
-
- {else/} -
-
%
-
-
- {/if} - {/foreach} - - {/if} - {if $fenxiao_config.level >= 3} - - {foreach $goods_info['sku_data'] as $sku} - {if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])} -
-
0}disabled{/if} > %
-
0}disabled{/if} > 元
-
- {else/} -
-
%
-
-
- {/if} - {/foreach} - - {/if} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {foreach $goods_info['sku_data'] as $sku} {if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])} diff --git a/addon/fenxiao/shop/view/level/add.html b/addon/fenxiao/shop/view/level/add.html index e59ab2c..0b0de9e 100644 --- a/addon/fenxiao/shop/view/level/add.html +++ b/addon/fenxiao/shop/view/level/add.html @@ -51,77 +51,86 @@
- {if $basics_info.level == 1} -
- -
- -
-
%
+
+ +
+ +
+
+
+

会员购买后当前等级分销商的最多能获取几层

+
+ + + + + + + -
-
-

会员购买后给当前等级分销商的佣金比例

-
- {elseif $basics_info.level == 2 /} -
- -
- -
-
%
+ + + + + + + + + + + -
-
-

会员购买后给当前等级分销商的佣金比例

-
-
- -
- -
-
%
+ + + + + + + + + + -
-
-

会员购买后给当前等级分销商的上级分销商佣金比例

-
- {elseif $basics_info.level == 3 /} -
- -
- -
-
%
+ + + + + + + + + + + -
-
-

会员购买后给当前等级分销商的佣金比例

-
-
- -
- -
-
%
+ + + + + + + + + + -
-
-

会员购买后给当前等级分销商的上级分销商佣金比例

-
+ + + + -
- -
- -
-
%
+ + + + + + -
-
-

会员购买后给当前等级分销商的上上级分销商佣金比例

-
- {/if} + + + + +
diff --git a/addon/fenxiao/shop/view/level/edit.html b/addon/fenxiao/shop/view/level/edit.html index 6f218b1..9599bdd 100644 --- a/addon/fenxiao/shop/view/level/edit.html +++ b/addon/fenxiao/shop/view/level/edit.html @@ -55,73 +55,82 @@
- {if $basics_info.level == 1} -
- -
- -
-
%
-
-

会员购买后给当前等级分销商的佣金比例

-
-
- {elseif $basics_info.level == 2 /} -
- -
- -
-
%
-
-

会员购买后给当前等级分销商的佣金比例

-
-
- -
- -
- -
-
%
-
-

会员购买后给当前等级分销商的上级分销商佣金比例

-
-
- {elseif $basics_info.level == 3 /}
- +
- -
-
%
-
-

会员购买后给当前等级分销商的佣金比例

+
- -
- -
- -
-
%
-
-

会员购买后给当前等级分销商的上级分销商佣金比例

-
+
+

会员购买后当前等级分销商的最多能获取几层

+ + + + + + + + + + + + + + + + + + + + + + -
- -
- -
-
%
-
-

会员购买后给当前等级分销商的上上级分销商佣金比例

-
-
- {/if} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{if $info.is_default eq 0} diff --git a/addon/fenxiao/shop/view/level/lists.html b/addon/fenxiao/shop/view/level/lists.html index 3b509ae..41002c7 100644 --- a/addon/fenxiao/shop/view/level/lists.html +++ b/addon/fenxiao/shop/view/level/lists.html @@ -85,32 +85,10 @@ unresize: 'false', width: '10%' }, { - field: 'one_rate', - title: '一级佣金比例', + field: 'rank', + title: '分红层级', unresize: 'false', - width: '10%', - templet: function(data) { - return data.one_rate + '%'; - }, - hide: {if $basics_info.level >= 1} false {else /} true {/if} - }, { - field: 'two_rate', - title: '二级佣金比例', - unresize: 'false', - width: '10%', - templet: function(data) { - return data.two_rate + '%'; - }, - hide: {if $basics_info.level >= 2} false {else /} true {/if} - }, { - field:'three_rate', - title: '三级佣金比例', - unresize: 'false', - width: '15%', - templet: function(data) { - return data.three_rate + '%'; - }, - hide: {if $basics_info.level >= 3} false {else /} true {/if} + width: '10%' }, { title: '升级条件', unresize: 'false', diff --git a/app/pay/controller/Test.php b/app/pay/controller/Test.php index 7c5feb9..461b5bf 100644 --- a/app/pay/controller/Test.php +++ b/app/pay/controller/Test.php @@ -24,7 +24,7 @@ class Test{ // public function test(){ - $orderId = 37; + $orderId = 40; $order_info = model('order')->getInfo(['order_id' => $orderId]); // $fenxiao_order = new OrderPay(); // $res = $fenxiao_order->handle($order_info);