FarmUserReferralRepository.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace App\Module\Farm\Repositories;
  3. use App\Module\Farm\Models\FarmUserReferral;
  4. use Dcat\Admin\Repositories\EloquentRepository;
  5. use Illuminate\Database\Eloquent\Collection;
  6. /**
  7. * 用户推荐关系仓库
  8. *
  9. * 提供用户推荐关系数据的访问和操作功能。
  10. * 该类是用户推荐关系模块与后台管理系统的桥梁,用于处理用户推荐关系数据的CRUD操作。
  11. */
  12. class FarmUserReferralRepository extends EloquentRepository
  13. {
  14. /**
  15. * 模型类名
  16. *
  17. * @var string
  18. */
  19. protected $eloquentClass = FarmUserReferral::class;
  20. /**
  21. * 获取用户的推荐人
  22. *
  23. * @param int $userId
  24. * @return Collection
  25. */
  26. public function findReferrersByUserId(int $userId): Collection
  27. {
  28. return FarmUserReferral::where('user_id', $userId)
  29. ->orderBy('level')
  30. ->get();
  31. }
  32. /**
  33. * 获取用户的直接推荐人
  34. *
  35. * @param int $userId
  36. * @return FarmUserReferral|null
  37. */
  38. public function findDirectReferrer(int $userId): ?FarmUserReferral
  39. {
  40. return FarmUserReferral::where('user_id', $userId)
  41. ->where('level', 1)
  42. ->first();
  43. }
  44. /**
  45. * 获取用户推荐的人
  46. *
  47. * @param int $referrerId
  48. * @return Collection
  49. */
  50. public function findReferredByReferrerId(int $referrerId): Collection
  51. {
  52. return FarmUserReferral::where('referrer_id', $referrerId)
  53. ->orderBy('level')
  54. ->get();
  55. }
  56. /**
  57. * 获取用户直接推荐的人
  58. *
  59. * @param int $referrerId
  60. * @return Collection
  61. */
  62. public function findDirectReferred(int $referrerId): Collection
  63. {
  64. return FarmUserReferral::where('referrer_id', $referrerId)
  65. ->where('level', 1)
  66. ->get();
  67. }
  68. /**
  69. * 获取用户间接推荐的人
  70. *
  71. * @param int $referrerId
  72. * @return Collection
  73. */
  74. public function findIndirectReferred(int $referrerId): Collection
  75. {
  76. return FarmUserReferral::where('referrer_id', $referrerId)
  77. ->where('level', 2)
  78. ->get();
  79. }
  80. /**
  81. * 检查推荐关系是否存在
  82. *
  83. * @param int $userId
  84. * @param int $referrerId
  85. * @return bool
  86. */
  87. public function checkReferralExists(int $userId, int $referrerId): bool
  88. {
  89. return FarmUserReferral::where('user_id', $userId)
  90. ->where('referrer_id', $referrerId)
  91. ->exists();
  92. }
  93. }