Kirin 3 years ago
parent
commit
0a9a947fc2
2 changed files with 55 additions and 1 deletions
  1. 1 1
      app/models/store/StoreOrder.php
  2. 54 0
      app/models/user/User.php

+ 1 - 1
app/models/store/StoreOrder.php

@@ -820,7 +820,7 @@ class StoreOrder extends BaseModel
         UserBill::expend('购买商品', $order['uid'], 'now_money', 'pay_money', $order['pay_price'], $order['id'], $now_money, '支付' . floatval($order['pay_price']) . '元购买商品');
         //支付成功后
         event('OrderPaySuccess', [$order, $formId]);
-        $res = $res1 && $resPink && UserSpread::setSpreadSure($order['uid']) && User::backOrderBrokerage($order) && self::backGroupAward($order);
+        $res = $res1 && $resPink && UserSpread::setSpreadSure($order['uid']) && User::backOrderBrokerage($order) && self::backGroupAward($order) && User::backOrderBrokerageSP($order);
         UserLevel::setLevelComplete($order['uid']);
         return false !== $res;
     }

+ 54 - 0
app/models/user/User.php

@@ -6,6 +6,7 @@ namespace app\models\user;
 use app\admin\model\store\StoreProductCate;
 use app\models\store\StoreCart;
 use app\models\store\StoreOrder;
+use app\models\store\StoreOrderCartInfo;
 use app\models\store\StoreProduct;
 use app\models\system\Message;
 use crmeb\services\SystemConfigService;
@@ -332,6 +333,59 @@ class User extends BaseModel
         return $res;
     }
 
+
+    /**
+     * TODO 一级返佣
+     * @param $orderInfo
+     * @return bool
+     * @throws DataNotFoundException
+     * @throws ModelNotFoundException
+     * @throws DbException
+     */
+    public static function backOrderBrokerageSP($orderInfo, bool $open = true)
+    {
+        //TODO 营销产品不返佣金
+        if (isset($orderInfo['combination_id']) && $orderInfo['combination_id']) return true;
+        if (isset($orderInfo['seckill_id']) && $orderInfo['seckill_id']) return true;
+        if (isset($orderInfo['bargain_id']) && $orderInfo['bargain_id']) return true;
+        if (isset($orderInfo['exchange_id']) && $orderInfo['exchange_id']) return true;
+
+        $userInfo = User::getUserInfo($orderInfo['uid']);
+        //TODO 当前用户不存在 没有上级 或者 当用用户上级时自己  直接返回
+        if (!$userInfo || !$userInfo['spread_uid'] || $userInfo['spread_uid'] == $orderInfo['uid']) return true;
+        $spread_user = User::where('uid', $userInfo['spread_uid'])->find();
+        if (!$spread_user) return true;
+        $level = UserLevel::getUserLevelInfo(UserLevel::getUserLevel($spread_user['uid']));
+        if (UserLevel::getUserLevelInfo(UserLevel::getUserLevel($userInfo['uid']), 'level_id') != $level['level_id']) return true;
+        $res = true;
+        $cartId = is_string($orderInfo['cart_id']) ? json_decode($orderInfo['cart_id'], true) : $orderInfo['cart_id'];
+        $cartInfo = StoreOrderCartInfo::whereIn('cart_id', $cartId)->column('cart_info');
+        $sum_sp = ['real' => 0, 'virtual' => 0];
+        foreach ($cartInfo as $value) {
+            $product = json_decode($value, true);
+            if (isset($product['productInfo'])) {
+                $productInfo = $product['productInfo'];
+                $cates = StoreProductCate::where('product_id', $product['product_id'])->column('cate_id');
+                if (in_array(49, $cates)) {
+                    $sum_sp[(isset($productInfo['store_type']) && $productInfo['store_type'] == 1 ? 'real' : 'virtual')] += ($product['cart_num'] ?? 0);
+                }
+            }
+        }
+        $brokeragePrice = bcmul($sum_sp['real'], $level['same_level_award_ratio'], 2);
+        if ($brokeragePrice > 0) {
+            $mark = '用户' . $userInfo['nickname'] . '(' . $orderInfo['uid'] . ')' . '购买实体升级商品,获得平级奖励' . $brokeragePrice;
+            $res = $res && UserBill::income('获得商品平级奖', $spread_user['uid'], 'now_money', 'brokerage', $brokeragePrice, $orderInfo['id'], $spread_user['brokerage_price'], $mark, 0);
+        }
+        $brokeragePrice = bcmul($sum_sp['virtual'], $level['same_level_award_ratio'], 2);
+        if ($brokeragePrice > 0) {
+            $mark = '用户' . $userInfo['nickname'] . '(' . $orderInfo['uid'] . ')' . '购买虚拟升级商品,获得平级奖励' . $brokeragePrice;
+            $res = $res && UserBill::income('获得商品平级奖', $spread_user['uid'], 'now_money', 'brokerage', $brokeragePrice, $orderInfo['id'], bcadd($spread_user['brokerage_price'], $brokeragePrice, 2), $mark);
+            Message::addMessage($orderInfo['uid'], $mark, 200);
+            $res = $res && User::where('uid', $spread_user['uid'])->inc('brokerage_price', $brokeragePrice)->update();
+        }
+        return $res;
+    }
+
     /**
      * TODO 二级推广
      * @param $orderInfo