WIN-2308041133\Administrator 1 ay önce
ebeveyn
işleme
6d8462b0dd
1 değiştirilmiş dosya ile 10 ekleme ve 41 silme
  1. 10 41
      app/services/order/StoreOrderSuccessServices.php

+ 10 - 41
app/services/order/StoreOrderSuccessServices.php

@@ -159,50 +159,19 @@ class StoreOrderSuccessServices extends BaseServices
         $issueService->setCoupon($coupon, $user);
         return true;
     }
-//   发放分销奖励()
+//   发放分销奖励(向上查找grade>=2的上级发放优惠券
     public function spreadReward($spread_uid, $orderInfo){
         try {
-            // 获取上级的分销等级
-            $agent_level = User::where('uid', $spread_uid)->value('agent_level');
-            if (!$agent_level) {
-                return false;
-            }
-
-            // 获取分销等级详细信息
-            $agentLevelInfo = \app\model\agent\AgentLevel::where('id', $agent_level)->find();
-            if (!$agentLevelInfo) {
-                return false;
-            }
-            $agentLevelInfo = $agentLevelInfo->toArray();
-
-            // 如果是礼包商品才发放优惠券奖励
-            if ($agentLevelInfo['free_issue'] > 0&&$orderInfo['order_type']==1) {
-                $this->grantUser($agentLevelInfo['free_issue'], $spread_uid);
+            $uid = $spread_uid;
+            while ($uid > 0) {
+                $levelId = User::where('uid', $uid)->value('agent_level');
+                $agentLevel = $levelId ? \app\model\agent\AgentLevel::find($levelId) : null;
+                if ($agentLevel && ($agentLevel['grade'] ?? 0) >= 2 && $agentLevel['free_issue'] > 0) {
+                    $orderInfo['order_type'] == 1 && $this->grantUser($agentLevel['free_issue'], $uid);
+                    break;
+                }
+                $uid = User::where('uid', $uid)->value('spread_uid');
             }
-
-            // 发放佣金奖励
-//            if ($agentLevelInfo['spread_brokerage'] > 0) {
-//                // 计算佣金金额:订单价格 * spread_brokerage / 100
-//                $brokerageAmount = bcmul((string)$orderInfo['total_price'], (string)($agentLevelInfo['spread_brokerage'] / 100), 2);
-//                if ($brokerageAmount > 0) {
-//                    /** @var UserServices $userServices */
-//                    $userServices = app()->make(UserServices::class);
-//                    /** @var UserBrokerageServices $userBrokerageServices */
-//                    $userBrokerageServices = app()->make(UserBrokerageServices::class);
-//                    $balance = $userServices->value(['uid' => $spread_uid], 'brokerage_price');
-//                    $nickname = User::where('uid',$orderInfo['uid'])->value('nickname');
-//                    $userBrokerageServices->income('get_brokerage', $spread_uid, [
-//                        'nickname' => $nickname,
-//                        'pay_price' => $orderInfo['total_price'],
-//                        'number' => $brokerageAmount,
-//                    ], bcadd((string)$balance, (string)$brokerageAmount, 2), $orderInfo['id'] ?? 0);
-//                    $userServices->bcInc($spread_uid, 'brokerage_price', $brokerageAmount, 'uid');
-//
-//                    // 发放平级奖励
-//                    $this->issueSameLevelReward($spread_uid, $brokerageAmount);
-//                }
-//            }
-
             return true;
         } catch (\Exception $e) {
             @file_put_contents("quanju.txt", json_encode($e->getMessage())."-spreadReward报错内容\r\n", 8);