RewardCollectorService.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace App\Module\Game\Services;
  3. use App\Module\Game\Logics\RewardCollectorLogic;
  4. /**
  5. * 奖励数据收集服务
  6. *
  7. * 用于收集本次请求中的所有奖励数据,包括物品奖励和代币奖励
  8. * 通过静态变量实现,确保在单次请求中能够累积所有奖励信息
  9. */
  10. class RewardCollectorService
  11. {
  12. /**
  13. * 添加物品奖励
  14. *
  15. * @param int $userId 用户ID
  16. * @param int $itemId 物品ID
  17. * @param int $instanceId 物品实例ID
  18. * @param int $quantity 奖励数量
  19. * @return void
  20. */
  21. public static function addItemReward(int $userId, int $itemId, int $instanceId, int $quantity): void
  22. {
  23. RewardCollectorLogic::addItemReward($userId, $itemId, $instanceId, $quantity);
  24. }
  25. /**
  26. * 添加代币奖励
  27. *
  28. * @param int $userId 用户ID
  29. * @param int $coinType 代币类型
  30. * @param int $quantity 奖励数量
  31. * @return void
  32. */
  33. public static function addCoinReward(int $userId, int $coinType, int $quantity): void
  34. {
  35. RewardCollectorLogic::addCoinReward($userId, $coinType, $quantity);
  36. }
  37. /**
  38. * 添加神像奖励
  39. *
  40. * @param int $userId 用户ID
  41. * @param int $godType 神像类型
  42. * @param int $diff 时间差值(秒)
  43. * @param int $quantity 奖励数量
  44. * @return void
  45. */
  46. public static function addGodReward(int $userId, int $godType, int $diff, int $quantity): void
  47. {
  48. RewardCollectorLogic::addGodReward($userId, $godType, $diff, $quantity);
  49. }
  50. /**
  51. * 获取本次请求的所有奖励数据
  52. *
  53. * @param int|null $userId 用户ID,如果为null则返回所有用户的数据
  54. * @return array 奖励数据数组,包含items、coins和gods
  55. */
  56. public static function getRewards(?int $userId = null): array
  57. {
  58. return RewardCollectorLogic::getRewards($userId);
  59. }
  60. /**
  61. * 清空本次请求的奖励数据
  62. *
  63. * @return void
  64. */
  65. public static function clearRewards(): void
  66. {
  67. RewardCollectorLogic::clearRewards();
  68. }
  69. /**
  70. * 检查是否有奖励数据
  71. *
  72. * @param int|null $userId 用户ID,如果为null则检查所有用户
  73. * @return bool
  74. */
  75. public static function hasRewards(?int $userId = null): bool
  76. {
  77. return RewardCollectorLogic::hasRewards($userId);
  78. }
  79. }