diff --git a/README.md b/README.md
index c5e8da1..ab04ff4 100644
--- a/README.md
+++ b/README.md
@@ -1,209 +1,50 @@
-
Java-Wallet
+# Java Wallet (Monolith)
-
- Production-grade multi-chain cryptocurrency wallet backend
-
+This project is now converging to a **single Spring Boot wallet service**.
-
-
-
-
-
-
-
-
-
-
-
-
- 中文文档 ·
- Telegram ·
- Issues ·
- Quick Start
-
-
----
-
-## Introduction
-
-Java-Wallet is a battle-tested multi-chain cryptocurrency wallet backend that has safely managed hundreds of millions of dollars in transactions in production. It provides blockchain address generation, deposit detection, withdrawal processing, and automated fund sweeping across all major public chains.
-
-The core signing component [tokencore](https://github.com/GalaxySciTech/tokencore) performs all cryptographic operations locally — private keys never leave the process.
-
-### Supported Chains
-
-| Chain | Native | Token |
-|:------|:------:|:-----:|
-| Bitcoin | BTC | OMNI (USDT) |
-| Ethereum | ETH | ERC-20 |
-| Tron | TRX | TRC-20 |
-| Bitcoin Cash | BCH | — |
-| Bitcoin SV | BSV | — |
-| Litecoin | LTC | — |
-| Dogecoin | DOGE | — |
-| Dash | DASH | — |
-
-## Architecture
-
-```
- ┌──────────────────────────────────────────────┐
- │ Client / Admin UI │
- └──────────────────┬───────────────────────────┘
- │ HTTP
- ┌───────────────────────────┼───────────────────────────┐
- │ │ │
- ┌───────▼────────┐ ┌────────▼────────┐ ┌───────▼────────┐
- │ wallet-webapi │ │ wallet-task │ │ wallet-hsm │
- │ REST API │ │ Scheduled Jobs │ │ Key Management │
- │ :10001 │ │ :10033 │ │ :10888 │
- └───────┬─────────┘ └────────┬─────────┘ └───────┬─────────┘
- │ │ │
- └────────────┬───────────────┘ │
- │ │
- ┌───────▼────────┐ ┌───────▼────────┐
- │ wallet-common │ │ wallet-entity │
- │ Business Logic │◄─────────────────────────│ JPA / Data │
- └──┬─────┬─────┬─┘ └───────┬─────────┘
- │ │ │ │
- ┌────▼┐ ┌──▼──┐ ┌▼──────┐ ┌───────▼────────┐
- │ RPC │ │ MQ │ │xxl-job│ │ MySQL 8 │
- │Nodes│ │ │ │ │ └────────────────┘
- └─────┘ └─────┘ └───────┘
-```
-
-| Module | Description |
-|:-------|:------------|
-| **wallet-webapi** | REST API — address generation, deposits & withdrawals, admin dashboard, Swagger docs |
-| **wallet-task** | Scheduled jobs — block syncing, deposit detection, auto-sweeping, fee top-up |
-| **wallet-hsm** | Key management — HD wallet derivation, offline signing, key import/export |
-| **wallet-common** | Shared layer — business logic, RPC clients, caching, utilities |
-| **wallet-entity** | Data layer — JPA entities, repositories, QueryDSL |
-
-## Tech Stack
-
-| Category | Technology |
-|:---------|:-----------|
-| Language | Kotlin 1.9 + Java 17 |
-| Framework | Spring Boot 3.1.3 |
-| Build | Gradle 8.5 |
-| Database | MySQL 8.0 · Spring Data JPA · HikariCP |
-| Cache | Caffeine |
-| Message Queue | RabbitMQ (Spring AMQP) |
-| Task Scheduling | xxl-job 2.4.0 |
-| Blockchain | [tokencore 1.3.0](https://github.com/GalaxySciTech/tokencore) · web3j 4.10.3 · bitcoin-rpc-client 1.2.4 |
-| API Docs | SpringDoc OpenAPI 2.3 (Swagger UI) |
-| Container | Docker multi-stage · docker-compose |
-| CI/CD | GitHub Actions · GitLab CI |
+## What changed
+- Single startup service (`wallet-webapi` as app runtime)
+- No RabbitMQ required
+- No xxl-job required
+- HSM capabilities are invoked in-process
+- tokencore dependency unified to `com.github.galaxyscitech:tokencore:2.0.0`
## Quick Start
-
-### Prerequisites
-
-- JDK 17+
-- MySQL 8.0+
-- RabbitMQ 3.x (required by wallet-task)
-
-### Docker Compose (Recommended)
-
+### 1) Start with Docker Compose
```bash
-git clone https://github.com/GalaxySciTech/java-wallet.git
-cd java-wallet
-
-cp .env.example .env # edit with your settings
-docker-compose up -d
+docker compose up -d --build
```
-Once running:
-- **API**: http://localhost:10001
-- **Swagger UI**: http://localhost:10001/swagger-ui.html
-- **RabbitMQ Console**: http://localhost:15672
-
-### Manual Setup
+Services:
+- `app` on `http://localhost:8080`
+- `mysql` on `localhost:3306`
+### 2) Start manually
```bash
-# 1. Set environment variables (see .env.example for full list)
-export DB_URL="jdbc:mysql://localhost:3306/wallet_db?useSSL=false&characterEncoding=UTF-8"
-export DB_USERNAME=root
-export DB_PASSWORD=your_password
-
-# 2. Build
-chmod +x gradlew
-./gradlew build -x test
-
-# 3. Run each service in a separate terminal
./gradlew :wallet-webapi:bootRun
-./gradlew :wallet-task:bootRun
-./gradlew :wallet-hsm:bootRun
```
-## Configuration
-
-All sensitive values are injected via environment variables — nothing is hardcoded. See [`.env.example`](.env.example) for the full list.
-
-| Variable | Service | Description |
-|:---------|:--------|:------------|
-| `DB_URL` | webapi, task | MySQL JDBC connection URL |
-| `DB_USERNAME` / `DB_PASSWORD` | webapi, task | Database credentials |
-| `RABBITMQ_HOST` / `RABBITMQ_PASSWORD` | task | RabbitMQ connection |
-| `KEYSTORE_DIR` / `KEYSTORE_PASSWORD` | hsm | Keystore path and password |
-| `XXL_JOB_ADMIN_ADDRESSES` | task | xxl-job scheduler address |
-| `WALLET_CRYPTO_PUSH_KEY` | webapi | AES key for deposit push notifications |
-
-## API Reference
-
-### Wallet API `/wallet/v1`
-
-| Method | Endpoint | Description |
-|:------:|:---------|:------------|
-| POST | `/get_address` | Generate new blockchain addresses in batch |
-| POST | `/send` | Withdraw (specify `from` or auto-select from hot wallet) |
-| POST | `/create_hot_address` | Create a hot wallet or gas wallet |
-| POST | `/export_wallet` | Export private key or mnemonic |
-| POST | `/import_wallet` | Import private key or mnemonic |
-| GET | `/get_hot_address` | Query hot wallet addresses |
-| GET | `/check_address` | Check if address private key exists |
-| GET | `/get_transaction` | Query deposit / withdrawal / sweep records |
-| GET | `/get_new_deposit` | Fetch new deposits (marked as read after fetch) |
-| GET | `/check_tx_status` | Check on-chain transaction status |
-
-### Blockchain API `/block_chain/v1`
-
-| Method | Endpoint | Description |
-|:------:|:---------|:------------|
-| GET | `/get_transaction` | Query on-chain transaction details |
-| GET | `/get_address_balance` | Query on-chain address balance |
-| GET | `/get_recommend_fee` | Get recommended fees (slow / medium / fast) |
-| GET | `/calculation_fee` | Calculate transaction fee |
-| GET | `/get_support_token` | List all supported tokens |
-
-### Admin API `/admin`
-
-| Method | Endpoint | Description |
-|:------:|:---------|:------------|
-| POST | `/login` | Admin login |
-| GET | `/get_dashboard` | Dashboard overview |
-| GET | `/get_addr_list` | Address list |
-| GET | `/get_token_list` | Token list |
-| POST | `/edit_token` | Edit token configuration |
-| POST | `/edit_config` | Edit system configuration |
-| POST | `/edit_white` | Edit IP whitelist |
-
-> Full interactive API docs are available at Swagger UI after starting the service.
-
-## Reliability
-
-Java-Wallet has been running in production and has safely processed hundreds of millions of dollars in transactions. It is built for high reliability, scalability, and real-world utility.
-
-## Contact
-
-For technical support, business inquiries, or deployment consulting:
-
-**[@GalaxySciTech](https://t.me/GalaxySciTech)** on Telegram
-
-## Disclaimer
-
-Any commercial use of this source code is at your own risk. The authors assume no liability for any losses incurred by yourself or others.
-
-## License
-
-This project is provided as-is. See the repository for license details.
+## API
+- Wallet API: `/wallet/v1`
+- Blockchain API: `/block_chain/v1`
+- Admin API: `/admin`
+- Swagger: `/swagger-ui/index.html`
+
+## Runtime config
+Core runtime behavior is expected to be DB-config driven. Current scheduler keys already supported in `sys_config`:
+- `SCHEDULER_DEPOSIT_SCAN_ENABLED`
+- `SCHEDULER_DEPOSIT_SCAN_MS`
+- `SCHEDULER_CHAIN_SYNC_ENABLED`
+- `SCHEDULER_CHAIN_SYNC_MS`
+- `SCHEDULER_SWEEP_ENABLED`
+- `SCHEDULER_SWEEP_MS`
+- `SCHEDULER_FEE_SUPPLY_ENABLED`
+- `SCHEDULER_FEE_SUPPLY_MS`
+
+## Security notes
+- Do not use default passwords in production.
+- Never expose keystore password, mnemonic, or private key in logs.
+- Keep RPC credentials masked in management APIs.
+
+## Database updates
+- New audit table: `wallet_admin_audit_log` (admin config change history).
diff --git a/README_CN.md b/README_CN.md
index 026ae0c..9277dd9 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -1,209 +1,50 @@
-Java-Wallet
+# Java Wallet(单体化改造中)
-
- 生产级多链加密货币钱包后台系统
-
+项目正在收敛为**单体 Spring Boot 钱包服务**。
-
-
-
-
-
-
-
-
-
-
-
-
- English ·
- Telegram ·
- Issues ·
- 快速开始
-
-
----
-
-## 简介
-
-Java-Wallet 是一套经过生产环境验证的多链加密货币钱包后台系统,曾稳定管理过数亿美元级别的交易。系统提供区块链地址生成、充值检测、提现处理和自动归集等核心功能,支持主流公链和代币。
-
-核心签名组件 [tokencore](https://github.com/GalaxySciTech/tokencore) 支持全链离线签名,私钥全程本地运算,从不外泄。
-
-### 支持的公链
-
-| 公链 | 原生币 | 代币 |
-|:-----|:------:|:----:|
-| Bitcoin | BTC | OMNI (USDT) |
-| Ethereum | ETH | ERC-20 |
-| Tron | TRX | TRC-20 |
-| Bitcoin Cash | BCH | — |
-| Bitcoin SV | BSV | — |
-| Litecoin | LTC | — |
-| Dogecoin | DOGE | — |
-| Dash | DASH | — |
-
-## 系统架构
-
-```
- ┌──────────────────────────────────────────────┐
- │ 客户端 / 管理后台 UI │
- └──────────────────┬───────────────────────────┘
- │ HTTP
- ┌───────────────────────────┼───────────────────────────┐
- │ │ │
- ┌───────▼────────┐ ┌────────▼────────┐ ┌───────▼────────┐
- │ wallet-webapi │ │ wallet-task │ │ wallet-hsm │
- │ REST 接口 │ │ 定时任务 │ │ 密钥管理 │
- │ :10001 │ │ :10033 │ │ :10888 │
- └───────┬─────────┘ └────────┬─────────┘ └───────┬─────────┘
- │ │ │
- └────────────┬───────────────┘ │
- │ │
- ┌───────▼────────┐ ┌───────▼────────┐
- │ wallet-common │ │ wallet-entity │
- │ 业务逻辑 │◄─────────────────────────│ 数据访问层 │
- └──┬─────┬─────┬─┘ └───────┬─────────┘
- │ │ │ │
- ┌────▼┐ ┌──▼──┐ ┌▼──────┐ ┌───────▼────────┐
- │ RPC │ │ MQ │ │xxl-job│ │ MySQL 8 │
- │ 节点 │ │ │ │ │ └────────────────┘
- └─────┘ └─────┘ └───────┘
-```
-
-| 模块 | 说明 |
-|:-----|:-----|
-| **wallet-webapi** | REST API — 地址生成、充提币、管理后台、Swagger 文档 |
-| **wallet-task** | 定时任务 — 区块同步、充值检测、自动归集、手续费补发 |
-| **wallet-hsm** | 密钥管理 — HD 钱包派生、离线签名、私钥导入导出 |
-| **wallet-common** | 公共层 — 业务逻辑、RPC 客户端、缓存、工具类 |
-| **wallet-entity** | 数据层 — JPA 实体、Repository、QueryDSL |
-
-## 技术栈
-
-| 类别 | 技术 |
-|:-----|:-----|
-| 语言 | Kotlin 1.9 + Java 17 |
-| 框架 | Spring Boot 3.1.3 |
-| 构建 | Gradle 8.5 |
-| 数据库 | MySQL 8.0 · Spring Data JPA · HikariCP |
-| 缓存 | Caffeine |
-| 消息队列 | RabbitMQ (Spring AMQP) |
-| 任务调度 | xxl-job 2.4.0 |
-| 区块链 | [tokencore 1.3.0](https://github.com/GalaxySciTech/tokencore) · web3j 4.10.3 · bitcoin-rpc-client 1.2.4 |
-| 接口文档 | SpringDoc OpenAPI 2.3 (Swagger UI) |
-| 容器化 | Docker 多阶段构建 · docker-compose |
-| CI/CD | GitHub Actions · GitLab CI |
+## 当前变化
+- 统一单服务启动(以 `wallet-webapi` 作为应用运行时)
+- 不再依赖 RabbitMQ
+- 不再依赖 xxl-job
+- HSM 能力改为进程内调用
+- tokencore 统一为 `com.github.galaxyscitech:tokencore:2.0.0`
## 快速开始
-
-### 环境要求
-
-- JDK 17+
-- MySQL 8.0+
-- RabbitMQ 3.x(wallet-task 需要)
-
-### Docker Compose(推荐)
-
+### 1)Docker Compose 启动
```bash
-git clone https://github.com/GalaxySciTech/java-wallet.git
-cd java-wallet
-
-cp .env.example .env # 编辑配置
-docker-compose up -d
+docker compose up -d --build
```
-服务启动后:
-- **API 接口**: http://localhost:10001
-- **Swagger 文档**: http://localhost:10001/swagger-ui.html
-- **RabbitMQ 管理**: http://localhost:15672
-
-### 手动部署
+服务:
+- `app`:`http://localhost:8080`
+- `mysql`:`localhost:3306`
+### 2)手动启动
```bash
-# 1. 配置环境变量(完整列表见 .env.example)
-export DB_URL="jdbc:mysql://localhost:3306/wallet_db?useSSL=false&characterEncoding=UTF-8"
-export DB_USERNAME=root
-export DB_PASSWORD=your_password
-
-# 2. 构建项目
-chmod +x gradlew
-./gradlew build -x test
-
-# 3. 启动服务(分别在不同终端运行)
./gradlew :wallet-webapi:bootRun
-./gradlew :wallet-task:bootRun
-./gradlew :wallet-hsm:bootRun
```
-## 配置说明
-
-所有敏感配置均通过环境变量注入,绝不硬编码在代码中。完整列表见 [`.env.example`](.env.example)。
-
-| 变量 | 服务 | 说明 |
-|:-----|:-----|:-----|
-| `DB_URL` | webapi, task | MySQL JDBC 连接地址 |
-| `DB_USERNAME` / `DB_PASSWORD` | webapi, task | 数据库用户名和密码 |
-| `RABBITMQ_HOST` / `RABBITMQ_PASSWORD` | task | RabbitMQ 连接信息 |
-| `KEYSTORE_DIR` / `KEYSTORE_PASSWORD` | hsm | 密钥库存储路径与密码 |
-| `XXL_JOB_ADMIN_ADDRESSES` | task | xxl-job 调度中心地址 |
-| `WALLET_CRYPTO_PUSH_KEY` | webapi | 充值推送通知 AES 加密密钥 |
-
-## 接口文档
-
-### 钱包接口 `/wallet/v1`
-
-| 方法 | 路径 | 说明 |
-|:----:|:-----|:-----|
-| POST | `/get_address` | 批量生成区块链地址 |
-| POST | `/send` | 提现(可指定 from 地址,不指定则自动从热钱包转出) |
-| POST | `/create_hot_address` | 创建热钱包 / Gas 钱包地址 |
-| POST | `/export_wallet` | 导出私钥或助记词 |
-| POST | `/import_wallet` | 导入私钥或助记词 |
-| GET | `/get_hot_address` | 查询热钱包地址 |
-| GET | `/check_address` | 验证地址私钥是否存在 |
-| GET | `/get_transaction` | 查询充值/提现/归集记录 |
-| GET | `/get_new_deposit` | 获取新充值记录(拉取后自动标记已读) |
-| GET | `/check_tx_status` | 查询链上交易状态 |
-
-### 区块链接口 `/block_chain/v1`
-
-| 方法 | 路径 | 说明 |
-|:----:|:-----|:-----|
-| GET | `/get_transaction` | 链上查询交易详情 |
-| GET | `/get_address_balance` | 链上查询地址余额 |
-| GET | `/get_recommend_fee` | 获取推荐手续费(低速/中速/快速) |
-| GET | `/calculation_fee` | 计算交易手续费 |
-| GET | `/get_support_token` | 获取支持的币种列表 |
-
-### 管理后台接口 `/admin`
-
-| 方法 | 路径 | 说明 |
-|:----:|:-----|:-----|
-| POST | `/login` | 管理员登录 |
-| GET | `/get_dashboard` | 获取仪表盘概览数据 |
-| GET | `/get_addr_list` | 获取地址列表 |
-| GET | `/get_token_list` | 获取代币列表 |
-| POST | `/edit_token` | 编辑代币配置 |
-| POST | `/edit_config` | 编辑系统配置 |
-| POST | `/edit_white` | 编辑 IP 白名单 |
-
-> 完整的交互式接口文档请在启动服务后访问 Swagger UI。
-
-## 可靠性
-
-Java-Wallet 已在生产环境中长期稳定运行,安全管理过数亿美元的交易量。系统具备高可靠性、可扩展性和实用性,值得信赖。
-
-## 联系我们
-
-如需技术支持、商业合作或部署咨询,请通过 Telegram 联系:
-
-**[@GalaxySciTech](https://t.me/GalaxySciTech)**
-
-## 免责声明
-
-使用本源代码进行的任何商业活动,由此产生的损失(无论是对自己还是对他人)均由使用者自行承担,作者不对此承担任何责任。
-
-## 许可证
-
-本项目按原样提供,详见仓库中的许可证文件。
+## 接口
+- 钱包接口:`/wallet/v1`
+- 链接口:`/block_chain/v1`
+- 管理接口:`/admin`
+- Swagger:`/swagger-ui/index.html`
+
+## 运行配置
+当前已支持通过 `sys_config` 配置动态调度键:
+- `SCHEDULER_DEPOSIT_SCAN_ENABLED`
+- `SCHEDULER_DEPOSIT_SCAN_MS`
+- `SCHEDULER_CHAIN_SYNC_ENABLED`
+- `SCHEDULER_CHAIN_SYNC_MS`
+- `SCHEDULER_SWEEP_ENABLED`
+- `SCHEDULER_SWEEP_MS`
+- `SCHEDULER_FEE_SUPPLY_ENABLED`
+- `SCHEDULER_FEE_SUPPLY_MS`
+
+## 安全提示
+- 生产环境务必修改默认密码。
+- 禁止在日志输出私钥、助记词、keystore 密码。
+- 管理接口返回敏感字段必须脱敏。
+
+## 数据库更新
+- 新增审计表:`wallet_admin_audit_log`(后台配置变更历史)。
diff --git a/build.gradle b/build.gradle
index 5904868..16493a1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -63,11 +63,9 @@ subprojects {
implementation 'org.web3j:core:4.10.3'
implementation 'wf.bitcoin:bitcoin-rpc-client:1.2.4'
- implementation "org.springframework.boot:spring-boot-starter-amqp:$springBootVersion"
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'
implementation 'com.github.sealedtx:bitcoin-cash-converter:1.0'
- implementation 'com.xuxueli:xxl-job-core:2.4.0'
- implementation 'com.github.GalaxySciTech:tokencore:1.3.0'
+ implementation 'com.github.galaxyscitech:tokencore:2.0.0'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'
diff --git a/db/wallet_db.sql b/db/wallet_db.sql
index 434478c..67e027d 100644
--- a/db/wallet_db.sql
+++ b/db/wallet_db.sql
@@ -269,3 +269,116 @@ INSERT INTO `withdraw` VALUES (1, 'dsadsa', 11.000000000000000000, 'cadsa', 'dsa
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
+
+-- ----------------------------
+-- Table structure for wallet_admin_audit_log
+-- ----------------------------
+DROP TABLE IF EXISTS `wallet_admin_audit_log`;
+CREATE TABLE `wallet_admin_audit_log` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `operator` varchar(128) DEFAULT NULL,
+ `action` varchar(128) DEFAULT NULL,
+ `target_key` varchar(255) DEFAULT NULL,
+ `after_value` varchar(1024) DEFAULT NULL,
+ `request_ip` varchar(128) DEFAULT NULL,
+ `user_agent` varchar(512) DEFAULT NULL,
+ `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+-- ----------------------------
+-- Table structure for wallet_rpc_config
+-- ----------------------------
+DROP TABLE IF EXISTS `wallet_rpc_config`;
+CREATE TABLE `wallet_rpc_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `chain` varchar(64) NOT NULL,
+ `rpc_url` varchar(512) DEFAULT NULL,
+ `rpc_username` varchar(255) DEFAULT NULL,
+ `rpc_password` varchar(255) DEFAULT NULL,
+ `rpc_api_key` varchar(255) DEFAULT NULL,
+ `rpc_timeout_ms` int(11) DEFAULT NULL,
+ `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_wallet_rpc_chain` (`chain`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+-- ----------------------------
+-- Table structure for wallet_scheduler_config
+-- ----------------------------
+DROP TABLE IF EXISTS `wallet_scheduler_config`;
+CREATE TABLE `wallet_scheduler_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `chain` varchar(64) NOT NULL,
+ `deposit_scan_enabled` tinyint(1) DEFAULT 1,
+ `deposit_scan_interval_ms` bigint(20) DEFAULT 15000,
+ `sweep_enabled` tinyint(1) DEFAULT 0,
+ `sweep_interval_ms` bigint(20) DEFAULT 30000,
+ `fee_supply_enabled` tinyint(1) DEFAULT 0,
+ `fee_supply_interval_ms` bigint(20) DEFAULT 30000,
+ `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_wallet_scheduler_chain` (`chain`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+-- ----------------------------
+-- Table structure for wallet_chain_config
+-- ----------------------------
+DROP TABLE IF EXISTS `wallet_chain_config`;
+CREATE TABLE `wallet_chain_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `chain` varchar(64) NOT NULL,
+ `enabled` tinyint(1) DEFAULT 1,
+ `deposit_scan_enabled` tinyint(1) DEFAULT 1,
+ `withdraw_enabled` tinyint(1) DEFAULT 0,
+ `confirmations` int(11) DEFAULT 12,
+ `start_block` bigint(20) DEFAULT 0,
+ `current_block` bigint(20) DEFAULT 0,
+ `scan_batch_size` int(11) DEFAULT 100,
+ `scan_interval_ms` bigint(20) DEFAULT 15000,
+ `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_wallet_chain_chain` (`chain`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+DROP TABLE IF EXISTS `wallet_sweep_config`;
+CREATE TABLE `wallet_sweep_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `chain` varchar(64) NOT NULL,
+ `sweep_enabled` tinyint(1) DEFAULT 0,
+ `sweep_to_address` varchar(255) DEFAULT NULL,
+ `min_sweep_amount` varchar(64) DEFAULT '0',
+ `reserve_amount` varchar(64) DEFAULT '0',
+ PRIMARY KEY (`id`), UNIQUE KEY `uk_wallet_sweep_chain` (`chain`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+DROP TABLE IF EXISTS `wallet_withdraw_config`;
+CREATE TABLE `wallet_withdraw_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `chain` varchar(64) NOT NULL,
+ `withdraw_enabled` tinyint(1) DEFAULT 0,
+ `manual_review_enabled` tinyint(1) DEFAULT 1,
+ `max_auto_withdraw_amount` varchar(64) DEFAULT '0',
+ `daily_withdraw_limit` varchar(64) DEFAULT '0',
+ PRIMARY KEY (`id`), UNIQUE KEY `uk_wallet_withdraw_chain` (`chain`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+DROP TABLE IF EXISTS `wallet_fee_supply_config`;
+CREATE TABLE `wallet_fee_supply_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `chain` varchar(64) NOT NULL,
+ `fee_supply_enabled` tinyint(1) DEFAULT 0,
+ `fee_supply_from_address` varchar(255) DEFAULT NULL,
+ `min_gas_balance` varchar(64) DEFAULT '0',
+ `target_gas_balance` varchar(64) DEFAULT '0',
+ PRIMARY KEY (`id`), UNIQUE KEY `uk_wallet_fee_supply_chain` (`chain`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+DROP TABLE IF EXISTS `wallet_security_config`;
+CREATE TABLE `wallet_security_config` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `allow_export_private_key` tinyint(1) DEFAULT 0,
+ `export_private_key_require2fa` tinyint(1) DEFAULT 1,
+ `allow_update_rpc_by_admin` tinyint(1) DEFAULT 1,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
diff --git a/db/xxl_job.sql b/db/xxl_job.sql
deleted file mode 100644
index 6d40b09..0000000
--- a/db/xxl_job.sql
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- Navicat Premium Data Transfer
-
- Source Server : gamepay节点
- Source Server Type : MySQL
- Source Server Version : 50733
- Source Host : localhost:3306
- Source Schema : xxl_job
-
- Target Server Type : MySQL
- Target Server Version : 50733
- File Encoding : 65001
-
- Date: 19/04/2021 10:43:04
-*/
-create database `xxl_job` default character set utf8mb4 collate utf8mb4_general_ci;
-use xxl_job;
-
-SET NAMES utf8mb4;
-SET FOREIGN_KEY_CHECKS = 0;
-
--- ----------------------------
--- Table structure for xxl_job_group
--- ----------------------------
-DROP TABLE IF EXISTS `xxl_job_group`;
-CREATE TABLE `xxl_job_group` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `app_name` varchar(64) NOT NULL COMMENT '执行器AppName',
- `title` varchar(12) NOT NULL COMMENT '执行器名称',
- `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入',
- `address_list` varchar(512) DEFAULT NULL COMMENT '执行器地址列表,多地址逗号分隔',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Records of xxl_job_group
--- ----------------------------
-BEGIN;
-INSERT INTO `xxl_job_group` VALUES (2, 'cl-task', '节点执行器', 0, NULL);
-COMMIT;
-
--- ----------------------------
--- Table structure for xxl_job_info
--- ----------------------------
-DROP TABLE IF EXISTS `xxl_job_info`;
-CREATE TABLE `xxl_job_info` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
- `job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
- `job_desc` varchar(255) NOT NULL,
- `add_time` datetime DEFAULT NULL,
- `update_time` datetime DEFAULT NULL,
- `author` varchar(64) DEFAULT NULL COMMENT '作者',
- `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
- `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略',
- `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
- `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
- `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
- `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
- `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
- `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
- `glue_source` mediumtext COMMENT 'GLUE源代码',
- `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
- `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新时间',
- `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任务ID,多个逗号分隔',
- `trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '调度状态:0-停止,1-运行',
- `trigger_last_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '上次调度时间',
- `trigger_next_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '下次调度时间',
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=105 DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Records of xxl_job_info
--- ----------------------------
-BEGIN;
-INSERT INTO `xxl_job_info` VALUES (1, 2, '0 0/5 * * * ?', '比特币扫块', '2020-09-06 02:33:36', '2021-04-19 10:42:50', 'admin', '', 'FIRST', 'synBTC', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:33:36', '', 1, 0, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (2, 2, '0 0/5 * * * ?', '比特币归集', '2020-09-06 02:51:29', '2021-04-19 10:42:47', 'admin', '', 'FIRST', 'collectBTC', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:51:29', '', 1, 0, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (3, 2, '0 0/5 * * * ?', 'OMNI代币扫块', '2020-09-06 02:34:14', '2021-04-19 10:42:42', 'admin', '', 'FIRST', 'synOMNI', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:34:14', '', 1, 0, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (4, 2, '0 0/5 * * * ?', 'OMNI代币归集', '2020-09-06 02:50:41', '2021-04-19 10:42:38', 'admin', '', 'FIRST', 'collectOMNI', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:50:41', '', 1, 0, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (5, 2, '0 0/5 * * * ?', '以太坊扫块', '2020-06-29 02:03:25', '2020-09-17 17:22:06', 'admin', '', 'FIRST', 'synETH', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-06-29 02:03:25', '', 1, 1618800000000, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (6, 2, '0 0/5 * * * ?', '以太坊归集', '2020-09-06 02:50:58', '2020-12-09 15:57:16', 'admin', '', 'FIRST', 'collectETH', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:50:58', '', 1, 1618800000000, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (7, 2, '0 0/5 * * * ?', '发送ERC20代币归集手续费', '2020-09-06 03:02:28', '2020-12-09 15:57:13', 'admin', '', 'FIRST', 'sendFeeETH', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 03:02:28', '', 1, 1618800000000, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (8, 2, '0 0/5 * * * ?', 'ERC20代币归集', '2020-09-06 02:51:12', '2020-12-09 15:57:10', 'admin', '', 'FIRST', 'collectERC', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:51:12', '', 1, 1618800000000, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (9, 2, '0 0/5 * * * ?', 'DASH扫块', '2020-09-06 02:34:57', '2020-12-09 15:56:49', 'admin', '', 'FIRST', 'synDASH', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:34:57', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (10, 2, '0 0/5 * * * ?', 'DASH归集', '2020-09-06 02:51:42', '2020-09-17 17:11:27', 'admin', '', 'FIRST', 'collectDASH', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:51:42', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (11, 2, '0 0/5 * * * ?', '莱特币扫块', '2020-09-06 02:38:54', '2020-12-09 15:56:52', 'admin', '', 'FIRST', 'synLTC', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:38:54', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (12, 2, '0 0/5 * * * ?', '莱特币归集', '2020-09-06 12:13:45', '2020-09-17 17:11:13', 'admin', '', 'FIRST', 'collectLTC', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 12:13:45', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (13, 2, '0 0/5 * * * ?', 'BSV扫块', '2020-09-06 02:39:42', '2020-12-09 15:56:43', 'admin', '', 'FIRST', 'synBSV', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:39:42', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (14, 2, '0 0/5 * * * ?', 'BSV归集', '2020-09-06 12:14:11', '2020-09-17 17:10:55', 'admin', '', 'FIRST', 'collectBSV', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 12:14:11', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (15, 2, '0 0/5 * * * ?', 'BCH扫块', '2020-09-06 02:35:45', '2020-12-09 15:56:40', 'admin', '', 'FIRST', 'synBCH', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:35:45', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (16, 2, '0 0/5 * * * ?', 'BCH归集', '2020-09-06 12:14:41', '2020-09-06 12:14:41', 'admin', '', 'FIRST', 'collectBCH', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 12:14:41', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (17, 2, '0 0/5 * * * ?', 'DOGE扫快', '2020-09-17 17:08:26', '2020-12-09 15:56:36', 'admin', '', 'FIRST', 'synDOGE', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-17 17:08:26', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (18, 2, '0 0/5 * * * ?', 'DOGE归集', '2020-09-17 17:08:45', '2020-09-17 17:08:45', 'admin', '', 'FIRST', 'collectDOGE', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-17 17:08:45', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (98, 2, '0 0/1 * * * ?', '同步远程币价【暂不开启】', '2020-09-06 04:34:25', '2020-09-17 17:10:28', 'admin', '', 'FIRST', '', '', 'SERIAL_EXECUTION', 0, 0, 'GLUE_PHP', '\n', '0000', '2020-09-06 04:37:27', '', 0, 0, 0);
-INSERT INTO `xxl_job_info` VALUES (99, 2, '0/5 * * * * ?', '充值同步', '2020-09-06 02:42:52', '2020-09-21 07:47:58', 'admin', '', 'FIRST', 'synDeposit', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-06 02:42:52', '', 1, 1618800215000, 1618800220000);
-INSERT INTO `xxl_job_info` VALUES (100, 2, '0 0/1 * * * ?', '导入地址同步', '2020-09-17 17:07:07', '2020-09-18 03:21:15', 'admin', '', 'FIRST', 'synImportAddress', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2020-09-17 17:07:07', '', 1, 1618800180000, 1618800240000);
-INSERT INTO `xxl_job_info` VALUES (101, 2, '0 0/5 * * * ?', 'TRX扫块', '2021-04-19 10:39:20', '2021-04-19 10:42:23', 'pie', '', 'FIRST', 'synTRX', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2021-04-19 10:39:20', '', 1, 0, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (102, 2, '0 0/5 * * * ?', 'TRX归集', '2021-04-19 10:39:29', '2021-04-19 10:42:18', 'pie', '', 'FIRST', 'collectTRX', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2021-04-19 10:39:29', '', 1, 0, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (103, 2, '0 0/5 * * * ?', 'TRX转手续费', '2021-04-19 10:39:40', '2021-04-19 10:42:13', 'pie', '', 'FIRST', 'sendFeeTRX', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2021-04-19 10:39:40', '', 1, 0, 1618800300000);
-INSERT INTO `xxl_job_info` VALUES (104, 2, '0 0/5 * * * ?', 'TRC20归集', '2021-04-19 10:39:58', '2021-04-19 10:42:09', 'pie', '', 'FIRST', 'collectTRC', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2021-04-19 10:39:58', '', 1, 0, 1618800300000);
-COMMIT;
-
--- ----------------------------
--- Table structure for xxl_job_lock
--- ----------------------------
-DROP TABLE IF EXISTS `xxl_job_lock`;
-CREATE TABLE `xxl_job_lock` (
- `lock_name` varchar(50) NOT NULL COMMENT '锁名称',
- PRIMARY KEY (`lock_name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Records of xxl_job_lock
--- ----------------------------
-BEGIN;
-INSERT INTO `xxl_job_lock` VALUES ('schedule_lock');
-COMMIT;
-
--- ----------------------------
--- Table structure for xxl_job_log
--- ----------------------------
-DROP TABLE IF EXISTS `xxl_job_log`;
-CREATE TABLE `xxl_job_log` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT,
- `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
- `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
- `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
- `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
- `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
- `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2',
- `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
- `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
- `trigger_code` int(11) NOT NULL COMMENT '调度-结果',
- `trigger_msg` text COMMENT '调度-日志',
- `handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
- `handle_code` int(11) NOT NULL COMMENT '执行-状态',
- `handle_msg` text COMMENT '执行-日志',
- `alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败',
- PRIMARY KEY (`id`),
- KEY `I_trigger_time` (`trigger_time`),
- KEY `I_handle_code` (`handle_code`)
-) ENGINE=InnoDB AUTO_INCREMENT=413 DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Records of xxl_job_log
--- ----------------------------
-BEGIN;
-INSERT INTO `xxl_job_log` VALUES (317, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:36:20', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (318, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:36:25', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (319, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:36:30', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (320, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:36:35', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (321, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:36:40', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (322, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:36:45', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (323, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:36:50', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (324, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:37:15', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (325, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:37:20', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (326, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:37:25', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (327, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:37:30', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (328, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:37:35', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (329, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:37:40', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (330, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:37:45', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (331, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:37:50', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (332, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:37:55', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (333, 2, 100, NULL, 'synImportAddress', '', NULL, 0, '2021-04-19 10:38:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (334, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (335, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:05', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (336, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:10', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (337, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:15', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (338, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:20', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (339, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:25', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (340, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:30', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (341, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:35', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (342, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:40', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (343, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:45', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (344, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:50', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (345, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:38:55', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (346, 2, 100, NULL, 'synImportAddress', '', NULL, 0, '2021-04-19 10:39:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (347, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (348, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:05', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (349, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:10', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (350, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:15', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (351, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:20', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (352, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:25', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (353, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:30', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (354, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:35', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (355, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:40', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (356, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:45', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (357, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:50', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (358, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:39:55', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (359, 2, 7, NULL, 'sendFeeETH', '', NULL, 0, '2021-04-19 10:40:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (360, 2, 6, NULL, 'collectETH', '', NULL, 0, '2021-04-19 10:40:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (361, 2, 5, NULL, 'synETH', '', NULL, 0, '2021-04-19 10:40:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (362, 2, 100, NULL, 'synImportAddress', '', NULL, 0, '2021-04-19 10:40:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (363, 2, 8, NULL, 'collectERC', '', NULL, 0, '2021-04-19 10:40:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (364, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (365, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:05', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (366, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:10', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (367, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:15', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (368, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:20', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (369, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:25', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (370, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:30', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (371, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:35', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (372, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:40', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (373, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:45', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (374, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:50', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (375, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:40:55', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (376, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (377, 2, 100, NULL, 'synImportAddress', '', NULL, 0, '2021-04-19 10:41:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (378, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:05', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (379, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:10', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (380, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:15', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (381, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:20', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (382, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:25', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (383, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:30', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (384, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:35', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (385, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:40', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (386, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:45', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (387, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:50', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (388, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:41:55', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (389, 2, 100, NULL, 'synImportAddress', '', NULL, 0, '2021-04-19 10:42:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (390, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (391, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:05', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (392, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:10', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (393, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:15', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (394, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:20', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (395, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:25', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (396, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:30', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (397, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:35', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (398, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:40', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (399, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:45', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (400, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:50', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (401, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:42:55', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (402, 2, 100, NULL, 'synImportAddress', '', NULL, 0, '2021-04-19 10:43:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (403, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:43:00', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (404, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:43:05', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-INSERT INTO `xxl_job_log` VALUES (405, 2, 99, NULL, 'synDeposit', '', NULL, 0, '2021-04-19 10:43:10', 500, '任务触发类型:Cron触发
调度机器:103.100.143.16
执行器-注册方式:自动注册
执行器-地址列表:null
路由策略:第一个
阻塞处理策略:单机串行
任务超时时间:0
失败重试次数:0
>>>>>>>>>>>触发调度<<<<<<<<<<<
调度失败:执行器地址为空
', NULL, 0, NULL, 1);
-COMMIT;
-
--- ----------------------------
--- Table structure for xxl_job_log_report
--- ----------------------------
-DROP TABLE IF EXISTS `xxl_job_log_report`;
-CREATE TABLE `xxl_job_log_report` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `trigger_day` datetime DEFAULT NULL COMMENT '调度-时间',
- `running_count` int(11) NOT NULL DEFAULT '0' COMMENT '运行中-日志数量',
- `suc_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量',
- `fail_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
- PRIMARY KEY (`id`),
- UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Records of xxl_job_log_report
--- ----------------------------
-BEGIN;
-INSERT INTO `xxl_job_log_report` VALUES (1, '2020-09-20 12:00:00', 0, 4022, 485);
-INSERT INTO `xxl_job_log_report` VALUES (2, '2020-09-19 12:00:00', 0, 0, 0);
-INSERT INTO `xxl_job_log_report` VALUES (3, '2020-09-18 12:00:00', 0, 0, 0);
-INSERT INTO `xxl_job_log_report` VALUES (4, '2020-09-21 12:00:00', 0, 21887, 577);
-INSERT INTO `xxl_job_log_report` VALUES (5, '2020-09-22 12:00:00', 0, 21887, 577);
-INSERT INTO `xxl_job_log_report` VALUES (6, '2020-09-23 12:00:00', 0, 21887, 577);
-INSERT INTO `xxl_job_log_report` VALUES (7, '2020-09-24 12:00:00', 0, 17396, 5068);
-INSERT INTO `xxl_job_log_report` VALUES (8, '2020-09-25 12:00:00', 1, 940, 3612);
-INSERT INTO `xxl_job_log_report` VALUES (9, '2020-12-09 00:00:00', 0, 243, 55);
-INSERT INTO `xxl_job_log_report` VALUES (10, '2020-12-08 00:00:00', 0, 0, 0);
-INSERT INTO `xxl_job_log_report` VALUES (11, '2020-12-07 00:00:00', 0, 0, 0);
-INSERT INTO `xxl_job_log_report` VALUES (12, '2021-04-19 00:00:00', 0, 0, 88);
-INSERT INTO `xxl_job_log_report` VALUES (13, '2021-04-18 00:00:00', 0, 0, 0);
-INSERT INTO `xxl_job_log_report` VALUES (14, '2021-04-17 00:00:00', 0, 0, 0);
-COMMIT;
-
--- ----------------------------
--- Table structure for xxl_job_logglue
--- ----------------------------
-DROP TABLE IF EXISTS `xxl_job_logglue`;
-CREATE TABLE `xxl_job_logglue` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
- `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
- `glue_source` mediumtext COMMENT 'GLUE源代码',
- `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注',
- `add_time` datetime DEFAULT NULL,
- `update_time` datetime DEFAULT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Records of xxl_job_logglue
--- ----------------------------
-BEGIN;
-INSERT INTO `xxl_job_logglue` VALUES (2, 16, 'GLUE_PHP', '\n', '0000', '2020-09-06 04:37:27', '2020-09-06 04:37:27');
-COMMIT;
-
--- ----------------------------
--- Table structure for xxl_job_registry
--- ----------------------------
-DROP TABLE IF EXISTS `xxl_job_registry`;
-CREATE TABLE `xxl_job_registry` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `registry_group` varchar(50) NOT NULL,
- `registry_key` varchar(255) NOT NULL,
- `registry_value` varchar(255) NOT NULL,
- `update_time` datetime DEFAULT NULL,
- PRIMARY KEY (`id`),
- KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`)
-) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for xxl_job_user
--- ----------------------------
-DROP TABLE IF EXISTS `xxl_job_user`;
-CREATE TABLE `xxl_job_user` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `username` varchar(50) NOT NULL COMMENT '账号',
- `password` varchar(50) NOT NULL COMMENT '密码',
- `role` tinyint(4) NOT NULL COMMENT '角色:0-普通用户、1-管理员',
- `permission` varchar(255) DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割',
- PRIMARY KEY (`id`),
- UNIQUE KEY `i_username` (`username`) USING BTREE
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Records of xxl_job_user
--- ----------------------------
-BEGIN;
-INSERT INTO `xxl_job_user` VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
-COMMIT;
-
-SET FOREIGN_KEY_CHECKS = 1;
diff --git a/docker-compose.yml b/docker-compose.yml
index 43b500c..239ac14 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -16,66 +16,21 @@ services:
timeout: 5s
retries: 5
- rabbitmq:
- image: rabbitmq:3-management-alpine
- environment:
- RABBITMQ_DEFAULT_USER: ${RABBITMQ_USERNAME:-guest}
- RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD:-guest}
- ports:
- - "5672:5672"
- - "15672:15672"
- healthcheck:
- test: ["CMD", "rabbitmq-diagnostics", "check_port_connectivity"]
- interval: 10s
- timeout: 5s
- retries: 5
-
- wallet-webapi:
+ app:
build:
context: .
dockerfile: wallet-webapi/Dockerfile
ports:
- - "10001:10001"
+ - "8080:8080"
environment:
+ SERVER_PORT: 8080
DB_URL: jdbc:mysql://mysql:3306/wallet_db?allowMultiQueries=true&useSSL=false&characterEncoding=UTF-8&autoReconnect=true
DB_USERNAME: root
DB_PASSWORD: ${DB_PASSWORD:-devpassword}
+ WALLET_KEYSTORE_PASSWORD: ${WALLET_KEYSTORE_PASSWORD:-change-me}
depends_on:
mysql:
condition: service_healthy
- wallet-task:
- build:
- context: .
- dockerfile: wallet-task/Dockerfile
- ports:
- - "10033:10033"
- environment:
- DB_URL: jdbc:mysql://mysql:3306/wallet_db?allowMultiQueries=true&useSSL=false&characterEncoding=UTF-8&autoReconnect=true
- DB_USERNAME: root
- DB_PASSWORD: ${DB_PASSWORD:-devpassword}
- RABBITMQ_HOST: rabbitmq
- RABBITMQ_PORT: 5672
- RABBITMQ_USERNAME: ${RABBITMQ_USERNAME:-guest}
- RABBITMQ_PASSWORD: ${RABBITMQ_PASSWORD:-guest}
- depends_on:
- mysql:
- condition: service_healthy
- rabbitmq:
- condition: service_healthy
-
- wallet-hsm:
- build:
- context: .
- dockerfile: wallet-hsm/Dockerfile
- ports:
- - "10888:10888"
- environment:
- KEYSTORE_DIR: /data/keystores
- KEYSTORE_PASSWORD: ${KEYSTORE_PASSWORD:-}
- volumes:
- - keystore_data:/data/keystores
-
volumes:
mysql_data:
- keystore_data:
diff --git a/settings.gradle b/settings.gradle
index ddbdfce..21644bb 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -4,6 +4,5 @@ include(
"wallet-common",
"wallet-entity",
"wallet-webapi",
- "wallet-hsm",
- "wallet-task"
+ "wallet-hsm"
)
diff --git a/wallet-common/build.gradle b/wallet-common/build.gradle
index 8320e10..7d668ea 100644
--- a/wallet-common/build.gradle
+++ b/wallet-common/build.gradle
@@ -5,6 +5,7 @@ jar.enabled = true
dependencies {
api project(":wallet-entity")
+ implementation project(":wallet-hsm")
implementation 'commons-codec:commons-codec:1.16.0'
implementation 'org.bitcoinj:bitcoinj-core:0.14.7'
}
diff --git a/wallet-common/src/main/kotlin/com/wallet/biz/dict/SysConfigKey.kt b/wallet-common/src/main/kotlin/com/wallet/biz/dict/SysConfigKey.kt
index 7a1dbac..ac8af0b 100644
--- a/wallet-common/src/main/kotlin/com/wallet/biz/dict/SysConfigKey.kt
+++ b/wallet-common/src/main/kotlin/com/wallet/biz/dict/SysConfigKey.kt
@@ -1,7 +1,24 @@
package com.wallet.biz.dict
-/**
- * Created by pie on 2020/7/24 18: 50.
+ DEPOSIT_NOTIFY_MODE("post","充值同步模式,支持 post","充值通知"),
+ SCHEDULER_DEPOSIT_SCAN_ENABLED("true", "充值扫描任务开关", "任务调度"),
+ SCHEDULER_DEPOSIT_SCAN_MS("15000", "充值扫描任务间隔毫秒", "任务调度"),
+ SCHEDULER_CHAIN_SYNC_ENABLED("true", "区块同步任务开关", "任务调度"),
+ SCHEDULER_CHAIN_SYNC_MS("20000", "区块同步任务间隔毫秒", "任务调度"),
+ SCHEDULER_SWEEP_ENABLED("false", "归集任务开关", "任务调度"),
+ SCHEDULER_SWEEP_MS("30000", "归集任务间隔毫秒", "任务调度"),
+ SCHEDULER_FEE_SUPPLY_ENABLED("false", "手续费补充任务开关", "任务调度"),
+ SCHEDULER_FEE_SUPPLY_MS("30000", "手续费补充任务间隔毫秒", "任务调度"),
+ SWEEP_ENABLED("false", "归集开关", "归集配置"),
+ SWEEP_TO_ADDRESS("", "归集地址", "归集配置"),
+ SWEEP_MIN_AMOUNT("0", "最小归集金额", "归集配置"),
+ WITHDRAW_ENABLED("false", "提现开关", "提现配置"),
+ WITHDRAW_MAX_AUTO_AMOUNT("0", "自动提现上限", "提现配置"),
+ WITHDRAW_DAILY_LIMIT("0", "每日提现限额", "提现配置"),
+ FEE_SUPPLY_ENABLED("false", "手续费补充开关", "手续费配置"),
+ FEE_SUPPLY_FROM_ADDRESS("", "手续费补充地址", "手续费配置"),
+ FEE_SUPPLY_MIN_GAS_BALANCE("0", "最小gas余额", "手续费配置");
+
*/
enum class SysConfigKey(var defaultValue:String,var description:String,var group:String) {
diff --git a/wallet-common/src/main/kotlin/com/wallet/biz/mq/PushComponent.kt b/wallet-common/src/main/kotlin/com/wallet/biz/mq/PushComponent.kt
index 69bf0eb..90f925e 100644
--- a/wallet-common/src/main/kotlin/com/wallet/biz/mq/PushComponent.kt
+++ b/wallet-common/src/main/kotlin/com/wallet/biz/mq/PushComponent.kt
@@ -1,13 +1,11 @@
package com.wallet.biz.mq
import com.fasterxml.jackson.databind.JsonNode
-import com.wallet.biz.dict.MqKey
import com.wallet.biz.dict.SysConfigKey
import com.wallet.biz.domain.dict.ErrorCode
import com.wallet.biz.domain.exception.BizException
import com.wallet.biz.log.impl.LogService
import com.wallet.biz.utils.Crypto
-import org.springframework.amqp.core.AmqpTemplate
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Component
@@ -25,7 +23,7 @@ class PushComponent : LogService() {
}
fun sendMsgToMq(msg: String) {
- amqpTemplate.convertAndSend(MqKey.TOPIC_EXCHANGE, MqKey.DEPOSIT_KEY, msg)
+ sendMsgToService(msg)
}
fun sendMsgToService(msg: String) {
@@ -39,9 +37,6 @@ class PushComponent : LogService() {
}
}
- @Autowired
- lateinit var amqpTemplate: AmqpTemplate
-
@Autowired
lateinit var restTemplate: RestTemplate
diff --git a/wallet-common/src/main/kotlin/com/wallet/biz/request/HsmRequest.kt b/wallet-common/src/main/kotlin/com/wallet/biz/request/HsmRequest.kt
index c46c582..c024254 100644
--- a/wallet-common/src/main/kotlin/com/wallet/biz/request/HsmRequest.kt
+++ b/wallet-common/src/main/kotlin/com/wallet/biz/request/HsmRequest.kt
@@ -1,163 +1,29 @@
package com.wallet.biz.request
-import com.wallet.biz.dict.HsmReuqestType
-import com.wallet.biz.dict.SysConfigKey
-import com.wallet.biz.domain.dict.ErrorCode
-import com.wallet.biz.domain.dict.TokenResponse
-import com.wallet.biz.domain.exception.BizException
import com.wallet.biz.domain.po.*
import com.wallet.biz.domain.vo.AddressVo
-import com.fasterxml.jackson.databind.ObjectMapper
import org.consenlabs.tokencore.wallet.transaction.BitcoinTransaction
import org.consenlabs.tokencore.wallet.transaction.TxSignResult
-import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.core.ParameterizedTypeReference
-import org.springframework.http.HttpEntity
-import org.springframework.http.HttpHeaders
-import org.springframework.http.HttpMethod
import org.springframework.stereotype.Component
-import org.springframework.web.client.RestTemplate
import java.math.BigDecimal
-import java.util.*
-/**
- * Created by pie on 2019-04-13 16: 01.
- */
-@Component
-class HsmRequest {
-
- private val logger = LoggerFactory.getLogger(HsmRequest::class.java)
-
- private fun getHsmUrl(): String {
- return cacheService.getSysConfig(SysConfigKey.HSM_URL)
- }
-
- fun getAllWallets():List{
- return exchange(
- "${getHsmUrl()}${HsmReuqestType.GET_ALL_WALLETS}",
- HttpMethod.GET,
- null,
- List::class.java
- )
- .map { obj.readValue(obj.writeValueAsString(it), AddressVo::class.java) }
- }
-
- fun deriveWallets(chainTypes: List): List {
- return exchange(
- "${getHsmUrl()}${HsmReuqestType.DERIVE_WALLETS}",
- HttpMethod.POST,
- chainTypes,
- List::class.java
- )
- .map { obj.readValue(obj.writeValueAsString(it), AddressVo::class.java) }
+ return hsmXService.getAllWallets()
}
- fun signUsdtTransaction(
- utxos: ArrayList,
- amount: BigDecimal,
- fee: BigDecimal,
- toAddress: String,
- walletId: String
- ): TxSignResult {
- val signUsdtPo = SignUsdtPo()
- signUsdtPo.utxos = utxos
- signUsdtPo.amount = amount
- signUsdtPo.fee = fee
- signUsdtPo.toAddress = toAddress
- signUsdtPo.walletId = walletId
- return exchange(
- "${getHsmUrl()}${HsmReuqestType.SIGN_USDT_TRANSACTION}",
- HttpMethod.POST,
- signUsdtPo,
- TxSignResult::class.java
- )
- }
-
- fun signBtcTransaction(
- amount: BigDecimal,
- fee: BigDecimal,
- toAddress: String,
- utxos: ArrayList,
- walletId: String
- ): TxSignResult {
- val signBitcoinPo = SignBitcoinPo()
- signBitcoinPo.utxos = utxos
- signBitcoinPo.amount = amount
- signBitcoinPo.fee = fee
- signBitcoinPo.toAddress = toAddress
- signBitcoinPo.walletId = walletId
- return exchange(
- "${getHsmUrl()}${HsmReuqestType.SIGN_BTC_TRANSACTION}",
- HttpMethod.POST,
- signBitcoinPo,
- TxSignResult::class.java
- )
- }
-
- fun signEthtransaction(
- nonce: Int,
- amount: BigDecimal,
- gasPrice: BigDecimal,
- gasLimit: Long,
- toAddress: String,
- walletId: String,
- data: String?
- ): TxSignResult {
- val signEthereumPo = SignEthereumPo()
- signEthereumPo.walletId = walletId
- signEthereumPo.amount = amount
- signEthereumPo.toAddress = toAddress
- signEthereumPo.nonce = nonce
- signEthereumPo.gasPrice = gasPrice
- signEthereumPo.data = data
- signEthereumPo.gasLimit = gasLimit
- return exchange(
- "${getHsmUrl()}${HsmReuqestType.SIGN_ETH_TRANSACTION}",
- HttpMethod.POST,
- signEthereumPo,
- TxSignResult::class.java
- )
- }
-
- fun signUsdtCollectTransaction(
- toAddress: String,
- amount: BigDecimal,
- fee: BigDecimal,
- utxos: ArrayList,
- feeProviderUtxos: ArrayList,
- walletId: String,
- feeProviderWalletId: String
- ): TxSignResult {
- val signUsdtCollectPo = SignUsdtCollectPo()
- signUsdtCollectPo.feeProviderUtxos = feeProviderUtxos
- signUsdtCollectPo.fee = fee
- signUsdtCollectPo.feeProviderWalletId = feeProviderWalletId
- signUsdtCollectPo.walletId = walletId
- signUsdtCollectPo.toAddress = toAddress
- signUsdtCollectPo.amount = amount
- signUsdtCollectPo.utxos = utxos
- return exchange(
- "${getHsmUrl()}${HsmReuqestType.SIGN_USDT_COLLECT_TRANSACTION}",
- HttpMethod.POST,
- signUsdtCollectPo,
- TxSignResult::class.java
- )
- }
-
-
- fun checkWallet(walletCode: String): String {
-
- return exchange(
- "${getHsmUrl()}${HsmReuqestType.CHECK_WALLET}/$walletCode",
- HttpMethod.GET,
- null,
- String::class.java
- )
- }
-
- fun exportWallet(walletCode: String, type: Int): String {
- return exchange(
+ return hsmXService.deriveWallets(chainTypes)
+ return hsmXService.signUsdtTransaction(signUsdtPo)
+ fun signBtcTransaction(amount: BigDecimal, fee: BigDecimal, toAddress: String, utxos: ArrayList, walletId: String): TxSignResult {
+ return hsmXService.signBitcoinTransaction(signBitcoinPo)
+ fun signEthtransaction(nonce: Int, amount: BigDecimal, gasPrice: BigDecimal, gasLimit: Long, toAddress: String, walletId: String, data: String?): TxSignResult {
+ return hsmXService.signEthereumTransaction(signEthereumPo)
+ fun signUsdtCollectTransaction(toAddress: String, amount: BigDecimal, fee: BigDecimal, utxos: ArrayList, feeProviderUtxos: ArrayList, walletId: String, feeProviderWalletId: String): TxSignResult {
+ return hsmXService.signUsdtCollectTransaction(signUsdtCollectPo)
+ fun checkWallet(walletCode: String): String = hsmXService.getAllWallets().firstOrNull { it.walletCode == walletCode }?.address ?: ""
+ fun exportWallet(walletCode: String, type: Int): String = hsmXService.exportWallet(walletCode, type)
+ fun removeUselessWallet(map: Map) { hsmXService.removeUselessWallet(map) }
+ fun importWallet(importWalletPo: ImportWalletPo): AddressVo = hsmXService.importWallet(importWalletPo)
+ lateinit var hsmXService: com.wallet.hsm.xservice.HsmXService
"${getHsmUrl()}${HsmReuqestType.EXPORT_WALLET}/$walletCode/$type",
HttpMethod.GET,
null,
diff --git a/wallet-entity/src/main/java/com/wallet/entity/domain/WalletAdminAuditLog.java b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletAdminAuditLog.java
new file mode 100644
index 0000000..7a29d77
--- /dev/null
+++ b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletAdminAuditLog.java
@@ -0,0 +1,37 @@
+package com.wallet.entity.domain;
+
+import jakarta.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "wallet_admin_audit_log")
+public class WalletAdminAuditLog {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ private String operator;
+ private String action;
+ private String targetKey;
+ @Column(length = 1024)
+ private String afterValue;
+ private String requestIp;
+ private String userAgent;
+ private Date createTime = new Date();
+
+ public Long getId() { return id; }
+ public void setId(Long id) { this.id = id; }
+ public String getOperator() { return operator; }
+ public void setOperator(String operator) { this.operator = operator; }
+ public String getAction() { return action; }
+ public void setAction(String action) { this.action = action; }
+ public String getTargetKey() { return targetKey; }
+ public void setTargetKey(String targetKey) { this.targetKey = targetKey; }
+ public String getAfterValue() { return afterValue; }
+ public void setAfterValue(String afterValue) { this.afterValue = afterValue; }
+ public String getRequestIp() { return requestIp; }
+ public void setRequestIp(String requestIp) { this.requestIp = requestIp; }
+ public String getUserAgent() { return userAgent; }
+ public void setUserAgent(String userAgent) { this.userAgent = userAgent; }
+ public Date getCreateTime() { return createTime; }
+ public void setCreateTime(Date createTime) { this.createTime = createTime; }
+}
diff --git a/wallet-entity/src/main/java/com/wallet/entity/domain/WalletChainConfig.java b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletChainConfig.java
new file mode 100644
index 0000000..7c0f287
--- /dev/null
+++ b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletChainConfig.java
@@ -0,0 +1,46 @@
+package com.wallet.entity.domain;
+
+import jakarta.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "wallet_chain_config")
+public class WalletChainConfig {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ @Column(unique = true)
+ private String chain;
+ private Boolean enabled;
+ private Boolean depositScanEnabled;
+ private Boolean withdrawEnabled;
+ private Integer confirmations;
+ private Long startBlock;
+ private Long currentBlock;
+ private Integer scanBatchSize;
+ private Long scanIntervalMs;
+ private Date updatedAt = new Date();
+
+ public Long getId() { return id; }
+ public void setId(Long id) { this.id = id; }
+ public String getChain() { return chain; }
+ public void setChain(String chain) { this.chain = chain; }
+ public Boolean getEnabled() { return enabled; }
+ public void setEnabled(Boolean enabled) { this.enabled = enabled; }
+ public Boolean getDepositScanEnabled() { return depositScanEnabled; }
+ public void setDepositScanEnabled(Boolean depositScanEnabled) { this.depositScanEnabled = depositScanEnabled; }
+ public Boolean getWithdrawEnabled() { return withdrawEnabled; }
+ public void setWithdrawEnabled(Boolean withdrawEnabled) { this.withdrawEnabled = withdrawEnabled; }
+ public Integer getConfirmations() { return confirmations; }
+ public void setConfirmations(Integer confirmations) { this.confirmations = confirmations; }
+ public Long getStartBlock() { return startBlock; }
+ public void setStartBlock(Long startBlock) { this.startBlock = startBlock; }
+ public Long getCurrentBlock() { return currentBlock; }
+ public void setCurrentBlock(Long currentBlock) { this.currentBlock = currentBlock; }
+ public Integer getScanBatchSize() { return scanBatchSize; }
+ public void setScanBatchSize(Integer scanBatchSize) { this.scanBatchSize = scanBatchSize; }
+ public Long getScanIntervalMs() { return scanIntervalMs; }
+ public void setScanIntervalMs(Long scanIntervalMs) { this.scanIntervalMs = scanIntervalMs; }
+ public Date getUpdatedAt() { return updatedAt; }
+ public void setUpdatedAt(Date updatedAt) { this.updatedAt = updatedAt; }
+}
diff --git a/wallet-entity/src/main/java/com/wallet/entity/domain/WalletFeeSupplyConfig.java b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletFeeSupplyConfig.java
new file mode 100644
index 0000000..846f83e
--- /dev/null
+++ b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletFeeSupplyConfig.java
@@ -0,0 +1,28 @@
+package com.wallet.entity.domain;
+
+import jakarta.persistence.*;
+
+@Entity
+@Table(name = "wallet_fee_supply_config")
+public class WalletFeeSupplyConfig {
+ @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ @Column(unique = true)
+ private String chain;
+ private Boolean feeSupplyEnabled;
+ private String feeSupplyFromAddress;
+ private String minGasBalance;
+ private String targetGasBalance;
+ public Long getId() { return id; }
+ public void setId(Long id) { this.id = id; }
+ public String getChain() { return chain; }
+ public void setChain(String chain) { this.chain = chain; }
+ public Boolean getFeeSupplyEnabled() { return feeSupplyEnabled; }
+ public void setFeeSupplyEnabled(Boolean feeSupplyEnabled) { this.feeSupplyEnabled = feeSupplyEnabled; }
+ public String getFeeSupplyFromAddress() { return feeSupplyFromAddress; }
+ public void setFeeSupplyFromAddress(String feeSupplyFromAddress) { this.feeSupplyFromAddress = feeSupplyFromAddress; }
+ public String getMinGasBalance() { return minGasBalance; }
+ public void setMinGasBalance(String minGasBalance) { this.minGasBalance = minGasBalance; }
+ public String getTargetGasBalance() { return targetGasBalance; }
+ public void setTargetGasBalance(String targetGasBalance) { this.targetGasBalance = targetGasBalance; }
+}
diff --git a/wallet-entity/src/main/java/com/wallet/entity/domain/WalletRpcConfig.java b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletRpcConfig.java
new file mode 100644
index 0000000..f3b932e
--- /dev/null
+++ b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletRpcConfig.java
@@ -0,0 +1,37 @@
+package com.wallet.entity.domain;
+
+import jakarta.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "wallet_rpc_config")
+public class WalletRpcConfig {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ @Column(unique = true)
+ private String chain;
+ private String rpcUrl;
+ private String rpcUsername;
+ private String rpcPassword;
+ private String rpcApiKey;
+ private Integer rpcTimeoutMs;
+ private Date updatedAt = new Date();
+
+ public Long getId() { return id; }
+ public void setId(Long id) { this.id = id; }
+ public String getChain() { return chain; }
+ public void setChain(String chain) { this.chain = chain; }
+ public String getRpcUrl() { return rpcUrl; }
+ public void setRpcUrl(String rpcUrl) { this.rpcUrl = rpcUrl; }
+ public String getRpcUsername() { return rpcUsername; }
+ public void setRpcUsername(String rpcUsername) { this.rpcUsername = rpcUsername; }
+ public String getRpcPassword() { return rpcPassword; }
+ public void setRpcPassword(String rpcPassword) { this.rpcPassword = rpcPassword; }
+ public String getRpcApiKey() { return rpcApiKey; }
+ public void setRpcApiKey(String rpcApiKey) { this.rpcApiKey = rpcApiKey; }
+ public Integer getRpcTimeoutMs() { return rpcTimeoutMs; }
+ public void setRpcTimeoutMs(Integer rpcTimeoutMs) { this.rpcTimeoutMs = rpcTimeoutMs; }
+ public Date getUpdatedAt() { return updatedAt; }
+ public void setUpdatedAt(Date updatedAt) { this.updatedAt = updatedAt; }
+}
diff --git a/wallet-entity/src/main/java/com/wallet/entity/domain/WalletSchedulerConfig.java b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletSchedulerConfig.java
new file mode 100644
index 0000000..c007b16
--- /dev/null
+++ b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletSchedulerConfig.java
@@ -0,0 +1,40 @@
+package com.wallet.entity.domain;
+
+import jakarta.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "wallet_scheduler_config")
+public class WalletSchedulerConfig {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ @Column(unique = true)
+ private String chain;
+ private Boolean depositScanEnabled;
+ private Long depositScanIntervalMs;
+ private Boolean sweepEnabled;
+ private Long sweepIntervalMs;
+ private Boolean feeSupplyEnabled;
+ private Long feeSupplyIntervalMs;
+ private Date updatedAt = new Date();
+
+ public Long getId() { return id; }
+ public void setId(Long id) { this.id = id; }
+ public String getChain() { return chain; }
+ public void setChain(String chain) { this.chain = chain; }
+ public Boolean getDepositScanEnabled() { return depositScanEnabled; }
+ public void setDepositScanEnabled(Boolean depositScanEnabled) { this.depositScanEnabled = depositScanEnabled; }
+ public Long getDepositScanIntervalMs() { return depositScanIntervalMs; }
+ public void setDepositScanIntervalMs(Long depositScanIntervalMs) { this.depositScanIntervalMs = depositScanIntervalMs; }
+ public Boolean getSweepEnabled() { return sweepEnabled; }
+ public void setSweepEnabled(Boolean sweepEnabled) { this.sweepEnabled = sweepEnabled; }
+ public Long getSweepIntervalMs() { return sweepIntervalMs; }
+ public void setSweepIntervalMs(Long sweepIntervalMs) { this.sweepIntervalMs = sweepIntervalMs; }
+ public Boolean getFeeSupplyEnabled() { return feeSupplyEnabled; }
+ public void setFeeSupplyEnabled(Boolean feeSupplyEnabled) { this.feeSupplyEnabled = feeSupplyEnabled; }
+ public Long getFeeSupplyIntervalMs() { return feeSupplyIntervalMs; }
+ public void setFeeSupplyIntervalMs(Long feeSupplyIntervalMs) { this.feeSupplyIntervalMs = feeSupplyIntervalMs; }
+ public Date getUpdatedAt() { return updatedAt; }
+ public void setUpdatedAt(Date updatedAt) { this.updatedAt = updatedAt; }
+}
diff --git a/wallet-entity/src/main/java/com/wallet/entity/domain/WalletSecurityConfig.java b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletSecurityConfig.java
new file mode 100644
index 0000000..3e09048
--- /dev/null
+++ b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletSecurityConfig.java
@@ -0,0 +1,21 @@
+package com.wallet.entity.domain;
+
+import jakarta.persistence.*;
+
+@Entity
+@Table(name = "wallet_security_config")
+public class WalletSecurityConfig {
+ @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ private Boolean allowExportPrivateKey;
+ private Boolean exportPrivateKeyRequire2fa;
+ private Boolean allowUpdateRpcByAdmin;
+ public Long getId() { return id; }
+ public void setId(Long id) { this.id = id; }
+ public Boolean getAllowExportPrivateKey() { return allowExportPrivateKey; }
+ public void setAllowExportPrivateKey(Boolean allowExportPrivateKey) { this.allowExportPrivateKey = allowExportPrivateKey; }
+ public Boolean getExportPrivateKeyRequire2fa() { return exportPrivateKeyRequire2fa; }
+ public void setExportPrivateKeyRequire2fa(Boolean exportPrivateKeyRequire2fa) { this.exportPrivateKeyRequire2fa = exportPrivateKeyRequire2fa; }
+ public Boolean getAllowUpdateRpcByAdmin() { return allowUpdateRpcByAdmin; }
+ public void setAllowUpdateRpcByAdmin(Boolean allowUpdateRpcByAdmin) { this.allowUpdateRpcByAdmin = allowUpdateRpcByAdmin; }
+}
diff --git a/wallet-entity/src/main/java/com/wallet/entity/domain/WalletSweepConfig.java b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletSweepConfig.java
new file mode 100644
index 0000000..f9fcaa0
--- /dev/null
+++ b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletSweepConfig.java
@@ -0,0 +1,28 @@
+package com.wallet.entity.domain;
+
+import jakarta.persistence.*;
+
+@Entity
+@Table(name = "wallet_sweep_config")
+public class WalletSweepConfig {
+ @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ @Column(unique = true)
+ private String chain;
+ private Boolean sweepEnabled;
+ private String sweepToAddress;
+ private String minSweepAmount;
+ private String reserveAmount;
+ public Long getId() { return id; }
+ public void setId(Long id) { this.id = id; }
+ public String getChain() { return chain; }
+ public void setChain(String chain) { this.chain = chain; }
+ public Boolean getSweepEnabled() { return sweepEnabled; }
+ public void setSweepEnabled(Boolean sweepEnabled) { this.sweepEnabled = sweepEnabled; }
+ public String getSweepToAddress() { return sweepToAddress; }
+ public void setSweepToAddress(String sweepToAddress) { this.sweepToAddress = sweepToAddress; }
+ public String getMinSweepAmount() { return minSweepAmount; }
+ public void setMinSweepAmount(String minSweepAmount) { this.minSweepAmount = minSweepAmount; }
+ public String getReserveAmount() { return reserveAmount; }
+ public void setReserveAmount(String reserveAmount) { this.reserveAmount = reserveAmount; }
+}
diff --git a/wallet-entity/src/main/java/com/wallet/entity/domain/WalletWithdrawConfig.java b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletWithdrawConfig.java
new file mode 100644
index 0000000..6b5f0c4
--- /dev/null
+++ b/wallet-entity/src/main/java/com/wallet/entity/domain/WalletWithdrawConfig.java
@@ -0,0 +1,28 @@
+package com.wallet.entity.domain;
+
+import jakarta.persistence.*;
+
+@Entity
+@Table(name = "wallet_withdraw_config")
+public class WalletWithdrawConfig {
+ @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ @Column(unique = true)
+ private String chain;
+ private Boolean withdrawEnabled;
+ private Boolean manualReviewEnabled;
+ private String maxAutoWithdrawAmount;
+ private String dailyWithdrawLimit;
+ public Long getId() { return id; }
+ public void setId(Long id) { this.id = id; }
+ public String getChain() { return chain; }
+ public void setChain(String chain) { this.chain = chain; }
+ public Boolean getWithdrawEnabled() { return withdrawEnabled; }
+ public void setWithdrawEnabled(Boolean withdrawEnabled) { this.withdrawEnabled = withdrawEnabled; }
+ public Boolean getManualReviewEnabled() { return manualReviewEnabled; }
+ public void setManualReviewEnabled(Boolean manualReviewEnabled) { this.manualReviewEnabled = manualReviewEnabled; }
+ public String getMaxAutoWithdrawAmount() { return maxAutoWithdrawAmount; }
+ public void setMaxAutoWithdrawAmount(String maxAutoWithdrawAmount) { this.maxAutoWithdrawAmount = maxAutoWithdrawAmount; }
+ public String getDailyWithdrawLimit() { return dailyWithdrawLimit; }
+ public void setDailyWithdrawLimit(String dailyWithdrawLimit) { this.dailyWithdrawLimit = dailyWithdrawLimit; }
+}
diff --git a/wallet-entity/src/main/kotlin/com/wallet/repository/WalletAdminAuditLogRepository.kt b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletAdminAuditLogRepository.kt
new file mode 100644
index 0000000..d06392e
--- /dev/null
+++ b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletAdminAuditLogRepository.kt
@@ -0,0 +1,6 @@
+package com.wallet.repository
+
+import com.wallet.entity.domain.WalletAdminAuditLog
+import org.springframework.data.jpa.repository.JpaRepository
+
+interface WalletAdminAuditLogRepository: JpaRepository
diff --git a/wallet-entity/src/main/kotlin/com/wallet/repository/WalletChainConfigRepository.kt b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletChainConfigRepository.kt
new file mode 100644
index 0000000..242973a
--- /dev/null
+++ b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletChainConfigRepository.kt
@@ -0,0 +1,8 @@
+package com.wallet.repository
+
+import com.wallet.entity.domain.WalletChainConfig
+import org.springframework.data.jpa.repository.JpaRepository
+
+interface WalletChainConfigRepository: JpaRepository {
+ fun findByChain(chain: String): WalletChainConfig?
+}
diff --git a/wallet-entity/src/main/kotlin/com/wallet/repository/WalletFeeSupplyConfigRepository.kt b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletFeeSupplyConfigRepository.kt
new file mode 100644
index 0000000..8d769f4
--- /dev/null
+++ b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletFeeSupplyConfigRepository.kt
@@ -0,0 +1,6 @@
+package com.wallet.repository
+
+import com.wallet.entity.domain.WalletFeeSupplyConfig
+import org.springframework.data.jpa.repository.JpaRepository
+
+interface WalletFeeSupplyConfigRepository: JpaRepository { fun findByChain(chain: String): WalletFeeSupplyConfig? }
diff --git a/wallet-entity/src/main/kotlin/com/wallet/repository/WalletRpcConfigRepository.kt b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletRpcConfigRepository.kt
new file mode 100644
index 0000000..1fff0d0
--- /dev/null
+++ b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletRpcConfigRepository.kt
@@ -0,0 +1,8 @@
+package com.wallet.repository
+
+import com.wallet.entity.domain.WalletRpcConfig
+import org.springframework.data.jpa.repository.JpaRepository
+
+interface WalletRpcConfigRepository: JpaRepository {
+ fun findByChain(chain: String): WalletRpcConfig?
+}
diff --git a/wallet-entity/src/main/kotlin/com/wallet/repository/WalletSchedulerConfigRepository.kt b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletSchedulerConfigRepository.kt
new file mode 100644
index 0000000..0fad6f6
--- /dev/null
+++ b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletSchedulerConfigRepository.kt
@@ -0,0 +1,8 @@
+package com.wallet.repository
+
+import com.wallet.entity.domain.WalletSchedulerConfig
+import org.springframework.data.jpa.repository.JpaRepository
+
+interface WalletSchedulerConfigRepository: JpaRepository {
+ fun findByChain(chain: String): WalletSchedulerConfig?
+}
diff --git a/wallet-entity/src/main/kotlin/com/wallet/repository/WalletSecurityConfigRepository.kt b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletSecurityConfigRepository.kt
new file mode 100644
index 0000000..82a4d03
--- /dev/null
+++ b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletSecurityConfigRepository.kt
@@ -0,0 +1,6 @@
+package com.wallet.repository
+
+import com.wallet.entity.domain.WalletSecurityConfig
+import org.springframework.data.jpa.repository.JpaRepository
+
+interface WalletSecurityConfigRepository: JpaRepository
diff --git a/wallet-entity/src/main/kotlin/com/wallet/repository/WalletSweepConfigRepository.kt b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletSweepConfigRepository.kt
new file mode 100644
index 0000000..fd101a3
--- /dev/null
+++ b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletSweepConfigRepository.kt
@@ -0,0 +1,6 @@
+package com.wallet.repository
+
+import com.wallet.entity.domain.WalletSweepConfig
+import org.springframework.data.jpa.repository.JpaRepository
+
+interface WalletSweepConfigRepository: JpaRepository { fun findByChain(chain: String): WalletSweepConfig? }
diff --git a/wallet-entity/src/main/kotlin/com/wallet/repository/WalletWithdrawConfigRepository.kt b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletWithdrawConfigRepository.kt
new file mode 100644
index 0000000..be03c5e
--- /dev/null
+++ b/wallet-entity/src/main/kotlin/com/wallet/repository/WalletWithdrawConfigRepository.kt
@@ -0,0 +1,6 @@
+package com.wallet.repository
+
+import com.wallet.entity.domain.WalletWithdrawConfig
+import org.springframework.data.jpa.repository.JpaRepository
+
+interface WalletWithdrawConfigRepository: JpaRepository { fun findByChain(chain: String): WalletWithdrawConfig? }
diff --git a/wallet-task/Dockerfile b/wallet-task/Dockerfile
deleted file mode 100644
index 1d61b37..0000000
--- a/wallet-task/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Stage 1: Build
-FROM eclipse-temurin:17-jdk-alpine AS builder
-WORKDIR /app
-COPY . .
-RUN chmod +x ./gradlew && ./gradlew :wallet-task:bootJar --no-daemon -x test
-
-# Stage 2: Runtime
-FROM eclipse-temurin:17-jre-alpine
-WORKDIR /app
-
-RUN addgroup -S wallet && adduser -S wallet -G wallet
-
-COPY --from=builder /app/wallet-task/build/libs/*.jar app.jar
-
-ENV PORT=10033
-ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
-
-EXPOSE $PORT
-
-USER wallet
-
-HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
- CMD wget --no-verbose --tries=1 --spider http://localhost:${PORT}/actuator/health || exit 1
-
-ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dserver.port=${PORT} -jar app.jar"]
diff --git a/wallet-task/build.gradle b/wallet-task/build.gradle
deleted file mode 100644
index ef97e0a..0000000
--- a/wallet-task/build.gradle
+++ /dev/null
@@ -1,25 +0,0 @@
-plugins {
- id 'com.google.cloud.tools.jib' version '3.4.0'
-}
-
-apply plugin: 'application'
-
-mainClassName = "com.wallet.TaskApplicationKt"
-
-dependencies {
- implementation project(":wallet-common")
-}
-
-jib {
- from {
- image = 'eclipse-temurin:17-jre-alpine'
- }
- to {
- image = "wallet-task:${project.version}"
- }
- container {
- mainClass = 'com.wallet.TaskApplicationKt'
- ports = ['10033']
- jvmFlags = ['-Xms256m', '-Xmx512m', '-Djava.security.egd=file:/dev/./urandom']
- }
-}
diff --git a/wallet-task/src/main/kotlin/com/wallet/TaskApplication.kt b/wallet-task/src/main/kotlin/com/wallet/TaskApplication.kt
deleted file mode 100644
index b8b84dc..0000000
--- a/wallet-task/src/main/kotlin/com/wallet/TaskApplication.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.wallet
-
-import org.springframework.boot.SpringApplication
-import org.springframework.boot.autoconfigure.SpringBootApplication
-
-/**
- * Created by pie on 2019-04-11 15: 53.
- */
-@SpringBootApplication
-open class TaskApplication
-
-fun main() {
- SpringApplication.run(TaskApplication::class.java)
-}
diff --git a/wallet-task/src/main/kotlin/com/wallet/task/config/RabbitMqConfig.kt b/wallet-task/src/main/kotlin/com/wallet/task/config/RabbitMqConfig.kt
deleted file mode 100644
index 5c61cb8..0000000
--- a/wallet-task/src/main/kotlin/com/wallet/task/config/RabbitMqConfig.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.wallet.task.config
-
-import com.wallet.biz.dict.MqKey
-import org.springframework.amqp.core.Binding
-import org.springframework.amqp.core.BindingBuilder
-import org.springframework.amqp.core.Queue
-import org.springframework.amqp.core.TopicExchange
-import org.springframework.context.annotation.Bean
-import org.springframework.context.annotation.Configuration
-
-@Configuration
-open class RabbitMqConfig {
-
- @Bean
- open fun deposit(): Queue {
- return Queue(MqKey.DEPOSIT_QUEUE, true)
- }
-
- @Bean
- open fun topicExchange(): TopicExchange {
- return TopicExchange(MqKey.TOPIC_EXCHANGE)
- }
-
- @Bean
- open fun binding1(): Binding {
- return BindingBuilder.bind(deposit()).to(topicExchange())
- .with(MqKey.DEPOSIT_KEY)
- }
-}
diff --git a/wallet-task/src/main/kotlin/com/wallet/task/config/XxlJobConfig.kt b/wallet-task/src/main/kotlin/com/wallet/task/config/XxlJobConfig.kt
deleted file mode 100644
index 008f662..0000000
--- a/wallet-task/src/main/kotlin/com/wallet/task/config/XxlJobConfig.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.wallet.task.config
-
-import com.wallet.task.env.XxlJobProperties
-import org.springframework.context.annotation.Configuration
-import com.xxl.job.core.executor.impl.XxlJobSpringExecutor
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.context.properties.EnableConfigurationProperties
-import org.springframework.context.annotation.Bean
-
-
-/**
- * Created by pie on 2019-03-12 15: 32.
- */
-@Configuration
-@EnableConfigurationProperties(XxlJobProperties::class)
-open class XxlJobConfig {
-
- @Bean
- open fun xxlJobExecutor(): XxlJobSpringExecutor {
- val xxlJobSpringExecutor = XxlJobSpringExecutor()
- xxlJobProperties.adminAddresses?.let {
- xxlJobSpringExecutor.setAdminAddresses(it)
- }
- xxlJobProperties.appName?.let {
- xxlJobSpringExecutor.setAppname(it)
- }
- xxlJobProperties.ip?.let {
- xxlJobSpringExecutor.setIp(it)
- }
- xxlJobProperties.port?.let {
- xxlJobSpringExecutor.setPort(it)
- }
- xxlJobProperties.accessToken?.let {
- xxlJobSpringExecutor.setAccessToken(it)
- }
- xxlJobProperties.logPath?.let {
- xxlJobSpringExecutor.setLogPath(it)
- }
- xxlJobProperties.logRetentionDays?.let {
- xxlJobSpringExecutor.setLogRetentionDays(it)
- }
- return xxlJobSpringExecutor
- }
-
- @Autowired
- lateinit var xxlJobProperties: XxlJobProperties
-}
diff --git a/wallet-task/src/main/kotlin/com/wallet/task/env/XxlJobProperties.kt b/wallet-task/src/main/kotlin/com/wallet/task/env/XxlJobProperties.kt
deleted file mode 100644
index 17c6a99..0000000
--- a/wallet-task/src/main/kotlin/com/wallet/task/env/XxlJobProperties.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.wallet.task.env
-
-import org.springframework.boot.context.properties.ConfigurationProperties
-import org.springframework.context.annotation.Configuration
-
-/**
- * Created by pie on 2019-03-12 15: 34.
- */
-@ConfigurationProperties(prefix = "xxl.job")
-@Configuration
-open class XxlJobProperties{
-
- var adminAddresses: String? = null
-
- var appName: String? = null
-
- var ip: String? = null
-
- var port: Int ?= null
-
- var accessToken: String? = null
-
- var logPath: String? = null
-
- var logRetentionDays: Int ?= null
-
-}
\ No newline at end of file
diff --git a/wallet-task/src/main/kotlin/com/wallet/task/handler/CollectJobHandler.kt b/wallet-task/src/main/kotlin/com/wallet/task/handler/CollectJobHandler.kt
deleted file mode 100644
index f63753b..0000000
--- a/wallet-task/src/main/kotlin/com/wallet/task/handler/CollectJobHandler.kt
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.wallet.task.handler
-
-import com.wallet.biz.handler.service.impl.CollectServiceImpl
-import com.wallet.biz.rpc.RpcClient
-import com.xxl.job.core.biz.model.ReturnT
-import com.xxl.job.core.handler.annotation.XxlJob
-import org.consenlabs.tokencore.wallet.model.ChainType
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.stereotype.Component
-
-/**
- * Created by pie on 2020/6/29 01: 53.
- */
-@Component
-class CollectJobHandler {
-
- @XxlJob("collectTRX")
- fun collectTRX(param: String): ReturnT {
- collectService.collectTRX()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("collectTRC")
- fun collectTRC(param: String): ReturnT {
- collectService.collectTRC()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("collectOMNI")
- fun collectOMNI(param: String): ReturnT {
- collectService.collectOMNI()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("collectETH")
- fun collectETH(param: String): ReturnT {
- collectService.collectETH()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("collectERC")
- fun collectERC(param: String): ReturnT {
- collectService.collectERC()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("collectBTC")
- fun collectBTC(param: String): ReturnT {
- collectService.collectBTCOrFork(rpcClient.omniRpc(),ChainType.BITCOIN)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("collectDASH")
- fun collectDASH(param: String): ReturnT {
- collectService.collectBTCOrFork(rpcClient.dashRpc(),ChainType.DASH)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("collectLTC")
- fun collectLTC(param: String): ReturnT {
- collectService.collectBTCOrFork(rpcClient.ltcRpc(),ChainType.LITECOIN)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("collectBCH")
- fun collectBCH(param: String): ReturnT {
- collectService.collectBCHOrFork(rpcClient.bchRpc(),ChainType.BITCOINCASH)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("collectBSV")
- fun collectBSV(param: String): ReturnT {
- collectService.collectBCHOrFork(rpcClient.bsvRpc(),ChainType.BITCOINSV)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("collectDOGE")
- fun collectDOGE(param: String): ReturnT {
- collectService.collectBTCOrFork(rpcClient.dogeRpc(),ChainType.DOGECOIN)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("scanAllCoin")
- fun scanAllCoin(param: String): ReturnT {
- collectService.scanAllCoin()
- return ReturnT.SUCCESS
- }
-
- @Autowired
- lateinit var collectService: CollectServiceImpl
- @Autowired
- lateinit var rpcClient: RpcClient
-}
diff --git a/wallet-task/src/main/kotlin/com/wallet/task/handler/SendFeeJobHandler.kt b/wallet-task/src/main/kotlin/com/wallet/task/handler/SendFeeJobHandler.kt
deleted file mode 100644
index f116a08..0000000
--- a/wallet-task/src/main/kotlin/com/wallet/task/handler/SendFeeJobHandler.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.wallet.task.handler
-
-import com.wallet.biz.handler.service.SendFeeService
-import com.xxl.job.core.biz.model.ReturnT
-import com.xxl.job.core.handler.annotation.XxlJob
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.stereotype.Component
-
-/**
- * Created by pie on 2020/6/29 16: 18.
- */
-@Component
-class SendFeeJobHandler {
-
- @XxlJob("sendFeeETH")
- fun sendFeeETH(param: String): ReturnT {
- sendFeeService.sendFeeETH()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("sendFeeTRX")
- fun sendFeeTRX(param: String): ReturnT {
- sendFeeService.sendFeeTRX()
- return ReturnT.SUCCESS
- }
-
- @Autowired
- lateinit var sendFeeService: SendFeeService
-
-}
diff --git a/wallet-task/src/main/kotlin/com/wallet/task/handler/SynJobHandler.kt b/wallet-task/src/main/kotlin/com/wallet/task/handler/SynJobHandler.kt
deleted file mode 100644
index c72607e..0000000
--- a/wallet-task/src/main/kotlin/com/wallet/task/handler/SynJobHandler.kt
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.wallet.task.handler
-
-import com.wallet.biz.handler.service.impl.SynServiceImpl
-import com.wallet.biz.rpc.RpcClient
-import com.xxl.job.core.biz.model.ReturnT
-import com.xxl.job.core.handler.annotation.XxlJob
-import org.consenlabs.tokencore.wallet.model.ChainType
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.stereotype.Component
-
-
-/**
- * Created by pie on 2020/6/29 01: 49.
- */
-@Component
-class SynJobHandler {
-
- @XxlJob("synTRX")
- fun synTRX(param: String): ReturnT {
- synService.synTRX()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synETH")
- fun synETH(param: String): ReturnT {
- synService.synETH()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synBTC")
- fun synBTC(param: String): ReturnT {
- synService.synBTCOrFork(rpcClient.omniRpc(), ChainType.BITCOIN)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synOMNI")
- fun synOMNI(param: String): ReturnT {
- synService.synOMNI()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synDASH")
- fun synDASH(param: String): ReturnT {
- synService.synBTCOrFork(rpcClient.dashRpc(), ChainType.DASH)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synLTC")
- fun synLTC(param: String): ReturnT {
- synService.synBTCOrFork(rpcClient.ltcRpc(), ChainType.LITECOIN)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synBCH")
- fun synBCH(param: String): ReturnT {
- synService.synBTCOrFork(rpcClient.bchRpc(), ChainType.BITCOINCASH)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synBSV")
- fun synBSV(param: String): ReturnT {
- synService.synBTCOrFork(rpcClient.bsvRpc(), ChainType.BITCOINSV)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synDOGE")
- fun synDOGE(param: String): ReturnT {
- synService.synBTCOrFork(rpcClient.dogeRpc(), ChainType.DOGECOIN)
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synEOS")
- fun synEOS(param: String): ReturnT {
- synService.synEOS()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synDeposit")
- fun synDeposit(param: String): ReturnT {
- synService.synDeposit()
- return ReturnT.SUCCESS
- }
-
- @XxlJob("synImportAddress")
- fun synImportAddress(param: String): ReturnT {
- synService.synImportAddress()
- return ReturnT.SUCCESS
- }
-
- @Autowired
- lateinit var synService: SynServiceImpl
- @Autowired
- lateinit var rpcClient: RpcClient
-}
diff --git a/wallet-task/src/main/resources/application.yml b/wallet-task/src/main/resources/application.yml
deleted file mode 100644
index d54d5cf..0000000
--- a/wallet-task/src/main/resources/application.yml
+++ /dev/null
@@ -1,47 +0,0 @@
-server:
- port: ${SERVER_PORT:10033}
-
-spring:
- application:
- name: wallet-task
- datasource:
- url: ${DB_URL:jdbc:mysql://127.0.0.1:3306/wallet_db?allowMultiQueries=true&useSSL=false&characterEncoding=UTF-8&autoReconnect=true}
- username: ${DB_USERNAME:root}
- password: ${DB_PASSWORD:}
- driver-class-name: com.mysql.cj.jdbc.Driver
- type: com.zaxxer.hikari.HikariDataSource
- hikari:
- minimum-idle: 5
- maximum-pool-size: 20
- idle-timeout: 300000
- max-lifetime: 1800000
- connection-timeout: 30000
- pool-name: wallet-task-pool
- jpa:
- open-in-view: false
- hibernate:
- ddl-auto: none
- properties:
- hibernate:
- dialect: org.hibernate.dialect.MySQLDialect
- rabbitmq:
- host: ${RABBITMQ_HOST:127.0.0.1}
- port: ${RABBITMQ_PORT:5672}
- username: ${RABBITMQ_USERNAME:guest}
- password: ${RABBITMQ_PASSWORD:guest}
-
-xxl:
- job:
- adminAddresses: ${XXL_JOB_ADMIN_ADDRESSES:http://127.0.0.1:8099/xxl-job-admin}
- appName: wallet-task
- port: ${XXL_JOB_PORT:9999}
- accessToken: ${XXL_JOB_ACCESS_TOKEN:}
- logPath: task-logs
- logRetentionDays: 30
-
-logging:
- level:
- root: INFO
- com.wallet: ${LOG_LEVEL:INFO}
- file:
- name: logs/wallet-task.log
diff --git a/wallet-task/src/test/kotlin/com/wallet/test/TaskApplicationTest.kt b/wallet-task/src/test/kotlin/com/wallet/test/TaskApplicationTest.kt
deleted file mode 100644
index ce023f5..0000000
--- a/wallet-task/src/test/kotlin/com/wallet/test/TaskApplicationTest.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.wallet.test
-
-import com.wallet.TaskApplication
-import org.junit.jupiter.api.Test
-import org.springframework.boot.test.context.SpringBootTest
-
-@SpringBootTest(classes = [TaskApplication::class])
-class TaskApplicationTest {
-
- @Test
- fun contextLoads() {
- }
-}
diff --git a/wallet-webapi/build.gradle b/wallet-webapi/build.gradle
index f2a7f86..8e3e088 100644
--- a/wallet-webapi/build.gradle
+++ b/wallet-webapi/build.gradle
@@ -8,6 +8,7 @@ mainClassName = "com.wallet.WebApiApplicationKt"
dependencies {
implementation project(":wallet-common")
+ implementation project(":wallet-hsm")
}
jib {
@@ -19,7 +20,7 @@ jib {
}
container {
mainClass = 'com.wallet.WebApiApplicationKt'
- ports = ['10001']
+ ports = ['8080']
jvmFlags = ['-Xms256m', '-Xmx512m', '-Djava.security.egd=file:/dev/./urandom']
}
}
diff --git a/wallet-webapi/src/main/kotlin/com/wallet/webapi/controller/AdminController.kt b/wallet-webapi/src/main/kotlin/com/wallet/webapi/controller/AdminController.kt
index 2ec59bc..6d4b98a 100644
--- a/wallet-webapi/src/main/kotlin/com/wallet/webapi/controller/AdminController.kt
+++ b/wallet-webapi/src/main/kotlin/com/wallet/webapi/controller/AdminController.kt
@@ -1,8 +1,21 @@
package com.wallet.webapi.controller
import com.wallet.biz.domain.dict.TokenResponse
+import com.wallet.biz.service.ConfigService
+import com.wallet.biz.dict.SysConfigKey
import com.wallet.biz.xservice.AdminXService
import com.wallet.entity.domain.*
+import com.wallet.entity.domain.WalletAdminAuditLog
+import com.wallet.biz.domain.exception.BizException
+import com.wallet.biz.domain.dict.ErrorCode
+import com.wallet.repository.WalletAdminAuditLogRepository
+import com.wallet.repository.WalletRpcConfigRepository
+import com.wallet.repository.WalletSchedulerConfigRepository
+import com.wallet.repository.WalletChainConfigRepository
+import com.wallet.repository.WalletFeeSupplyConfigRepository
+import com.wallet.repository.WalletSecurityConfigRepository
+import com.wallet.repository.WalletSweepConfigRepository
+import com.wallet.repository.WalletWithdrawConfigRepository
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import jakarta.annotation.Resource
@@ -10,14 +23,283 @@ import jakarta.servlet.http.HttpServletRequest
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PostMapping
+import org.springframework.web.bind.annotation.PutMapping
+import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RequestMapping
+import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RestController
@RestController
@Tag(name = "Admin API", description = "管理后台接口")
@RequestMapping("admin")
class AdminController {
+ private val auditLogs = java.util.Collections.synchronizedList(mutableListOf