94 lines
2.7 KiB
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('删除成功!');
|
|
}
|
|
}
|