为App\Module\Game\Services\ConsumeService::checkConsume方法增加一个倍数参数,用于验证几倍消耗。
$multiplier参数,类型为float,默认值为1.0将倍数参数传递给checkConsumeItem方法
public static function checkConsume(int $userId, $consumeGroupCode, float $multiplier = 1.0): Res
$multiplier参数,默认值为1.0checkItemConsumecheckFundConfigConsumecheckCurrencyConsume$multiplier参数,默认值为1.0ceil($consumeItem->quantity * $multiplier)计算所需数量$multiplier参数,默认值为1.0$consumeItem->quantity * $multiplier计算所需金额$multiplier参数,默认值为1.0$consumeItem->quantity * $multiplier计算所需金额$multiplier参数,类型为float,默认值为1.0将倍数参数传递给executeConsumeItem方法
public static function executeConsume(int $userId, $consumeGroupCode, string $source, int $sourceId = 0, $check = true, float $multiplier = 1.0): Res
$multiplier参数,默认值为1.0executeItemConsumeexecuteFundConfigConsumeexecuteCurrencyConsume$multiplier参数,默认值为1.0ceil($consumeItem->quantity * $multiplier)计算实际消耗数量$multiplier参数,默认值为1.0$consumeItem->quantity * $multiplier计算实际消耗金额$multiplier参数,默认值为1.0$consumeItem->quantity * $multiplier计算实际消耗金额1.0// 检查正常消耗(1倍)
$result = ConsumeService::checkConsume($userId, $consumeGroupId);
// 检查2倍消耗
$result = ConsumeService::checkConsume($userId, $consumeGroupId, 2.0);
// 检查0.5倍消耗
$result = ConsumeService::checkConsume($userId, $consumeGroupId, 0.5);
// 执行正常消耗(1倍)
$result = ConsumeService::executeConsume($userId, $consumeGroupId, 'source', $sourceId);
// 执行2倍消耗
$result = ConsumeService::executeConsume($userId, $consumeGroupId, 'source', $sourceId, true, 2.0);
// 执行3倍消耗,不检查条件
$result = ConsumeService::executeConsume($userId, $consumeGroupId, 'source', $sourceId, false, 3.0);
ceil()函数向上取整,确保物品数量为整数为ConsumeService执行消耗方法增加倍数参数支持
- 为executeConsume方法添加multiplier参数,支持执行几倍消耗
- 修改executeConsumeItem、executeItemConsume、executeFundConfigConsume、executeCurrencyConsume方法支持倍数参数
- 物品消耗使用ceil()向上取整确保数量为整数
- 账户种类和币种消耗直接使用倍数计算实际消耗金额
- 在备注中记录倍数信息,便于追踪
- 修复CraftService中executeConsume调用方式,正确传递倍数参数
- 保持向后兼容性,现有调用无需修改
2025年06月05日 19:44