Role = new Role($this->app); $this->url = 'https://www.yiguanfep.com/'; } public function index(){ if (request()->isAjax()) { $param = get_params(); // $session_admin = get_config('app.session_admin'); // $id = Session::get($session_admin)['id']; $id = get_login_admin('id'); if($id == ''){ return to_assign(1, '登录过期,请重新登录!'); } $acct_connect = Db::name('Admin')->where('id', $id)->value('acct_connect'); $where = array(); $where[] = ['status', '>=', 0]; $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit']; $admin = AdminList::where($where)->with('Department') ->where('id', 'in', $acct_connect) ->order('create_time asc') ->paginate($rows, false, ['query' => $param]) ->each(function ($item, $key) { $groupId = Db::name('AdminGroupAccess')->where(['uid' => $item->id])->column('group_id'); $groupName = Db::name('AdminGroup')->where('id', 'in', $groupId)->column('title'); $item->groupName = implode(',', $groupName); $item->last_login_time = empty($item->last_login_time) ? '-' : date('Y-m-d H:i', $item->last_login_time); })->toArray(); // dump($admin); return table_assign(0, '', $admin); } else { // View::assign('admin', $admin); return view(); } } //查看 public function view() { $id = get_params('id'); $rule = get_admin_rule(); $user_groups = Db::name('AdminGroupAccess') ->alias('a') ->join("AdminGroup g", "a.group_id=g.id", 'LEFT') ->where("a.uid='{$id}' and g.status='1'") ->select() ->toArray(); $groups = $user_groups ?: []; $rules = []; foreach ($groups as $g) { $rules = array_merge($rules, explode(',', trim($g['rules'], ','))); } $rules = array_unique($rules); $role_rule = create_tree_list(0, $rule, $rules); $role_rule = $this->Role->remove_checked_false($role_rule); $department = get_department(); // dump($department); $position = Db::name('Position')->where('status', '>=', 0)->order('create_time asc')->select(); View::assign('department', $department); View::assign('position', $position); View::assign('role_rule', $role_rule); View::assign('admin', get_admin($id)); add_log('view', get_params('id')); return view('', ['admin' => get_admin(get_params('id'))]); } // 删除关联账号 public function delete(){ //被删除的关联账号id $delete_id = get_params("id"); $login_admin_id = get_login_admin('id'); $login_acct_connect = Db::name('Admin')->where('id', $login_admin_id)->value('acct_connect'); $login_acct_connect = explode(',', $login_acct_connect); $delete_acct_connect = Db::name('Admin')->where('id', $delete_id)->value('acct_connect'); $delete_acct_connect = explode(',', $delete_acct_connect); $i = 0; // 更新当前登录账号的关联账号 while($i == 0){ if(in_array($delete_id, $login_acct_connect)){ $delete_id = explode(',', $delete_id); $login_acct_connect = array_diff($login_acct_connect, $delete_id); $delete_id = implode(',', $delete_id); $login_acct_connect = implode(',', $login_acct_connect); $res = Db::name('Admin')->where('id', $login_admin_id)->update(['acct_connect' => $login_acct_connect]); if($res){ //更新成功 $i = 1; } }else{ break; } } // 更新删除关联关联的关联账号表 while($i == 1){ if(in_array($login_admin_id, $delete_acct_connect)){ $login_admin_id = explode(',', $login_admin_id); $delete_acct_connect = array_diff($delete_acct_connect, $login_admin_id); $login_admin_id = implode(',', $login_admin_id); $delete_acct_connect = implode(',', $delete_acct_connect); $res = Db::name('Admin')->where('id', $delete_id)->update(['acct_connect' => $delete_acct_connect]); if($res){ //更新成功 $i = 0; } }else{ break; } } return to_assign(0, "删除成功!"); } // 添加关联账号 public function add(){ if (request()->isAjax()) { $param = get_params(); try { validate(UserCheck::class)->check($param); } catch (ValidateException $e) { // 验证失败 输出错误信息 return to_assign(1, $e->getError()); } $admin = Db::name('Admin')->where(['username' => $param['username']])->find(); if (empty($admin)) { return to_assign(1, '用户名或密码错误'); } $param['pwd'] = set_password($param['pwd'], $admin['salt']); if ($admin['pwd'] !== $param['pwd']) { return to_assign(1, '用户名或密码错误'); } if ($admin['status'] == 0) { return to_assign(1, '该用户禁止登录,请于系统所有者联系'); } $connect_account = Db::name('Admin')->where('username', $param['username'])->field('id, acct_connect')->find(); $connect_id = $connect_account['id']; $connect_acct_connect = $connect_account['acct_connect']; if($connect_acct_connect != NULL){ $connect_acct_connect = explode(',', $connect_acct_connect); }else{ $connect_acct_connect = array(); } $login_admin_id = get_login_admin('id'); $login_acct_connect = Db::name('Admin')->where('id', $login_admin_id)->value('acct_connect'); if($login_acct_connect != NULL){ $login_acct_connect = explode(',', $login_acct_connect); }else{ $login_acct_connect = array(); } $i = 0; // 更新当前登录账号的关联账号 while($i == 0){ if(!in_array($connect_id, $login_acct_connect)){ array_push($login_acct_connect, $connect_id); $login_acct_connect = implode(',', $login_acct_connect); $res = Db::name('Admin')->where('id', $login_admin_id)->update(['acct_connect' => $login_acct_connect]); if($res){ //更新成功 $i = 1; } }else{ return to_assign(1, '已关联该账号!'); } } // 更新关联账号的关联账号表 while($i == 1){ if(!in_array($login_admin_id, $connect_acct_connect)){ array_push($connect_acct_connect, $login_admin_id); $connect_acct_connect = implode(',', $connect_acct_connect); $res = Db::name('Admin')->where('id', $connect_id)->update(['acct_connect' => $connect_acct_connect]); if($res){ //更新成功 $i = 0; } }else{ return to_assign(1, '已关联该账号!'); } } return to_assign(0,"关联成功"); }else{ return view(); } } // 切换账号 public function switchLogin(){ $id = get_params('id'); $admin = Db::name('Admin')->where('id', $id)->find(); $data = [ 'last_login_time' => time(), 'last_login_ip' => request()->ip(), 'login_num' => $admin['login_num'] + 1, ]; Db::name('admin')->where(['id' => $admin['id']])->update($data); $session_admin = get_config('app.session_admin'); Session::set($session_admin, $admin); // null $token = make_token(); set_cache($token, $admin, 7200); $admin['token'] = $token; return to_assign(0, '登录成功', ['uid' => $admin['id']]); } }