WIN-2308041133\Administrator 4 months ago
parent
commit
867ee747fa

+ 66 - 1
app/services/order/StoreOrderSuccessServices.php

@@ -403,6 +403,9 @@ class StoreOrderSuccessServices extends BaseServices
             // 获取佣金服务(一次性创建,复用)
             /** @var UserBrokerageServices $userBrokerageServices */
             $userBrokerageServices = app()->make(UserBrokerageServices::class);
+            //获取额度服务(一次性创建,复用)
+            /** @var \app\services\user\UserGiftQuotaServices $userGiftQuotaServices */
+            $userGiftQuotaServices = app()->make(\app\services\user\UserGiftQuotaServices::class);
             //冻结时间
             $frozenTime = time() + intval(sys_config('extract_time')) * 86400;
 
@@ -414,7 +417,17 @@ class StoreOrderSuccessServices extends BaseServices
             $pid_brokerage = $userServices->getOne(['uid' => $userRelation['pid']]);
             $userServices->bcInc($userRelation['pid'], 'brokerage_price', $directBrokerage, 'uid');
             @file_put_contents('quanju4.txt', $directBrokerage . "-直推奖励\r\n", 8);
-            
+
+            // 扣除直推上级的额度
+            $userServices->bcInc($userRelation['pid'], 'quota', -$directBrokerage, 'uid');
+            $quotaBalance = bcadd($pid_brokerage['quota'] ?? 0, -$directBrokerage, 2);
+            $userGiftQuotaServices->income('use_direct_referral_quota', $userRelation['pid'], [
+                'nickname' => $userInfo['nickname'],
+                'pay_price' => floatval($order['pay_price']),
+                'number' => $directBrokerage
+            ], $quotaBalance, $order['id']);
+            @file_put_contents('quanju4.txt', '扣除直推上级额度: uid=' . $userRelation['pid'] . ', 金额=' . $directBrokerage . "\r\n", 8);
+
             $balance = bcadd($pid_brokerage['brokerage_price'], $directBrokerage, 2);
             $userBrokerageServices->income('get_direct_referral_brokerage', $userRelation['pid'], [
                 'nickname' => $userInfo['nickname'],
@@ -501,6 +514,16 @@ class StoreOrderSuccessServices extends BaseServices
                     ], $balance, $order['id']);
                     @file_put_contents('quanju4.txt', '向上发放见点奖给真直推上级: uid=' . $splitTargetPid . ', 金额=' . $splitAmount . "\r\n", 8);
 
+                    // 扣除真直推上级的额度
+                    $userServices->bcInc($splitTargetPid, 'quota', -$splitAmount, 'uid');
+                    $quotaBalance = bcadd($pidBrokerage['quota'] ?? 0, -$splitAmount, 2);
+                    $userGiftQuotaServices->income('use_spot_quota', $splitTargetPid, [
+                        'nickname' => $userInfo['nickname'],
+                        'pay_price' => floatval($order['pay_price']),
+                        'number' => $splitAmount
+                    ], $quotaBalance, $order['id']);
+                    @file_put_contents('quanju4.txt', '扣除真直推上级额度: uid=' . $splitTargetPid . ', 金额=' . $splitAmount . "\r\n", 8);
+
                     // 给假直推上级发放
                     $currentBrokerage = $userServices->getOne(['uid' => $nextUid]);
                     $userServices->bcInc($nextUid, 'brokerage_price', $remainderAmount, 'uid');
@@ -512,6 +535,16 @@ class StoreOrderSuccessServices extends BaseServices
                         'frozen_time' => $frozenTime
                     ], $balance, $order['id']);
                     @file_put_contents('quanju4.txt', '向上发放见点奖给假直推上级: uid=' . $nextUid . ', 金额=' . $remainderAmount . "\r\n", 8);
+
+                    // 扣除假直推上级的额度
+                    $userServices->bcInc($nextUid, 'quota', -$remainderAmount, 'uid');
+                    $quotaBalance = bcadd($currentBrokerage['quota'] ?? 0, -$remainderAmount, 2);
+                    $userGiftQuotaServices->income('use_spot_quota', $nextUid, [
+                        'nickname' => $userInfo['nickname'],
+                        'pay_price' => floatval($order['pay_price']),
+                        'number' => $remainderAmount
+                    ], $quotaBalance, $order['id']);
+                    @file_put_contents('quanju4.txt', '扣除假直推上级额度: uid=' . $nextUid . ', 金额=' . $remainderAmount . "\r\n", 8);
                 } else {
                     // 不需要分成:全部给上级
                     $currentBrokerage = $userServices->getOne(['uid' => $nextUid]);
@@ -524,6 +557,16 @@ class StoreOrderSuccessServices extends BaseServices
                         'frozen_time' => $frozenTime
                     ], $balance, $order['id']);
                     @file_put_contents('quanju4.txt', '向上发放见点奖: uid=' . $nextUid . ', 金额=' . $spotBrokerage . "\r\n", 8);
