lcly-data-admin/app/Http/Controllers/AdminRoleController.php

94 lines
2.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Helpers\Paginator;
use App\Http\Requestes\AdminRoleRequest;
use App\Http\Resources\AdminRoleResource;
use App\Models\AdminRole;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class AdminRoleController extends Controller
{
public function index(Request $request)
{
$query = AdminRole::filter($request->input())->where('id', '>', '1');
$list = $query->paginate(Paginator::resolvePerPage('per_page', 20, 50));
return $this->json(AdminRoleResource::collection($list));
}
public function store(AdminRoleRequest $request)
{
$permissionIds = $request->input('permission_ids', []);
//验证slug唯一
if (AdminRole::where('slug', $request->input('slug'))->exists()) {
return $this->error('该角色编码已存在');
}
try {
DB::beginTransaction();
//添加角色信息
$role = AdminRole::create($request->input());
//添加角色权限
$role->permissions()->sync($permissionIds);
DB::commit();
} catch(\Throwable $th) {
DB::rollBack();
report($th);
return $this->error('添加失败,请稍后再试');
}
return $this->success('添加成功');
}
public function show(AdminRole $adminRole)
{
$adminRole->load('permissions');
return $this->json(AdminRoleResource::make($adminRole));
}
public function update(AdminRole $adminRole, AdminRoleRequest $request)
{
$permissionIds = $request->input('permission_ids', []);
//验证slug唯一
if (AdminRole::where('slug', $request->input('slug'))->where('id', '<>', $adminRole->id)->exists()) {
return $this->error('该角色编码已存在');
}
try {
DB::beginTransaction();
//添加角色信息
$adminRole->update($request->input());
//添加角色权限
$adminRole->permissions()->sync($permissionIds);
DB::commit();
} catch(\Throwable $th) {
DB::rollBack();
report($th);
return $this->error('添加失败,请稍后再试');
}
return $this->success('添加成功');
}
public function destroy(AdminRole $adminRole)
{
try {
DB::beginTransaction();
$adminRole->permissions()->sync([]);
$adminRole->delete();
DB::commit();
} catch(\Throwable $th) {
DB::rollBack();
report($th);
return $this->error('删除失败,请稍后再试');
}
return $this->success('删除成功!');
}
}