| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- namespace App\Module\Task\Repositorys;
- use App\Module\Task\Models\TaskUserTask;
- use Dcat\Admin\Repositories\EloquentRepository;
- /**
- * 用户任务关联数据仓库类
- *
- * 提供用户任务关联数据的访问和操作功能。
- * 该类是用户任务关联模块与后台管理系统的桥梁,用于处理用户任务关联数据的CRUD操作。
- */
- class TaskUserTaskRepository extends EloquentRepository
- {
- /**
- * 关联的Eloquent模型类
- *
- * @var string
- */
- protected $eloquentClass = TaskUserTask::class;
- /**
- * 预加载关联数据
- *
- * @var array
- */
- protected $with = ['task'];
- /**
- * 获取查询构建器
- *
- * @return \Illuminate\Database\Eloquent\Builder
- */
- public function query()
- {
- return $this->eloquentClass::with(['task']);
- }
-
- /**
- * 获取用户的所有任务
- *
- * @param int $userId 用户ID
- * @param int|null $status 任务状态
- * @return array 用户任务列表
- */
- public function getUserTasks(int $userId, ?int $status = null): array
- {
- $query = $this->eloquentClass::where('user_id', $userId);
-
- if ($status !== null) {
- $query->where('status', $status);
- }
-
- return $query->with(['task', 'task.category'])
- ->get()
- ->toArray();
- }
-
- /**
- * 获取用户的特定任务
- *
- * @param int $userId 用户ID
- * @param int $taskId 任务ID
- * @return TaskUserTask|null 用户任务对象
- */
- public function getUserTask(int $userId, int $taskId): ?TaskUserTask
- {
- return $this->eloquentClass::where('user_id', $userId)
- ->where('task_id', $taskId)
- ->first();
- }
-
- /**
- * 获取即将过期的任务
- *
- * @param int $hoursThreshold 过期时间阈值(小时)
- * @return array 即将过期的任务列表
- */
- public function getExpiringTasks(int $hoursThreshold = 24): array
- {
- $expiryTime = now()->addHours($hoursThreshold);
-
- return $this->eloquentClass::where('status', 1) // 进行中
- ->whereNotNull('expire_at')
- ->where('expire_at', '<=', $expiryTime)
- ->where('expire_at', '>', now())
- ->with(['task'])
- ->get()
- ->toArray();
- }
- }
|