123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?php
- namespace App\Services;
- use App\Models\SettingGroup;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Slowlyo\OwlAdmin\Services\AdminService;
- /**
- * 设置分组管理
- *
- * @method SettingGroup getModel()
- * @method SettingGroup|\Illuminate\Database\Query\Builder query()
- */
- class SettingGroupService extends AdminService
- {
- protected string $modelName = SettingGroup::class;
- /**
- * 获取设置分组列表
- *
- * @return mixed
- */
- public function getList(array $params = [])
- {
- try {
- $query = $this->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;
- }
- }
- }
|