function delete_tiny_url($id) { $tiny_url = table('tiny_url')->get($id); if (!$tiny_url) { return false; } $res = table('tiny_url')->set($id, array('status' => 2)); if ($res) { $symbol = $tiny_url['prefix'] . ShortUrl::encode($id); $this->swoole->redis('cluster')->hDel('tiny-url:url', $symbol); } return (bool) $res; }
public function redirect($code) { $shortUrl = ShortUrl::findByCode($code)[0]; return redirect($shortUrl->long_url); }
public static function findByCode($code) { $id = unpack('i', base64_decode(str_pad(strtr($code, '-_', '+/'), strlen($code) % 4, '='))); return ShortUrl::findOrFail($id); }
function tiny_url_list() { $gets = array(); $id = trim(get_post('id')); if ($id !== '') { $id = (int) $id; $gets['where'][] = "id={$id}"; $_GET['id'] = $id; } else { $id = null; } $name = trim(get_post('name')); if ($name !== '') { $name = trim($name); $gets['where'][] = "name like '%{$name}%'"; $_GET['name'] = $name; } else { $name = null; } $category_id = trim(get_post('category_id')); if ($category_id !== '') { $category_id = (int) $category_id; $gets['where'][] = "category_id = {$category_id}"; $_GET['category_id'] = $category_id; } else { $category_id = null; } $category_options = model('Url_shortener')->get_category_list(); // 搜索表单 $form['id'] = \Swoole\Form::input('id', htmlspecialchars($id), array('id' => 'id', 'placeholder' => 'ID')); $form['name'] = \Swoole\Form::input('name', htmlspecialchars($name), array('id' => 'name', 'placeholder' => '短网址名称')); $form['category_id'] = \Swoole\Form::select('category_id', $category_options, $category_id, null, array('class' => 'select2 select2-offscreen', 'style' => 'width:100%')); $gets['order'] = 'id desc'; $gets['page'] = !empty($_GET['page']) ? (int) $_GET['page'] : 1; $gets['pagesize'] = 20; $gets['where'][] = 'status = 1'; $data = table('tiny_url')->gets($gets, $pager); $symbol_list = array(); foreach ($data as $row) { $tiny_url_id = (int) $row['id']; $symbol_list[$tiny_url_id] = $row['prefix'] . ShortUrl::encode($tiny_url_id); } $total_visits_list = model('Url_shortener')->get_total_visits_list($symbol_list); $tiny_url_list = model('Url_shortener')->get_tiny_url_list($symbol_list); foreach ($data as &$row) { $tiny_url_id = (int) $row['id']; $symbol = $row['prefix'] . ShortUrl::encode($tiny_url_id); $row['tiny_url'] = isset($tiny_url_list[$symbol]) ? $tiny_url_list[$symbol] : ''; $row['total_visits'] = isset($total_visits_list[$symbol]) ? $total_visits_list[$symbol] : 0; $row['category_name'] = isset($category_options[$row['category_id']]) ? $category_options[$row['category_id']] : ''; } unset($row); $this->assign('form', $form); $this->assign('data', $data); $this->assign('pager', array('render' => $pager->render())); $this->display(); }