diff --git a/plugins/commission/src/Listener/OrderCreatedListener.php b/plugins/commission/src/Listener/OrderCreatedListener.php index 850526c5..42bad091 100644 --- a/plugins/commission/src/Listener/OrderCreatedListener.php +++ b/plugins/commission/src/Listener/OrderCreatedListener.php @@ -45,8 +45,13 @@ class OrderCreatedListener if ($orderModel->uid == 0) { return; } - $result = $this->handler($orderModel); - \Log::debug('订单分销' . $orderModel->id . ':' . $result); + 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'] ]; } diff --git a/plugins/commission/src/services/CommissionOrderService.php b/plugins/commission/src/services/CommissionOrderService.php index 004e178c..f703aca9 100644 --- a/plugins/commission/src/services/CommissionOrderService.php +++ b/plugins/commission/src/services/CommissionOrderService.php @@ -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'] = [ - 'has_commission' => '1', - 'commission_rate' => $commissionRate, - 'commission_pay' => $commissionPay, + $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; } //加减运费,多商品订单运费按最后一个商品的比例计算 diff --git a/plugins/team-dividend/src/models/TeamDividendLevelUpgrade.php b/plugins/team-dividend/src/models/TeamDividendLevelUpgrade.php index c2419f52..0dd31a08 100644 --- a/plugins/team-dividend/src/models/TeamDividendLevelUpgrade.php +++ b/plugins/team-dividend/src/models/TeamDividendLevelUpgrade.php @@ -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); + } + + + + + + } \ No newline at end of file diff --git a/static/assets/img/wv_bg.jpg b/static/assets/img/wv_bg.jpg new file mode 100644 index 00000000..a40d9050 Binary files /dev/null and b/static/assets/img/wv_bg.jpg differ