+
+                    // 扣除上级的额度
+                    $userServices->bcInc($nextUid, 'quota', -$spotBrokerage, 'uid');
+                    $quotaBalance = bcadd($currentBrokerage['quota'] ?? 0, -$spotBrokerage, 2);
+                    $userGiftQuotaServices->income('use_spot_quota', $nextUid, [
+                        'nickname' => $userInfo['nickname'],
+                        'pay_price' => floatval($order['pay_price']),
+                        'number' => $spotBrokerage
+                    ], $quotaBalance, $order['id']);
+                    @file_put_contents('quanju4.txt', '扣除上级额度: uid=' . $nextUid . ', 金额=' . $spotBrokerage . "\r\n", 8);
                 }
 
                 // 更新当前用户ID,用于下一次循环的判断
@@ -560,6 +603,17 @@ class StoreOrderSuccessServices extends BaseServices
                     'frozen_time' => $frozenTime
                 ], $balance, $order['id']);
                 @file_put_contents('quanju4.txt', '向下发放见点奖给直推下级: uid=' . $subordinate['uid'] . ', 金额=' . $spotBrokerage . "\r\n", 8);
+
+                // 扣除直推下级的额度
+                $userServices->bcInc($subordinate['uid'], 'quota', -$spotBrokerage, 'uid');
+                $quotaBalance = bcadd($subBrokerage['quota'] ?? 0, -$spotBrokerage, 2);
+                $userGiftQuotaServices->income('use_spot_quota', $subordinate['uid'], [
+                    'nickname' => $userInfo['nickname'],
+                    'pay_price' => floatval($order['pay_price']),
+                    'number' => $spotBrokerage
+                ], $quotaBalance, $order['id']);
+                @file_put_contents('quanju4.txt', '扣除直推下级额度: uid=' . $subordinate['uid'] . ', 金额=' . $spotBrokerage . "\r\n", 8);
+
                 $totalDownSpots++;
             }
 
@@ -599,6 +653,17 @@ class StoreOrderSuccessServices extends BaseServices
                                 'frozen_time' => $frozenTime
                             ], $balance, $order['id']);
                             @file_put_contents('quanju4.txt', '向下发放见点奖给同组下级: uid=' . $member['uid'] . ', 金额=' . $spotBrokerage . "\r\n", 8);
+
+                            // 扣除同组下级的额度
+                            $userServices->bcInc($member['uid'], 'quota', -$spotBrokerage, 'uid');
+                            $quotaBalance = bcadd($memberBrokerage['quota'] ?? 0, -$spotBrokerage, 2);
+                            $userGiftQuotaServices->income('use_spot_quota', $member['uid'], [
+                                'nickname' => $userInfo['nickname'],
+                                'pay_price' => floatval($order['pay_price']),
+                                'number' => $spotBrokerage
+                            ], $quotaBalance, $order['id']);
+                            @file_put_contents('quanju4.txt', '扣除同组下级额度: uid=' . $member['uid'] . ', 金额=' . $spotBrokerage . "\r\n", 8);
+
                             $totalDownSpots++;
                         }
                     }

+ 14 - 0
app/services/user/UserGiftQuotaServices.php

@@ -36,6 +36,20 @@ class UserGiftQuotaServices extends \app\services\BaseServices
             'status' => 1,
             'pm' => 1
         ],
+        'use_direct_referral_quota' => [
+            'title' => '获得礼包直推奖扣除额度',
+            'type' => 'use_direct_referral_quota',
+            'mark' => '{%nickname%}购买礼包商品消费{%pay_price%}元,获得直推奖{%number%}',
+            'status' => 1,
+            'pm' => 0
+        ],
+        'use_spot_quota' => [
+            'title' => '获得礼包见点奖扣除额度',
+            'type' => 'use_spot_quota',
+            'mark' => '{%nickname%}购买礼包商品消费{%pay_price%}元,获得见点奖{%number%}',
+            'status' => 1,
+            'pm' => 0
+        ],
     ];
 
     /**