修正Transfer模块中汇率概念的理解和实现,确认汇率表示"1个外部币能兑换多少内部币",并修改相关代码和文档。
2025-06-19 00:15
在Transfer模块中,汇率的使用存在概念不一致的问题:
外部金额 = 内部金额 × 汇率内部金额 = 外部金额 ÷ 汇率这导致了汇率概念的混乱,需要统一确认汇率的定义。
任务明确要求确认汇率表示"1个外部币能兑换多少内部币",并据此修正所有相关代码和文档。
汇率 = 内部币数量 / 外部币数量
即:1个外部币能兑换多少内部币
外部金额 = 内部金额 ÷ 汇率内部金额 = 外部金额 × 汇率转出订单创建 (修正前):
$outAmount = bcmul($amount, (string) $app->exchange_rate, 10); // 错误
转出订单创建 (修正后):
// 计算金额(转出:内部金额转换为外部金额)
$amount = (string) $data['amount']; // 内部金额
$outAmount = bcdiv($amount, (string) $app->exchange_rate, 10); // 外部金额 = 内部金额 ÷ 汇率
转入订单创建 (修正前):
$amount = bcdiv($outAmount, (string) $app->exchange_rate, 10); // 正确,但注释不清晰
转入订单创建 (修正后):
// 计算金额(转入:外部金额转换为内部金额)
$outAmount = (string) $data['amount']; // 外部金额
$amount = bcmul($outAmount, (string) $app->exchange_rate, 10); // 内部金额 = 外部金额 × 汇率
充值费用计算 (修正前):
$internalAmount = bcdiv($amount, (string) $transferApp->exchange_rate, 10); // 错误
充值费用计算 (修正后):
// 将三方金额转换为农场内部金额(充值:外部金额转内部金额)
$internalAmount = bcmul($amount, (string) $transferApp->exchange_rate, 10);
提现费用计算 (修正前):
$internalAmount = bcmul($amount, (string) $transferApp->exchange_rate, 10); // 错误
提现费用计算 (修正后):
// 将三方金额转换为农场内部金额(提现:外部金额转内部金额)
$internalAmount = bcmul($amount, (string) $transferApp->exchange_rate, 10);
transfer_apps表字段注释:
-- 修正前
`exchange_rate` decimal(10,4) NOT NULL DEFAULT '1.0000' COMMENT '汇率(外部应用:业务)'
-- 修正后
`exchange_rate` decimal(10,4) NOT NULL DEFAULT '1.0000' COMMENT '汇率(1个外部币能兑换多少内部币)'
transfer_orders表字段注释:
-- 修正前
`exchange_rate` decimal(10,4) NOT NULL COMMENT '使用汇率'
-- 修正后
`exchange_rate` decimal(10,4) NOT NULL COMMENT '使用汇率(1外部币=N内部币)'
创建了详细的 EXCHANGE_RATE_CONCEPT.md 文档,包含:
转出场景:
转入场景:
转出场景:
转入场景:
÷ 汇率)× 汇率)× 汇率)这个修正可能会影响现有的汇率数据,需要:
任务描述中提到"别忘记修改后台页面的显示问题",需要:
Transfer模块汇率概念修正完全成功,实现了:
这个修正消除了之前汇率概念的混乱,确保了Transfer模块中汇率使用的一致性和正确性。所有的转入、转出、充值、提现操作现在都基于统一的汇率概念进行计算。