|
|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
}
|