TaskAchievementConditionRepository.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Module\Task\Repositorys;
  3. use App\Module\Task\Models\TaskAchievementCondition;
  4. use Dcat\Admin\Repositories\EloquentRepository;
  5. /**
  6. * 任务达成条件数据仓库类
  7. *
  8. * 提供任务达成条件数据的访问和操作功能。
  9. * 该类是任务达成条件模块与后台管理系统的桥梁,用于处理任务达成条件数据的CRUD操作。
  10. */
  11. class TaskAchievementConditionRepository extends EloquentRepository
  12. {
  13. /**
  14. * 关联的Eloquent模型类
  15. *
  16. * @var string
  17. */
  18. protected $eloquentClass = TaskAchievementCondition::class;
  19. /**
  20. * 获取指定任务的所有达成条件
  21. *
  22. * @param int $taskId 任务ID
  23. * @param string|null $conditionType 条件类型(prerequisite=前置条件,progress=进度条件)
  24. * @return array 达成条件列表
  25. */
  26. public function getConditionsByTaskId(int $taskId, ?string $conditionType = null): array
  27. {
  28. $query = $this->eloquentClass::where('task_id', $taskId);
  29. if ($conditionType) {
  30. $query->where('condition_type', $conditionType);
  31. }
  32. return $query->orderBy('sort_order')
  33. ->get()
  34. ->toArray();
  35. }
  36. /**
  37. * 获取指定任务的所有必要达成条件
  38. *
  39. * @param int $taskId 任务ID
  40. * @return array 必要达成条件列表
  41. */
  42. public function getRequiredConditionsByTaskId(int $taskId): array
  43. {
  44. return $this->eloquentClass::where('task_id', $taskId)
  45. ->where('is_required', true)
  46. ->orderBy('sort_order')
  47. ->get()
  48. ->toArray();
  49. }
  50. }