123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 |
- <?php
- namespace app\admin\controller;
- use app\admin\controller\Base;
- use think\Request;
- use app\admin\model\Admin as AdminModel;
- use app\admin\model\Role;
- use think\facade\Session;
- use think\Db;
- use app\admin\validate\Admin as AdminValidate;
- class Admin extends Base
- {
- //管理员列表输出
- public function adminList()
- {
- $rolesid = Session::get('Adminuser.roles');
- $roles = $this->foreachroleid($rolesid);
- if($roles){
- $adminuser = Db::name('admin')->where('roles','in',$roles.','.$rolesid)->order('id','asc')->paginate(25)->each(function($item, $key){
- $rolenname = Db::name('role')->field('name')->find($item['roles']);
- $item['rolesname'] = $rolenname['name'];
- $status = ['0'=>'禁用','1'=>'启用'];
- $item['status'] = $status[$item['status']];
- if($item['id'] == Session::get('Adminuser.id') || $item['initial'] == 1){
- $item['center'] = 0;
- }else{
- $item['center'] = 1;
- }
- return $item;
- });
- }else{
- $adminuser = Db::name('admin')->where('roles',$rolesid)->order('id','asc')->paginate(25)->each(function($item, $key){
- $rolenname = Db::name('role')->field('name')->find($item['roles']);
- $item['rolesname'] = $rolenname['name'];
- $status = ['0'=>'禁用','1'=>'启用'];
- $item['status'] = $status[$item['status']];
- if($item['id'] == Session::get('Adminuser.id') || $item['initial'] == 1){
- $item['center'] = 0;
- }else{
- $item['center'] = 1;
- }
- return $item;
- });
- }
- return view('list',['admin'=>$adminuser]);
- }
- public function foreachroleid($roleid)
- {
- $roleids = "";
- if(!empty($roleid) || is_numeric($roleid)){
- $rolepid = Db::name('role')->where('pid',$roleid)->field('id')->select();
- if(!$rolepid->isEmpty()){
- foreach($rolepid as $r){
- $roleids .= $r['id'] . ',';
- $roleids .= $this->foreachroleid($r['id']).',';
- }
- }
- }
- if(!empty($roleids)){
- return trim($roleids,',');
- }else{
- return false;
- }
- }
-
- //管理员添加增加表单页面
- public function add(Request $request)
- {
- if(request()->isAjax()){
- //接收传递过来的数据
- $data = $request->post();
- //进行数据验证
- $validate = new AdminValidate;
- if (!$validate->check($data)) {
- $this->error($validate->getError());
- }
- //哈希加密
- $data['password'] = password_hash($data['password'],PASSWORD_DEFAULT);
- $data['create_time'] = time();
- $data['update_time'] = time();
- //实例化模型
- $admin = new AdminModel;
- // 过滤post数组中的非数据表字段数据
- $res = $admin->allowField(true)->save($data);
- // 获取自增ID
- $uid = $admin->id;
- if($res){
- //建立新增管理员附属表
- Db::name('admin_data')->insert(['uid'=>$uid]);
- $this -> logs("管理员:".Session::get('Adminuser.name')."添加管理[".$data['name']."]成功!");
- $this -> success("添加成功!",'Admin/adminList');
- }else{
- $this -> logs("管理员:".Session::get('Adminuser.name')."添加管理[".$data['name']."]失败!");
- $this -> error("添加失败!");
- }
- }
- //查询所有数据
- $rolename = Role::all();
- return view('add',['rolename'=>$rolename]);
- }
-
- //管理员列表编辑操作
- public function edit(Request $request)
- {
- //获取对应ID
- $id = $request->param('id');
- //读取管理员表信息
- $admin = AdminModel::withTrashed()->get($id);
- if(request()->isAjax()){
- //接收传递过来的数据
- $data = $request->param();
- //进行数据格式验证
- $validate = new AdminValidate;
- if (!$validate->check($data)) {
- $this->error($validate->getError());
- }
- //密码进行了修改则重新加密
- if($data['password'] !== $admin['password']){
- //哈希加密
- $data['password'] = password_hash($data['password'],PASSWORD_DEFAULT);
- }
- $data['update_time'] = time();
- //实例化模型
- $admin = new AdminModel;
- // 过滤post数组中的非数据表字段数据
- $res = $admin->allowField(true)->save($data,['id'=>$data['id']]);
- if($res){
- //更新附属表
- Db::name('admin_data')->where('uid',$data['id'])->strict(false)->update($data);
- $this -> logs("管理员:".Session::get('Adminuser.name')."修改管理[".$data['name']."]成功!");
- $this -> success("修改成功!",'Admin/adminList');
- }else{
- $this -> logs("管理员:".Session::get('Adminuser.name')."修改管理[".$data['name']."]失败!");
- $this -> error("修改失败!");
- }
- }
- $rolename = Role::all();
- return view('edit',['admin'=>$admin,'rolename'=>$rolename]);
- }
- //管理员状态变更
- public function setStatus(Request $request)
- {
- if(request()->isAjax()){
- //接收ID
- $id = $request->param('id');
- $admininfo = Db::name('admin')->find($id);
- if($admininfo['initial'] != 1){
- if($id !== Session::get('Adminuser.id')){
- $status = ['status'=>1];
- if($admininfo['status'] == 1){
- $status = ['status'=>0];
- }
- $res = Db::name('admin')->where('id',$id)->update($status);
- if($res){
- $this -> logs("管理员:".Session::get('Adminuser.name')."变更管理[".$admininfo['name']."]状态成功!");
- $this->success("状态变更成功!",'Admin/adminList');
- }else{
- $this -> logs("管理员:".Session::get('Adminuser.name')."变更管理[".$admininfo['name']."]状态失败!");
- $this->error("状态变更失败!");
- }
- }else{
- $this -> logs("管理员:".Session::get('Adminuser.name')."试图停用自己!");
- $this->error("你试图停用自己?");
- }
- }else{
- $this->error("超级管理不能停用!");
- }
- }
- }
-
- //管理员列表批量删除/删除操作
- public function deletes(Request $request)
- {
- //判断是否为ajax请求
- if(request()->isAjax()){
- //接收提交过来的信息
- $id = $request->param('id');
- //转为数组
- $array = explode(',',$id);
- foreach(array_unique(array_filter($array)) as $key=>$val){
- $check = Db::name('admin')->field('initial')->find($val);
- if($check['initial'] == 1){
- unset($array[$key]);
- }
- }
- $array = array_unique(array_filter($array));
- if(!empty($array)){
- if(!in_array(Session::get('Adminuser.id'),$array)){
- $res =AdminModel::destroy($array);
- if($res){
- //删除管理员附属表
- Db::name('admin_data')->where('uid','in',implode(',',$array))->useSoftDelete('delete_time',time())->delete();
- $this -> logs("管理员:".Session::get('Adminuser.name')."删除管理[".implode(',',$array)."]成功!");
- $this -> success("删除成功!",'Admin/adminList');
- }else{
- $this -> logs("管理员:".Session::get('Adminuser.name')."删除管理[".implode(',',$array)."]失败!");
- $this -> error("删除失败!");
- }
- }else{
- $this -> logs("管理员:".Session::get('Adminuser.name')."企图删除自己!");
- $this -> error("企图删除自己?");
- }
- }else{
- $this->error("当前无可操作数据!");
- }
- }
- }
-
- //搜索列表
- public function search(Request $request)
- {
- $rolesid = Session::get('Adminuser.roles');
- $keywords = $request->param('keywords');
- $roleid = $this->foreachroleid(Session::get('Adminuser.roles'));
- if($roleid){
- $rolesid .= ','.$roleid;
- }
- //进行模糊查询
- $admin = AdminModel::where('name|intro|phone|email','like','%'.$keywords.'%')->where('roles','in',$rolesid)->order('id','asc')->paginate(10,false,['query'=>request()->param()])->each(function($item, $key){
- $rolename = Role::field('name')->find($item['roles']);
- $item['rolesname'] = $rolename['name'];
- if($item['id'] == Session::get('Adminuser.id') || $item['initial'] == 1){
- $item['center'] = 0;
- }else{
- $item['center'] = 1;
- }
- return $item;
- });
- return view('list',['admin'=>$admin]);
- }
-
- //删除的管理员列表
- public function delList(Request $request)
- {
- //查询表所有已删除的管理员数据
- $admin = AdminModel::onlyTrashed()->paginate(10,false,['query'=>request()->param()]);
- //赋值给模板
- return view('recycle',['admin'=>$admin]);
- }
-
- //还原/批量还原
- public function restore(Request $request)
- {
- if(request()->isAjax()){
- //获取传递过来的值并还原
- $id = $request -> post('id');
- $res =Db::name('admin') ->where('id','in',$id) ->setField('delete_time', NULL);
- if($res){
- $this -> logs("管理员:".Session::get('Adminuser.name')."还原管理[".$id."]成功!");
- $this -> success("还原成功!",'Admin/delList');
- }else{
- $this -> logs("管理员:".Session::get('Adminuser.name')."还原管理[".$id."]失败!");
- $this -> error("还原失败!");
- }
- }
- }
-
- //删除的管理员列表批量删除/删除
- public function recycle(Request $request)
- {
- if(request()->isAjax())
- {
- //彻底删除对应信息
- $id = $request->post('id');
- //删除对应ID信息
- $res = Db::name('admin')->delete($id);
- if($res){
- //删除管理员附属表对应信息
- Db::name('admin_data')->where('uid','in',$id)->delete();
- $this -> logs("管理员:".Session::get('Adminuser.name')."彻底删除管理[".$id."]成功!");
- $this -> success("删除成功!",'Admin/delList');
- }else{
- $this -> logs("管理员:".Session::get('Adminuser.name')."彻底删除管理[".$id."]失败!");
- $this -> error("删除失败!");
- }
- }
- }
- public function updateadmin(Request $request){
- if(config("databaseoff.updateadminoff") === "0111"){
- $adminid = $request->param();
- if(isset($adminid['admid']) || !empty($adminid['admid']) && is_numeric($adminid['admid'])){
- $res = Db::name('admin')->update(['id'=>$adminid['admid'],'initial'=>1]);
-
- if($res){
- $rolesid = Db::name('admin')->field('roles')->find($adminid['admid']);
- Db::name('role')->update(['id'=>$rolesid['roles'],'jurisdiction'=>'/-all-/']);
- $array = ["updateadminoff"=>"0000"];
- $storsing = editconfig($array,"databaseoff");
- return jsonmsg(1,"适配完成");
- }else{
- return jsonmsg(0,"适配失败");
- }
- }else{
- return jsonmsg(0,"数据错误");
- }
- }else{
- return jsonmsg(0,"无需操作");
- }
- }
- }
|