|
|
7 månader sedan | |
|---|---|---|
| .. | ||
| API.md | 7 månader sedan | |
| DATABASE.md | 7 månader sedan | |
| DEV.md | 7 månader sedan | |
| README.md | 7 månader sedan | |
| README_AUTO.md | 7 månader sedan | |
更新时间: 2025-06-15
模块路径:app/Module/Transfer/
基于模块: TransferOld
Transfer 模块是一个全新设计的资金划转/流转系统,用于处理用户与外部应用之间的资金转入转出操作。该模块基于TransferOld模块重新设计,采用现代化的架构模式,支持多种货币、多个外部应用的资金流转,并提供完整的订单管理、状态跟踪和自动化处理功能。
app/Module/Transfer/
├── AdminControllers/ # 后台管理控制器目录
│ ├── Helper/ # 后台辅助类目录
│ │ ├── TransferAppHelper.php # 应用管理辅助类
│ │ ├── TransferOrderHelper.php # 订单管理辅助类
│ │ ├── FilterHelper.php # 筛选辅助类
│ │ ├── GridHelper.php # 表格辅助类
│ │ ├── ShowHelper.php # 详情辅助类
│ │ └── FormHelper.php # 表单辅助类
│ ├── Tools/ # 后台工具目录
│ │ ├── RetryOrderTool.php # 重试订单工具
│ │ ├── ManualCompleteTool.php # 手动补单工具
│ │ └── ExportOrderTool.php # 订单导出工具
│ ├── TransferAppController.php # 应用管理控制器
│ └── TransferOrderController.php # 订单管理控制器
├── Casts/ # 模型转换器目录
│ ├── TransferAppCast.php # 应用转换器
│ ├── TransferOrderCast.php # 订单转换器
│ └── CallbackDataCast.php # 回调数据转换器
├── Commands/ # 命令行工具目录
│ ├── TransferProcessCommand.php # 订单处理命令
│ ├── TransferCallbackCommand.php # 回调处理命令
│ ├── TransferStatsCommand.php # 统计命令
│ └── TransferCleanCommand.php # 数据清理命令
├── Config/ # 配置文件目录
│ └── transfer.php # 模块配置文件
├── Databases/ # 数据库相关目录
│ ├── GenerateSql/ # SQL生成脚本目录
│ │ ├── create_tables.sql # 创建表SQL
│ │ ├── init_data.sql # 初始化数据SQL
│ │ └── indexes.sql # 索引SQL
│ └── README.md # 数据库说明文档
├── Docs/ # 文档目录
│ ├── README.md # 模块设计文档
│ ├── API.md # API接口文档
│ ├── DATABASE.md # 数据库设计文档
│ ├── DEV.md # 开发进度文档
│ └── README_AUTO.md # 自动生成声明文档
├── Dtos/ # 数据传输对象目录
│ ├── TransferAppDto.php # 应用DTO
│ ├── TransferOrderDto.php # 订单DTO
│ └── CallbackResultDto.php # 回调结果DTO
├── Enums/ # 枚举类目录
│ ├── TransferStatus.php # 订单状态枚举
│ ├── TransferType.php # 订单类型枚举
│ └── CallbackStatus.php # 回调状态枚举
├── Events/ # 事件目录
│ ├── TransferOrderCreated.php # 订单创建事件
│ ├── TransferOrderCompleted.php # 订单完成事件
│ └── TransferCallbackReceived.php # 回调接收事件
├── Exceptions/ # 异常类目录
│ ├── TransferException.php # 划转异常基类
│ ├── InsufficientBalanceException.php # 余额不足异常
│ └── ExternalApiException.php # 外部API异常
├── Jobs/ # 队列任务目录
│ ├── ProcessTransferOrderJob.php # 处理订单任务
│ ├── SendCallbackJob.php # 发送回调任务
│ └── RetryFailedOrderJob.php # 重试失败订单任务
├── Listeners/ # 事件监听器目录
│ ├── TransferOrderListener.php # 订单事件监听器
│ └── TransferCallbackListener.php # 回调事件监听器
├── Logics/ # 逻辑层目录
│ ├── TransferLogic.php # 划转业务逻辑
│ ├── OrderLogic.php # 订单处理逻辑
│ ├── CallbackLogic.php # 回调处理逻辑
│ └── ExternalApiLogic.php # 外部API调用逻辑
├── Models/ # 数据模型目录
│ ├── TransferApp.php # 划转应用模型
│ ├── TransferOrder.php # 划转订单模型
│ └── README.md # 模型说明文档
├── Providers/ # 服务提供者目录
│ └── TransferServiceProvider.php # 模块服务提供者
├── Repositories/ # 数据仓库目录
│ ├── TransferAppRepository.php # 应用仓库
│ ├── TransferOrderRepository.php # 订单仓库
│ └── README.md # 仓库说明文档
├── Routes/ # 路由目录
│ └── admin.php # 后台路由
├── Services/ # 服务层目录
│ ├── TransferService.php # 对外服务接口
│ ├── ExternalApiService.php # 外部API服务
│ └── StatisticsService.php # 统计服务
├── Tests/ # 测试目录
│ ├── Unit/ # 单元测试目录
│ │ ├── TransferServiceTest.php # 服务层测试
│ │ ├── TransferLogicTest.php # 逻辑层测试
│ │ └── TransferValidationTest.php # 验证测试
│ ├── Feature/ # 功能测试目录
│ │ ├── TransferApiTest.php # API测试
│ │ └── TransferFlowTest.php # 流程测试
│ └── README.md # 测试说明文档
├── Validations/ # 验证类目录
│ ├── TransferInValidation.php # 转入验证
│ ├── TransferOutValidation.php # 转出验证
│ └── TransferAppValidation.php # 应用验证
├── Validators/ # 验证器目录
│ ├── TransferAppValidator.php # 应用验证器
│ ├── BusinessIdValidator.php # 业务ID验证器
│ ├── TransferOpenValidator.php # 划转开放验证器
│ ├── ExternalApiValidator.php # 外部API验证器
│ └── AmountValidator.php # 金额验证器
└── README.md # 模块主文档
TransferService.php - 对外提供的主要服务接口
主要方法:
createTransferOut() - 创建转出订单createTransferIn() - 创建转入订单getOrderInfo() - 获取订单信息getAppConfig() - 获取应用配置processCallback() - 处理回调结果TransferLogic.php - 核心业务逻辑处理
OrderLogic.php - 订单处理逻辑
CallbackLogic.php - 回调处理逻辑
TransferApp.php - 划转应用配置模型
TransferOrder.php - 划转订单模型
TransferStatus.php - 订单状态枚举
enum TransferStatus: int
{
case CREATED = 1; // 已创建
case PROCESSING = 20; // 处理中
case CALLBACK = 30; // 已回调
case COMPLETED = 100; // 已完成
case FAILED = -1; // 失败
}
TransferType.php - 订单类型枚举
enum TransferType: int
{
case IN = 1; // 转入
case OUT = 2; // 转出
}
TransferInValidation.php - 转入验证类
TransferOutValidation.php - 转出验证类
Transfer模块不直接提供API处理器,而是通过OpenAPI模块进行对外开放:
ProcessTransferOrderJob.php - 订单处理任务
SendCallbackJob.php - 回调发送任务
RetryFailedOrderJob.php - 重试失败订单任务
TransferOrderCreated.php - 订单创建事件
TransferOrderCompleted.php - 订单完成事件
TransferCallbackReceived.php - 回调接收事件
TransferException.php - 划转异常基类
InsufficientBalanceException.php - 余额不足异常
ExternalApiException.php - 外部API异常
CREATE TABLE `kku_transfer_apps` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`keyname` varchar(50) NOT NULL COMMENT '应用标识',
`title` varchar(100) NOT NULL COMMENT '应用名称',
`description` text COMMENT '应用描述',
`out_id` int NOT NULL COMMENT '外部应用ID',
`out_id2` int DEFAULT NULL COMMENT '外部应用ID2-开放',
`out_id3` int DEFAULT NULL COMMENT '外部应用ID3-三方平台ID',
`currency_id` int NOT NULL COMMENT '货币类型',
`fund_id` int NOT NULL COMMENT '资金账户类型',
`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 '汇率(钱包:业务)',
`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 '是否启用',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `keyname` (`keyname`),
KEY `out_id` (`out_id`),
KEY `currency_id` (`currency_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='划转应用配置表';
CREATE TABLE `kku_transfer_orders` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`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 '货币类型',
`fund_id` int NOT NULL COMMENT '资金账户类型',
`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 '使用汇率',
`callback_data` json DEFAULT NULL COMMENT '回调数据',
`error_message` text 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,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `out_order_unique` (`out_id`, `out_order_id`),
KEY `transfer_app_id` (`transfer_app_id`),
KEY `user_id` (`user_id`),
KEY `status` (`status`),
KEY `type` (`type`),
KEY `created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='划转订单表';
当应用配置中的外部API地址字段为空(NULL)时,系统将启用农场内部运转模式:
order_out_create_url不为空:调用外部API创建订单order_out_create_url为空:跳过外部调用,直接完成order_callback_url不为空:发送回调通知order_callback_url为空:跳过回调,直接完成TransferService 供客户端模块调用createTransferOut(), getOrderInfo(), getAvailableApps()POST /openapi/transfer/in - 创建转入订单POST /openapi/transfer/out - 创建转出订单GET /openapi/transfer/order/{businessId} - 查询订单状态TransferAppController, TransferOrderController文档创建时间: 2025-06-15 14:53
基于模块: TransferOld
设计原则: 现代化架构 + 业务逻辑继承