FarmHouseConfigRepository.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace App\Module\Farm\Repositories;
  3. use App\Module\Farm\Models\FarmHouseConfig;
  4. use Dcat\Admin\Repositories\EloquentRepository;
  5. /**
  6. * 房屋等级配置仓库
  7. *
  8. * 提供房屋等级配置数据的访问和操作功能。
  9. * 该类是房屋等级配置模块与后台管理系统的桥梁,用于处理房屋等级配置数据的CRUD操作。
  10. */
  11. class FarmHouseConfigRepository extends EloquentRepository
  12. {
  13. /**
  14. * 模型类名
  15. *
  16. * @var string
  17. */
  18. protected $eloquentClass = FarmHouseConfig::class;
  19. /**
  20. * 根据等级获取房屋配置
  21. *
  22. * @param int $level
  23. * @return FarmHouseConfig|null
  24. */
  25. public function findByLevel(int $level): ?FarmHouseConfig
  26. {
  27. return FarmHouseConfig::where('level', $level)->first();
  28. }
  29. /**
  30. * 获取最大房屋等级
  31. *
  32. * @return int
  33. */
  34. public function getMaxLevel(): int
  35. {
  36. return FarmHouseConfig::max('level') ?? 1;
  37. }
  38. /**
  39. * 获取需要降级检查的房屋等级配置
  40. *
  41. * @return array
  42. */
  43. public function findNeedDowngradeCheck(): array
  44. {
  45. return FarmHouseConfig::whereNotNull('downgrade_days')
  46. ->where('level', '>', 1)
  47. ->pluck('downgrade_days', 'level')
  48. ->toArray();
  49. }
  50. /**
  51. * 获取下一级房屋配置
  52. *
  53. * @param int $currentLevel
  54. * @return FarmHouseConfig|null
  55. */
  56. public function findNextLevel(int $currentLevel): ?FarmHouseConfig
  57. {
  58. return FarmHouseConfig::where('level', $currentLevel + 1)->first();
  59. }
  60. }