更新时间: 2025-06-15
模块: Transfer
表前缀: kkutransfer
Transfer 模块使用2个主要数据表:
kku_transfer_apps: 划转应用配置表kku_transfer_orders: 划转订单表存储外部应用的划转配置信息,包括API地址、汇率设置、账户映射等。
CREATE TABLE `kku_transfer_apps` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`keyname` varchar(50) NOT NULL COMMENT '应用标识符',
`title` varchar(100) NOT NULL COMMENT '应用显示名称',
`description` text COMMENT '应用描述信息',
`out_id2` int DEFAULT NULL COMMENT '开放接口ID',
`out_id3` int DEFAULT NULL COMMENT '三方平台ID',
`currency_id` int NOT NULL COMMENT '货币类型ID',
`fund_id` int NOT NULL COMMENT '资金账户类型ID',
`fund_to_uid` int DEFAULT NULL COMMENT '转入目标账户UID',
`fund_in_uid` int DEFAULT NULL COMMENT '转入来源账户UID',
`exchange_rate` decimal(10,4) NOT NULL DEFAULT '1.0000' COMMENT '汇率(1个外部币能兑换多少内部币)',
`order_callback_url` varchar(255) DEFAULT NULL COMMENT '结果通知API地址(为空则不通知)',
`order_in_info_url` varchar(255) DEFAULT NULL COMMENT '转入查询API地址(为空则不查询)',
`order_out_create_url` varchar(255) DEFAULT NULL COMMENT '转出创建API地址(为空则不创建)',
`order_out_info_url` varchar(255) DEFAULT NULL COMMENT '转出查询API地址(为空则不查询)',
`is_enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用(1=启用,0=禁用)',
`created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_keyname` (`keyname`),
KEY `idx_out_id` (`out_id`),
KEY `idx_currency_id` (`currency_id`),
KEY `idx_enabled` (`is_enabled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='划转应用配置表';
| 字段名 | 类型 | 说明 | 示例值 |
|---|---|---|---|
| id | int unsigned | 主键ID | 1 |
| keyname | varchar(50) | 应用唯一标识符 | game_app_a |
| title | varchar(100) | 应用显示名称 | 游戏应用A |
| description | text | 应用描述信息 | 热门游戏应用 |
| out_id | int | 外部应用ID | 1001 |
| out_id2 | int | 外部应用ID2(开放接口) | 2001 |
| out_id3 | int | 外部应用ID3(三方平台ID) | 3001 |
| currency_id | int | 货币类型(1=金币,2=钻石,3=人民币,4=美元) | 2 |
| fund_id | int | 资金账户类型ID | 2 |
| fund_to_uid | int | 转入目标账户UID | 15 |
| fund_in_uid | int | 转入来源账户UID | 16 |
| exchange_rate | decimal(10,4) | 汇率比例(1外部币=N内部币) | 1.0450 |
| order_callback_url | varchar(255) | 结果通知API地址(为空则不通知) | https://api.game.com/callback |
| order_in_info_url | varchar(255) | 转入查询API地址(为空则不查询) | https://api.game.com/order/info |
| order_out_create_url | varchar(255) | 转出创建API地址(为空则不创建) | https://api.game.com/order/create |
| order_out_info_url | varchar(255) | 转出查询API地址(为空则不查询) | https://api.game.com/order/status |
| is_enabled | tinyint(1) | 是否启用 | 1 |
PRIMARY: 主键索引uk_keyname: 应用标识符唯一索引idx_out_id2: 开放接口ID索引idx_currency_id: 货币类型索引idx_enabled: 启用状态索引外部API地址配置规则:
order_callback_url 为空:不发送结果通知,订单完成后仅更新内部状态order_in_info_url 为空:不查询外部转入状态,仅依赖内部逻辑判断order_out_create_url 为空:不调用外部创建接口,仅进行内部资金操作order_out_info_url 为空:不查询外部转出状态,仅依赖内部逻辑判断应用ID字段说明:
out_id2: 开放接口ID,用于开放API对接out_id3: 三方平台ID,用于第三方平台集成存储具体的划转订单信息,包括订单状态、金额、处理时间等。
CREATE TABLE `kku_transfer_orders` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`transfer_app_id` int unsigned NOT NULL COMMENT '划转应用ID',
`out_id` int NOT NULL COMMENT '外部应用ID',
`out_order_id` varchar(100) NOT NULL COMMENT '外部订单ID',
`out_user_id` varchar(50) DEFAULT NULL COMMENT '外部用户ID',
`user_id` int unsigned NOT NULL COMMENT '内部用户ID',
`currency_id` int NOT NULL COMMENT '货币类型ID',
`fund_id` int NOT NULL COMMENT '资金账户类型ID',
`type` tinyint NOT NULL COMMENT '订单类型(1=转入,2=转出)',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '订单状态',
`out_amount` decimal(30,10) NOT NULL COMMENT '外部金额',
`amount` decimal(30,10) NOT NULL COMMENT '内部金额',
`exchange_rate` decimal(10,4) NOT NULL COMMENT '使用汇率(1外部币=N内部币)',
`callback_data` json DEFAULT NULL COMMENT '回调数据',
`error_message` text COMMENT '错误信息',
`remark` varchar(255) DEFAULT NULL COMMENT '备注信息',
`processed_at` timestamp NULL DEFAULT NULL COMMENT '处理时间',
`callback_at` timestamp NULL DEFAULT NULL COMMENT '回调时间',
`completed_at` timestamp NULL DEFAULT NULL COMMENT '完成时间',
`created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_out_order` (`out_id`, `out_order_id`),
KEY `idx_transfer_app_id` (`transfer_app_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_status` (`status`),
KEY `idx_type` (`type`),
KEY `idx_created_at` (`created_at`),
KEY `idx_processed_at` (`processed_at`),
CONSTRAINT `fk_transfer_orders_app` FOREIGN KEY (`transfer_app_id`) REFERENCES `kku_transfer_apps` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='划转订单表';
| 字段名 | 类型 | 说明 | 示例值 |
|---|---|---|---|
| id | bigint unsigned | 主键ID | 12345 |
| transfer_app_id | int unsigned | 划转应用ID | 1 |
| out_id | int | 外部应用ID | 1001 |
| out_order_id | varchar(100) | 外部订单ID | EXT_ORDER_123456 |
| out_user_id | varchar(50) | 外部用户ID | EXT_USER_789 |
| user_id | int unsigned | 内部用户ID | 456 |
| currency_id | int | 货币类型ID | 2 |
| fund_id | int | 资金账户类型ID | 2 |
| type | tinyint | 订单类型 | 1 |
| status | tinyint | 订单状态 | 100 |
| out_amount | decimal(30,10) | 外部金额 | 100.5000000000 |
| amount | decimal(30,10) | 内部金额 | 96.1538461538 |
| exchange_rate | decimal(10,4) | 使用汇率(1外部币=N内部币) | 0.9568 |
| callback_data | json | 回调数据 | {"game_id": 123} |
| error_message | text | 错误信息 | 外部API调用失败 |
| remark | varchar(255) | 备注信息 | 游戏充值 |
| processed_at | timestamp | 处理时间 | 2025-06-15 14:54:00 |
| callback_at | timestamp | 回调时间 | 2025-06-15 14:55:00 |
| completed_at | timestamp | 完成时间 | 2025-06-15 14:56:00 |
PRIMARY: 主键索引uk_out_order: 外部订单唯一索引(防重复)idx_transfer_app_id: 划转应用ID索引idx_user_id: 用户ID索引idx_status: 订单状态索引idx_type: 订单类型索引idx_created_at: 创建时间索引idx_processed_at: 处理时间索引fk_transfer_orders_app: 关联划转应用表1: 转入 (IN) - 从外部应用向用户转入2: 转出 (OUT) - 从用户向外部应用转出1: 已创建 (CREATED) - 订单已创建,等待处理20: 处理中 (PROCESSING) - 正在处理中,等待回调30: 已回调 (CALLBACK) - 回调成功,等待最终确认100: 已完成 (COMPLETED) - 订单处理完成-1: 失败 (FAILED) - 订单处理失败1: 金币2: 钻石3: 人民币4: 美元INSERT INTO `kku_transfer_apps` (
`keyname`, `title`, `description`, `out_id`, `out_id2`, `out_id3`, `currency_id`, `fund_id`,
`exchange_rate`, `order_callback_url`, `order_out_create_url`, `is_enabled`, `created_at`, `updated_at`
) VALUES
('game_app_demo', '演示游戏应用', '用于测试的演示应用', 1001, 2001, 3001, 2, 2, 1.0000, 'https://demo.game.com/callback', 'https://demo.game.com/order/create', 1, NOW(), NOW()),
('game_app_a', '游戏应用A', '热门游戏应用A', 1002, 2002, NULL, 2, 2, 1.0450, 'https://api.game-a.com/callback', 'https://api.game-a.com/order/create', 1, NOW(), NOW()),
('farm_internal', '农场内部应用', '仅在农场内部运转,不调用外部API', 1003, NULL, NULL, 1, 1, 1.0000, NULL, NULL, 1, NOW(), NOW());
建议定期清理超过6个月的已完成订单数据:
-- 清理6个月前的已完成订单
DELETE FROM `kku_transfer_orders`
WHERE `status` = 100
AND `completed_at` < DATE_SUB(NOW(), INTERVAL 6 MONTH);
-- 按应用统计订单数量
SELECT
ta.title AS app_name,
COUNT(*) AS total_orders,
SUM(CASE WHEN to.type = 1 THEN 1 ELSE 0 END) AS in_orders,
SUM(CASE WHEN to.type = 2 THEN 1 ELSE 0 END) AS out_orders,
SUM(to.amount) AS total_amount
FROM kku_transfer_orders to
LEFT JOIN kku_transfer_apps ta ON to.transfer_app_id = ta.id
WHERE to.created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY ta.id, ta.title
ORDER BY total_amount DESC;
文档更新时间: 2025-06-15 14:53
数据库版本: MySQL 8.0+
字符集: utf8mb4_unicode_ci