// +---------------------------------------------------------------------- namespace App\Services\Common; use App\Models\MenuModel; use App\Models\RoleMenuModel; use App\Models\RoleModel; use App\Models\ActionLogModel; 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() { // 请求参数 $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"); foreach ($menuList as &$val) { if (in_array($val['id'], $menuIdList)) { $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(); } /** * 删除七天之前标记软删除的数据 */ public function delete() { // 设置日志标题 ActionLogModel::setRecord(session('userId'), ['type' => 1, 'title' => "删除角色信息", 'content' => json_encode(request()->post(), 256), 'module' => 'admin']); ActionLogModel::record(); $this->model->where('mark', 0)->where('update_time', '<=', time() - 7 * 86400)->delete(); return parent::delete(); } }