Ken 2 weeks ago
parent
commit
bd0c7fdfce
1 changed files with 87 additions and 5 deletions
  1. 87 5
      app/Services/SecretService.php

+ 87 - 5
app/Services/SecretService.php

@@ -26,20 +26,79 @@ class SecretService
             $telegram->editMessageText($res);
         }
 
-
+        if ($data === "secret@@view") {
+            $res = SecretService::view($chatId, $messageId);
+            $telegram->editMessageText($res);
+        }
         //找回账号
         if ($data === "secret@@retrieve") {
             $res = SecretService::retrieve($chatId, $messageId);
             $telegram->editMessageText($res);
         }
+
+        //确认找回
+        if ($data === "secret@@confirm") {
+            $res = SecretService::confirm($chatId, $messageId);
+            $telegram->editMessageText($res);
+        }
     }
 
     public static function onMessage($chatId, $text, $messageId, $stepStatus): null|array
     {
-        return match ($stepStatus) {
-            StepStatus::MY_INPUT_OLD_SECRET => SecretService::inputOldSecret($chatId, $text, $messageId),
-            default => null
-        };
+        switch ($stepStatus) {
+            case StepStatus::MY_INPUT_OLD_SECRET:
+                return SecretService::inputOldSecret($chatId, $text, $messageId);
+            default:
+                return null;
+        }
+
+    }
+
+    private static function view($chatId, $messageId): array
+    {
+        $text = "请输入查看密码";
+        $user = User::where('member_id', $chatId)->first();
+        if ($user->secret_pass == '') {
+            $secretKey = SecretService::generateRandomString(22);
+            $user->secret_key = $secretKey;
+            $user->save();
+        }
+        return [
+            'chat_id' => $chatId,
+            'text' => $text,
+            'message_id' => $messageId,
+        ];
+    }
+
+    private static function confirm($chatId, $messageId): array
+    {
+        $secret = Cache::get("{$chatId}_OLD_SECRET");
+        $user = User::where(['secret_key' => $secret])->where('member_id', '!=', $chatId)->first();
+        $wallet = Wallet::where('member_id', $user->getMemberId())->first();
+
+
+//        $res = WalletService::updateBalance($user->getMemberId(), $wallet->available_balance * -1);
+//        BalanceLogService::addLog(
+//            $chatId,
+//            $wallet->available_balance * -1,
+//            $res['before_balance'],
+//            $res['after_balance'],
+//            "账号找回",
+//            '',
+//            "新账号:{$chatId}"
+//        );
+//
+//        $res = WalletService::updateBalance($chatId, $wallet->available_balance);
+//        BalanceLogService::addLog(
+//            $chatId,
+//            $wallet->available_balance,
+//            $res['before_balance'],
+//            $res['after_balance'],
+//            "账号找回",
+//            '',
+//            "原账号:{$user->getMemberId()}"
+//        );
+        return [];
     }
 
 
@@ -68,6 +127,8 @@ class SecretService
 
         $text .= "\n-------------------------------\n\n";
         $text .= "注意:请确认原账号信息,点击确认后,原账号将注销,原账号的余额以及其他信息将同步到新账号中!此操作不可撤销";
+
+        Cache::put("{$chatId}_OLD_SECRET", $secret);
         return [
             'chat_id' => $chatId,
             'text' => $text,
@@ -111,4 +172,25 @@ class SecretService
             'reply_markup' => json_encode(['inline_keyboard' => $keyboard])
         ];
     }
+
+    private static function generateRandomString($length = 10)
+    {
+        // 定义大写字母和数字的字符集
+        $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
+
+        // 获取字符集的长度
+        $charactersLength = strlen($characters);
+
+        // 初始化随机字符串
+        $randomString = '';
+
+        // 生成随机字符串
+        for ($i = 0; $i < $length; $i++) {
+            // 从字符集随机选择一个字符
+            $randomString .= $characters[rand(0, $charactersLength - 1)];
+        }
+
+        return $randomString;
+    }
+
 }