LandTempService.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace App\Module\Game\Services;
  3. use App\Module\Game\Dtos\LandChangeTempDto;
  4. use App\Module\Game\Dtos\LandStatusTempDto;
  5. use App\Module\Game\Logics\LandTemp;
  6. /**
  7. * 土地临时数据服务类
  8. *
  9. * 提供土地临时数据相关的服务方法,用于外部调用
  10. * 统一处理所有类型的土地变更,不再区分类型变更和状态变更
  11. */
  12. class LandTempService
  13. {
  14. /**
  15. * 获取用户的所有土地变更临时数据(统一接口)
  16. *
  17. * @param int $userId 用户ID
  18. * @return array 用户的土地变更数据,键为土地ID,值为LandChangeTempDto对象
  19. */
  20. public static function getUserLandChanges(int $userId): array
  21. {
  22. return LandTemp::getUserLandChanges($userId);
  23. }
  24. /**
  25. * 获取用户特定土地的变更临时数据
  26. *
  27. * @param int $userId 用户ID
  28. * @param int $landId 土地ID
  29. * @return LandChangeTempDto|null 土地变更数据,不存在时返回null
  30. */
  31. public static function getUserLandChange(int $userId, int $landId): ?LandChangeTempDto
  32. {
  33. return LandTemp::getUserLandChange($userId, $landId);
  34. }
  35. /**
  36. * 获取用户的类型变更数据
  37. *
  38. * @param int $userId 用户ID
  39. * @return array 过滤后的类型变更数据
  40. */
  41. public static function getUserTypeChanges(int $userId): array
  42. {
  43. $allChanges = self::getUserLandChanges($userId);
  44. return array_filter($allChanges, function($change) {
  45. return $change->isTypeChange();
  46. });
  47. }
  48. /**
  49. * 获取用户的状态变更数据
  50. *
  51. * @param int $userId 用户ID
  52. * @return array 过滤后的状态变更数据
  53. */
  54. public static function getUserStatusChanges(int $userId): array
  55. {
  56. $allChanges = self::getUserLandChanges($userId);
  57. return array_filter($allChanges, function($change) {
  58. return $change->isStatusChange();
  59. });
  60. }
  61. /**
  62. * 清除用户的所有土地变更临时数据(统一接口)
  63. *
  64. * @param int $userId 用户ID
  65. * @return void
  66. */
  67. public static function clearUserLandChanges(int $userId): void
  68. {
  69. LandTemp::clearUserLandChanges($userId);
  70. }
  71. /**
  72. * 清除用户的所有土地临时数据
  73. *
  74. * @param int $userId 用户ID
  75. * @return void
  76. */
  77. public static function clearUserAllLandTemp(int $userId): void
  78. {
  79. LandTemp::clearUserAllLandTemp($userId);
  80. }
  81. }