TaskUserProgressRepository.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Module\Task\Repositorys;
  3. use App\Module\Task\Models\TaskUserProgress;
  4. use Dcat\Admin\Repositories\EloquentRepository;
  5. /**
  6. * 用户任务进度数据仓库类
  7. *
  8. * 提供用户任务进度数据的访问和操作功能。
  9. * 该类是用户任务进度模块与后台管理系统的桥梁,用于处理用户任务进度数据的CRUD操作。
  10. */
  11. class TaskUserProgressRepository extends EloquentRepository
  12. {
  13. /**
  14. * 关联的Eloquent模型类
  15. *
  16. * @var string
  17. */
  18. protected $eloquentClass = TaskUserProgress::class;
  19. /**
  20. * 获取用户特定任务的所有进度
  21. *
  22. * @param int $userId 用户ID
  23. * @param int $taskId 任务ID
  24. * @return array 用户任务进度列表
  25. */
  26. public function getUserTaskProgress(int $userId, int $taskId): array
  27. {
  28. return $this->eloquentClass::where('user_id', $userId)
  29. ->where('task_id', $taskId)
  30. ->with(['achievementCondition', 'achievementCondition.condition'])
  31. ->get()
  32. ->toArray();
  33. }
  34. /**
  35. * 获取用户特定任务条件的进度
  36. *
  37. * @param int $userId 用户ID
  38. * @param int $taskId 任务ID
  39. * @param int $conditionId 条件ID
  40. * @return TaskUserProgress|null 用户任务进度对象
  41. */
  42. public function getUserTaskConditionProgress(int $userId, int $taskId, int $conditionId): ?TaskUserProgress
  43. {
  44. return $this->eloquentClass::where('user_id', $userId)
  45. ->where('task_id', $taskId)
  46. ->where('achievement_condition_id', $conditionId)
  47. ->first();
  48. }
  49. }