www.au.test.cc/analysis/tr…
www.au.test.cc/analysis/tr…
controller
public function list()
{
$subQuery = $this->model
->name($this->model->getTableName())
->where($this->model->search())
->field('uuid,max(id) id,count(*) count')
->group('uuid')
->buildSql();
$sql = "SELECT * FROM analysis_tracker_202011 JOIN
{$subQuery} p USING(uuid,id) ORDER BY id desc limit {$this->page},{$this->limit};";
dd($sql);
$sql_count = "SELECT count(*) count FROM analysis_tracker_202011 JOIN
{$subQuery} p USING(uuid,id) ORDER BY id desc";
$data_count = $this->model->query($sql_count);
$lists = $this->model->query($sql);
foreach ($lists as &$row) {
$row['ip_formal'] = $this->model->getIpFormalFormal($row['ip']);
$row['user_formal'] = $this->model->getUserFormal($row['user_id']);
$row['keep_time'] = $this->model->getKeepTimeFormal($row);
$row['start_time'] = $this->model->getStartTimeFormal($row['uuid']);
$row['survival_time'] = '约' . (($row['count'] * 5) - 4) . '秒';
$row['create_time'] = date('Y-m-d H:i:s',$row['create_time']);
}
return json_encode([
'code'=>0,
'count'=>$data_count[0]['count'],
'data'=>$lists,
]);
}
model
public function getTableName()
{
$params = Request::get();
if (!isset($params['searchParams'])) return $this->name;
$searchParams = json_decode($params['searchParams'], true);
$tableName = $searchParams['tableName'] ?? $this->name;
return $tableName;
}
public function search()
{
$params = Request::get();
if (!isset($params['searchParams'])) return [];
$searchParams = json_decode($params['searchParams'], true);
$where = [];
unset($searchParams['create_time']);
foreach ($searchParams as $field => $value) {
$value = trim($value);
if ($field == 'tableName') continue;
if ($value == '') continue;
$where[] = [$field, 'like', "%{$value}%"];
}
return $where;
}