Kirin преди 1 година
родител
ревизия
29ddbcb347
променени са 1 файла, в които са добавени 15 реда и са изтрити 8 реда
  1. 15 8
      app/models/store/StoreOrder.php

+ 15 - 8
app/models/store/StoreOrder.php

@@ -2514,21 +2514,25 @@ class StoreOrder extends BaseModel
         $suit_award = 0;
         $suit_price = 0;
         $extra_price = 0;
+        $calculator_ratio = sys_config('calculator_ratio', 80);
         foreach ($cartInfo as $value) {
             $product = json_decode($value, true);
             if (isset($product['productInfo'])) {
                 $productInfo = $product['productInfo'];
                 if (($productInfo['attrInfo']['brokerage_suit'] ?? 0) > 0) {
                     $suit_award += $product['productInfo']['attrInfo']['brokerage_suit'] * $product['cart_num'];
-                    $suit_price += ($productInfo['attrInfo']['price'] ?? $product['price']) * $product['cart_num'];
+                    $suit_price += bcsub(($productInfo['attrInfo']['price'] ?? $product['price']), ($productInfo['attrInfo']['cost'] ?? $product['cost']), 2) * $product['cart_num'];
+                    $suit_price = bcdiv(bcmul($suit_price, $calculator_ratio), 100, 2);
                     if ($product['is_suit']) $suit_exit += $product['cart_num'] ?? 0;
                 }
                 if ($product['is_suit']) {
                     $suit += $product['cart_num'] ?? 0;
-                    $suit_price += ($productInfo['attrInfo']['price'] ?? $product['price']) * $product['cart_num'];
+                    $suit_price += bcsub(($productInfo['attrInfo']['price'] ?? $product['price']), ($productInfo['attrInfo']['cost'] ?? $product['cost']), 2) * $product['cart_num'];
+                    $suit_price = bcdiv(bcmul($suit_price, $calculator_ratio), 100, 2);
                 }
                 if (!$product['is_award']) {
-                    $extra_price += ($productInfo['attrInfo']['price'] ?? $product['price']) * $product['cart_num'];
+                    $extra_price += bcsub(($productInfo['attrInfo']['price'] ?? $product['price']), ($productInfo['attrInfo']['cost'] ?? $product['cost']), 2) * $product['cart_num'];
+                    $extra_price = bcdiv(bcmul($extra_price, $calculator_ratio), 100, 2);
                 }
             }
         }
@@ -2677,7 +2681,8 @@ class StoreOrder extends BaseModel
                         }
                     }
                     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);
+                        $award_price_num = bcsub(bcsub(bcdiv(bcmul(bcsub($order['total_price'], $order['cost'], 2), $calculator_ratio), 100, 2), $suit_price, 2), $extra_price, 2);
+                        $brokeragePrice = bcmul(bcdiv($lay_award['integral_award'], 100, 4), $award_price_num, 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);
@@ -2692,11 +2697,13 @@ class StoreOrder extends BaseModel
             if (!$group_level) {
                 $group_award_basic = sys_config('group_award_basic', 0);
                 $integral_group_award_basic = sys_config('integral_group_award_basic', 0);
-                $brokeragePrice = bcmul(bcdiv($group_award_basic, 100, 4), bcsub(bcsub($order['total_price'], $suit_price, 2), $extra_price, 2), 2);
-                if ($order['use_integral'] > 0) $brokeragePrice = bcmul(bcdiv($integral_group_award_basic, 100, 4), bcsub(bcsub($order['total_price'], $suit_price, 2), $extra_price, 2), 2);
+                $award_price_num = bcsub(bcsub(bcdiv(bcmul(bcsub($order['total_price'], $order['cost'], 2), $calculator_ratio), 100, 2), $suit_price, 2), $extra_price, 2);
+                $brokeragePrice = bcmul(bcdiv($group_award_basic, 100, 4), $award_price_num, 2);
+                if ($order['use_integral'] > 0) $brokeragePrice = bcmul(bcdiv($integral_group_award_basic, 100, 4), bcsub(bcsub(bcsub($order['total_price'], $order['cost'], 2), $suit_price, 2), $extra_price, 2), 2);
             } else {
-                $brokeragePrice = bcmul(bcdiv($group_level['group_award'], 100, 4), bcsub(bcsub($order['total_price'], $suit_price, 2), $extra_price, 2), 2);
-                if ($order['use_integral'] > 0) $brokeragePrice = bcmul(bcdiv($group_level['integral_group_award'], 100, 4), bcsub(bcsub($order['total_price'], $suit_price, 2), $extra_price, 2), 2);
+                $award_price_num = bcsub(bcsub(bcdiv(bcmul(bcsub($order['total_price'], $order['cost'], 2), $calculator_ratio), 100, 2), $suit_price, 2), $extra_price, 2);
+                $brokeragePrice = bcmul(bcdiv($group_level['group_award'], 100, 4), $award_price_num, 2);
+                if ($order['use_integral'] > 0) $brokeragePrice = bcmul(bcdiv($group_level['integral_group_award'], 100, 4), $award_price_num, 2);
             }
             if ($brokeragePrice > $send_normal) {
                 $real_send = bcsub($brokeragePrice, $send_normal, 2);