Просмотр исходного кода

feat: EK-76: Member Auto-Maintenance.

kevinElken 10 месяцев назад
Родитель
Сommit
c2dcf75692
1 измененных файлов с 25 добавлено и 10 удалено
  1. 25 10
      common/models/forms/OrderForm.php

+ 25 - 10
common/models/forms/OrderForm.php

@@ -1220,14 +1220,18 @@ class OrderForm extends Model
         // 会员汇率
         $country = Countries::getById($user['COUNTRY_ID']);
         $currencyRate = CurrencyConversions::getToUSDRate($country['LOCAL_CURRENCY_ID']);
-        //判断是否是报单中心
+        // 判断是否是报单中心
         $loginUser = User::getEnCodeInfo(\Yii::$app->user->id);
-        if($loginUser['IS_DEC'] == 1){
+        if ($loginUser['IS_DEC'] == 1){
             if($decUserID != \Yii::$app->user->id){
                 throw new Exception(Yii::t('app', 'decUserNameIsWrong'));
             }
         }
 
+        if ($this->payType == 'prp') {
+            throw new Exception(Yii::t('app', 'payTypeError'));
+        }
+
         foreach ($this->goodsNum as $k => $v) {
             if ($v) {
                 $goods = ShopGoods::findOneAsArray('ID=:ID AND STATUS=1',[':ID'=> $ids[$k]]);
@@ -1363,13 +1367,7 @@ class OrderForm extends Model
                 }
             }
 
-            if ($this->payType == 'prp') {
-                //看余额是否充足
-                $decCash = UserPerformance::getAmounts($loginUserId);
-            } else {
-                //看现金余额是否充足
-                $decCash = Cash::getAvailableBalance($loginUserId);
-            }
+            $decCash = Cash::getAvailableBalance($loginUserId);
 
             // 转换后的余额
             $localCash = Tool::convertAmount($decCash, $decUserCurrencyRate, $currencyRate);
@@ -1429,6 +1427,8 @@ class OrderForm extends Model
 
     private function orderAutoMaintenance($order)
     {
+        $nowPeriodNum = Period::instance()->getNowPeriodNum();
+
         try {
             $sysConfig = Cache::getSystemConfig();
             $divideLine = (int)$sysConfig['monthPcsPvFxCondition']['VALUE'];
@@ -1444,7 +1444,22 @@ class OrderForm extends Model
                 ->orderBy(['PERIOD_NUM' => SORT_DESC])
                 ->one();
 
-            $startPeriodNum = $lastAmpPeriod ? $lastAmpPeriod->PERIOD_NUM + 1 : $order->PERIOD_NUM;
+            $startPeriodNum = $lastAmpPeriod ? $lastAmpPeriod->PERIOD_NUM + 1 : $nowPeriodNum;
+
+            if (!$lastAmpPeriod) {
+                $memberOrderBv = Order::find()
+                    ->select('SUM(PV) AS total_pv')
+                    ->where([
+                        'USER_ID' => $order->USER_ID,
+                        'IS_DELETE' => 0,
+                        'PERIOD_NUM' => $nowPeriodNum
+                    ])
+                    ->scalar();
+
+                if ($memberOrderBv >= $divideLine) {
+                    $startPeriodNum = $nowPeriodNum + 1;
+                }
+            }
 
             $periodCount = floor($orderTotalBv / $divideLine);
             $remainderBv = $orderTotalBv % $divideLine;