public function create_job($ad_id, $type, $at_every, $time, $num = 0, $options = null) { $create_time = date("Y-m-d H:i:s"); $create_user = $_SESSION['id']; $params = ''; if ($options['keywords']) { $params .= '"keywords":"' . $options['keywords'] . '",'; } if ($options['ad_desc']) { $params .= '"ad_desc":"' . $options['ad_desc'] . '",'; } if ($params) { $params = '{' . substr($params, 0, -1) . '}'; } if ($type < 0 || $type > 4 || $at_every != 'at' && $at_every != 'every') { throw new Exception('错误的任务类型', 1); } if ($at_every == 'every' && $type == 2 && $this->has_daily_job($ad_id)) { throw new Exception('该广告已存在每日加分任务', 3); } if ($create_time > $time) { throw new Exception('时间已过', 2); } $ad = new AD(); if (!$ad->exist($ad_id)) { throw new Exception('不存在ad', 4); } $id = $this->insert_ad_job(['ad_id' => $ad_id, 'jobtype' => $type, 'at_every' => $at_every, 'jobtime' => $time, 'jobnum' => $num, 'create_user' => $create_user, 'create_time' => $create_time, 'is_run' => -1, 'params' => $params]); if (!$id) { throw new Exception('操作失败', 5); } if ($options['share'] && $type == self::OFFLINE) { $this->update_share($ad_id, $options['show_countdown']); } // log it $log = new ADOperationLogger(); $log->log($ad_id, 'job', 'add', "[{$type}, {$at_every}, {$time}, {$num}] => {$id}", 0); $stamp = strtotime($time); $event_url = 'event.php?ajid=' . $id; $link_id = $this->insert_job($stamp, $event_url); return $this->update_job($link_id, $id); }