主题列表:juejin, github, smartblue, cyanosis, channing-cyan, fancy, hydrogen, condensed-night-purple, greenwillow, v-green
贡献主题:https://github.com/xitu/juejin-markdown-themes
theme: juejin
highlight:
http://www.au.test.cc/analysis/tracker/list?page=1&limit=15
controller
/**
* 信息列表
*/
public function list()
{
// string(98) "( SELECT id,uuid,max(id) maxId,count(*) count FROM `analysis_tracker_202011` GROUP BY maxId desc )"
$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};";
/**
* 有条件
* string(249) "SELECT * FROM analysis_tracker_202011 JOIN
* ( SELECT uuid,max(id) id,count(*) count FROM `analysis_tracker_202011` WHERE
* ( `product_name` LIKE '%123%' OR `product_code` LIKE '%123%' ) GROUP BY `uuid` ) p
* USING(uuid,id) ORDER BY id desc limit 1,50;"
*/
/**
* 无条件搜索
* SELECT * FROM analysis_tracker_202011 JOIN
* ( SELECT uuid,max(id) id,count(*) count FROM `analysis_tracker_202011` GROUP BY `uuid` ) p
* USING(uuid,id) ORDER BY id desc limit 1,50;
*
*/
dd($sql);
// 分页的数量
$sql_count = "SELECT count(*) count FROM analysis_tracker_202011 JOIN
{$subQuery} p USING(uuid,id) ORDER BY id desc";
// $sql = "SELECT * FROM analysis_tracker_202011 JOIN
//(SELECT uuid, MAX(id) id FROM analysis_tracker_202011 GROUP BY uuid ) p USING(uuid,id)ORDER BY id desc limit 10;";
$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
/**
* 动态选择当前的表,查看list的时候 默认显示本月的,或者搜索的时候 指定日期的数据表
* @return array
*/
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;
}
/**
* 搜索
* @return array
*/
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;
}