123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <?php
- namespace app\acctconnect\controller;
- use app\admin\BaseController;
- use app\admin\model\Admin as AdminList;
- use app\acctconnect\validate\UserCheck;
- use think\exception\ValidateException;
- use think\facade\Db;
- use think\facade\View;
- use think\facade\Session;
- use think\App;
- use app\admin\controller\Role;
- class Connect extends BaseController{
- public function __construct(App $app)
- {
- parent::__construct($app);
- $this->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']]);
- }
- }
|