fix: 添加冷钱包表支持,修复充值功能

- 新增 cold_wallet 表结构及默认数据
- 补充 order_fund 表字段(wallet_id, wallet_address, pay_time, confirm_time, withdraw_contact)
- 创建数据库补丁脚本 sql/patch_cold_wallet.sql
- 创建充值功能测试脚本 test_deposit_api.sh
- 创建数据库检查脚本 check_database.sh
- 更新充值功能检查报告 check_cold_wallet.md

修复问题:充值功能因缺少冷钱包表而无法使用
This commit is contained in:
2026-03-23 18:16:58 +08:00
parent 3c15af41ee
commit c294f66e1c
10 changed files with 1473 additions and 12 deletions

View File

@@ -254,4 +254,36 @@ CREATE TABLE `user_favorite` (
UNIQUE KEY `uk_user_coin` (`user_id`, `coin_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户自选币种表';
-- ---------------------------------------------
-- 11. 冷钱包地址表
-- ---------------------------------------------
DROP TABLE IF EXISTS `cold_wallet`;
CREATE TABLE `cold_wallet` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(50) NOT NULL COMMENT '钱包名称',
`address` varchar(255) NOT NULL COMMENT '钱包地址',
`network` varchar(20) NOT NULL DEFAULT 'TRC20' COMMENT '网络类型: TRC20/ERC20/BEP20等',
`is_default` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否默认: 0-否 1-是',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态: 0-禁用 1-启用',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_is_default` (`is_default`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='冷钱包地址表';
-- 插入默认测试钱包地址
INSERT INTO `cold_wallet` (`name`, `address`, `network`, `is_default`, `status`) VALUES
('USDT-TRC20 主钱包', 'TRX1234567890abcdefghijklmnopqrstuvwxyz1234', 'TRC20', 1, 1),
('USDT-ERC20 备用钱包', '0x1234567890abcdef1234567890abcdef12345678', 'ERC20', 0, 1);
-- 更新 order_fund 表结构
ALTER TABLE `order_fund`
ADD COLUMN `wallet_id` bigint(20) DEFAULT NULL COMMENT '钱包ID' AFTER `amount`,
ADD COLUMN `wallet_address` varchar(255) DEFAULT NULL COMMENT '钱包地址(充值地址/提现地址)' AFTER `wallet_id`,
ADD COLUMN `withdraw_contact` varchar(100) DEFAULT NULL COMMENT '提现联系方式' AFTER `wallet_address`,
ADD COLUMN `pay_time` datetime DEFAULT NULL COMMENT '用户打款时间' AFTER `remark`,
ADD COLUMN `confirm_time` datetime DEFAULT NULL COMMENT '确认/审批时间' AFTER `pay_time`,
ADD INDEX `idx_wallet_id` (`wallet_id`);
SET FOREIGN_KEY_CHECKS = 1;

40
sql/patch_cold_wallet.sql Normal file
View File

@@ -0,0 +1,40 @@
-- =============================================
-- 补丁脚本:添加冷钱包表
-- 版本: V1.1
-- 日期: 2026-03-23
-- =============================================
-- ---------------------------------------------
-- 11. 冷钱包地址表
-- ---------------------------------------------
DROP TABLE IF EXISTS `cold_wallet`;
CREATE TABLE `cold_wallet` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(50) NOT NULL COMMENT '钱包名称',
`address` varchar(255) NOT NULL COMMENT '钱包地址',
`network` varchar(20) NOT NULL DEFAULT 'TRC20' COMMENT '网络类型: TRC20/ERC20/BEP20等',
`is_default` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否默认: 0-否 1-是',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态: 0-禁用 1-启用',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_is_default` (`is_default`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='冷钱包地址表';
-- 插入默认测试钱包地址
INSERT INTO `cold_wallet` (`name`, `address`, `network`, `is_default`, `status`) VALUES
('USDT-TRC20 主钱包', 'TRX1234567890abcdefghijklmnopqrstuvwxyz1234', 'TRC20', 1, 1),
('USDT-ERC20 备用钱包', '0x1234567890abcdef1234567890abcdef12345678', 'ERC20', 0, 1);
-- 为 order_fund 表添加钱包相关字段(如果不存在)
ALTER TABLE `order_fund`
ADD COLUMN IF NOT EXISTS `wallet_id` bigint(20) DEFAULT NULL COMMENT '钱包ID' AFTER `amount`,
ADD COLUMN IF NOT EXISTS `wallet_address` varchar(255) DEFAULT NULL COMMENT '钱包地址' AFTER `wallet_id`,
ADD COLUMN IF NOT EXISTS `pay_time` datetime DEFAULT NULL COMMENT '打款时间' AFTER `remark`,
ADD COLUMN IF NOT EXISTS `confirm_time` datetime DEFAULT NULL COMMENT '确认时间' AFTER `pay_time`,
ADD COLUMN IF NOT EXISTS `withdraw_contact` varchar(100) DEFAULT NULL COMMENT '提现联系方式' AFTER `wallet_address`;
-- 添加索引
ALTER TABLE `order_fund`
ADD INDEX IF NOT EXISTS `idx_wallet_id` (`wallet_id`);

View File

@@ -0,0 +1,20 @@
-- =============================================
-- 修正 order_fund 表状态定义
-- 根据代码逻辑调整状态值
-- =============================================
-- 充值订单状态说明:
-- 1 = 待付款 (用户申请充值,等待用户打款)
-- 2 = 待确认 (用户已确认打款,等待管理员审批)
-- 3 = 已完成 (管理员审批通过,余额已到账)
-- 4 = 已驳回 (管理员审批驳回)
-- 5 = 已取消 (用户取消或系统取消)
-- 提现订单状态说明:
-- 1 = 待审批 (用户申请提现,等待管理员审批)
-- 2 = 已完成 (管理员审批通过,已打款)
-- 3 = 已驳回 (管理员审批驳回,余额已退还)
-- 4 = 已取消 (用户取消)
-- 添加注释说明
ALTER TABLE `order_fund` MODIFY COLUMN `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '充值状态: 1-待付款 2-待确认 3-已完成 4-已驳回 5-已取消 | 提现状态: 1-待审批 2-已完成 3-已驳回 4-已取消';