添加:分销商订单添加时 - 区分直推奖励和推荐代理奖励

This commit is contained in:
wuhui_zzw 2023-10-18 16:50:13 +08:00
parent 7308a011f3
commit 0e18cd6022
4 changed files with 61 additions and 18 deletions

View File

@ -45,8 +45,13 @@ class OrderCreatedListener
if ($orderModel->uid == 0) { if ($orderModel->uid == 0) {
return; return;
} }
try{
$result = $this->handler($orderModel); $result = $this->handler($orderModel);
\Log::debug('订单分销' . $orderModel->id . ':' . $result); \Log::debug('订单分销' . $orderModel->id . ':' . $result);
}catch(\Exception $e){
\Log::debug('订单分销错误-' . $orderModel->id . ':' . $e->getMessage());
}
}); });
} }
@ -305,7 +310,9 @@ class OrderCreatedListener
'thumb' => $orderGood->goods['thumb'], 'thumb' => $orderGood->goods['thumb'],
'has_commission' => $orderGood->commissionGoods['has_commission'], 'has_commission' => $orderGood->commissionGoods['has_commission'],
'commission_rate' => $orderGood->commissionGoods['commission_rate'], 'commission_rate' => $orderGood->commissionGoods['commission_rate'],
'commission_pay' => $orderGood->commissionGoods['commission_pay'] 'commission_pay' => $orderGood->commissionGoods['commission_pay'],
'commission_money' => (float)$orderGood->commissionGoods['commission_money'],
'commission_type' => (int)$orderGood->commissionGoods['commission_type']
]; ];
} }

View File

