mirror of
https://github.com/GMWalletApp/epusdt.git
synced 2026-07-07 18:26:16 +00:00
feat: add admin panel with multi-chain support and notification system
- Add full admin REST API: auth, API keys, chains, chain tokens, wallets, orders, RPC nodes, settings, dashboard stats, notifications - Add JWT-based admin authentication and API key auth middleware - Add multi-chain listeners: BSC, ETH, Polygon, Plasma, EVM WebSocket - Add RPC node health check job with automatic failover - Add Telegram notification channel for order events - Add installer for first-run database initialization - Add new DB models: admin_user, api_key, chain, chain_token, rpc_node, settings, notification_channel - Add order statistics aggregation (daily/monthly/by-chain) - Serve built admin SPA from embedded www/ assets - Add comprehensive test coverage for all new features
This commit is contained in:
+8
-12
@@ -122,7 +122,9 @@ func WalletList(c tb.Context) error {
|
||||
InlineKeyboard: rows,
|
||||
})
|
||||
})
|
||||
btnList = append(btnList, []tb.InlineButton{addBtn})
|
||||
refreshBtn := tb.InlineButton{Text: "刷新列表", Unique: "WalletRefresh"}
|
||||
bots.Handle(&refreshBtn, WalletList)
|
||||
btnList = append(btnList, []tb.InlineButton{addBtn, refreshBtn})
|
||||
|
||||
return c.EditOrSend("请选择钱包继续操作", &tb.ReplyMarkup{
|
||||
InlineKeyboard: btnList,
|
||||
@@ -257,21 +259,15 @@ func getPendingWalletAddressState(userID int64) (pendingWalletAddressState, bool
|
||||
}
|
||||
|
||||
func getEnabledSupportedNetworks() ([]string, error) {
|
||||
assets, err := data.ListEnabledSupportedAssets()
|
||||
chains, err := data.ListEnabledChains()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
set := make(map[string]struct{})
|
||||
for _, a := range assets {
|
||||
n := strings.ToLower(strings.TrimSpace(a.Network))
|
||||
if n == "" {
|
||||
continue
|
||||
networks := make([]string, 0, len(chains))
|
||||
for _, ch := range chains {
|
||||
if n := strings.ToLower(strings.TrimSpace(ch.Network)); n != "" {
|
||||
networks = append(networks, n)
|
||||
}
|
||||
set[n] = struct{}{}
|
||||
}
|
||||
networks := make([]string, 0, len(set))
|
||||
for n := range set {
|
||||
networks = append(networks, n)
|
||||
}
|
||||
sort.Strings(networks)
|
||||
return networks, nil
|
||||
|
||||
Reference in New Issue
Block a user