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

84 lines
2.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\AdminRole;
use App\Helpers\Paginator;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\Requestes\AdminRoleRequest;
use App\Http\Resources\AdminRoleResource;
class AdminRoleController extends Controller
{
public function index(Request $request)
{
$query = AdminRole::filter($request->input())->where('id', '>', '1');
$list = $query->simplePaginate(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('删除成功!');
}
}