From 6842e8fc3b0507924b1a899d19a8abf4cc691b77 Mon Sep 17 00:00:00 2001 From: lvdongyang <2022862913@qq.com> Date: Thu, 26 Sep 2024 07:51:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=94=80=E7=AD=89=E7=BA=A7=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E7=BA=A2=E5=B1=82=E7=BA=A7=20=E5=88=86?= =?UTF-8?q?=E9=94=80=E8=AE=A2=E5=8D=95=E9=87=8D=E6=96=B0=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addon/fenxiao/model/Config.php | 6 +- addon/fenxiao/model/FenxiaoOrder.php | 32 +++-- addon/fenxiao/shop/controller/Config.php | 1 + addon/fenxiao/shop/controller/Level.php | 4 +- addon/fenxiao/shop/view/config/basics.html | 22 +++- addon/fenxiao/shop/view/goods/config.html | 112 ++++++++--------- addon/fenxiao/shop/view/level/add.html | 137 +++++++++++---------- addon/fenxiao/shop/view/level/edit.html | 131 +++++++++++--------- addon/fenxiao/shop/view/level/lists.html | 28 +---- app/pay/controller/Test.php | 2 +- 10 files changed, 251 insertions(+), 224 deletions(-) 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 @@ -
会员购买后给对应分销商的返佣比例
会员购买后给对应分销商的上级分销商返佣比例
会员购买后给当前等级分销商的上上级分销商返佣比例
会员购买后给当前等级分销商的上上上级分销商返佣比例
+会员购买后给对应分销商的默认直推返佣比例
+会员购买报单商品后给对应分销商的默认直推返佣比例
会员购买后给对应分销商的默认间推返佣比例
+会员购买报单商品后给对应分销商的默认间推返佣比例
价格
分销商等级名称
会员购买后当前等级分销商的最多能获取几层
+会员购买后给当前等级分销商的佣金比例
-会员购买后给当前等级分销商的佣金比例
-会员购买后给当前等级分销商的上级分销商佣金比例
-会员购买后给当前等级分销商的佣金比例
-会员购买后给当前等级分销商的上级分销商佣金比例
-会员购买后给当前等级分销商的上上级分销商佣金比例
-会员购买后给当前等级分销商的佣金比例
-会员购买后给当前等级分销商的佣金比例
-会员购买后给当前等级分销商的上级分销商佣金比例
-会员购买后给当前等级分销商的佣金比例
+会员购买后给当前等级分销商的上级分销商佣金比例
-会员购买后当前等级分销商的最多能获取几层
会员购买后给当前等级分销商的上上级分销商佣金比例
-