user_id = $data['user_id']; $this->finishTask($data); return true; } //执行任务 public function finishTask($data) { if (in_array($data['task_type'], ['image', 'base'])) { $this->baseTask($data); } else { $this->dayTask($data); } return true; } //成长任务 public function baseTask($data) { //判断是否已完成 $TaskLogModel = new TaskLogModel(); $status = $TaskLogModel->where('user_id', '=', $this->user_id) ->where('task_type', '=', $data['task_type']) ->count(); if ($status) { return false; } $user = UserModel::detail($this->user_id); $config = SettingModel::getItem('task', $user['app_id']); $task = $this->getConfig($config, $data['task_type']); if ($task && $task['is_open']) { $TaskLogModel->save([ 'user_id' => $this->user_id, 'task_type' => $data['task_type'], 'task_time' => date('Y-m-d'), 'points' => $task['points'], 'app_id' => $user['app_id'], ]); $describe = "完成任务:" . $task['name']; $task['points'] && $user->setIncPoints($task['points'], $describe . '奖励'); } } //日常任务 public function dayTask($data) { //判断是否已完成 $status = Cache::get('task_' . $data['task_type'] . date('Y-m-d') . $this->user_id); if ($status) { return false; } $user = UserModel::detail($this->user_id); $config = SettingModel::getItem('task', $user['app_id']); $task = $this->getConfig($config, $data['task_type']); if ($task && $task['is_open']) { Cache::set('task_' . $data['task_type'] . date('Y-m-d') . $this->user_id, 1, 86410); $describe = "完成任务:" . $task['name']; $task['points'] && $user->setIncPoints($task['points'], $describe . '奖励'); } } //获取当前任务配置 public function getConfig($config, $task_type) { $data = ''; if (in_array($task_type, ['image', 'base'])) { foreach ($config['grow_task'] as $item) { if ($item['task_type'] == $task_type) { $data = $item; break; } } } else { foreach ($config['day_task'] as $item) { if ($item['task_type'] == $task_type) { $data = $item; break; } } } return $data; } }