233 lines
8.4 KiB
PHP
233 lines
8.4 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* Author:
|
|
* Date: 07/03/2017
|
|
* Time: 16:13
|
|
*/
|
|
|
|
namespace app\backend\modules\user\controllers;
|
|
|
|
|
|
use app\backend\modules\uploadVerificate\UploadVerificationBaseController;
|
|
use app\backend\modules\user\services\PermissionService;
|
|
use app\common\components\BaseController;
|
|
use app\common\helpers\PaginationHelper;
|
|
use app\common\helpers\Url;
|
|
use app\common\models\user\YzPermission;
|
|
use app\common\models\user\YzRole;
|
|
|
|
class RoleController extends UploadVerificationBaseController
|
|
{
|
|
|
|
//todo 页面功能逻辑优化,搜索功能完善
|
|
/**
|
|
* 角色列表
|
|
*/
|
|
|
|
public function index()
|
|
{
|
|
if(request()->ajax()){
|
|
$pageSize = '10';
|
|
$search = request()->search;
|
|
$roleList = YzRole::getPageList($pageSize,$search);
|
|
|
|
return $this->successJson('请求接口成功',[
|
|
'roleList' => $roleList,
|
|
'search' => $search
|
|
]);
|
|
}
|
|
return view('user.role.index')->render();
|
|
}
|
|
|
|
public function switchRole()
|
|
{
|
|
$id = request()->id;
|
|
$user = YzRole::where('id', $id)->first();
|
|
if($user){
|
|
switch ($user['status'])
|
|
{
|
|
case YzRole::ROLE_ENABLE:
|
|
$user->status = YzRole::ROLE_DISABLE;
|
|
if($user->save()){
|
|
return $this->successJson('角色禁用成功');
|
|
}
|
|
break;
|
|
|
|
case YzRole::ROLE_DISABLE:
|
|
$user->status = YzRole::ROLE_ENABLE;
|
|
if($user->save()){
|
|
return $this->successJson('角色启用成功');
|
|
}
|
|
break;
|
|
}
|
|
return $this->errorJson('数据出错,保存失败');
|
|
}else{
|
|
return $this->errorJson('找不到该角色,请重试');
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
* 创建角色
|
|
*/
|
|
|
|
public function store()
|
|
{
|
|
$roleModel = new YzRole();
|
|
|
|
$requestRole = request()->YzRole;
|
|
//dd($requestRole);
|
|
if ($requestRole) {
|
|
//将数据赋值到model
|
|
$roleModel->setRawAttributes($requestRole);
|
|
//其他字段赋值
|
|
$roleModel->uniacid = \YunShop::app()->uniacid;
|
|
|
|
//字段检测
|
|
$validator = $roleModel->validator($roleModel->getAttributes());
|
|
//dd($validator->messages());
|
|
if ($validator->fails()) {
|
|
return $this->errorJson("角色数据验证出错");
|
|
|
|
}else{
|
|
if ($roleModel->save()) {
|
|
$requestPermission = request()->perms;
|
|
//数据处理
|
|
if ($requestPermission) {
|
|
//dd(1);
|
|
$data = [];
|
|
foreach ($requestPermission as $key => $value) {
|
|
$data[$key] = array(
|
|
'type' => YzPermission::TYPE_ROLE,
|
|
'item_id' => $roleModel->id,
|
|
'permission' => $value
|
|
);
|
|
$validator = (new YzPermission)->validator($data);
|
|
if ($validator->fails()) {
|
|
return $this->errorJson("角色数据验证出错");
|
|
}
|
|
}
|
|
$result = YzPermission::insertYzPermission($data);
|
|
if (!$result) {
|
|
//删除刚刚添加的角色
|
|
YzRole::deleteRole($roleModel->id);
|
|
return $this->errorJson("角色数据验证出错");
|
|
}
|
|
}
|
|
return $this->successJson('添加角色成功', Url::absoluteWeb('user.role.index'));
|
|
} else {
|
|
$this->errorJson('角色数据写入出错,请重试!');
|
|
}
|
|
}
|
|
}
|
|
$permissions = PermissionService::getPermission();
|
|
$permissions = PermissionService::getApiData($permissions);
|
|
if(request()->ajax()){
|
|
return $this->successJson('请求接口成功',[
|
|
'role' => $roleModel,
|
|
'permissions' =>$permissions,
|
|
]);
|
|
}
|
|
|
|
return view('user.role.store');
|
|
}
|
|
|
|
/**
|
|
* 修改角色
|
|
*/
|
|
|
|
public function update()
|
|
{
|
|
$permissions = PermissionService::getPermission();
|
|
$roleModel = YzRole::getRoleById(request()->id);
|
|
//dd($role);
|
|
$rolePermission = $roleModel->toArray();
|
|
foreach ($rolePermission['role_permission'] as $key) {
|
|
$rolePermissions[] = $key['permission'];
|
|
}
|
|
if(empty($rolePermissions)) {
|
|
$rolePermissions = [];
|
|
}
|
|
|
|
$requestRole = request()->YzRole;
|
|
if ($requestRole) {
|
|
$roleModel->setRawAttributes($requestRole);
|
|
$validator = $roleModel->validator($roleModel->getAttributes());
|
|
if ($validator->fails()) {
|
|
$this->errorJson('权限数据验证失败');
|
|
} else {
|
|
if ($roleModel->save()) {
|
|
//return $this->message("更新角色成功");
|
|
\Cache::flush();
|
|
$requestPermission = request()->perms;
|
|
if ($requestPermission) {
|
|
//dd(1);
|
|
$data = [];
|
|
foreach ($requestPermission as $key => $value) {
|
|
$data[$key] = array(
|
|
'type' => YzPermission::TYPE_ROLE,
|
|
'item_id' => request()->id,
|
|
'permission' => $value
|
|
);
|
|
$validator = (new YzPermission)->validator($data);
|
|
if ($validator->fails()) {
|
|
$this->errorJson('权限数据验证失败');
|
|
}
|
|
}
|
|
//删除原权限数据,更新数据储存
|
|
YzPermission::deleteRolePermission(request()->id);
|
|
$result = YzPermission::insertYzPermission($data);
|
|
if (!$result) {
|
|
//删除刚刚添加的角色
|
|
YzRole::deleteRole($roleModel->id);
|
|
$this->errorJson('角色更新成功,权限数据写入出错,请重新编辑权限!');
|
|
} else {
|
|
return $this->successJson('编辑角色成功', Url::absoluteWeb('user.role.index'));
|
|
}
|
|
} else {
|
|
YzPermission::deleteRolePermission(request()->id);
|
|
}
|
|
return $this->successJson('编辑角色成功', Url::absoluteWeb('user.role.index'));
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
$permissions = PermissionService::getApiData($permissions);
|
|
return view('user.role.form',[
|
|
'role'=>$rolePermission,
|
|
'permissions'=>$permissions,
|
|
'userPermissions'=>$rolePermissions
|
|
])->render();
|
|
}
|
|
|
|
/**
|
|
* 删除角色
|
|
*/
|
|
|
|
/**
|
|
* 删除角色
|
|
*/
|
|
public function destory()
|
|
{
|
|
$requestRole = YzRole::getRoleById(request()->id);
|
|
if (!$requestRole) {
|
|
return $this->errorJson('未找到数据或已删除');
|
|
}
|
|
$resultRole = YzRole::deleteRole(request()->id);
|
|
if ($resultRole) {
|
|
$resultPermission = YzPermission::deleteRolePermission(request()->id);
|
|
if ($resultPermission) {
|
|
return $this->successJson('删除角色成功。', Url::absoluteWeb('user.role.index'));
|
|
}
|
|
//是否需要怎么增加角色权限删除失败提示
|
|
} else {
|
|
return $this->errorJson('数据写入出错,请重试!');
|
|
}
|
|
}
|
|
|
|
}
|