@ -17,8 +17,8 @@ use Yunshop\SpecialSettlement\common\LoveRecalculate;
use Yunshop\StoreCashier\common\models\CashierGoods; use Yunshop\StoreCashier\common\models\CashierGoods;
use Yunshop\StoreCashier\common\models\StoreOrder; use Yunshop\StoreCashier\common\models\StoreOrder;
use Yunshop\StoreCashier\common\models\StoreSetting; use Yunshop\StoreCashier\common\models\StoreSetting;
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
use Yunshop\TeamDividend\models\TeamDividendLevelUpgrade;
class CommissionOrderService class CommissionOrderService
{ {
@ -504,8 +504,7 @@ class CommissionOrderService
* @return array * @return array
* 获取佣金 计算金额 计算公式 佣金比例 分销订单商品等数据 * 获取佣金 计算金额 计算公式 佣金比例 分销订单商品等数据
*/ */
public static function getCommission($orderModel, $agent, $set) public static function getCommission($orderModel, $agent, $set){
{
$orderGoods = $orderModel->hasManyOrderGoods; $orderGoods = $orderModel->hasManyOrderGoods;
$commissionAmount = 0; $commissionAmount = 0;
$formula = ''; $formula = '';
@ -513,6 +512,8 @@ class CommissionOrderService
$commissionPay = 0; $commissionPay = 0;
$commission = 0; $commission = 0;
// 获取所有经销商升级商品
$upgradeTeamDividendGoodsIds = TeamDividendLevelUpgrade::getUpgradeGoods();
//运费需要最后计算订单的总运费而不是每个商品计算一次 (以下全部用于加减运费) //运费需要最后计算订单的总运费而不是每个商品计算一次 (以下全部用于加减运费)
$is_general = false;//是否走统一 $is_general = false;//是否走统一
$is_commission = false;//判断订单的全部商品是否有开启分红 $is_commission = false;//判断订单的全部商品是否有开启分红
@ -535,17 +536,19 @@ class CommissionOrderService
} }
} }
foreach ($orderGoods as $key => $og) {
foreach ($orderGoods as $key => $og) {
$payment_amount = $og['payment_amount']; $payment_amount = $og['payment_amount'];
//获取商品分销设置信息 //获取商品分销设置信息
$commissionGoods = Commission::getGoodsById($og->goods_id)->first(); $commissionGoods = Commission::getGoodsById($og->goods_id)->first();
//分销订单商品 商品分销设置信息默认值 //分销订单商品 商品分销设置信息默认值
$orderGoods[$key]['commissionGoods'] = [ $commissionGoodsInfo = [
'has_commission' => '0', 'has_commission' => '0',
'commission_rate' => $agent['agent_level'][$agent['hierarchy']], 'commission_rate' => $agent['agent_level'][$agent['hierarchy']],
'commission_pay' => 0, 'commission_pay' => 0,
'commission_money' => 0,
'commission_type' => 0,
]; ];
//分销订单商品 商品信息 //分销订单商品 商品信息
@ -558,7 +561,6 @@ class CommissionOrderService
if (app('plugins')->isEnabled('special-settlement') && \Setting::get('plugin.special-settlement.profit-rule')["commission"] == 1) { if (app('plugins')->isEnabled('special-settlement') && \Setting::get('plugin.special-settlement.profit-rule')["commission"] == 1) {
if ($orderModel->plugin_id == 31 || $orderModel->plugin_id == 32) { if ($orderModel->plugin_id == 31 || $orderModel->plugin_id == 32) {
$og['payment_amount'] = $og['goods_price']; $og['payment_amount'] = $og['goods_price'];
} }
} }
@ -589,11 +591,13 @@ class CommissionOrderService
$is_general = $countAmount['is_general']; $is_general = $countAmount['is_general'];
$commissionRate = $agentRule[$agent['hierarchy'] . '_rate']; $commissionRate = $agentRule[$agent['hierarchy'] . '_rate'];
$countAmount['commission'] = ($countAmount['amount']) / 100 * $commissionRate; $countAmount['commission'] = ($countAmount['amount']) / 100 * $commissionRate;
} elseif ($agentRule[$agent['hierarchy'] . '_pay'] > 0) { }
elseif ($agentRule[$agent['hierarchy'] . '_pay'] > 0) {
$commissionPay = $agentRule[$agent['hierarchy'] . '_pay']; $commissionPay = $agentRule[$agent['hierarchy'] . '_pay'];
$countAmount['commission'] = $agentRule[$agent['hierarchy'] . '_pay'] * $og['total']; $countAmount['commission'] = $agentRule[$agent['hierarchy'] . '_pay'] * $og['total'];
} }
} else { }
else {
$is_general = true; $is_general = true;
$countAmount = static::getCountAmount($orderModel, $og, $agent, $set); $countAmount = static::getCountAmount($orderModel, $og, $agent, $set);
// $commissionAmount += $countAmount['amount'];//分佣计算金额 // $commissionAmount += $countAmount['amount'];//分佣计算金额
@ -604,7 +608,7 @@ class CommissionOrderService
if (app()->bound('CommissionCalculate')) {//其他计算模式 todo 如首单分销 if (app()->bound('CommissionCalculate')) {//其他计算模式 todo 如首单分销
$class = app('CommissionCalculate'); $class = app('CommissionCalculate');
list($countAmount, $commissionRate, $commissionPay, $has_commission) = (new $class([ [$countAmount, $commissionRate, $commissionPay, $has_commission] = (new $class([
'order' => $orderModel, 'order' => $orderModel,
'orderGoods' => $og, 'orderGoods' => $og,
'agent' => $agent, 'agent' => $agent,
@ -619,13 +623,16 @@ class CommissionOrderService
$formula .= '+' . $countAmount['method'];//分佣计算方式 $formula .= '+' . $countAmount['method'];//分佣计算方式
$commission += $countAmount['commission'];//佣金 $commission += $countAmount['commission'];//佣金
if ($has_commission) { if ($has_commission) {
$orderGoods[$key]['commissionGoods'] = [ $commissionGoodsInfo = [
'has_commission' => '1', 'has_commission' => '1',
'commission_rate' => $commissionRate, 'commission_rate' => $commissionRate,
'commission_pay' => $commissionPay, 'commission_pay' => $commissionPay,
'commission_money' => 0,
'commission_type' => 0,
]; ];
} }
} else { }
else {
// 酒店供应链订单 // 酒店供应链订单
if ($orderModel->plugin_id == 48) { if ($orderModel->plugin_id == 48) {
$countAmount = static::getCountAmount($orderModel, $og, $agent, $set); $countAmount = static::getCountAmount($orderModel, $og, $agent, $set);
@ -636,7 +643,13 @@ class CommissionOrderService
$commission += $countAmount['commission'];//佣金 $commission += $countAmount['commission'];//佣金
} }
} }
$og['payment_amount'] = $payment_amount; $og['payment_amount'] = $payment_amount;
// 更新单个商品的信息
$commissionGoodsInfo['commission_money'] = sprintf("%.2f",$countAmount['commission']);
//佣金类型0=直推奖励1=推广奖励(用户购买经销商等级升级条件中-[购买指定商品,购买指定商品之一])设置的商品
$commissionGoodsInfo['commission_type'] = in_array($og->goods_id,$upgradeTeamDividendGoodsIds) ? 1 : 0;
$orderGoods[$key]['commissionGoods'] = $commissionGoodsInfo;
} }
//加减运费,多商品订单运费按最后一个商品的比例计算 //加减运费,多商品订单运费按最后一个商品的比例计算

View File

@ -74,4 +74,27 @@ class TeamDividendLevelUpgrade extends BackendModel
// 等级为 2000 + 等级id // 等级为 2000 + 等级id
return $ret; return $ret;
} }
/**
* Common: 获取所有升级商品(仅限条件开启状态)
* Author: wu-hui
* Time: 2023/10/18 15:32
* @return []|array
*/
public static function getUpgradeGoods(){
$list = self::uniacid()->pluck('parase');
$goodsIds = [];
foreach($list as $key => $item){
$parase = unserialize($item);
if((int)$parase[0]['goods'] == 1) $goodsIds = array_merge($goodsIds,[$parase[1]['goods']]);
if((int)$parase[0]['many_good'] == 1) $goodsIds = array_merge($goodsIds,(array)$parase[1]['many_good']);
}
return array_unique($goodsIds);
}
} }

BIN
static/assets/img/wv_bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 KiB