Commit bedceb1d authored by 康帅杰's avatar 康帅杰 💬
Browse files

menu add role

Showing with 95 additions and 3 deletions
+95 -3
......@@ -7,6 +7,7 @@ use Yjtec\Rbac\Requests\Menu\DestoryRequest;
use Yjtec\Rbac\Requests\Menu\UpdateRequest;
use Yjtec\Rbac\Repositories\Contracts\MenuInterface;
use Illuminate\Http\Request;
use Yjtec\Rbac\Resources\Route as RouteResource;
class MenuController extends Controller
{
......@@ -57,10 +58,20 @@ class MenuController extends Controller
* tags={"Menu"},
* summary="新增菜单",
* operationId="ApiMenuStore",
* @OA\Parameter(
* name="roles[]",
* in="query",
* description="选择的角色ID",
* required=true,
* @OA\Schema(
* type="array",
* @OA\Items(type="string"),
* ),
* style="form"
* ),
* @OA\Response(
* response="200",
* description="新增成功",
*
* ),
* @OA\RequestBody(ref="#/components/requestBodies/StoreMenu"),
* security={
......@@ -70,7 +81,8 @@ class MenuController extends Controller
*/
public function store(StoreRequest $request){
$data = $request->only(['title','name','pid','icon','path','is_show','is_show_children','access_id']);
return $this->repo->add($data);
$menu = $this->repo->add($data);
$menu->roles()->attach($request->input('roles'));
}
/**
......@@ -81,6 +93,17 @@ class MenuController extends Controller
* summary="修改菜单",
* operationId="ApiMenuUpdate",
* @OA\Parameter(ref="#/components/parameters/id"),
* @OA\Parameter(
* name="roles[]",
* in="query",
* description="选择的角色ID",
* required=true,
* @OA\Schema(
* type="array",
* @OA\Items(type="string"),
* ),
* style="form"
* ),
* @OA\RequestBody(ref="#/components/requestBodies/StoreMenu"),
* @OA\Response(
* response="200",
......@@ -93,6 +116,10 @@ class MenuController extends Controller
foreach($data as $k=>$v){
$menu->$k = $v;
}
if($request->has('roles')){
$roles = $request->input('roles');
$menu->roles()->sync($roles);
}
$menu->save() ? tne('SUCCESS') : tne("FAIL");
}
/**
......@@ -157,4 +184,27 @@ class MenuController extends Controller
$ids = $request->input('ids');
$this->repo->mulDelete($ids) ? tne('SUCCESS') : tne("FAIL");
}
/**
* @OA\Get(
* path="/routes/",
* description="前端获取菜单",
* tags={"Menu"},
* summary="前端获取菜单",
* operationId="ApiRoutes",
* @OA\Response(
* response="200",
* description="获取成功",
* )
* )
*/
public function routes(Request $request){
//$type = $request->input('type');
$data = $this->repo->list([]);
return RouteResource::collection($data);
//return \Yjtec\Support\Nested::unlimitedForlayer($data->toArray(),'routes');
//return $data;
//return $this->repo->add($data);
}
}
\ No newline at end of file
......@@ -6,4 +6,7 @@ use Illuminate\Database\Eloquent\Model;
class Menu extends Model{
protected $fillable=['id','name','title','path','icon','pid','access_id','is_show','is_show_children'];
public function roles(){
return $this->belongsToMany('Yjtec\Rbac\Models\Role','menu_role');
}
}
\ No newline at end of file
<?php
namespace Yjtec\Rbac\Resources;
use Illuminate\Http\Resources\Json\Resource;
class Route extends Resource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'path' => $this->path,
'icon' => $this->icon,
'name' => $this->title,
'pid' => $this->pid,
'authority' => $this->roles->pluck('name')
];
}
public function with($request){
return [
'errcode' => 0,
'errmsg' => '登陆成功'
];
}
}
......@@ -26,6 +26,12 @@ class CreateMenusTable extends Migration
$table->comment = '菜单表';
$table->timestamps();
});
Schema::create('menu_role', function (Blueprint $table) {
$table->integer('menu_id')->comment('菜单ID');
$table->integer('role_id')->comment('角色ID');
$table->comment = '菜单角色表';
});
}
/**
......@@ -35,6 +41,7 @@ class CreateMenusTable extends Migration
*/
public function down()
{
Schema::dropIfExists('menu_role');
Schema::dropIfExists('menus');
}
}
......@@ -18,7 +18,7 @@ Route::get('/menu/{menu}','MenuController@show');//获取当前菜单
Route::put('/menu/{menu}','MenuController@update');//修改当前菜单
Route::delete('/menu/{menu}','MenuController@destory');//删除菜单
Route::delete('/menu/','MenuController@mulDestory');//批量删除菜单
Route::get('/routes','MenuController@routes');//获取菜单
Route::get('/user','UserController@list');
Route::post('/user','UserController@store');
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment