添加:分销商订单添加时 - 区分直推奖励和推荐代理奖励
This commit is contained in:
parent
7308a011f3
commit
0e18cd6022
|
|
@ -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']
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
//加减运费,多商品订单运费按最后一个商品的比例计算
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 715 KiB |
Loading…
Reference in New Issue