WIN-2308041133\Administrator 4 months ago
parent
commit
a5bbbdfed6
1 changed files with 35 additions and 3 deletions
  1. 35 3
      app/models/store/StoreOrder.php

+ 35 - 3
app/models/store/StoreOrder.php

@@ -381,7 +381,9 @@ class StoreOrder extends BaseModel
                     return self::setErrorInfo('请选择门店', true);
                 }
             }
+            $is_brokerage=0;
             if ($is_type==4||$is_type==5){
+                $is_brokerage=1;
                 //佣金抵扣
                 $res2 = true;
                 $SurplusIntegral = $userInfo['brokerage_price'];
@@ -420,6 +422,7 @@ class StoreOrder extends BaseModel
             }else{
 //                //积分抵扣
                 $res2 = true;
+                $is_brokerage=0;
                 $SurplusIntegral = $userInfo['integral'];
                 if ($payIntegral > 0) {
                     if ($userInfo['integral'] < $payIntegral) {
@@ -455,7 +458,6 @@ class StoreOrder extends BaseModel
                 if ($payPrice <= 0) $payPrice = 0;
 
             }
-            @file_put_contents('quanju.txt', $deductionPrice . "-抵扣金额\r\n", 8);
 
             if ($test) {
                 self::rollbackTrans();
@@ -498,6 +500,7 @@ class StoreOrder extends BaseModel
                 'add_time' => time(),
                 'unique' => $key,
                 'shipping_type' => $shipping_type,
+                'is_brokerage' => $is_brokerage,
             ];
             if ($shipping_type === 2) {
                 $orderInfo['verify_code'] = self::getStoreCode();
@@ -542,6 +545,11 @@ class StoreOrder extends BaseModel
      */
     public static function RegressionIntegral($order)
     {
+        if (!empty($order['is_brokerage'])){
+            if ($order['is_brokerage']==1){
+                return self::RegressionBrokerage($order);
+            }
+        }
         if ($order['paid'] || $order['status'] == -2 || $order['is_del']) return true;
         if ($order['use_integral'] <= 0) return true;
         if ((int)$order['status'] != -2 && (int)$order['refund_status'] != 2 && $order['back_integral'] >= $order['use_integral']) return true;
@@ -551,6 +559,21 @@ class StoreOrder extends BaseModel
         return false !== self::where('order_id', $order['order_id'])->update(['back_integral' => $order['use_integral']]);
     }
 
+    /**
+     * 回退佣金(健康币)
+     * @param $order 订单信息
+     * @return bool
+     */
+    public static function RegressionBrokerage($order)
+    {
+        if ($order['paid'] || $order['status'] == -2 || $order['is_del']) return true;
+        if ($order['use_integral'] <= 0) return true;
+        if ((int)$order['status'] != -2 && (int)$order['refund_status'] != 2 && $order['back_integral'] >= $order['use_integral']) return true;
+        $res = User::bcInc($order['uid'], 'brokerage_price', $order['use_integral']);
+        if (!$res) return self::setErrorInfo('回退健康币增加失败');
+        UserBill::income('健康币回退', $order['uid'], 'brokerage_price', 'deduction', $order['use_integral'], $order['unique'], User::where('uid', $order['uid'])->value('integral'), '购买商品失败,回退健康币' . floatval($order['use_integral']));
+        return false !== self::where('order_id', $order['order_id'])->update(['back_integral' => $order['use_integral']]);
+    }
 
     /**
      * 回退库存和销量
@@ -608,7 +631,12 @@ class StoreOrder extends BaseModel
         if (!$order) return self::setErrorInfo('没有查到此订单');
         self::beginTrans();
         try {
-            $res = self::RegressionIntegral($order) && self::RegressionStock($order) && self::RegressionCoupon($order);
+            $orderInfo = $order->toArray();
+            if ($orderInfo['is_brokerage']==1){
+                $res = self::RegressionBrokerage($order) && self::RegressionStock($order) && self::RegressionCoupon($order);
+            }else{
+                $res = self::RegressionIntegral($order) && self::RegressionStock($order) && self::RegressionCoupon($order);
+            }
             $order->is_del = 1;
             if ($res && $order->save()) {
                 self::commitTrans();
@@ -1663,7 +1691,11 @@ class StoreOrder extends BaseModel
         if ($time == 0) return true;
         if (($order['add_time'] + bcmul($time, 3600, 0)) < time()) {
             $res1 = self::RegressionStock($order);
-            $res2 = self::RegressionIntegral($order);
+            if ($order['is_brokerage']==1){
+                $res2 = self::RegressionBrokerage($order);
+            }else{
+                $res2 = self::RegressionIntegral($order);
+            }
             $res3 = self::RegressionCoupon($order);
             $res = $res1 && $res2 && $res3;
             if ($res) $res = false !== self::where('order_id', $order['order_id'])->update(['is_del' => 1, 'mark' => '订单未支付已超过系统预设时间']);