query(); // 添加搜索条件 if (! empty($params['keyword'])) { $query->where(function ($q) use ($params) { $q->where('name', 'like', "%{$params['keyword']}%") ->orWhere('code', 'like', "%{$params['keyword']}%"); }); } // 排序 $query->orderBy('sort', 'asc')->orderBy('id', 'desc'); return $query->paginate($params['perPage'] ?? 20); } catch (\Exception $e) { Log::error('获取设置分组列表失败', ['error' => $e->getMessage()]); throw $e; } } /** * 创建设置分组 * * @return mixed */ public function createGroup(array $data) { try { return DB::transaction(function () use ($data) { // 检查code是否已存在 abort_if( $this->query()->where('code', $data['code'])->exists(), 422, '分组代码已存在' ); return $this->getModel()::create($data); }); } catch (\Exception $e) { Log::error('创建设置分组失败', ['error' => $e->getMessage(), 'data' => $data]); throw $e; } } /** * 更新设置分组 * * @param int $id * @return mixed */ public function updateGroup($id, array $data) { try { return DB::transaction(function () use ($id, $data) { $group = $this->query()->findOrFail($id); // 检查code是否已存在(排除自身) abort_if( $this->query()->where('code', $data['code'])->where('id', '!=', $id)->exists(), 422, '分组代码已存在' ); return $group->update($data); }); } catch (\Exception $e) { Log::error('更新设置分组失败', ['error' => $e->getMessage(), 'id' => $id, 'data' => $data]); throw $e; } } /** * 删除设置分组 * * @param int $id * @return mixed */ public function deleteGroup($id) { try { return DB::transaction(function () use ($id) { return $this->query()->findOrFail($id)->delete(); }); } catch (\Exception $e) { Log::error('删除设置分组失败', ['error' => $e->getMessage(), 'id' => $id]); throw $e; } } /** * 获取设置分组详情 * * @param int $id * @return mixed */ public function groupDetail($id) { try { return $this->query()->findOrFail($id); } catch (\Exception $e) { Log::error('获取设置分组详情失败', ['error' => $e->getMessage(), 'id' => $id]); throw $e; } } }