diff --git a/addon/fenxiao/model/FenxiaoOrder.php b/addon/fenxiao/model/FenxiaoOrder.php index 777e395..714d9a9 100644 --- a/addon/fenxiao/model/FenxiaoOrder.php +++ b/addon/fenxiao/model/FenxiaoOrder.php @@ -89,7 +89,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,$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'],$goods_info['fenxiao_type']); if($order_fenxiao_data['commission'] && $order_fenxiao_data['commission_rate']){ $data = [ 'order_id' => $order['order_id'], @@ -189,7 +189,7 @@ class FenxiaoOrder extends BaseModel return $order_fenxiao_data; } - private function getWholesaleFenXiaoCommission($fenxiao_info,$v,&$order_fenxiao_data,$config,$goods_kind = 0){ + private function getWholesaleFenXiaoCommission($fenxiao_info,$v,&$order_fenxiao_data,$config,$goods_kind = 0,$fenxiao_type = 1){ //不是报单商品才有自购 if($config['self_purchase_rebate'] && $fenxiao_info['level_num'] > 0 && $goods_kind === 0){ $order_fenxiao_data['wholesale_fenxiao_id'][] = $fenxiao_info['fenxiao_id']; @@ -221,14 +221,14 @@ class FenxiaoOrder extends BaseModel ->select(); //获取上级用户 $nodeUser = $nodeUser ? $nodeUser->toArray() : []; if(count($nodeUser) > 0){ - $order_fenxiao_data = $this->getWholesaleCommission($nodeUser,$v,$order_fenxiao_data,$chain,$config,$goods_kind); + $order_fenxiao_data = $this->getWholesaleCommission($nodeUser,$v,$order_fenxiao_data,$chain,$config,$goods_kind,$fenxiao_type); } } return $order_fenxiao_data; } - protected function getWholesaleCommission($nodeUser,$v,&$order_fenxiao_data,$chain,$config,$goods_kind){ + protected function getWholesaleCommission($nodeUser,$v,&$order_fenxiao_data,$chain,$config,$goods_kind,$fenxiao_type){ //不考虑商品单独规则 $fenxiao_user_id = array_column($nodeUser,'fenxiao_id'); $max_level_num = (int)model('fenxiao_level')->stat([['site_id' ,'=' , $v['site_id']]],'max','level_num'); @@ -241,7 +241,7 @@ class FenxiaoOrder extends BaseModel $rank = $goods_kind ? count($order_fenxiao_data['wholesale_fenxiao_id']) + 1 : count($order_fenxiao_data['wholesale_fenxiao_id']); //直推和间推也需要计算 if(!empty($user) && $rank < $user['rank'] && $rank <= 4){ - $rate = $this->getLevelRate($rank,$v['site_id'],$config); + $rate = $this->getLevelRate($rank,$v['site_id'],$v['goods_id'],$v[ 'sku_id' ],$user['level_id'],$config,$fenxiao_type); if($user['rank'] == 1 && ($one_fenxiao_id != $user['fenxiao_id'] && $two_fenxiao_id != $user['fenxiao_id'])){ $order_fenxiao_data['wholesale_fenxiao_id'][] = $user['fenxiao_id']; $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] += $rate; @@ -268,47 +268,26 @@ class FenxiaoOrder extends BaseModel return $order_fenxiao_data; } - protected function getWholesaleCommissions($nodeUser,$v,&$order_fenxiao_data,$chain,$leve_num,$type,$config){ - //不考虑商品单独规则 - $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){ - //独立设置的佣金 - if($type == 2){ - }else{ - - } - $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'] += $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']){ - $order_fenxiao_data['founder_fenxiao_id'][] = $user['fenxiao_id']; - $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'founder_rate' ] += $config['founder_rate']; - $commission = $config['founder_rate'] * $v[ 'real_goods_money' ] / 100; - $order_fenxiao_data['commission'] += $order_fenxiao_data[ 'founder_commission' ] += $commission; - $order_fenxiao_data['founder_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission]; - } + protected function getLevelRate($rank,$site_id,$goods_id,$sku_id,$level_id,$config,$fenxiao_type){ + if($fenxiao_type == 2){ + $fenxiao_level = model('fenxiao_goods_sku')->getInfo([ [ 'goods_id', '=', $goods_id ], [ 'sku_id', '=', $sku_id ], [ 'level_id', '=', $level_id ] ]); + $rates = [ + $fenxiao_level['one_rate'] ?? 0, + $fenxiao_level['two_rate'] ?? 0, + $fenxiao_level['three_rate'] ?? 0, + $fenxiao_level['four_rate'] ?? 0, + ]; + }else{ + $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 $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]; } diff --git a/addon/fenxiao/shop/controller/Goods.php b/addon/fenxiao/shop/controller/Goods.php index 0cd0baa..4d5fd47 100644 --- a/addon/fenxiao/shop/controller/Goods.php +++ b/addon/fenxiao/shop/controller/Goods.php @@ -244,7 +244,25 @@ class Goods extends BaseShop } $goods_info[ 'data' ][ 'fenxiao_skus' ] = $skus; $goods_info[ 'data' ][ 'goods_image' ] = explode(',', $goods_info[ 'data' ][ 'goods_image' ]); - + $rates = [ + [ + 'level_name' => '一级返佣比例', + 'rate' => $fenxiao_level['data'][0]['one_rate'] + ], + [ + 'level_name' => '二级返佣比例', + 'rate' => $fenxiao_level['data'][0]['two_rate'] + ], + [ + 'level_name' => '三级返佣比例', + 'rate' => $fenxiao_level['data'][0]['three_rate'] + ], + [ + 'level_name' => '四级返佣比例', + 'rate' => $fenxiao_config['four_rate'] + ] + ]; + $this->assign('rates', $rates); $this->assign('fenxiao_level', $fenxiao_level[ 'data' ]); $this->assign('goods_info', $goods_info[ 'data' ]); diff --git a/addon/fenxiao/shop/view/goods/config.html b/addon/fenxiao/shop/view/goods/config.html index 7809b2d..99c3a02 100644 --- a/addon/fenxiao/shop/view/goods/config.html +++ b/addon/fenxiao/shop/view/goods/config.html @@ -137,26 +137,32 @@ 默认规则 - 一级佣金比例 - {if $fenxiao_config.level >= 2} - 二级佣金比例 - {/if} - {if $fenxiao_config.level >= 3} - 三级佣金比例 - {/if} + 佣金比例 + + + + + + - {foreach $fenxiao_level as $level} + + + + + + + + + + + + + {foreach $rates as $level} {$level.level_name} - {$level.one_rate}% - {if $fenxiao_config.level >= 2} - {$level.two_rate}% - {/if} - {if $fenxiao_config.level >= 3} - {$level.three_rate}% - {/if} + {$level.rate}% {/foreach} @@ -165,35 +171,36 @@
-
- - - - - - - {if $fenxiao_config.level >= 2} - - {/if} - {if $fenxiao_config.level >= 3} - - {/if} - + + + + + + + + + + + + + - + - + + + - + @@ -217,55 +224,67 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +
商品规格

价格

分销商等级名称

一级返佣比例 二级返佣比例三级返佣比例 四级返佣比例 直推佣金比例 间推佣金比例
{$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} +
+ {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} +
+ {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} +
+ {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} +
{foreach $goods_info['sku_data'] as $sku} {if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}