feat: 查看钱包优化,地址增加链上查询

This commit is contained in:
example
2026-09-28 21:11:08 +08:00
parent 5b677d4d1f
commit 8f7469cc4e
10 changed files with 313 additions and 88 deletions
@@ -12,6 +12,7 @@ use App\Models\User;
use App\Models\WalletAddress;
use App\Models\WalletMnemonic;
use App\Services\AdminGoogle2fa;
use App\Services\Chain\ChainHttpTimeout;
use App\Services\IngestService;
use App\Services\MnemonicAddressLinker;
use App\Services\MnemonicWalletDiscovery;
@@ -28,7 +29,7 @@ class MnemonicController extends Controller
use PortalAware;
use RevealsMnemonics;
private const REFRESH_DECAY_SECONDS = 60;
private const REFRESH_DECAY_SECONDS = 30;
public function index()
{
@@ -257,12 +258,12 @@ class MnemonicController extends Controller
return response()->json(['code' => 1, 'msg' => '无权操作'], 403);
}
$discovery->discoverActivated($mnemonic);
return response()->json([
'code' => 0,
'msg' => '',
'data' => $this->walletsPayload($mnemonic, $discovery),
'data' => array_merge($this->walletsPayload($mnemonic, $discovery), [
'updating' => true,
]),
]);
}
@@ -297,19 +298,21 @@ class MnemonicController extends Controller
$ok = 0;
$fail = 0;
foreach ($addresses as $address) {
// WalletBalanceService::refresh persists coin columns onto wallet_addresses.
if ($balances->refresh($address)) {
$ok++;
} else {
$fail++;
ChainHttpTimeout::using(MnemonicWalletDiscovery::PROBE_TIMEOUT_SECONDS, function () use ($addresses, $balances, &$ok, &$fail) {
foreach ($addresses as $address) {
if ($balances->refresh($address)) {
$ok++;
} else {
$fail++;
}
}
}
});
return response()->json([
'code' => 0,
'msg' => 'ok',
'data' => array_merge($this->walletsPayload($mnemonic, $discovery), [
'updating' => false,
'refreshed' => $ok,
'failed' => $fail,
'retry_after' => self::REFRESH_DECAY_SECONDS,