/** * 根据用户的行为数据分析并发送自动任务 * * @param array $behavior * @return boolean */ public function sendAutoTask($behavior) { if (!Wekit::C('site', 'task.isOpen')) { return false; } $whitBehavior = array('login_days', 'post_days', 'thread_count'); if (!in_array($behavior['behavior'], $whitBehavior)) { return false; } $tody = Pw::time2str(Pw::getTime(), 'Y-m-d'); $isSend = false; switch ($behavior['behavior']) { case 'login_days': $isSend = $behavior['number'] % 3 == 0; break; case 'post_days': $is_tody = $tody == Pw::time2str($behavior['extend_info'], 'Y-m-d'); $isSend = $is_tody && $behavior['number'] % 2 == 0; break; case 'thread_count': $isSend = $behavior['number'] == 1 || $behavior['number'] % 50 == 0; break; } if (!$isSend) { return false; } Wind::import('SRV:task.srv.PwTaskApply'); $userTask = new PwTaskApply($behavior['uid']); $userTask->autoApplies($this->getAutoApplicableTaskList($behavior['uid'], 1)); return true; }
public function welcome(PwUserBo $userBo, $ip) { if (!Wekit::C('site', 'task.isOpen')) { return true; } /* @var $behaviorDs PwUserBehavior */ $behaviorDs = Wekit::load('user.PwUserBehavior'); $info = $behaviorDs->getBehavior($userBo->uid, 'login_days'); $time = $info['extend_info'] ? $info['extend_info'] : 0; if (!$time || Pw::time2str($time, 'Y-m-d') < Pw::time2str(Pw::getTime(), 'Y-m-d')) { /* @var $taskService PwTaskService */ $taskService = Wekit::load('SRV:task.srv.PwTaskService'); $userTask = new PwTaskApply($userBo->uid); $autoTaskIds = $taskService->getAutoApplicableTaskList($userBo->uid, 5); $userTask->autoApplies($autoTaskIds); } return true; }
/** * 将该任务的后置自动任务发送给用户 * * @param int $task_id * @return boolean */ private function sendNextAutoApplicableTaskList() { /* @var $taskService PwTaskService */ $taskService = Wekit::load('task.srv.PwTaskService'); $childs = $taskService->getNextAutoApplicableTaskList($this->taskId, $this->uid); if (!$childs) { return true; } $userService = new PwTaskApply($this->uid); $userService->autoApplies($childs); return true; }