public function lists($filter){
$join = [
['__USER__ au', 'e.up_user_id = au.id'],
['train_carbon uc','e.up_carbon_id = uc.id'],
['train_line l','l.id=e.line_id'],
['train_subway s','s.id=e.subway_id'],
['train_position p','p.id=e.position_id'],
];
$field = 'e.*,au.user_nickname as up_user_nickname,uc.sign as up_carbon_sign,uc.ini_ply,l.name as line_name,s.name as subway_name,p.name as position_name';
$reason_id = empty($filter['reason_id']) ? 0 : intval($filter['reason_id']);
if (!empty($reason_id)) {
array_push($join, [
'train_down d', 'd.id = e.down_reason_id'
]);
$field .= 'd.name as reason_name';
}
if(!empty($filter['down_start_time']) || !empty($filter['down_end_time'])){
array_push($join, [
'train_carbon dc', 'dc.id = e.down_carbon_id'
]);
$field .= 'dc.sign as down_carbon_sign';
}
$positions =implode(',',Db::name('position')->column('id'));
$lines = implode(',',Db::name('subway')->colum