Browse Source

提现限制

Kirin 2 years ago
parent
commit
c5bbe35136
2 changed files with 54 additions and 13 deletions
  1. 1 1
      app/common.php
  2. 53 12
      app/models/store/StoreOrder.php

+ 1 - 1
app/common.php

@@ -54,7 +54,7 @@ if (!function_exists('sys_data')) {
     /**
      * 获取系统单个配置
      * @param string $name
-     * @return string
+     * @return mixed
      */
     function sys_data(string $name, int $limit = 0)
     {

+ 53 - 12
app/models/store/StoreOrder.php

@@ -870,10 +870,10 @@ class StoreOrder extends BaseModel
         if ($order['suit'] <= 0) return true;
         $userInfo = User::getUserInfo($order['uid']);
         $spread = User::getUserInfo($userInfo['spread_uid']);
-        if (StoreOrder::where('uid', $order['uid'])->where('paid', 1)->where('refund_status', 0)->where('is_del', 0)->where('is_system_del', 0)
-            ->where('id', '<>', $order['id'])->where('suit', '>', 0)->find()) {
-            $spread = $userInfo;
-        }
+//        if (StoreOrder::where('uid', $order['uid'])->where('paid', 1)->where('refund_status', 0)->where('is_del', 0)->where('is_system_del', 0)
+//            ->where('id', '<>', $order['id'])->where('suit', '>', 0)->find()) {
+//            $spread = $userInfo;
+//        }
         $re = true;
         $res = true;
         while ($spread) {
@@ -2492,10 +2492,10 @@ class StoreOrder extends BaseModel
 
         $userInfo = User::getUserInfo($order['uid']);
         $spread = User::getUserInfo($userInfo['spread_uid']);
-        if (StoreOrder::where('uid', $order['uid'])->where('paid', 1)->where('refund_status', 0)->where('is_del', 0)->where('is_system_del', 0)
-            ->where('id', '<>', $order['id'])->where('suit', '>', 0)->find()) {
-            $spread = $userInfo;
-        }
+//        if (StoreOrder::where('uid', $order['uid'])->where('paid', 1)->where('refund_status', 0)->where('is_del', 0)->where('is_system_del', 0)
+//            ->where('id', '<>', $order['id'])->where('suit', '>', 0)->find()) {
+//            $spread = $userInfo;
+//        }
         $cartInfo = StoreOrderCartInfo::whereIn('cart_id', $order['cart_id'])->column('cart_info');
         $suit = 0;
         $suit_exit = 0;
@@ -2536,9 +2536,16 @@ class StoreOrder extends BaseModel
 
         $send = 0;
         $send_normal = 0;
+        $layer = 1;
+        $layer_award = sys_data('suit_sub_award');
+        $layer_award_real = [];
+        foreach ($layer_award as $v) {
+            $layer_award_real[$v['layer']] = $v;
+        }
         while ($spread) {
             $group_level = SystemGroupLevel::get($spread['group_level']);
             $award_level = SystemGroupLevel::get($spread['award_level']);
+            $balance = $spread['brokerage_price'];
             if ($suit) {
                 $award_group = $group_level['suit_award'] ?? 0;
                 $award_award = $award_level['suit_award'] ?? 0;
@@ -2553,8 +2560,9 @@ class StoreOrder extends BaseModel
                         $real_send = bcsub($brokeragePrice, $send, 2);
                         if ($real_send > 0) {
                             $mark = '用户' . $userInfo['nickname'] . '(' . $order['uid'] . ')' . '购买套装商品,获得极差奖励' . $real_send;
-                            $res = $res && UserBill::income('套装极差奖', $spread['uid'], 'now_money', 'brokerage', $real_send, $order['id'], bcadd($spread['brokerage_price'], $real_send, 2), $mark);
+                            $res = $res && UserBill::income('套装极差奖', $spread['uid'], 'now_money', 'brokerage', $real_send, $order['id'], bcadd($balance, $real_send, 2), $mark);
                             $res = $res && User::where('uid', $spread['uid'])->inc('brokerage_price', $real_send)->update();
+                            $balance = bcadd($balance, $real_send, 2);
                             $send = $brokeragePrice;
                         }
                     }
@@ -2564,8 +2572,9 @@ class StoreOrder extends BaseModel
                         $real_send = bcsub($brokeragePrice, $send, 2);
                         if ($real_send > 0) {
                             $mark = '用户' . $userInfo['nickname'] . '(' . $order['uid'] . ')' . '购买套装商品,获得极差奖励' . $real_send;
-                            $res = $res && UserBill::income('套装极差奖', $spread['uid'], 'now_money', 'brokerage', $real_send, $order['id'], bcadd($spread['brokerage_price'], $real_send, 2), $mark);
+                            $res = $res && UserBill::income('套装极差奖', $spread['uid'], 'now_money', 'brokerage', $real_send, $order['id'], bcadd($balance, $real_send, 2), $mark);
                             $res = $res && User::where('uid', $spread['uid'])->inc('brokerage_price', $real_send)->update();
+                            $balance = bcadd($balance, $real_send, 2);
                             $send = $brokeragePrice;
                         }
                     }
@@ -2574,7 +2583,7 @@ class StoreOrder extends BaseModel
                         $real_send = bcsub($brokeragePrice, $send, 2);
                         if ($real_send > 0) {
                             $mark = '用户' . $userInfo['nickname'] . '(' . $order['uid'] . ')' . '购买套装商品,获得极差奖励' . $real_send;
-                            $res = $res && UserBill::income('套装极差奖', $spread['uid'], 'now_money', 'brokerage', $real_send, $order['id'], bcadd($spread['brokerage_price'], $real_send, 2), $mark, 0, $big);
+                            $res = $res && UserBill::income('套装极差奖', $spread['uid'], 'now_money', 'brokerage', $real_send, $order['id'], bcadd($balance, $real_send, 2), $mark, 0, $big);
                             $send = $brokeragePrice;
                         }
                     }
@@ -2604,6 +2613,37 @@ class StoreOrder extends BaseModel
 //                    }
 //                }
             }
+            $lay_award = $layer_award_real[$layer] ?? null;
+            if ($lay_award) {
+                $sps = User::where('spread_uid', $spread['uid'])->column('uid');
+                $count = 0;
+                foreach ($sps as $vvv) {
+                    if (StoreOrder::where('uid', $vvv)->where('paid', 1)->where('refund_status', 0)->where('is_del', 0)->where('is_system_del', 0)
+                        ->where('id', '<>', $order['id'])->where('suit', '>', 0)->find()) {
+                        $count++;
+                    }
+                }
+                if ($count >= $lay_award['recommend']) {
+                    if ($suit) {
+                        $brokeragePrice = bcmul($lay_award['award'], $suit, 2);
+                        if ($brokeragePrice > 0) {
+                            $mark = '用户' . $userInfo['nickname'] . '(' . $order['uid'] . ')' . '购买套装商品,获得见点奖励' . $brokeragePrice;
+                            $res = $res && UserBill::income('套装见点奖', $spread['uid'], 'now_money', 'brokerage', $brokeragePrice, $order['id'], bcadd($balance, $brokeragePrice, 2), $mark);
+                            $res = $res && User::where('uid', $spread['uid'])->inc('brokerage_price', $brokeragePrice)->update();
+                            $balance = bcadd($balance, $brokeragePrice, 2);
+                        }
+                    }
+                    if ($order['use_integral'] > 0) {
+                        $brokeragePrice = bcmul(bcdiv($lay_award['integral_award'], 100, 4), bcsub(bcsub($order['total_price'], $suit_price, 2), $extra_price, 2), 2);
+                        if ($brokeragePrice > 0) {
+                            $mark = '用户' . $userInfo['nickname'] . '(' . $order['uid'] . ')' . '购买积分商品,获得见点奖励' . $brokeragePrice;
+                            $res = $res && UserBill::income('见点奖', $spread['uid'], 'now_money', 'brokerage', $brokeragePrice, $order['id'], bcadd($balance, $brokeragePrice, 2), $mark);
+                            $res = $res && User::where('uid', $spread['uid'])->inc('brokerage_price', $brokeragePrice)->update();
+                            $balance = bcadd($balance, $brokeragePrice, 2);
+                        }
+                    }
+                }
+            }
 //            if ($group_level) {
             if (!$group_level) {
                 $group_award_basic = sys_config('group_award_basic', 0);
@@ -2618,13 +2658,14 @@ class StoreOrder extends BaseModel
                 $real_send = bcsub($brokeragePrice, $send_normal, 2);
                 if ($real_send > 0) {
                     $mark = '用户' . $userInfo['nickname'] . '(' . $order['uid'] . ')' . '购买' . ($order['use_integral'] > 0 ? '积分' : '普通') . '商品,获得极差奖励' . $real_send;
-                    $res = $res && UserBill::income('极差奖', $spread['uid'], 'now_money', 'brokerage', $real_send, $order['id'], bcadd($spread['brokerage_price'], $real_send, 2), $mark);
+                    $res = $res && UserBill::income('极差奖', $spread['uid'], 'now_money', 'brokerage', $real_send, $order['id'], bcadd($balance, $real_send, 2), $mark);
                     $res = $res && User::where('uid', $spread['uid'])->inc('brokerage_price', $real_send)->update();
                     $send_normal = $brokeragePrice;
                 }
             }
 //            }
             $spread = User::getUserInfo($spread['spread_uid']);
+            $layer++;
         }
         return $res;
     }