1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- namespace App\Services;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- /**
- * 视图管理
- */
- class ViewService
- {
- /**
- * 获取视图列表
- *
- * @param string $viewName 视图名称
- * @param array $whereParams 查询参数
- * @param array $pageParams 分页参数
- * @param array $sortParams 排序参数
- */
- public function viewList($viewName, array $whereParams, array $pageParams, array $sortParams = []): array
- {
- try {
- // 尝试获取对应的模型类名
- $modelClass = 'App\\Models\\' . str_replace(' ', '', ucwords(str_replace('_', ' ', $viewName)));
- // 检查模型是否存在
- if (class_exists($modelClass)) {
- $query = app($modelClass)->query();
- } else {
- $query = DB::table($viewName);
- }
- // 条件筛选
- foreach ($whereParams as $key => $value) {
- if (is_string($value)) {
- $query->where($key, 'like', "%{$value}%");
- } else {
- $query->where($key, $value);
- }
- }
- // 排序
- if (! empty($sortParams)) {
- $query->orderBy($sortParams['orderBy'], $sortParams['orderDir']);
- }
- $result = $query->paginate($pageParams['perPage'], ['*'], 'page', $pageParams['page']);
- return [
- 'data' => [
- 'items' => $result->items(),
- 'total' => $result->total(),
- ],
- 'msg' => 'success',
- 'status' => 0,
- ];
- } catch (\Exception $e) {
- Log::error('获取视图数据失败', [
- 'view_name' => $viewName,
- 'error' => $e->getMessage(),
- 'trace' => $e->getTraceAsString(),
- ]);
- return [
- 'data' => [
- 'items' => [],
- ],
- 'msg' => '获取数据失败',
- 'status' => 1,
- ];
- }
- }
- }
|