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

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) {
return;
}
try{
$result = $this->handler($orderModel);
\Log::debug('订单分销' . $orderModel->id . ':' . $result);
}catch(\Exception $e){
\Log::debug('订单分销错误-' . $orderModel->id . ':' . $e->getMessage());
}
});
}
@ -305,7 +310,9 @@ class OrderCreatedListener
'thumb' => $orderGood->goods['thumb'],
'has_commission' => $orderGood->commissionGoods['has_commission'],
'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\StoreOrder;
use Yunshop\StoreCashier\common\models\StoreSetting;
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
use Yunshop\TeamDividend\models\TeamDividendLevelUpgrade;
class CommissionOrderService
{
@ -504,8 +504,7 @@ class CommissionOrderService
* @return array
* 获取佣金 计算金额 计算公式 佣金比例 分销订单商品等数据
*/
public static function getCommission($orderModel, $agent, $set)
{
public static function getCommission($orderModel, $agent, $set){
$orderGoods = $orderModel->hasManyOrderGoods;
$commissionAmount = 0;
$formula = '';
@ -513,6 +512,8 @@ class CommissionOrderService
$commissionPay = 0;
$commission = 0;
// 获取所有经销商升级商品
$upgradeTeamDividendGoodsIds = TeamDividendLevelUpgrade::getUpgradeGoods();
//运费需要最后计算订单的总运费而不是每个商品计算一次 (以下全部用于加减运费)
$is_general = 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'];
//获取商品分销设置信息
$commissionGoods = Commission::getGoodsById($og->goods_id)->first();
//分销订单商品 商品分销设置信息默认值
$orderGoods[$key]['commissionGoods'] = [
$commissionGoodsInfo = [
'has_commission' => '0',
'commission_rate' => $agent['agent_level'][$agent['hierarchy']],
'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 ($orderModel->plugin_id == 31 || $orderModel->plugin_id == 32) {
$og['payment_amount'] = $og['goods_price'];
}
}
@ -589,11 +591,13 @@ class CommissionOrderService
$is_general = $countAmount['is_general'];
$commissionRate = $agentRule[$agent['hierarchy'] . '_rate'];
$countAmount['commission'] = ($countAmount['amount']) / 100 * $commissionRate;
} elseif ($agentRule[$agent['hierarchy'] . '_pay'] > 0) {
}
elseif ($agentRule[$agent['hierarchy'] . '_pay'] > 0) {
$commissionPay = $agentRule[$agent['hierarchy'] . '_pay'];
$countAmount['commission'] = $agentRule[$agent['hierarchy'] . '_pay'] * $og['total'];
}
} else {
}
else {
$is_general = true;
$countAmount = static::getCountAmount($orderModel, $og, $agent, $set);
// $commissionAmount += $countAmount['amount'];//分佣计算金额
@ -604,7 +608,7 @@ class CommissionOrderService
if (app()->bound('CommissionCalculate')) {//其他计算模式 todo 如首单分销
$class = app('CommissionCalculate');
list($countAmount, $commissionRate, $commissionPay, $has_commission) = (new $class([
[$countAmount, $commissionRate, $commissionPay, $has_commission] = (new $class([
'order' => $orderModel,
'orderGoods' => $og,
'agent' => $agent,
@ -619,13 +623,16 @@ class CommissionOrderService
$formula .= '+' . $countAmount['method'];//分佣计算方式
$commission += $countAmount['commission'];//佣金
if ($has_commission) {
$orderGoods[$key]['commissionGoods'] = [
$commissionGoodsInfo = [
'has_commission' => '1',
'commission_rate' => $commissionRate,
'commission_pay' => $commissionPay,
'commission_money' => 0,
'commission_type' => 0,
];
}
} else {
}
else {
// 酒店供应链订单
if ($orderModel->plugin_id == 48) {
$countAmount = static::getCountAmount($orderModel, $og, $agent, $set);
@ -636,7 +643,13 @@ class CommissionOrderService
$commission += $countAmount['commission'];//佣金
}
}
$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
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