分销商品设置单独返佣比例金额

This commit is contained in:
liqianjin 2024-09-26 15:34:33 +08:00
parent e3fe095023
commit 84daf86f43
3 changed files with 141 additions and 125 deletions

View File

@ -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,40 +268,17 @@ 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){
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{
}
$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];
}
}
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,
@ -309,6 +286,8 @@ class FenxiaoOrder extends BaseModel
$level_config['three_rate'] ?? 0,
$config['four_rate'] ?? 0,
];
}
return $rates[$rank];
}

View File

@ -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' ]);

View File

@ -137,26 +137,32 @@
<thead>
<tr>
<th>默认规则</th>
<th>一级佣金比例</th>
{if $fenxiao_config.level >= 2}
<th>二级佣金比例</th>
{/if}
{if $fenxiao_config.level >= 3}
<th>三级佣金比例</th>
{/if}
<th>佣金比例</th>
<!-- {if $fenxiao_config.level >= 2}-->
<!-- <th>二级佣金比例</th>-->
<!-- {/if}-->
<!-- {if $fenxiao_config.level >= 3}-->
<!-- <th>三级佣金比例</th>-->
<!-- {/if}-->
</tr>
</thead>
<tbody>
{foreach $fenxiao_level as $level}
<!-- {foreach $fenxiao_level as $level}-->
<!-- <tr>-->
<!-- <td>{$level.level_name}</td>-->
<!-- <td>{$level.one_rate}%</td>-->
<!-- {if $fenxiao_config.level >= 2}-->
<!-- <td>{$level.two_rate}%</td>-->
<!-- {/if}-->
<!-- {if $fenxiao_config.level >= 3}-->
<!-- <td>{$level.three_rate}%</td>-->
<!-- {/if}-->
<!-- </tr>-->
<!-- {/foreach}-->
{foreach $rates as $level}
<tr>
<td>{$level.level_name}</td>
<td>{$level.one_rate}%</td>
{if $fenxiao_config.level >= 2}
<td>{$level.two_rate}%</td>
{/if}
{if $fenxiao_config.level >= 3}
<td>{$level.three_rate}%</td>
{/if}
<td>{$level.rate}%</td>
</tr>
{/foreach}
</tbody>
@ -165,35 +171,36 @@
</div>
<div class="layui-form-item {if $goods_info['is_fenxiao'] == 0 || $goods_info['fenxiao_type'] == 1}layui-hide{/if}" id="personal_rule">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<table class="layui-table" id="rule_list" lay-skin="line" lay-size="lg">
<colgroup>
<col width="10%">
<col width="6%">
<col width="5%">
<col width="10%">
<col width="20%">
{if $fenxiao_config.level >= 2}
<col width="20%">
{/if}
{if $fenxiao_config.level >= 3}
<col width="20%">
{/if}
</colgroup>
<!-- <colgroup>-->
<!-- <col width="10%">-->
<!-- <col width="6%">-->
<!-- <col width="5%">-->
<!-- <col width="10%">-->
<!-- <col width="20%">-->
<!-- {if $fenxiao_config.level >= 2}-->
<!-- <col width="20%">-->
<!-- {/if}-->
<!-- {if $fenxiao_config.level >= 3}-->
<!-- <col width="20%">-->
<!-- {/if}-->
<!-- </colgroup>-->
<thead>
<tr>
<th>商品规格</th>
<th><p class="align-right">价格</p></th>
<th></th>
<th><p class="line-hiding" title="分销商等级名称">分销商等级名称</p></th>
<!--<th>一级佣金比例</th>-->
<th>一级返佣比例</th>
<!--{if $fenxiao_config.level >= 2}-->
<!--<th>二级佣金比例</th>-->
<th>二级返佣比例</th>
<th>三级返佣比例</th>
<!--{/if}-->
<!--{if $fenxiao_config.level >= 3}-->
<!--<th>三级佣金比例</th>-->
<!--{/if}-->
<th>四级返佣比例</th>
<th>直推佣金比例</th>
<th>间推佣金比例</th>
</tr>
@ -217,55 +224,67 @@
</td>
<td></td>
<td>{$level.level_name}</td>
<!--<td>-->
<!--{foreach $goods_info['sku_data'] as $sku}-->
<!--{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}-->
<!--<div class="line-height">-->
<!--<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_rate][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_rate'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_money'] > 0}disabled{/if} > %</div>-->
<!--<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_money][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_money'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_rate'] > 0}disabled{/if} > 元</div>-->
<!--</div>-->
<!--{else/}-->
<!--<div class="line-height">-->
<!--<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_rate][]" value="" > %</div>-->
<!--<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_money][]" value="" > 元</div>-->
<!--</div>-->
<!--{/if}-->
<!--{/foreach}-->
<!--</td>-->
<!--{if $fenxiao_config.level >= 2}-->
<!--<td>-->
<!--{foreach $goods_info['sku_data'] as $sku}-->
<!--{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}-->
<!--<div class="line-height">-->
<!--<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_rate][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_rate'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_money'] > 0}disabled{/if} > %</div>-->
<!--<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_money][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_money'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_rate'] > 0}disabled{/if} > 元</div>-->
<!--</div>-->
<!--{else/}-->
<!--<div class="line-height">-->
<!--<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_rate][]" value=""> %</div>-->
<!--<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_money][]" value=""> 元</div>-->
<!--</div>-->
<!--{/if}-->
<!--{/foreach}-->
<!--</td>-->
<!--{/if}-->
<!--{if $fenxiao_config.level >= 3}-->
<!--<td>-->
<!--{foreach $goods_info['sku_data'] as $sku}-->
<!--{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}-->
<!--<div class="line-height">-->
<!--<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_rate][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_rate'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_money'] > 0}disabled{/if} > %</div>-->
<!--<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_money][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_money'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_rate'] > 0}disabled{/if} > 元</div>-->
<!--</div>-->
<!--{else/}-->
<!--<div class="line-height">-->
<!--<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_rate][]" value=""> %</div>-->
<!--<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_money][]" value=""> 元</div>-->
<!--</div>-->
<!--{/if}-->
<!--{/foreach}-->
<!--</td>-->
<!--{/if}-->
<td>
{foreach $goods_info['sku_data'] as $sku}
{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}
<div class="line-height">
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_rate][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_rate'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_money'] > 0}disabled{/if} > %</div>
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_money][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_money'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['one_rate'] > 0}disabled{/if} > 元</div>
</div>
{else/}
<div class="line-height">
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_rate][]" value="" > %</div>
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][one_money][]" value="" ></div>
</div>
{/if}
{/foreach}
</td>
<td>
{foreach $goods_info['sku_data'] as $sku}
{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}
<div class="line-height">
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_rate][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_rate'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_money'] > 0}disabled{/if} > %</div>
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_money][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_money'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['two_rate'] > 0}disabled{/if} > 元</div>
</div>
{else/}
<div class="line-height">
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_rate][]" value=""> %</div>
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][two_money][]" value=""></div>
</div>
{/if}
{/foreach}
</td>
<td>
{foreach $goods_info['sku_data'] as $sku}
{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}
<div class="line-height">
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_rate][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_rate'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_money'] > 0}disabled{/if} > %</div>
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_money][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_money'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['three_rate'] > 0}disabled{/if} > 元</div>
</div>
{else/}
<div class="line-height">
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_rate][]" value=""> %</div>
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][three_money][]" value=""></div>
</div>
{/if}
{/foreach}
</td>
<td>
{foreach $goods_info['sku_data'] as $sku}
{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}
<div class="line-height">
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][four_rate][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['four_rate'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['four_money'] > 0}disabled{/if} > %</div>
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][four_money][]" value="{$goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['four_money'] ?: ''}" {if $goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id]['four_rate'] > 0}disabled{/if} > 元</div>
</div>
{else/}
<div class="line-height">
<div><input class="layui-input len-short input-rate" type="number" min="0" max="100" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][four_rate][]" value=""> %</div>
<div><input class="layui-input len-short input-num" type="number" min="0" lay-verify="required|flnum" name="fenxiao[{$level.level_id}][four_money][]" value=""></div>
</div>
{/if}
{/foreach}
</td>
<td>
{foreach $goods_info['sku_data'] as $sku}
{if isset($goods_info['fenxiao_skus'][$level.level_id . '_' . $sku.sku_id])}