// +---------------------------------------------------------------------- namespace App\Services\Common; use App\Models\MenuModel; use App\Models\RoleMenuModel; use App\Models\RoleModel; use App\Models\UserRoleModel; use App\Services\BaseService; /** * 角色管理-服务类 * @author laravel开发员 * @since 2020/11/11 * Class RoleService * @package App\Services\Common */ class RoleService extends BaseService { /** * 构造函数 * @author laravel开发员 * @since 2020/11/11 * RoleService constructor. */ public function __construct() { $this->model = new RoleModel(); } /** * 获取角色列表 * @return array * @since 2020/11/11 * @author laravel开发员 */ public function getRoleList() { $list = $this->model->where([ ['status', '=', 1], ['mark', '=', 1], ])->orderBy("sort", "asc") ->get() ->toArray(); return message("操作成功", true, $list); } /** * 获取角色权限列表 * @return mixed * @since 2020/11/11 * @author laravel开发员 */ public function getPermissionList($userId=0) { // 请求参数 $param = request()->all(); // 角色ID $roleId = intval(getter($param, "role_id", 0)); // 获取全部菜单 $menuModel = new MenuModel(); $menuList = $menuModel->from('menu as a') ->leftJoin('menu as b', 'b.id', '=', 'a.pid') ->leftJoin('menu as c', 'c.id', '=', 'b.pid') ->where([ ['a.status', '=', 1], ['a.mark', '=', 1], ])->where(function ($query) { $query->where(['a.pid' => 0])->orWhere(function ($query) { $query->where('a.pid', '>', 0)->where(['b.status' => 1, 'b.mark' => 1]); }); })->orderBy("a.sort", "asc")->select(['a.*'])->get()->toArray(); if (!empty($menuList)) { $roleMenuModel = new RoleMenuModel(); $roleMenuList = $roleMenuModel->where("role_id", $roleId)->get("menu_id")->toArray(); $menuIdList = array_key_value($roleMenuList, "menu_id"); $check = UserRoleModel::where(['user_id'=>$userId,'role_id'=>1])->value('role_id'); foreach ($menuList as &$val) { if (in_array($val['id'], $menuIdList) || $check) { $val['checked'] = true; $val['open'] = true; } } } return message(MESSAGE_OK, true, $menuList); } /** * 保存角色菜单权限数据 * @return array * @since 2020/11/11 * @author laravel开发员 */ public function savePermission() { // 请求参数 $param = request()->all(); // 角色ID $roleId = intval(getter($param, "role_id", 0)); if (!$roleId) { return message("角色ID不能为空", false); } unset($param['role_id']); // 删除角色菜单关系数据 $roleMenuModel = new RoleMenuModel(); $roleMenuModel->where("role_id", $roleId)->delete(); // 插入角色菜单关系数据 if (is_array($param) && !empty($param)) { $list = []; foreach ($param as $val) { $data = [ 'role_id' => $roleId, 'menu_id' => $val, ]; $list[] = $data; } } $roleMenuModel->insert($list); return message(); } }