You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

217 lines
8.1 KiB

<?php
namespace app\admin\controller\project;
use app\admin\model\AuthGroup;
use app\admin\model\AuthGroupAccess;
use app\admin\model\User;
use app\common\model\ProjectCompanyUser;
/**
* 企业用户管理
*
* @icon fa fa-circle-o
*/
class CompanyUser extends ProjectBase
{
protected $model = null;
public function _initialize()
{
parent::_initialize();
$this->model = model('User');
$this->assignconfig("admin", ['id' => $this->auth->id]);
}
public function del($ids = null)
{
if ($ids) {
$ids = explode(',', $ids);
ProjectCompanyUser::where('user_id', 'in', $ids)->delete();
}
$this->success();
}
public function index()
{
//设置过滤方法
$this->request->filter(['strip_tags', 'trim']);
if ($this->request->isAjax()) {
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('keyField')) {
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$list = $this->model->with('authGroup');
//非超级管理员获取企业账号的所有企业用户
if (!$this->auth->isSuperAdmin()) {
//获取当前企企业账号所有关联账号
$user_ids = ProjectCompanyUser::getUserIds($this->auth->company_id);
$list = $list->where('user.id', 'in', $user_ids);
}
$list = $list
->where($where)
->order($sort, $order)
->paginate($limit);
foreach ($list as $k => $v) {
$v->avatar = $v->avatar ? cdnurl($v->avatar, true) : letter_avatar($v->nickname);
$v->hidden(['password', 'salt']);
//查询用户角色ID
// $group_id = AuthGroupAccess::where('uid', $v['id'])->value('group_id');
$list[$k]['role_name'] = AuthGroup::get($v['group_id'])->name ?? '';
}
//不展示超级管理员
$result = array("total" => $list->total(), "rows" => $list->items());
return json($result);
}
return $this->view->fetch();
}
/**
* 编辑
*/
public function edit($ids = null)
{
$row = $this->model->get($ids);
$is_admin = $this->auth->isSuperAdmin();
// $auth_group_access = new AuthGroupAccess();
if ($this->request->isPost()) {
$company_id = $this->request->post('company_id');
$group_id = $this->request->post("group_id");
$company_id = $this->auth->company_id;
if ($is_admin) {
$company_id = $this->request->post('company_id');
}
// var_dump($company_id);exit();
$auth_group = AuthGroup::get($group_id);
if ($group_id) {
if ($row) {
//更新权限组
// AuthGroupAccess::where(['uid' => $row['id'], 'group_id' => $row['group_id']])->update(['group_id' => $group_id]);
$result = $row->allowField(true)->save(['group_id' => $group_id]);
//更新企业用户角色
$company_user = ProjectCompanyUser::where(['user_id' => $row['id'], 'company_id' => $company_id])->find();
if ($company_user) {
$company_user->role_id = $group_id;
$company_user->role_type = $auth_group['type'];
$company_user->save();
} else {
$company_users = [
'user_id' => $row['id'],
'company_id' => $company_id,
'role_id' => $group_id,
'role_type' => $auth_group['type'],
];
ProjectCompanyUser::create($company_users);
}
}
if ($result !== false) {
$this->success();
} else {
$this->error($row->getError());
}
}
$this->error();
}
if (!$row) {
$this->error(__('No Results were found'));
}
//获取当前用户角色所绑定的企业
$company_id = ProjectCompanyUser::where(['user_id' => $row['id'], 'role_id' => $row['group_id']])->value('company_id');
//获取当前企业的所有角色
$this->view->assign('groupList', build_select('group_id', \app\admin\model\AuthGroup::where(['pid'=>['<>',0],'user_type'=>0,'type'=>['<>', 7],'company_id' => $company_id])->column('id,name'), $row['group_id'], ['class' => 'form-control selectpicker']));
$this->view->assign('row', $row);
$this->view->assign('is_admin', $is_admin);
$this->view->assign('company_id',$company_id);
return $this->view->fetch();
}
/**
* 创建多个企业用户关系
*/
public function add(){
$company_id = $this->auth->company_id;
$is_admin = $this->auth->isSuperAdmin();
if (!$this->request->isPost()) {
//获取所有角色
$groupList = \app\admin\model\AuthGroup::where(['pid'=>['<>',0], 'user_type' => 0,'type'=>['<>', 7], 'company_id' => $company_id])->column('id,name');
$this->view->assign('groupList', build_select('group_id', $groupList, null, ['class' => 'form-control selectpicker']));
//是否企业管理员
$this->view->assign('is_admin', $is_admin);
//获取所有用户
// $userList = $this->model->column('id,nickname');
// $this->view->assign('userList', build_select('user_ids[]', [], 1, ['class' => 'form-control selectpage', 'data-multiple'=>"true",'data-source' => 'user/user/index','data-field'=>'nickname']));
return $this->view->fetch();
}
$post = $this->request->post('row/a');
$group_id = $this->request->post('group_id');
$user_ids = $post['user_ids'];
//超级管理员选择企业ID
if ($is_admin) {
$company_id = $post['company_id'];
}
//不是企业管理员不能添加企业用户
// if (!$this->auth->isCompanyAdmin()) {
// $this->error('非企业管理员不能添加企业用户');
// }
$user_ids = explode(',',$user_ids);
//企业管理员不能添加超级管理员
if (in_array(1, $user_ids)) {
$this->error('企业管理员不能添加超级管理员');
}
$user_ids = array_filter($user_ids);
if (!$user_ids) {
$this->error('请选择用户');
}
$company_users = ProjectCompanyUser::whereIn('user_id', $user_ids)->select()->toArray();
foreach ($company_users as $value) {
if ($value['company_id']) {
$company_name = \app\admin\model\project\Company::get($value['company_id'])->company_name??'';
$username = User::get($value['user_id'])->nickname??'';
$this->error($username.'已经是'.$company_name.'企业用户');
}
}
$company_users = [];
$auth_group = AuthGroup::get($group_id);
// $auth_group_access = new AuthGroupAccess();
foreach ($user_ids as $user_id) {
//添加企业用户包括角色
$company_users[] = [
'user_id' => $user_id,
'company_id' => $company_id,
'role_id' => $group_id,
'role_type' => $auth_group['type'],
];
$user = $this->model->get($user_id);
//更新角色组
// $auth_group_access->where(['uid' => $user['id'], 'group_id' => $user['group_id']])->update(['group_id' => $group_id]);
//更新用户角色
$user->group_id = $group_id;
$user->save();
}
$company_user = new ProjectCompanyUser();
$company_user->saveAll($company_users);
$this->success('添加成功');
}
}