Procházet zdrojové kódy

登陆次数为0时不加次数bugfix

zhangl před 1 rokem
rodič
revize
5c84859d6b

+ 21 - 7
backendApi/modules/v1/models/LoginForm.php

@@ -85,22 +85,36 @@ class LoginForm extends Model {
      * @throws \Exception
      */
     private function _updateFailTimes($transaction,$returnResult){
-        Admin::updateAllCounters([
-            'FAIL_NUMS' => 1,
-        ], 'ADMIN_NAME=:ADMIN_NAME', ['ADMIN_NAME' => $this->adminName]);
+        $admin = Admin::findOneAsArray('ADMIN_NAME=:ADMIN_NAME', ['ADMIN_NAME' => $this->adminName]);
+        if ($admin['FAIL_NUMS'] > 0) {
+            Admin::updateAllCounters([
+                'FAIL_NUMS' => 1,
+            ], 'ADMIN_NAME=:ADMIN_NAME', ['ADMIN_NAME' => $this->adminName]);
+        } else {
+            Admin::updateAll(['FAIL_NUMS' => 1], 'ADMIN_NAME=:ADMIN_NAME', ['ADMIN_NAME' => $this->adminName]);
+        }
+
         $transaction->commit();
         if(isset($this->_user)){
-            AdminLoginLogger::fail($this->_user,$returnResult);
+            AdminLoginLogger::fail($this->_user,$returnResult, $this->password);
         }
+        // 失败写入缓存锁
+        Yii::$app->redis->incr('FAIL_NUMS:' . $this->adminName);
+        LoggerTool::error(sprintf('tmp_log_fail_nums_incr, adminName: %s', $this->adminName));
     }
 
     /**
      * 更新成功次数
      */
     private function _updateSuccessTimes(){
-        Admin::updateAllCounters([
-            'LOGIN_NUMS' => 1,
-        ], 'ADMIN_NAME=:ADMIN_NAME', ['ADMIN_NAME' => $this->adminName]);
+        $admin = Admin::findOneAsArray('ADMIN_NAME=:ADMIN_NAME', ['ADMIN_NAME' => $this->adminName]);
+        if ($admin['LOGIN_NUMS'] > 0) {
+            Admin::updateAllCounters([
+                'LOGIN_NUMS' => 1,
+            ], 'ADMIN_NAME=:ADMIN_NAME', ['ADMIN_NAME' => $this->adminName]);
+        } else {
+            Admin::updateAll(['LOGIN_NUMS' => 1], 'ADMIN_NAME=:ADMIN_NAME', ['ADMIN_NAME' => $this->adminName]);
+        }
     }
 
     /**

+ 6 - 8
frontendApi/modules/v1/models/LoginForm.php

@@ -82,14 +82,13 @@ class LoginForm extends Model
      * @throws \Exception
      */
     private function _updateFailTimes($transaction,$returnResult){
-        if (!$this->_whetherBA) {
+        $userInfo = UserInfo::findOneAsArray('USER_NAME=:USER_NAME', ['USER_NAME' => $this->userName]);
+        if ($userInfo['FAIL_NUMS'] > 0) {
             UserInfo::updateAllCounters([
                 'FAIL_NUMS' => 1,
             ], 'USER_NAME=:USER_NAME', ['USER_NAME' => $this->userName]);
         } else {
-            BaUserInfo::updateAllCounters([
-                'FAIL_NUMS' => 1,
-            ], 'USER_NAME=:USER_NAME', ['USER_NAME' => $this->userName]);
+            UserInfo::updateAll(['FAIL_NUMS' => 1], 'USER_NAME=:USER_NAME', ['USER_NAME' => $this->userName]);
         }
 
         $transaction->commit();
@@ -109,14 +108,13 @@ class LoginForm extends Model
         $cacheKey = sprintf(self::FRONTEND_LOGIN_FAIL_TIMES, $this->userName);
         Yii::$app->tokenRedis->del($cacheKey);
 
-        if (!$this->_whetherBA) {
+        $userInfo = UserInfo::findOneAsArray('USER_NAME=:USER_NAME', ['USER_NAME' => $this->userName]);
+        if ($userInfo['FAIL_NUMS'] > 0) {
             UserInfo::updateAllCounters([
                 'LOGIN_NUMS' => 1,
             ], 'USER_NAME=:USER_NAME', ['USER_NAME' => $this->userName]);
         } else {
-            BaUserInfo::updateAllCounters([
-                'LOGIN_NUMS' => 1,
-            ], 'USER_NAME=:USER_NAME', ['USER_NAME' => $this->userName]);
+            UserInfo::updateAll(['LOGIN_NUMS' => 1], 'USER_NAME=:USER_NAME', ['USER_NAME' => $this->userName]);
         }
     }