RoleLogic.php
4.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<?php
namespace App\Http\Logic\Bside;
use App\Enums\Common\Code;
use App\Models\ProjectMenu as ProjectMenuModel;
use App\Models\ProjectRole as ProjectRoleModel;
use App\Models\User;
use App\Models\User as UserModel;
class RoleLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new ProjectRoleModel();
$this->param = $this->requestAll;
}
/**
* @name :添加角色
* @return void
* @author :liyuhang
* @method
*/
public function role_add(){
$this->param['create_id'] = $this->user['id'];
$this->param['operator_id'] = $this->user['id'];
$this->param['project_id'] = $this->user['project_id'];
//验证当前角色是否存在
$info = $this->model->read(['name'=>$this->param['name']]);
if($info !== false){
$this->fail('当前添加的角色已存在',Code::USER_ERROR);
}
$rs = $this->model->add($this->param);
if($rs === false){
$this->fail('添加失败',Code::USER_PARAMS_ERROE);
}
return $this->success();
}
/**
* @name :编辑角色
* @return void
* @author :liyuhang
* @method
*/
public function role_edit(){
//TODO::查询当前名称是否重复
$condition = [
['id'=>['!=',$this->param['id']]],
['name'=>$this->param['name']],
['project_id'=>$this->user['project_id']],
];
$info = $this->model->read($condition);
if($info !== false){
$this->fail('当前添加的角色已存在',Code::USER_PARAMS_ERROE);
}
$rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
if($rs === false){
$this->fail('编辑失败',Code::USER_PARAMS_ERROE);
}
return $this->success();
}
/**
* @name :修改状态/排序
* @return void
* @author :liyuhang
* @method
*/
public function role_status(){
$rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
if($rs === false){
$this->fail('error',Code::USER_PARAMS_ERROE);
}
return $this->success();
}
/**
* @name :删除角色
* @return void
* @author :liyuhang
*/
public function role_del(){
//查询当前角色下是否有用户
$userModel = new UserModel();
//批量删除
foreach ($this->param['id'] as $v){
$user_info = $userModel->read(['role_id'=>$v]);
if(!empty($user_info)){
$this->fail('当前角色下有用户存在,不允许删除',Code::USER_ERROR);
}
}
$this->param['id'] = ['in',$this->param['id']];
$rs = $this->model->del($this->param);
if($rs === false){
$this->fail('error',Code::USER_ERROR);
}
return $this->success();
}
/**
* @name :获取角色详情
* @return void
* @author :liyuhang
* @method
*/
public function role_info(){
$info = $this->model->read($this->param);
if($info === false){
$this->fail('error',Code::USER_ERROR);
}
return $this->success($info);
}
/**
* @name :获取菜单列表
* @return array
* @author :liyuhang
* @method
*/
public function role_get_menu(){
//根据当前登录用户角色返回用户菜单列表
$info = $this->model->read(['id'=>$this->user['role_id']]);
$info['role_menu'] = trim($info['role_menu'],',');
$menuModel = new ProjectMenuModel();
$lists = $menuModel->where(['status'=>0])->whereIn('id',explode(',',$info['role_menu']))->get();
$lists = $lists->toArray();
$menu = array();
foreach ($lists as $k => $v){
$v = (array)$v;
if ($v['pid'] == 0) {
$v['sub'] = _get_child($v['id'], $lists);
$menu[] = $v;
}
}
return $this->success($menu);
}
}