182 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			182 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
| <?php
 | ||
| namespace app\controller\manager;
 | ||
| 
 | ||
| use app\model\{Category, AuthGroup, Member as MMember, Log};
 | ||
| use Exception;
 | ||
| use think\facade\Db;
 | ||
| 
 | ||
| class Member extends Base
 | ||
| {
 | ||
|     /**
 | ||
|      * 删除管理用户
 | ||
|      */
 | ||
|     public function del()
 | ||
|     {
 | ||
|         if ($this->request->isPost()) {
 | ||
|             $id = input('post.id/d');
 | ||
|             if (is_numeric($id) === true && $id > 0) {
 | ||
|                 $item = MMember::getByID($id);
 | ||
|                 if(!empty($item)){
 | ||
|                     MMember::destroy($id);
 | ||
|                     Log::write('member', 'del', "管理员删除,ID:{$id}, 管理员:{$item['username']}");
 | ||
|                     return $this->json();
 | ||
|                }
 | ||
|             }
 | ||
|             return $this->json(2, '参数错误,请核对之后再操作!');
 | ||
|         }
 | ||
|         return $this->json(1, '非法请求!');
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * 修改管理用户信息
 | ||
|      * 由于try语法中抛出的异常类型与$this->json()抛出的异常类型不一致,因此需要利用$errorMsg 来判断返回情况
 | ||
|      */
 | ||
|     public function edit()
 | ||
|     {
 | ||
|         if($this->request->isPost()){
 | ||
|             $id = input('post.id/d');
 | ||
|             $username = trim(input('post.username'));
 | ||
|             $password = trim(input('post.password'));
 | ||
|             $groupId = input('post.group_id/d');
 | ||
|             if ((is_numeric($id) === true && $id > 0) && ((is_numeric($groupId) === true && $groupId > 0) && !empty($username))) {
 | ||
|                 $member = MMember::getByUserName($username);
 | ||
|                 if(!empty($member) && $member['id'] != $id){
 | ||
|                     return $this->json(2, '该用户名已被使用!');
 | ||
|                 }
 | ||
|                 $errorMsg = '';
 | ||
|                 Db::startTrans();
 | ||
|                 try {
 | ||
|                     $member = MMember::getById($id);
 | ||
|                     $item = [
 | ||
|                         'username' => $username,
 | ||
|                         'group_id' => $groupId
 | ||
|                     ];
 | ||
|                     //角色权限重新赋值
 | ||
|                     $group = AuthGroup::getById($groupId);
 | ||
|                     $item['rules'] = $group['rules'];
 | ||
| 
 | ||
|                     if(!empty($password)){
 | ||
|                         $item['password'] = md5($password);
 | ||
|                     }
 | ||
|                     MMember::updateById($id, $item);
 | ||
|                     Log::write('member', 'edit', "管理员编辑,ID:{$id}, 管理员:{$item['username']}");
 | ||
|                     Db::commit();
 | ||
|                 } catch (Exception $e) {
 | ||
|                     Db::rollback();
 | ||
|                     $errorMsg = '用户信息修改失败!'.$e->getMessage();
 | ||
|                 }
 | ||
|                 if (empty($errorMsg)) {
 | ||
|                     return $this->json();
 | ||
|                 }
 | ||
|                 return $this->json(3, $errorMsg);
 | ||
|             }
 | ||
|             return $this->json(1, '参数错误,请核对之后再操作!');
 | ||
|         }else{
 | ||
|             $id = input('param.id/d');
 | ||
|             if (is_numeric($id) === true && $id > 0) {
 | ||
|                $member = MMember::getByID($id);
 | ||
|                 $item = [
 | ||
|                     'id' => $member['id'],
 | ||
|                     'username' => $member['username'],
 | ||
|                     'group_id' => $member['group_id']
 | ||
|                 ];
 | ||
|                 $auth = session('auth');
 | ||
|                 $groups = AuthGroup::getListById($auth['groupId']);
 | ||
|                 $this->data['groups'] = $groups;
 | ||
|                 $this->data['item'] = $item;
 | ||
|                 return $this->view();
 | ||
|             }
 | ||
|             return $this->json(1, '参数错误,请核对之后再操作!');
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * 新增管理用户
 | ||
|      */
 | ||
|     public function add()
 | ||
|     {
 | ||
|         if($this->request->isPost()){
 | ||
|             $groupId = input('post.group_id/d');
 | ||
|             $username = trim(input('post.username'));
 | ||
|             $password = trim(input('post.password'));
 | ||
|             if ((is_numeric($groupId) === true && $groupId > 0) && ($username != "" && $password != "")) {
 | ||
|                 $member = MMember::getByUserName($username);
 | ||
|                 if(!empty($member)){
 | ||
|                     return $this->json(2, '该用户名已被使用!');
 | ||
|                 }
 | ||
|                 $group = AuthGroup::getById($groupId);
 | ||
|                 $newMember = MMember::create([
 | ||
|                     'username' => $username,
 | ||
|                     'group_id' => $groupId,
 | ||
|                     'password' => md5($password),
 | ||
|                     'rules' => $group['rules'] ?? '',
 | ||
|                     'cates' => '',
 | ||
|                     'login_time' => 0,
 | ||
|                 ]);
 | ||
|                 Log::write('member', 'add', "管理员新增,ID:{$newMember->id}, 管理员:{$newMember['username']}");
 | ||
|                 return $this->json();
 | ||
|             }
 | ||
|             return $this->json(1, '参数错误,请核对之后再操作!');
 | ||
|         }
 | ||
| 
 | ||
|         $auth = session('auth');
 | ||
|         $groups = AuthGroup::getListById($auth['groupId']);
 | ||
|         $this->data['groups'] = $groups;
 | ||
|         return $this->view();
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * 栏目菜单分配
 | ||
|      */
 | ||
|     public function menuAlloter()
 | ||
|     {
 | ||
|         if(request()->isPost()) {
 | ||
|             $cates = input('post.cates/a');
 | ||
|             $id = input('post.id/d');
 | ||
|             if (is_array($cates) && (is_numeric($id) === true && $id > 0)) {
 | ||
|                 $member = MMember::getById($id);
 | ||
|                 if(empty($member)){
 | ||
|                     return $this->json(2, '无此用户信息,请核对之后再操作!');
 | ||
|                 }
 | ||
|                 MMember::updateCates($id, $cates);
 | ||
|                 Log::write('member', 'menuAlloter', "管理员栏目分配,ID:{$id}, 管理员:{$member['username']}");
 | ||
|                 return $this->json();
 | ||
|             }else{
 | ||
|                 return $this->json(3, '传入参数错误,请核对之后再操作!');
 | ||
|             }
 | ||
|         } else {
 | ||
|             $id = input('param.id/d');
 | ||
|             if (is_numeric($id) && $id > 0) {
 | ||
|                 $member = MMember::getById($id);
 | ||
|                 if (empty($member)) {
 | ||
|                     return $this->json(2, '该管理员信息不存在,请核对之后再操作!');
 | ||
|                 }
 | ||
|                 $cates = Category::getListTree(false);
 | ||
|                 $memberCates = array_filter(explode(',', $member['cates']));
 | ||
| 
 | ||
|                 $this->data['id'] = $id;
 | ||
|                 $this->data['member'] = $member;
 | ||
|                 $this->data['memberCates'] = $memberCates;
 | ||
|                 $this->data['cates'] = $cates;
 | ||
|                 return $this->view();
 | ||
|             }
 | ||
|             return $this->json(1, '参数错误,请核对之后再操作!',$id);
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * 所有用户列表
 | ||
|      */
 | ||
|     public function index()
 | ||
|     {
 | ||
|         $auth = session('auth');
 | ||
|         if ($auth['groupId'] == 1) {
 | ||
|             $items = MMember::getList(40);
 | ||
|         } else {
 | ||
|             $items = MMember::getListNotAdmin(40);
 | ||
|         }
 | ||
|         $this->data['items'] = $items;
 | ||
|         return $this->view();
 | ||
|     }
 | ||
| }
 |