['media_source', 'creator_name', 'remark'], ]; } private function baseQuery() { $query = PersonalYeji::where($this->searchWhere); $visibleIds = $this->getDataScopeVisibleAdminIds(); $deptId = (int) ($this->params['dept_id'] ?? 0); $finalIds = self::intersectVisibleByDept($visibleIds, $deptId); if ($finalIds === []) { $query->whereRaw('0 = 1'); } elseif ($finalIds !== null) { $query->whereIn('creator_id', $finalIds); } if (!empty($this->params['start_date']) && !empty($this->params['end_date'])) { $query->whereBetween('yeji_date', [$this->params['start_date'], $this->params['end_date']]); } elseif (!empty($this->params['start_date'])) { $query->where('yeji_date', '>=', $this->params['start_date']); } elseif (!empty($this->params['end_date'])) { $query->where('yeji_date', '<=', $this->params['end_date']); } if (!empty($this->params['media_source'])) { $query->where('media_source', trim((string) $this->params['media_source'])); } if (!empty($this->params['creator_id'])) { $query->where('creator_id', (int) $this->params['creator_id']); } return $query; } public function lists(): array { $rows = $this->baseQuery() ->order(['yeji_date' => 'desc', 'id' => 'desc']) ->limit($this->limitOffset, $this->limitLength) ->select() ->toArray(); return self::attachDeptInfoToRows($rows); } public function count(): int { return (int) $this->baseQuery()->count(); } }