任务时间: 2025-06-18 20:27
任务类型: API优化
状态: ✅ 已完成
针对用户反馈的"createTransferOut,createTransferIn 使用数组参数,是难以理解的"问题,对Transfer模块的核心API进行了全面优化,使用明确的参数列表替代数组参数,提高代码的可读性和类型安全性。
优化前:
public static function createTransferOut(array $data): TransferOrderDto|string
public static function createTransferIn(array $data): TransferOrderDto|string
优化后:
// 转出订单 - 明确参数
public static function createTransferOut(
int $transferAppId,
int $userId,
string $amount,
string $password,
?string $googleCode = null,
?string $outUserId = null,
?string $remark = null,
array $callbackData = []
): TransferOrderDto|string
// 转入订单 - 明确参数
public static function createTransferIn(
int $transferAppId,
int $userId,
string $businessId,
string $amount,
?string $outUserId = null,
?string $remark = null,
array $callbackData = []
): TransferOrderDto|string
新增方法结构:
createTransferOut() - 对外接口,使用明确参数createTransferOutFromArray() - 内部实现,保持向后兼容createTransferIn() - 对外接口,使用明确参数createTransferInFromArray() - 内部实现,保持向后兼容优化前:
$result = TransferService::createTransferOut($validatedData);
优化后:
$result = TransferService::createTransferOut(
transferAppId: $validatedData['transfer_app_id'],
userId: $validatedData['user_id'],
amount: $validatedData['amount'],
password: $validatedData['password'],
googleCode: $validatedData['google_code'] ?? null,
outUserId: $validatedData['out_user_id'] ?? null,
remark: $validatedData['remark'] ?? null,
callbackData: $validatedData['callback_data'] ?? []
);
快速创建方法:
// 快速转出 - 只需必要参数
public static function quickCreateTransferOut(
int $transferAppId,
int $userId,
string $amount,
string $password
): TransferOrderDto|string
// 快速转入 - 只需必要参数
public static function quickCreateTransferIn(
int $transferAppId,
int $userId,
string $businessId,
string $amount
): TransferOrderDto|string
向后兼容方法:
// 标记为废弃,但保持兼容
public static function createTransferOutFromArray(array $data): TransferOrderDto|string
public static function createTransferInFromArray(array $data): TransferOrderDto|string
FromArray 方法// 转出订单
$result = TransferService::createTransferOut(
transferAppId: 1,
userId: 12345,
amount: '100.50',
password: 'user_password'
);
// 转入订单
$result = TransferService::createTransferIn(
transferAppId: 1,
userId: 12345,
businessId: 'BIZ_20250618_001',
amount: '100.50'
);
$result = TransferService::createTransferOut(
transferAppId: 1,
userId: 12345,
amount: '100.50',
password: 'user_password',
googleCode: '123456',
outUserId: 'external_user_123',
remark: '游戏充值',
callbackData: ['game_id' => 'abc']
);
$result = TransferService::createTransferOut(/* 参数 */);
if (is_string($result)) {
// 处理错误
$errorMessage = $result;
} else {
// 处理成功
$order = $result; // TransferOrderDto 对象
}
直接使用新的参数化API:
TransferService::createTransferOut(
transferAppId: $appId,
userId: $userId,
amount: $amount,
password: $password
);
可以继续使用数组参数(标记为废弃):
TransferService::createTransferOutFromArray($data);
逐步将数组参数调用替换为新的参数化调用。
API_USAGE.md 详细使用指南通过这次优化,Transfer模块的API变得更加:
这种优化模式可以作为其他模块API设计的参考标准。