wesmiler 3 лет назад
Родитель
Сommit
7c3d93ff0e

+ 3 - 1
source/application/common/model/User.php

@@ -174,7 +174,9 @@ class User extends BaseModel
     public function onBatchIncUpgradeMoney($data)
     {
         foreach ($data as $userId => $money) {
-            $this->where(['user_id' => $userId])->setInc('expend_upgrade_money', $money);
+            if($money>0){
+                $this->where(['user_id' => $userId])->setInc('expend_upgrade_money', $money);
+            }
         }
         return true;
     }

+ 33 - 5
source/application/common/service/order/Complete.php

@@ -76,6 +76,9 @@ class Complete
             $this->settled($orderList);
         }
 
+        // 升级消费统计
+        $this->setIncUserUpgradeExpend($orderList);
+
         // 发放分销商佣金
         foreach ($orderList as $order) {
 
@@ -167,11 +170,9 @@ class Complete
     {
         // 计算并累积实际消费金额(需减去售后退款的金额)
         $userData = [];
-        $upgradeData = [];
         foreach ($orderList as $order) {
             // 订单实际支付金额
             $expendMoney = $order['pay_price'];
-            $upgradeMoney = $order['is_upgrade']? $order['pay_price'] : 0;
             // 减去订单退款的金额
             foreach ($order['goods'] as $goods) {
                 if (
@@ -180,17 +181,44 @@ class Complete
                     && $goods['refund']['is_agree']['value'] == 10  // 商家审核:已同意
                 ) {
                     $expendMoney -= $goods['refund']['refund_money'];
-                    $upgradeMoney -= $goods['refund']['refund_money'];
                 }
             }
             !isset($userData[$order['user_id']]) && $userData[$order['user_id']] = 0.00;
             $expendMoney > 0 && $userData[$order['user_id']] += $expendMoney;
-            $upgradeMoney > 0 && $upgradeData[$order['user_id']] += $expendMoney;
         }
         // 累积到会员表记录
         $this->UserModel->onBatchIncExpendMoney($userData);
-        $this->UserModel->onBatchIncUpgradeMoney($upgradeData);
         return true;
     }
 
+    /**
+     * 累积用户实际升级消费金额
+     * @param $orderList
+     * @return bool
+     * @throws \Exception
+     */
+    private function setIncUserUpgradeExpend($orderList)
+    {
+        // 计算并累积实际消费金额(需减去售后退款的金额)
+        $upgradeData = [];
+        foreach ($orderList as $order) {
+            // 订单实际支付金额
+            $upgradeMoney = $order['is_upgrade']? $order['pay_price'] : 0;
+            // 减去订单退款的金额
+            foreach ($order['goods'] as $goods) {
+                if (
+                    !empty($goods['refund'])
+                    && $goods['refund']['type']['value'] == 10      // 售后类型:退货退款
+                    && $goods['refund']['is_agree']['value'] == 10  // 商家审核:已同意
+                ) {
+                    $upgradeMoney -= $goods['refund']['refund_money'];
+                }
+            }
+            !isset($upgradeData[$order['user_id']]) && $upgradeData[$order['user_id']] = 0.00;
+            $upgradeMoney > 0 && $upgradeData[$order['user_id']] += $upgradeMoney;
+        }
+        // 累积到会员表记录
+        $this->UserModel->onBatchIncUpgradeMoney($upgradeData);
+        return true;
+    }
 }