修改奖励和消耗收集系统 collectRewardAndDeductData,实现按用户区分收集和使用,解决原来没有区分用户的问题。
原来的奖励扣除收集系统在收集数据时没有区分用户,所有用户的奖励和扣除数据都混在一起,无法准确追踪每个用户的具体收益和消耗情况。
文件:app/Module/Game/Services/RewardCollectorService.php
修改内容:
addItemReward() 方法增加 $userId 参数addCoinReward() 方法增加 $userId 参数addGodReward() 方法增加 $userId 参数getRewards() 方法支持可选的 $userId 参数hasRewards() 方法支持可选的 $userId 参数文件:app/Module/Game/Services/DeductCollectorService.php
修改内容:
addItemDeduct() 方法增加 $userId 参数addCoinDeduct() 方法增加 $userId 参数getDeducts() 方法支持可选的 $userId 参数hasDeducts() 方法支持可选的 $userId 参数getItemDeducts() 和 getCoinDeducts() 方法文件:app/Module/Game/Logics/RewardCollectorLogic.php
修改内容:
[user_id => [item_key => data]]文件:app/Module/Game/Logics/DeductCollectorLogic.php
修改内容:
[user_id => [item_key => data]]文件:app/Module/Game/Listeners/ItemQuantityChangedListener.php
修改内容:
collectRewardAndDeductData() 方法传递 $event->userId 参数文件:app/Module/Game/Listeners/FundChangedListener.php
修改内容:
collectRewardAndDeductData() 方法传递 $event->userId 参数文件:app/Module/Game/Docs/奖励扣除收集系统.md
更新内容:
文件:AiWork/2024年12月/18日1500-Response奖励扣除数据实现.md
更新内容:
// 物品奖励数据
[
'item_1_0' => ['item_id' => 1, 'instance_id' => 0, 'quantity' => 10],
'item_2_0' => ['item_id' => 2, 'instance_id' => 0, 'quantity' => 5]
]
// 代币奖励数据
[
1 => ['type' => 1, 'quantity' => 100],
2 => ['type' => 2, 'quantity' => 50]
]
// 物品奖励数据(按用户分组)
[
1001 => [
'item_1_0' => ['user_id' => 1001, 'item_id' => 1, 'instance_id' => 0, 'quantity' => 10]
],
1002 => [
'item_2_0' => ['user_id' => 1002, 'item_id' => 2, 'instance_id' => 0, 'quantity' => 5]
]
]
// 代币奖励数据(按用户分组)
[
1001 => [
1 => ['user_id' => 1001, 'type' => 1, 'quantity' => 100]
],
1002 => [
2 => ['user_id' => 1002, 'type' => 2, 'quantity' => 50]
]
]
// 获取指定用户的奖励数据
$userRewards = RewardCollectorService::getRewards($userId);
// 获取指定用户的扣除数据
$userDeducts = DeductCollectorService::getDeducts($userId);
// 检查指定用户是否有奖励数据
$hasUserRewards = RewardCollectorService::hasRewards($userId);
// 检查指定用户是否有扣除数据
$hasUserDeducts = DeductCollectorService::hasDeducts($userId);
创建了专门的测试命令:php artisan test:reward-deduct-collector-user-separation
所有用户奖励数据:
- 物品奖励数量:3
- 代币奖励数量:3
- 神像奖励数量:1
用户1001奖励数据:
- 物品奖励数量:2
- 代币奖励数量:2
- 神像奖励数量:1
用户1002奖励数据:
- 物品奖励数量:1
- 代币奖励数量:1
- 神像奖励数量:0
✅ 用户数据隔离验证通过
此次修改成功实现了奖励扣除收集系统的用户区分功能,解决了原来数据混合的问题。通过按用户分组存储和查询,系统现在可以精确追踪每个用户的收益和消耗情况,为后续的数据分析和用户体验优化提供了坚实的基础。