WIN-2308041133\Administrator 4 months ago
parent
commit
da89dda9c9

+ 193 - 82
app/common/repositories/store/order/StoreOrderRepository.php

@@ -411,7 +411,7 @@ class StoreOrderRepository extends BaseRepository
                         ];
                         ];
                     }
                     }
                     if ($order['extension_two'] > 0) {
                     if ($order['extension_two'] > 0) {
-                        @file_put_contents('quanju.txt', $groupOrder->user->ValidSpread->ValidSpread ."-测试4?\r\n",8);
+                        @file_put_contents('quanju.txt', $groupOrder->user->ValidSpread->ValidSpread . "-测试4?\r\n", 8);
                         $finance[] = [
                         $finance[] = [
                             'order_id' => $order->order_id,
                             'order_id' => $order->order_id,
                             'order_sn' => $order->order_sn,
                             'order_sn' => $order->order_sn,
@@ -501,7 +501,7 @@ class StoreOrderRepository extends BaseRepository
                 $this->autoPrinter($order->order_id, $order->mer_id, 1);
                 $this->autoPrinter($order->order_id, $order->mer_id, 1);
                 @file_put_contents('quanju.txt', "-支付完成处理积分\r\n", 8);
                 @file_put_contents('quanju.txt', "-支付完成处理积分\r\n", 8);
                 app()->make(StoreOrderRepository::class)->getOrderAward($order);
                 app()->make(StoreOrderRepository::class)->getOrderAward($order);
-                app()->make(StoreOrderRepository::class)->spreadOrder($order['uid'],$order['order_id']); //查找上级是否有冻结份额
+                app()->make(StoreOrderRepository::class)->spreadOrder($order['uid'], $order['order_id']); //查找上级是否有冻结份额
             }
             }
 
 
             if ($groupOrder->user && $groupOrder->user->spread_uid) {
             if ($groupOrder->user && $groupOrder->user->spread_uid) {
@@ -1094,12 +1094,12 @@ class StoreOrderRepository extends BaseRepository
         $cartIdArray = explode(',', $order['cart_id']); // 使用逗号分割字符串
         $cartIdArray = explode(',', $order['cart_id']); // 使用逗号分割字符串
         $product_id = StoreCart::where('cart_id', $cartIdArray[0])->value('product_id');
         $product_id = StoreCart::where('cart_id', $cartIdArray[0])->value('product_id');
         $storeProduct = app()->make(Product::class);
         $storeProduct = app()->make(Product::class);
-        $is_oil =$storeProduct->where('product_id', $product_id)->value('is_oil');
-        $is_gift =$storeProduct->where('product_id', $product_id)->value('is_gift');
-        $type=0;
-        if ($is_oil == 1){
+        $is_oil = $storeProduct->where('product_id', $product_id)->value('is_oil');
+        $is_gift = $storeProduct->where('product_id', $product_id)->value('is_gift');
+        $type = 0;
+        if ($is_oil == 1) {
             $type = 5;
             $type = 5;
-        }elseif ($is_gift == 1){
+        } elseif ($is_gift == 1) {
             $type = 6;
             $type = 6;
         }
         }
         $price = app()->make(AwardIntegralPriceRepository::class)->awardIntegralPrice();  //分红积分价格
         $price = app()->make(AwardIntegralPriceRepository::class)->awardIntegralPrice();  //分红积分价格
@@ -1111,32 +1111,32 @@ class StoreOrderRepository extends BaseRepository
         $mark = '';
         $mark = '';
         $integral_type = '';
         $integral_type = '';
         $range_type = '';
         $range_type = '';
-        if ($type == 5){
+        if ($type == 5) {
             $mark = '节能油';
             $mark = '节能油';
             $range_type = 'energy_saving_oil';
             $range_type = 'energy_saving_oil';
             $integral_type = 'spread_oil_integral';
             $integral_type = 'spread_oil_integral';
             //            发放分红积分
             //            发放分红积分
             $number2 = systemConfig('award_integral_energy_saving_oil', 1);
             $number2 = systemConfig('award_integral_energy_saving_oil', 1);
-        }elseif ($type == 0){
+        } elseif ($type == 0) {
             $mark = '普通';
             $mark = '普通';
             $range_type = 'ordinary';
             $range_type = 'ordinary';
             $integral_type = 'ordinary_integral';
             $integral_type = 'ordinary_integral';
             $number2 = systemConfig('award_integral_ordinary', 1);
             $number2 = systemConfig('award_integral_ordinary', 1);
-        }elseif ($type == 6){
+        } elseif ($type == 6) {
             $mark = '礼包';
             $mark = '礼包';
             $range_type = 'award_gift_pack';
             $range_type = 'award_gift_pack';
             $integral_type = 'spread_pack_integral';
             $integral_type = 'spread_pack_integral';
             $number2 = systemConfig('award_integral_gift_pack', 1);
             $number2 = systemConfig('award_integral_gift_pack', 1);
         }
         }
-        if ($type == 5||$type == 0) {  //节能油商品和普通商品
+        if ($type == 5 || $type == 0) {  //节能油商品和普通商品
             $number = systemConfig('award_energy_saving_oil', 1);  //获得份额的基准线
             $number = systemConfig('award_energy_saving_oil', 1);  //获得份额的基准线
             if ($order['pay_price'] >= $number) {
             if ($order['pay_price'] >= $number) {
 //                $count = app()->make(User::class)->spread_order($order['uid']);  //获取推荐下级订单数
 //                $count = app()->make(User::class)->spread_order($order['uid']);  //获取推荐下级订单数
                 $count = $user['spread_pay_count'];
                 $count = $user['spread_pay_count'];
-                @file_put_contents('quanju.txt', $count."-下级订单数量\r\n", 8);
-                if ($count>0){
+                @file_put_contents('quanju.txt', $count . "-下级订单数量\r\n", 8);
+                if ($count > 0) {
                     $order_award_range = bcmul($order['pay_price'], 3, 2);
                     $order_award_range = bcmul($order['pay_price'], 3, 2);
-                }else{
+                } else {
                     $order_award_range = bcmul($order['pay_price'], 1, 2);
                     $order_award_range = bcmul($order['pay_price'], 1, 2);
                     $unclaimed_range = bcmul($order['pay_price'], 2, 2);
                     $unclaimed_range = bcmul($order['pay_price'], 2, 2);
                     $unclaimed_range_after = bcadd($user['unclaimed_range'], $unclaimed_range, 2);
                     $unclaimed_range_after = bcadd($user['unclaimed_range'], $unclaimed_range, 2);
@@ -1147,7 +1147,7 @@ class StoreOrderRepository extends BaseRepository
                         'balance' => $unclaimed_range_after,
                         'balance' => $unclaimed_range_after,
                         'status' => 1,
                         'status' => 1,
                         'link_id' => $order['order_id'],
                         'link_id' => $order['order_id'],
-                        'mark' => $user['nickname'] . '成功消费' .$mark.'商品'. floatval($order['pay_price']) . '元,奖励冻结分红额度' . $order_award_range,
+                        'mark' => $user['nickname'] . '成功消费' . $mark . '商品' . floatval($order['pay_price']) . '元,奖励冻结分红额度' . $order_award_range,
                     ]);
                     ]);
 
 
                     User::where('uid', $order['uid'])->update(['unclaimed_range' => $unclaimed_range_after]);
                     User::where('uid', $order['uid'])->update(['unclaimed_range' => $unclaimed_range_after]);
@@ -1156,21 +1156,21 @@ class StoreOrderRepository extends BaseRepository
                 $after = bcadd($award_range, $order_award_range, 2);
                 $after = bcadd($award_range, $order_award_range, 2);
                 $make->incBill($order['uid'], 'award_range', $range_type, [
                 $make->incBill($order['uid'], 'award_range', $range_type, [
                     'number' => $order_award_range,
                     'number' => $order_award_range,
-                    'title' => '下单' .$mark.'商品获得分红额度',
+                    'title' => '下单' . $mark . '商品获得分红额度',
                     'balance' => $after,
                     'balance' => $after,
                     'status' => 1,
                     'status' => 1,
                     'link_id' => $order['order_id'],
                     'link_id' => $order['order_id'],
-                    'mark' => $user['nickname'] . '成功消费' .$mark.'商品'. floatval($order['pay_price']) . '元,奖励分红额度' . $order_award_range,
+                    'mark' => $user['nickname'] . '成功消费' . $mark . '商品' . floatval($order['pay_price']) . '元,奖励分红额度' . $order_award_range,
                 ]);
                 ]);
                 User::where('uid', $order['uid'])->update(['award_range' => $after]);
                 User::where('uid', $order['uid'])->update(['award_range' => $after]);
             }
             }
         } elseif ($type == 6) {  //礼包商品
         } elseif ($type == 6) {  //礼包商品
             $number = systemConfig('award_energy_saving_oil', 1);
             $number = systemConfig('award_energy_saving_oil', 1);
-            @file_put_contents('quanju2.txt', $order['pay_price']."-支付金额\r\n", 8);
+            @file_put_contents('quanju2.txt', $order['pay_price'] . "-支付金额\r\n", 8);
             if ($order['pay_price'] >= $number) {
             if ($order['pay_price'] >= $number) {
                 $order_award_range = bcmul($order['pay_price'], 3, 2);
                 $order_award_range = bcmul($order['pay_price'], 3, 2);
                 $after = bcadd($award_range, $order_award_range, 2);
                 $after = bcadd($award_range, $order_award_range, 2);
-                $res=$make->incBill($order['uid'], 'award_range', 'award_gift_pack', [
+                $res = $make->incBill($order['uid'], 'award_range', 'award_gift_pack', [
                     'number' => $order_award_range,
                     'number' => $order_award_range,
                     'title' => '下单礼包获得分红额度',
                     'title' => '下单礼包获得分红额度',
                     'balance' => $after,
                     'balance' => $after,
@@ -1179,7 +1179,7 @@ class StoreOrderRepository extends BaseRepository
                     'mark' => $user['nickname'] . '成功消费礼包商品' . floatval($order['pay_price']) . '元,奖励分红额度' . $order_award_range,
                     'mark' => $user['nickname'] . '成功消费礼包商品' . floatval($order['pay_price']) . '元,奖励分红额度' . $order_award_range,
                 ]);
                 ]);
                 User::where('uid', $order['uid'])->update(['award_range' => $after]);
                 User::where('uid', $order['uid'])->update(['award_range' => $after]);
-                @file_put_contents('quanju2.txt', $res."-结果\r\n", 8);
+                @file_put_contents('quanju2.txt', $res . "-结果\r\n", 8);
             }
             }
 //            礼包购买数
 //            礼包购买数
             $this->pack_count($order['uid']);
             $this->pack_count($order['uid']);
@@ -1188,15 +1188,15 @@ class StoreOrderRepository extends BaseRepository
         $award_integral = $user['award_integral'];
         $award_integral = $user['award_integral'];
         if ($order['pay_price'] >= $number2) {
         if ($order['pay_price'] >= $number2) {
             $order_award_range = bcmul($order['pay_price'], 0.2, 2);
             $order_award_range = bcmul($order['pay_price'], 0.2, 2);
-            $order_award_range = bcdiv($order_award_range,$price['price'],2);  //20%的业绩除以积分价格得到分红积分
+            $order_award_range = bcdiv($order_award_range, $price['price'], 2);  //20%的业绩除以积分价格得到分红积分
             $after2 = bcadd($award_integral, $order_award_range, 2);
             $after2 = bcadd($award_integral, $order_award_range, 2);
             $make->incBill($order['uid'], 'award_integral', $integral_type, [
             $make->incBill($order['uid'], 'award_integral', $integral_type, [
                 'number' => $order_award_range,
                 'number' => $order_award_range,
-                'title' => '下单'.$mark.'商品获得分红积分',
+                'title' => '下单' . $mark . '商品获得分红积分',
                 'balance' => $after2,
                 'balance' => $after2,
                 'status' => 1,
                 'status' => 1,
                 'link_id' => $order['order_id'],
                 'link_id' => $order['order_id'],
-                'mark' => $user['nickname'] . '成功消费'.$mark.'商品' . floatval($order['pay_price']) . '元,奖励分红积分' . $order_award_range.'(积分价格:'.$price['price'].')',
+                'mark' => $user['nickname'] . '成功消费' . $mark . '商品' . floatval($order['pay_price']) . '元,奖励分红积分' . $order_award_range . '(积分价格:' . $price['price'] . ')',
             ]);
             ]);
             User::where('uid', $order['uid'])->update(['award_integral' => $after2]);
             User::where('uid', $order['uid'])->update(['award_integral' => $after2]);
         }
         }
@@ -1241,29 +1241,29 @@ class StoreOrderRepository extends BaseRepository
         $UserRepository = app()->make(UserRepository::class);
         $UserRepository = app()->make(UserRepository::class);
         $UserRepository->checkAward($order['uid']);
         $UserRepository->checkAward($order['uid']);
 //        上级推荐奖励的分红积分
 //        上级推荐奖励的分红积分
-        $this->getSpreadIntegral($order, $type,$user);
+        $this->getSpreadIntegral($order, $type, $user);
 //        检测节能油或者礼包升级
 //        检测节能油或者礼包升级
 //        $AwardLake = app()->make(AwardLake::class);
 //        $AwardLake = app()->make(AwardLake::class);
         $awardLake = app()->make(AwardLake::class);
         $awardLake = app()->make(AwardLake::class);
-        if ($type==5){
+        if ($type == 5) {
             $oil = app()->make(OilLevel::class);
             $oil = app()->make(OilLevel::class);
             $oil->checkLevel($order['uid']);
             $oil->checkLevel($order['uid']);
 
 
             $ratio = systemConfig('energy_saving_oil_ratio', 10);
             $ratio = systemConfig('energy_saving_oil_ratio', 10);
-            @file_put_contents('quanju2.txt', $ratio."-奖池比例12\r\n", 8);
-            $jackpot = bcmul($order['pay_price'], bcmul($ratio,0.01,2), 2);
-            @file_put_contents('quanju2.txt', $jackpot."-奖池分到的金额12\r\n", 8);
-            $awardLake->addOrderLakes(1,$jackpot,$order['order_id']);
+            @file_put_contents('quanju2.txt', $ratio . "-奖池比例12\r\n", 8);
+            $jackpot = bcmul($order['pay_price'], bcmul($ratio, 0.01, 2), 2);
+            @file_put_contents('quanju2.txt', $jackpot . "-奖池分到的金额12\r\n", 8);
+            $awardLake->addOrderLakes(1, $jackpot, $order['order_id']);
             @file_put_contents('quanju2.txt', "-路径检查3\r\n", 8);
             @file_put_contents('quanju2.txt', "-路径检查3\r\n", 8);
-        }elseif ($type==6){
+        } elseif ($type == 6) {
             $gift = app()->make(GiftLevel::class);
             $gift = app()->make(GiftLevel::class);
             $gift->checkLevel($order['uid']);
             $gift->checkLevel($order['uid']);
 
 
             $ratio = systemConfig('gift_pack_ratio', 10);
             $ratio = systemConfig('gift_pack_ratio', 10);
-            @file_put_contents('quanju2.txt', $ratio."-奖池比例\r\n", 8);
-            $jackpot = bcmul($order['pay_price'], bcmul($ratio,0.01,2), 2);
-            @file_put_contents('quanju2.txt', $jackpot."-奖池分到的金额\r\n", 8);
-            $awardLake->addOrderLakes(2,$jackpot,$order['order_id']);
+            @file_put_contents('quanju2.txt', $ratio . "-奖池比例\r\n", 8);
+            $jackpot = bcmul($order['pay_price'], bcmul($ratio, 0.01, 2), 2);
+            @file_put_contents('quanju2.txt', $jackpot . "-奖池分到的金额\r\n", 8);
+            $awardLake->addOrderLakes(2, $jackpot, $order['order_id']);
             @file_put_contents('quanju2.txt', "-路径检查4\r\n", 8);
             @file_put_contents('quanju2.txt', "-路径检查4\r\n", 8);
         }
         }
         return true;
         return true;
@@ -1274,30 +1274,31 @@ class StoreOrderRepository extends BaseRepository
     {
     {
 //            增加礼包购买数
 //            增加礼包购买数
         $pack_count = User::where('uid', $uid)->value('pack_count');
         $pack_count = User::where('uid', $uid)->value('pack_count');
-        User::where('uid', $uid)->update(['pack_count' => bcadd($pack_count,1,0)]);
+        User::where('uid', $uid)->update(['pack_count' => bcadd($pack_count, 1, 0)]);
         return true;
         return true;
     }
     }
+
 //  上级推荐奖励的分红积分
 //  上级推荐奖励的分红积分
-    public function getSpreadIntegral($order, $type,$user)
+    public function getSpreadIntegral($order, $type, $user)
     {
     {
         $price = app()->make(AwardIntegralPriceRepository::class)->awardIntegralPrice();  //分红积分价格
         $price = app()->make(AwardIntegralPriceRepository::class)->awardIntegralPrice();  //分红积分价格
         @file_put_contents('quanju.txt', json_encode($price) . "-积分金额3\r\n", 8);
         @file_put_contents('quanju.txt', json_encode($price) . "-积分金额3\r\n", 8);
 //        $spread_uid = User::where('uid', $order['uid'])->value('spread_uid');
 //        $spread_uid = User::where('uid', $order['uid'])->value('spread_uid');
-        $order_award_range=0;
-        if ($user['spread_uid']>0){
+        $order_award_range = 0;
+        if ($user['spread_uid'] > 0) {
             $make = app()->make(UserBillRepository::class);
             $make = app()->make(UserBillRepository::class);
             $award_range = User::where('uid', $user['spread_uid'])->value('award_range');
             $award_range = User::where('uid', $user['spread_uid'])->value('award_range');
 //            if ($award_range<=0){  //上级没有分红额度就转到冻结资金里
 //            if ($award_range<=0){  //上级没有分红额度就转到冻结资金里
 //
 //
 //
 //
 //            }
 //            }
-            $after=0;
+            $after = 0;
             switch ($type) {
             switch ($type) {
                 case 0:  //普通商品
                 case 0:  //普通商品
-                    $award_integral = User::where('uid',$user['spread_uid'])->value('award_integral');
+                    $award_integral = User::where('uid', $user['spread_uid'])->value('award_integral');
                     $order_award_range = bcmul($order['pay_price'], 0.06, 2);
                     $order_award_range = bcmul($order['pay_price'], 0.06, 2);
-                    if ($order_award_range>0){
-                        $order_award_range = bcdiv($order_award_range,$price['price'],2);  //业绩除以积分价格得到分红积分
+                    if ($order_award_range > 0) {
+                        $order_award_range = bcdiv($order_award_range, $price['price'], 2);  //业绩除以积分价格得到分红积分
                         $after = bcadd($award_integral, $order_award_range, 2);
                         $after = bcadd($award_integral, $order_award_range, 2);
                         $make->incBill($user['spread_uid'], 'award_integral', 'ordinary_integral', [
                         $make->incBill($user['spread_uid'], 'award_integral', 'ordinary_integral', [
                             'number' => $order_award_range,
                             'number' => $order_award_range,
@@ -1305,61 +1306,61 @@ class StoreOrderRepository extends BaseRepository
                             'balance' => $after,
                             'balance' => $after,
                             'status' => 1,
                             'status' => 1,
                             'link_id' => $order['order_id'],
                             'link_id' => $order['order_id'],
-                            'mark' => $user['nickname'] . '成功消费普通商品' . floatval($order['pay_price']) . '元,奖励上级分红积分' . $order_award_range.'(积分价格:'.$price['price'].')',
+                            'mark' => $user['nickname'] . '成功消费普通商品' . floatval($order['pay_price']) . '元,奖励上级分红积分' . $order_award_range . '(积分价格:' . $price['price'] . ')',
                         ]);
                         ]);
                     }
                     }
                     @file_put_contents('quanju.txt', "-村上春树78\r\n", 8);
                     @file_put_contents('quanju.txt', "-村上春树78\r\n", 8);
                     break;
                     break;
                 case 5:  //节能油商品
                 case 5:  //节能油商品
-                    $award_integral = User::where('uid',$user['spread_uid'])->value('award_integral');
+                    $award_integral = User::where('uid', $user['spread_uid'])->value('award_integral');
                     $order_award_range = bcmul($order['pay_price'], 0.06, 2);
                     $order_award_range = bcmul($order['pay_price'], 0.06, 2);
-                    if ($order_award_range>0){
-                        $order_award_range = bcdiv($order_award_range,$price['price'],2);  //业绩除以积分价格得到分红积分
+                    if ($order_award_range > 0) {
+                        $order_award_range = bcdiv($order_award_range, $price['price'], 2);  //业绩除以积分价格得到分红积分
                         $after = bcadd($award_integral, $order_award_range, 2);
                         $after = bcadd($award_integral, $order_award_range, 2);
                         $make->incBill($user['spread_uid'], 'award_integral', 'spread_oil_integral', [
                         $make->incBill($user['spread_uid'], 'award_integral', 'spread_oil_integral', [
                             'number' => $order_award_range,
                             'number' => $order_award_range,
-                            'title' => '下级节能油订单获得分红积分',
+                            'title' => '团队节能油订单分红积分',
                             'balance' => $after,
                             'balance' => $after,
                             'status' => 1,
                             'status' => 1,
                             'link_id' => $order['order_id'],
                             'link_id' => $order['order_id'],
-                            'mark' => $user['nickname'] . '成功消费节能油商品' . floatval($order['pay_price']) . '元,奖励上级分红积分' . $order_award_range.'(积分价格:'.$price['price'].')',
+                            'mark' => $user['nickname'] . '成功消费节能油商品' . floatval($order['pay_price']) . '元,奖励分红积分' . $order_award_range . '(积分价格:' . $price['price'] . ')',
                         ]);
                         ]);
                     }
                     }
                     @file_put_contents('quanju.txt', "-村上春树5\r\n", 8);
                     @file_put_contents('quanju.txt', "-村上春树5\r\n", 8);
                     break;
                     break;
                 case 6:  //礼包商品
                 case 6:  //礼包商品
-                    $user['pack_count']=bcadd($user['pack_count'],1,0);
+                    $user['pack_count'] = bcadd($user['pack_count'], 1, 0);
                     $remainder = bcmod($user['pack_count'], 3);  //取余
                     $remainder = bcmod($user['pack_count'], 3);  //取余
-                    $award_integral = User::where('uid',$user['spread_uid'])->value('award_integral');
-                    switch ($remainder){
+                    $award_integral = User::where('uid', $user['spread_uid'])->value('award_integral');
+                    switch ($remainder) {
                         case 1:
                         case 1:
                             $order_award_range = bcmul($order['pay_price'], 0.2, 2);
                             $order_award_range = bcmul($order['pay_price'], 0.2, 2);
                             break;
                             break;
-                            case 2:
-                                $order_award_range = bcmul($order['pay_price'], 0.3, 2);
+                        case 2:
+                            $order_award_range = bcmul($order['pay_price'], 0.3, 2);
                             break;
                             break;
-                            case 0:
-                                $order_award_range = bcmul($order['pay_price'], 0.5, 2);
+                        case 0:
+                            $order_award_range = bcmul($order['pay_price'], 0.5, 2);
                             break;
                             break;
                     }
                     }
-                    if ($order_award_range>0){
-                        $order_award_range = bcdiv($order_award_range,$price['price'],2);  //业绩除以积分价格得到分红积分
+                    if ($order_award_range > 0) {
+                        $order_award_range = bcdiv($order_award_range, $price['price'], 2);  //业绩除以积分价格得到分红积分
                         $after = bcadd($award_integral, $order_award_range, 2);
                         $after = bcadd($award_integral, $order_award_range, 2);
                         $make->incBill($user['spread_uid'], 'award_integral', 'spread_oil_integral', [
                         $make->incBill($user['spread_uid'], 'award_integral', 'spread_oil_integral', [
                             'number' => $order_award_range,
                             'number' => $order_award_range,
-                            'title' => '下级礼包订单获得分红积分',
+                            'title' => '团队礼包订单分红积分',
                             'balance' => $after,
                             'balance' => $after,
                             'status' => 1,
                             'status' => 1,
                             'link_id' => $order['order_id'],
                             'link_id' => $order['order_id'],
-                            'mark' => $user['nickname'] . '成功消费礼包商品' . floatval($order['pay_price']) . '元,奖励上级分红积分' . $order_award_range.'(积分价格:'.$price['price'].')',
+                            'mark' => $user['nickname'] . '成功消费礼包商品' . floatval($order['pay_price']) . '元,奖励分红积分' . $order_award_range . '(积分价格:' . $price['price'] . ')',
                         ]);
                         ]);
                     }
                     }
                     break;
                     break;
             }
             }
-            if ($after>0){
-                User::where('uid', $user['spread_uid'])->update(['award_integral'=>$after]);
+            if ($after > 0) {
+                User::where('uid', $user['spread_uid'])->update(['award_integral' => $after]);
             }
             }
-            if ($order_award_range>0){//检查上级积分是否达到提现条件
+            if ($order_award_range > 0) {//检查上级积分是否达到提现条件
                 $UserRepository = app()->make(UserRepository::class);
                 $UserRepository = app()->make(UserRepository::class);
                 $UserRepository->checkAward($user['spread_uid']);
                 $UserRepository->checkAward($user['spread_uid']);
             }
             }
@@ -1371,15 +1372,17 @@ class StoreOrderRepository extends BaseRepository
 //            }
 //            }
         }
         }
     }
     }
+
 //    服务中心核销节能油
 //    服务中心核销节能油
-    public function confirmOil($order){
+    public function confirmOil($order)
+    {
         $price = app()->make(AwardIntegralPriceRepository::class)->awardIntegralPrice();  //分红积分价格
         $price = app()->make(AwardIntegralPriceRepository::class)->awardIntegralPrice();  //分红积分价格
         @file_put_contents('quanju.txt', json_encode($price) . "-积分金额3\r\n", 8);
         @file_put_contents('quanju.txt', json_encode($price) . "-积分金额3\r\n", 8);
         $MerchantRepository = app()->make(MerchantRepository::class);
         $MerchantRepository = app()->make(MerchantRepository::class);
-        $uid = Merchant::where('mer_id',$order['mer_id'])->value('uid');
-        $award_integral = User::where('uid',$uid)->value('award_integral');
-        $integral_prcie =app()->make(AwardIntegralPriceRepository::class)->getPrice();  //积分价格
-        $integral =bcmul(bcdiv(2,$integral_prcie['price'],2),$order['total_num'],2);  //价值2元的积分
+        $uid = Merchant::where('mer_id', $order['mer_id'])->value('uid');
+        $award_integral = User::where('uid', $uid)->value('award_integral');
+        $integral_prcie = app()->make(AwardIntegralPriceRepository::class)->getPrice();  //积分价格
+        $integral = bcmul(bcdiv(2, $integral_prcie['price'], 2), $order['total_num'], 2);  //价值2元的积分
         $make = app()->make(UserBillRepository::class);
         $make = app()->make(UserBillRepository::class);
         $after = bcadd($award_integral, $integral, 2);
         $after = bcadd($award_integral, $integral, 2);
         $make->incBill($uid, 'award_integral', 'confirm_oil_integral', [
         $make->incBill($uid, 'award_integral', 'confirm_oil_integral', [
@@ -1388,30 +1391,31 @@ class StoreOrderRepository extends BaseRepository
             'balance' => $after,
             'balance' => $after,
             'status' => 1,
             'status' => 1,
             'link_id' => $order['order_id'],
             'link_id' => $order['order_id'],
-            'mark' => '服务中心核销节能油获得分红积分' . $integral.'(积分价格:'.$price['price'].')',
+            'mark' => '服务中心核销节能油获得分红积分' . $integral . '(积分价格:' . $price['price'] . ')',
         ]);
         ]);
-        User::where('uid', $uid)->update(['award_integral'=>$after]);
+        User::where('uid', $uid)->update(['award_integral' => $after]);
     }
     }
 
 
 //    看看上级有没有冻结份额
 //    看看上级有没有冻结份额
-    public function spreadOrder($uid,$order_id){
-        @file_put_contents('quanju2.txt',$uid."-没有冻结份额uid\r\n",8);
-        @file_put_contents('quanju2.txt',$order_id."-没有冻结份额订单id\r\n",8);
+    public function spreadOrder($uid, $order_id)
+    {
+        @file_put_contents('quanju2.txt', $uid . "-没有冻结份额uid\r\n", 8);
+        @file_put_contents('quanju2.txt', $order_id . "-没有冻结份额订单id\r\n", 8);
         $spread_uid = User::where('uid', $uid)->value('spread_uid');
         $spread_uid = User::where('uid', $uid)->value('spread_uid');
-        @file_put_contents('quanju2.txt',$spread_uid."-上级uid\r\n",8);
-        if ($spread_uid>0){
+        @file_put_contents('quanju2.txt', $spread_uid . "-上级uid\r\n", 8);
+        if ($spread_uid > 0) {
             $user = User::where('uid', $spread_uid)->find();
             $user = User::where('uid', $spread_uid)->find();
-            @file_put_contents('quanju2.txt',$user['unclaimed_range']."-冻结额度\r\n",8);
-            if ($user['unclaimed_range']>0){
-                $after=bcadd($user['award_range'], $user['unclaimed_range'], 2);
+            @file_put_contents('quanju2.txt', $user['unclaimed_range'] . "-冻结额度\r\n", 8);
+            if ($user['unclaimed_range'] > 0) {
+                $after = bcadd($user['award_range'], $user['unclaimed_range'], 2);
                 $make = app()->make(UserBillRepository::class);
                 $make = app()->make(UserBillRepository::class);
-                $make->incBill($spread_uid, 'award_unclaimed_range', 'thaw_brokerage', [
+                $make->incBill($spread_uid, 'award_unclaimed_range', 'thaw_range', [
                     'number' => $user['unclaimed_range'],
                     'number' => $user['unclaimed_range'],
                     'title' => '推荐订单解冻分红额度',
                     'title' => '推荐订单解冻分红额度',
                     'balance' => 0,
                     'balance' => 0,
                     'status' => 0,
                     'status' => 0,
                     'link_id' => $order_id,
                     'link_id' => $order_id,
-                    'mark' => '下级用户'.$user['nickname'] . '成功消费,解冻上级分红份额' . $user['unclaimed_range'],
+                    'mark' => '团队用户' . $user['nickname'] . '成功消费,解冻分红份额' . $user['unclaimed_range'],
                 ]);
                 ]);
                 $make->decBill($spread_uid, 'award_range', 'thaw_range', [
                 $make->decBill($spread_uid, 'award_range', 'thaw_range', [
                     'number' => $user['unclaimed_range'],
                     'number' => $user['unclaimed_range'],
@@ -1419,16 +1423,123 @@ class StoreOrderRepository extends BaseRepository
                     'balance' => $after,
                     'balance' => $after,
                     'status' => 1,
                     'status' => 1,
                     'link_id' => $order_id,
                     'link_id' => $order_id,
-                    'mark' => '下级用户'.$user['nickname'] . '成功消费,解冻上级分红份额' . $user['unclaimed_range'],
+                    'mark' => '团队用户' . $user['nickname'] . '成功消费,解冻分红份额' . $user['unclaimed_range'],
                 ]);
                 ]);
-                $res= User::where('uid', $spread_uid)->update(['award_range' => $after,'unclaimed_range' => 0]);
-                @file_put_contents('quanju2.txt',$res."-冻结额度处理\r\n",8);
+                $res = User::where('uid', $spread_uid)->update(['award_range' => $after, 'unclaimed_range' => 0]);
+                @file_put_contents('quanju2.txt', $res . "-冻结额度处理\r\n", 8);
                 //        解冻冻结奖金
                 //        解冻冻结奖金
                 $UserRepository = app()->make(UserRepository::class);
                 $UserRepository = app()->make(UserRepository::class);
                 $UserRepository->extractBrokerage($spread_uid);
                 $UserRepository->extractBrokerage($spread_uid);
             }
             }
         }
         }
     }
     }
+
+//    分发团队奖励  type 1 节能油 2 礼包
+    public function team_rewards($order, $type)
+    {
+        try {
+            $user_spread_group = $this->get_spread_user($order['uid']);  //获取所有上级id
+            $group_info = User::where('uid', 'in', $user_spread_group)->column('uid,nickname,brokerage_price,award_integral,award_range,oil_level,gift_level');  //获取所有上级信息
+            if ($type == 1){
+                $model = new OilLevel();
+                $field = 'oil_level';
+                $product_type = 1;
+                $title = '节能油积分分红';
+            }else{
+                $model = new GiftLevel();
+                $field = 'gift_level';
+                $product_type = 2;
+                $title = '礼包积分分红';
+            }
+//                case 1:
+//                    $model = new OilLevel();
+//                    $field = 'oil_level';
+//                    $name = '节能油';
+//                    $title = '节能油积分分红';
+//                    break;
+//                case 2:
+//                    $model = new GiftLevel();
+//                    $field = 'gift_level';
+//                    $name = '礼包';
+//                    $title = '礼包积分分红';
+//                    break;
+
+            $level = $model->where('award_ratio', '>', 0)->select();
+            $price = bcmul($order['pay_price'],0.1,2); //分红金额
+            $integral_price = app()->make(AwardIntegralPriceRepository::class)->awardIntegralPrice();  //分红积分价格
+            foreach ($level as $k => $v) {  //遍历等级
+                $all_performance = 0;  //总业绩
+                $ratio = $v['award_ratio'];  //奖励比例
+                $level_price = bcmul($price, $ratio, 2);  //等级奖励金额
+                foreach ($group_info as &$value) {  //遍历上级统计总业绩
+                    if ($value[$field] >= $v['level']) {  //判断是否达到该等级
+                        $GiftLevel = app()->make(GiftLevel::class);
+                        $group_users = $GiftLevel->get_group_user($value['uid']);  //获取上级的用户和总业绩
+
+                        $achievement1 = StoreOrder::where('uid','in', $group_users)->where('paid', 1)->where('product_type',$product_type)->whereNotIn('status',-1)->sum('pay_price');
+                        $achievement2 = StoreOrder::where('uid', $value['uid'])->where('paid', 1)->where('product_type',$product_type)->whereNotIn('status',-1)->sum('pay_price');
+                        $performance = bcadd($achievement1, $achievement2, 2);
+                        $value['performance'] = $performance;
+                        $all_performance = bcadd($all_performance, $performance, 2);
+                    }
+                }
+                foreach ($group_info as &$value) {  //遍历上级分红
+                    $user_retio = bcdiv($value['performance'], $all_performance, 2);  //用户奖励比例
+                    $user_reward = bcmul($level_price, $user_retio, 2);  //用户奖励金额
+                    $user_integral = bcdiv($user_reward, $integral_price['price'], 2);  //用户奖励积分
+                    $after = bcadd($value['award_integral'], $user_integral, 2);  //更新用户奖励积分
+                    $make = app()->make(UserBillRepository::class);
+                    if ($user_integral>0){
+                        $make->incBill($value['uid'], 'award_integral', 'oil_integral', [
+                            'number' => $user_integral,
+                            'title' => $title,
+                            'balance' => $after,
+                            'status' => 1,
+                            'link_id' => 0,
+                            'mark' => $value['nickname'] . '获得' .$v.'分红积分'.$user_integral ,
+                        ]);
+                    }
+                }
+            }
+        } catch (Exception $e) {
+            @file_put_contents('quanju.txt', $e->getMessage() . "-错误信息\r\n", 8);
+            @file_put_contents('quanju.txt', $e->getLine() . "-错误位置\r\n", 8);
+        }
+    }
+
+    //获取所有上级id
+    public function get_spread_user($id, $init = true, $parentMap = null)
+    {
+        if ($init) {
+            // 获取所有用户的上级映射 (uid => spread_uid)
+            $us = \app\common\model\user\User::column('spread_uid', 'uid');
+            $parentMap = $us;  // 存储 uid->上级ID 的映射
+            $id = (array)$id; // 确保ID转为数组
+        }
+
+        $result = []; // 存储所有上级ID
+        $visited = []; // 防止循环引用
+        $queue = (array)$id; // 初始化队列
+
+        while (!empty($queue)) {
+            $current = array_shift($queue); // 取出当前用户ID
+
+            // 如果当前用户未处理过且有上级
+            if (!isset($visited[$current]) && isset($parentMap[$current]) && $parentMap[$current] > 0) {
+                $parentId = $parentMap[$current]; // 获取直接上级ID
+                $visited[$current] = true; // 标记当前用户已访问
+
+                // 避免重复处理
+                if (!isset($visited[$parentId])) {
+                    $result[] = $parentId; // 添加到结果
+                    $queue[] = $parentId; // 将上级加入队列继续查找
+                }
+            }
+        }
+
+        return array_unique($result); // 返回去重后的上级ID列表
+    }
+
     /**
     /**
      *  获取订单列表头部统计数据
      *  获取订单列表头部统计数据
      * @Author:Qinii
      * @Author:Qinii

+ 4 - 4
app/common/repositories/user/UserBillRepository.php

@@ -93,14 +93,14 @@ class UserBillRepository extends BaseRepository
             'award/award_gift_pack' =>'下单礼包获得分红额度',
             'award/award_gift_pack' =>'下单礼包获得分红额度',
             'award/ordinary' =>'下单普通商品获得分红额度',
             'award/ordinary' =>'下单普通商品获得分红额度',
 //            'award/unclaimed_range' =>'下单商品获得冻结份额',
 //            'award/unclaimed_range' =>'下单商品获得冻结份额',
-            'award/thaw_range' =>'下级下单解冻份额',
+            'award/thaw_range' =>'团队下单解冻份额',
             'award/thaw_brokerage' =>'解冻冻结奖金',
             'award/thaw_brokerage' =>'解冻冻结奖金',
             'award_range/sys_dec_range' => '系统减少分红额度',
             'award_range/sys_dec_range' => '系统减少分红额度',
             'award_range/sys_inc_range' => '系统增加分红额度',
             'award_range/sys_inc_range' => '系统增加分红额度',
         ],
         ],
         'award_integral' =>[
         'award_integral' =>[
-            'award/spread_oil_integral' =>'下级节能油订单获得分红积分',
-            'award/spread_pack_integral' =>'下级礼包订单获得分红积分',
+            'award/spread_oil_integral' =>'团队节能油订单分红积分',
+            'award/spread_pack_integral' =>'团队礼包订单分红积分',
             'award/ordinary_integral' =>'下单普通商品获得分红积分',
             'award/ordinary_integral' =>'下单普通商品获得分红积分',
             'award/oil_integral' =>'节能油分红积分',
             'award/oil_integral' =>'节能油分红积分',
             'award/pack_integral' =>'礼包分红积分',
             'award/pack_integral' =>'礼包分红积分',
@@ -111,7 +111,7 @@ class UserBillRepository extends BaseRepository
         ],
         ],
         'award_unclaimed_range' =>[
         'award_unclaimed_range' =>[
             'award/unclaimed_range' =>'下单商品获得冻结份额',
             'award/unclaimed_range' =>'下单商品获得冻结份额',
-            'award/thaw_range' =>'下级下单解冻份额',
+            'award/thaw_range' =>'团队下单解冻份额',
             'award/thaw_brokerage' =>'解冻冻结奖金',
             'award/thaw_brokerage' =>'解冻冻结奖金',
         ],
         ],
         'freeze_brokerage' =>[
         'freeze_brokerage' =>[