model->when($taskId != 0, function ($q) use ($taskId) { $q->where("task_id", $taskId); })->where("status", Task::COMMON_ON)->count(); } /** * 过滤用户的任务 * */ public function filterUserTask($item, $account) { switch ($item->type) { //分享 case TaskModel::TYPE_SHARE : $accountTask = TaskRepository::getInstance()->userTask($item["id"], $account["id"]); //没有提交 或者 已提交的任务状态 $item->account_status = empty($accountTask) ? TaskAccount::$status_notsubmit : $accountTask["status"]; $completed_quantity = TaskRepository::getInstance()->getShareTaskSuccess($item, $account); if ($item->account_status == TaskAccount::$status_success) { $item->completed_quantity = ($completed_quantity > $item["cycle"]) ? $item["cycle"] : $completed_quantity; } else { $item->completed_quantity = $completed_quantity; } break; //线上签到 case TaskModel::TYPE_SIGN_IN : $accountTask = TaskRepository::getInstance()->userTask($item["id"], $account["id"]); //没有提交 或者 已提交的任务状态 $item->account_status = empty($accountTask) ? TaskAccount::$status_notsubmit : $accountTask["status"]; $completed_quantity = TaskRepository::getInstance()->getSignInTaskSuccess($item, $account); if ($item->account_status == TaskAccount::$status_success) { $item->completed_quantity = ($completed_quantity > $item["cycle"]) ? $item["cycle"] : $completed_quantity; } else { $item->completed_quantity = $completed_quantity; } break; //线下签到 case TaskModel::TYPE_OFFLINE_SIGN_IN : $accountTask = TaskRepository::getInstance()->userTask($item["id"], $account["id"]); //没有提交 或者 已提交的任务状态 $item->account_status = empty($accountTask) ? TaskAccount::$status_notsubmit : $accountTask["status"]; $completed_quantity = TaskRepository::getInstance()->getOfflineSignInTaskSuccess($item, $account); if ($item->account_status == TaskAccount::$status_success) { $item->completed_quantity = ($completed_quantity > $item["cycle"]) ? $item["cycle"] : $completed_quantity; } else { $item->completed_quantity = $completed_quantity; } break; //截图分享 case TaskModel::TYPE_SHARE_SCREENSHOTS : $item = TaskRepository::getInstance()->getShareScreenshotsTaskSuccess($item, $account); break; } return $item; } /** * 检查完成条件 * */ public function checkCompletionConditions($task, $accout) { switch ($task->type) { //分享 case TaskModel::TYPE_SHARE : return TaskRepository::getInstance()->checkShareTaskCompletionConditions($task, $accout); break; //线上签到 case TaskModel::TYPE_SIGN_IN : return TaskRepository::getInstance()->checkSignInTaskCompletionConditions($task, $accout); break; //线下签到 case TaskModel::TYPE_OFFLINE_SIGN_IN : return TaskRepository::getInstance()->checkOfflineSignInTaskCompletionConditions($task, $accout); break; //截图分享 case TaskModel::TYPE_SHARE_SCREENSHOTS : if (empty(input("image"))) { return false; } return TaskRepository::getInstance()->checkShareScreenshotsTaskCompletionConditions($task, $accout); break; } } /** * 完成一个任务 * */ public function completeTask($task, $accout) { switch ($task->type) { //分享 case TaskModel::TYPE_SHARE : return TaskRepository::getInstance()->completeShareTask($task, $accout); break; //线上签到 case TaskModel::TYPE_SIGN_IN : return TaskRepository::getInstance()->completeSignInTask($task, $accout); break; //线下签到 case TaskModel::TYPE_OFFLINE_SIGN_IN : return TaskRepository::getInstance()->completeOfflineSignInTask($task, $accout); break; //截图分享 case TaskModel::TYPE_SHARE_SCREENSHOTS : return TaskRepository::getInstance()->completeShareScreenshotsTask($task, $accout); break; } } }