task = $task ?? new Task; $this->uid = $uid; } /** * 设置任务 */ public function setTask(Task $task) { $this->task = $task; } /** * 处理添加用户任务 */ public function handleAddUserTask() { if (!$this->checkUserTask()) { $this->addUserTask(); } } /** * 处理用户任务奖励 * @return int */ public function handleUserTaskReward() { $user_task = $this->findUserTask(self::up_status); if ($user_task) { try { DB::beginTransaction(); $user_task->status = self::get_status; $user_task->save(); switch ($this->task->reward_type) { case self::coin_reward: $this->coinReward(); break; case self::read_card_reward: $this->readCardReward(); break; } DB::commit(); return 1; } catch (Exception $e) { myLog('user_task')->error($e->getMessage()); DB::rollback(); return -1; } } else { return 0; } } /** * 书币奖励 */ protected function coinReward() { User::where('id', $this->uid)->update( [ 'balance' => DB::raw('balance+' . $this->task->value), 'reward_balance' => DB::raw('reward_balance+' . $this->task->value) ] ); } /** * 阅读卡奖励 */ protected function readCardReward() { } }