任务时间: 2025年06月06日 11:02:00
完成时间: 2025年06月06日 11:45:00
任务类型: 功能扩展
扩展消耗组系统功能,实现 FUND_CONFIGS 多账户种类消耗类型,支持按配置顺序依次从多个账户种类扣除资金。
用户选中了 FUND_CONFIGS 类型的代码,该类型已在枚举中定义但未完全实现。需要完善相关功能,使其能够支持多账户种类的依次消耗逻辑。
文件: app/Module/Game/Enums/CONSUME_TYPE.php
getAll() 方法中添加 FUND_CONFIGS 类型显示文件: app/Module/Game/Services/ConsumeService.php
新增方法:
checkFundConfigsConsume(): 检查多账户种类消耗条件executeFundConfigsConsume(): 执行多账户种类消耗getFundConfigIds(): 获取消耗项的账户种类ID列表功能特点:
target_id 和 extra_data.fund_config_ids 获取账户列表修复问题:
executeConsume() 方法的事务处理问题UCore\Db\Helper文件: app/Module/Game/Models/GameConsumeItem.php
getTargetName() 方法支持 FUND_CONFIGS 类型toDeductObject() 方法支持多账户种类的 protobuf 对象转换extra_data 中解析多个账户种类ID文件: app/Module/Game/Models/GameConsumeGroup.php
getTargetName() 方法支持 FUND_CONFIGS 类型显示GameConsumeItem 模型的方法避免重复代码文件: app/Module/Game/Commands/TestConsumeCommand.php
Res 对象和数组结果的处理文件: app/Module/Game/Docs/消耗组系统.md
新增内容:
FUND_CONFIGS 类型的详细说明账户ID获取:
target_id 字段extra_data.fund_config_ids 数组消耗顺序:
target_id)扣除余额检查:
事务处理:
{
"target_id": 1,
"quantity": 1000,
"extra_data": {
"fund_config_ids": [2, 3, 4]
}
}
此配置表示:消耗1000单位资金,优先从账户种类1扣除,不足时依次从账户种类2、3、4扣除。
test_fund_configstest_fund_configs_insufficient# 检查消耗条件
php artisan game:test-consume 10001 test_fund_configs --check
# 执行消耗
php artisan game:test-consume 10001 test_fund_configs
app/Module/Game/Enums/CONSUME_TYPE.php - 添加FUND_CONFIGS类型显示app/Module/Game/Services/ConsumeService.php - 实现多账户消耗逻辑app/Module/Game/Models/GameConsumeItem.php - 支持FUND_CONFIGS类型app/Module/Game/Models/GameConsumeGroup.php - 支持FUND_CONFIGS显示app/Module/Game/Commands/TestConsumeCommand.php - 修复结果处理app/Module/Game/Docs/消耗组系统.md - 更新文档说明扩展消耗组功能:实现FUND_CONFIGS多账户种类消耗
- 在CONSUME_TYPE枚举中添加FUND_CONFIGS类型到getAll()方法
- 在ConsumeService中实现checkFundConfigsConsume()和executeFundConfigsConsume()方法
- 支持按配置顺序依次从多个账户种类扣除资金
- 更新GameConsumeItem模型支持FUND_CONFIGS类型的目标名称显示
- 更新GameConsumeGroup模型支持FUND_CONFIGS类型的格式化显示
- 完善toDeductObject()方法支持多账户种类的protobuf对象转换
- 修复executeConsume()方法的事务处理问题
- 更新消耗组系统文档,添加FUND_CONFIGS类型详细说明
- 更新TestConsumeCommand支持Res对象和数组结果的处理
- 通过测试验证功能正常:单账户消耗和多账户依次消耗均工作正常
✅ 已完成 - 功能已实现并通过测试验证,代码已提交并推送到远程仓库。