- 扩大玩家ID随机数位宽降低碰撞概率 - 授信额度变更加 lockForUpdate 防并发下调 - 结算冲正与入账利用唯一索引实现幂等闸门 - 失败登录计数加锁防丢失 - 代理子树查询改用子查询替代全表 pluck - 修复返点默认值百分比单位转换 - 测试中全量 fake 广播事件防 CI 500
This commit is contained in:
@@ -30,7 +30,18 @@ final class CreditAmountScale
|
||||
|
||||
public static function majorToMinor(int $major, string $currencyCode): int
|
||||
{
|
||||
$major = max(0, $major);
|
||||
// 负值防御:所有调用方都应在传入前 max(0, ...) 兜底(available credit / balance / 等),
|
||||
// 此处 double-check 是兜底而非业务逻辑。若发生负数通常意味着上游计算 bug,
|
||||
// 记录 warning 让 production 暴露问题而不被静默吞掉。
|
||||
if ($major < 0) {
|
||||
\Illuminate\Support\Facades\Log::warning('CreditAmountScale::majorToMinor received negative value', [
|
||||
'major' => $major,
|
||||
'currency_code' => $currencyCode,
|
||||
'trace' => debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 4),
|
||||
]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
return $major * self::minorUnitFactor($currencyCode);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user