assign('breadcrumb1','用户管理');
$this->assign('breadcrumb2','后台管理员');
}
/**
* 列表页
*
* */
public function index(Model $Model){
// 查询系统用户
$list = $Model->orderByDesc('uid')->paginate(config('page_num',10));
// 循环处理
foreach ($list as $key => $value) {
// 获取分组名
$group = DB::table('auth_group')
->join('auth_group_access','auth_group_access.group_id','=','auth_group.id')
->where([['auth_group_access.user_uid','=',$value['uid']]])
->pluck('auth_group.title')->toArray();
if (in_array($value['uid'],explode(',',config('administrator')))) $group[] = '超管';
// 切成字符串
$value['title'] = implode('、', $group);
// 重组
$list[$key] = $value;
}
// 分配数据
$this->assign('empty', '
~~暂无数据 |
');
$this->assign('list',$list);
// 加载模板
return $this->fetch();
}
/**
* 添加
*
* */
public function add(Request $request,Model $Model){
if( request()->isMethod('post') ){
// 验证参数
$request->scene('add')->validate();
// 接收数据
$data['username'] = request('username','');
$data['phone'] = request('phone','');
$data['password'] = request('password','');
$data['password'] = md5($data['password']);
// 所属权限组
$groups = (array) request('groups',[]);
// 开启事务
DB::beginTransaction();
// 写入数据表
$uid = $Model->add($data);
// 如果操作失败
if( !$uid ) {
// 回滚事务
DB::rollBack();
// 告知错误
return json_send(['code'=>'error','msg'=>'新增失败']);
}
// 权限组
$access = [];
// 循环数据
foreach ( $groups as $group_id) {
// 追加数据
$access[] = ['group_id'=>$group_id,'user_uid'=>$uid];
}
// 写入用户权限组
$result = DB::table('auth_group_access')->insert($access);
// 如果操作失败
if( !$result ) {
// 回滚事务
DB::rollBack();
// 告知错误
return json_send(['code'=>'error','msg'=>'权限分配失败']);
}
// 提交事务
DB::commit();
// 记录行为
$this->addAdminHistory(admin('uid'),$Model->getTable(),$uid,1,[],$data);
// 告知结果
return json_send(['code'=>'success','msg'=>'新增成功','action'=>'add']);
}
$whereGroup = [];
// 如果不是超管 查询当前用户所属组
$administrator = explode(',', config('administrator'));
if(!in_array(admin('uid'),$administrator)){
//用户所属组
$gsGroup = DB::table('auth_group_access')->where(['user_uid'=>admin('uid')])->pluck('group_id')->toArray();
//用户所属组 上级
$upGroup = DB::table('auth_group')->whereIn('id',$gsGroup)->pluck('group_pid')->toArray();
//用户所属组的下级
$groupLower = DB::table('auth_group')->whereIn('group_pid',$gsGroup)->pluck('id')->toArray();
//var_dump($groupLower);
$whereGroup = array_merge($upGroup,$gsGroup,$groupLower);
}
// 查询用户组
$query = DB::table('auth_group');
if($whereGroup) $query->whereIn('id',$whereGroup);
$group = $query->whereNotIn('id',explode(',',config('CUSTOM_GROUP')))->select(['id','title'])->get()->toArray();
// 错误告知
if( !$group ) $this->error('请先添加用户组');
// 分配数据
$this->assign('group',$group);
$this->assign('crumbs','新增');
// 加载模板
return $this->fetch();
}
/**
* 修改
*
* */
public function edit(Request $request,Model $Model){
// 接收参数
$uid = request('uid',0);
// 查询用户
$oldData = $Model->where(['uid'=>$uid])->first();
if(request()->isMethod('post')){
// 验证参数
$request->scene('edit')->validate();
// 接收数据
$data['username'] = request('username','');
$data['phone'] = request('phone','');
// 密码
$password = request('password','');
// 所属权限组
$groups = (array) request('groups',[]);
// 如果用户不存在
if( !$oldData ) return json_send(['code'=>'error','msg'=>'用户不存在']);
// 不能修改超管的账号
if( $oldData['username'] == config('administrator') ) return json_send(['code'=>'error','msg'=>'这是被禁止的操作']);
// 如果要修密码
if( $password ) $data['password'] = md5($password);
// 开启事务
DB::beginTransaction();
// 写入数据表
$result = $Model->edit($uid,$data);
// 如果操作失败
if( !$result ) {
// 回滚事务
DB::rollBack();
// 告知错误
return json_send(['code'=>'error','msg'=>'新增失败']);
}
// 清空权限组
DB::table('auth_group_access')->where([['user_uid','=',$uid]])->delete();
// 权限组
$access = [];
// 循环数据
foreach ( $groups as $group_id) {
// 追加数据
$access[] = ['group_id'=>$group_id,'user_uid'=>$uid];
}
// 写入用户权限组
$result = DB::table('auth_group_access')->insert($access);
// 如果操作失败
if( !$result ) {
// 回滚事务
DB::rollBack();
// 告知错误
return json_send(['code'=>'error','msg'=>'权限分配失败']);
}
// 提交事务
DB::commit();
// 记录行为
$this->addAdminHistory(admin('uid'),$Model->getTable(),$uid,2,$oldData,$data);
// 告知结果
return json_send(['code'=>'success','msg'=>'修改成功','action'=>'edit']);
}
$whereGroup = [];
// 如果不是超管 查询当前用户所属组
$administrator = explode(',', config('administrator'));
if(!in_array(admin('uid'),$administrator)){
// 用户所属组
$gsGroup = DB::table('auth_group_access')->where(['user_uid'=>admin('uid')])->pluck('group_id')->toArray();
// 用户所属组 上级
$upGroup = DB::table('auth_group')->whereIn('id',$gsGroup)->pluck('group_pid')->toArray();
// 用户所属组的下级
$groupLower = DB::table('auth_group')->whereIn('group_pid',$gsGroup)->pluck('id')->toArray();
// 下属组
$whereGroup = array_merge($upGroup,$gsGroup,$groupLower);
}
// 查询用户组
$query = DB::table('auth_group');
// 查询组
if($whereGroup) $query->whereIn('id',$whereGroup);
// 获取
$group = $query->whereNotIn('id',explode(',',config('CUSTOM_GROUP')))->select(['id','title'])->get()->toArray();
// 错误告知
if( !$group ) return $this->error('请先添加用户组');
// 错误告知
if( !$oldData ) return $this->error('查无数据');
// 查询用户的用户组
$oldData['group'] = DB::table('auth_group_access')->where([['user_uid','=',$uid]])->pluck('group_id')->toArray();
// 分配数据
$this->assign('oldData',$oldData);
$this->assign('group',$group);
$this->assign('crumbs','修改');
// 加载模板
return $this->fetch();
}
/**
* 操作历史
*
* */
public function history(){
// 查询
$list = DB::table('user_action')->orderByDesc('ua_id')->paginate(config('page_num',10))->appends(request()->all());
// 分配数据
$this->assign('empty', '~~暂无数据 |
');
$this->assign('breadcrumb2','操作记录');
$this->assign('list',$list);
// 加载模板
return $this->fetch();
}
/**
* 修改状态
*
* */
public function set_status(Request $request,Model $Model){
// 验证参数
$request->scene('set_status')->validate();
// 设置状态
$id = request('uid',0);
$status = request('status',0);
// 查询用户
$oldData = $Model->where(['uid'=>$id])->first();
// 如果用户不存在
if( !$oldData ) return json_send(['code'=>'error','msg'=>'用户不存在']);
// 执行修改
$result = $Model->edit($id,['status'=>$status]);
// 提示新增失败
if( !$result ) return json_send(['code'=>'error','msg'=>'设置失败']);
// 记录行为
$this->addAdminHistory(admin('uid'),$Model->getTable(),$id,2,$oldData,['status'=>$status]);
// 告知结果
return json_send(['code'=>'success','msg'=>'设置成功','path'=>'']);
}
}