Skip to content

Commit 374b44b

Browse files
committed
分组模块curd
分配列表增加字段控制用户只可属于一个分组 分组列表显示启用|停用
1 parent abf33b3 commit 374b44b

File tree

4 files changed

+97
-6
lines changed

4 files changed

+97
-6
lines changed

controllers/GroupsController.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,30 @@ public function actionAssignUser()
7171
return $result;
7272
}
7373

74+
/**
75+
* 添加|修改
76+
* 只能修改名称
77+
*
78+
* @return bool
79+
*/
80+
public function actionCreate()
81+
{
82+
$group_id = \Yii::$app->request->post('group_id');
83+
$group_name = \Yii::$app->request->post('group_name');
84+
85+
return $this->group_model->create($group_id, $group_name);
86+
}
7487

88+
/**
89+
* 停用|启用
90+
*
91+
* @return bool
92+
*/
93+
public function actionStatus()
94+
{
95+
$group_id = \Yii::$app->request->post('group_id');
96+
$group_status = \Yii::$app->request->post('group_status');
97+
98+
return $this->group_model->status($group_id, $group_status);
99+
}
75100
}

example/rbac_route.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
'POST assign' => 'assign',
102102
'POST revoke' => 'revoke',
103103
'GET assign-user' => 'assign-user',
104+
'POST status' => 'status',
104105
]
105106
]
106107
];

models/AuthGroups.php

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
*
1111
* @property string $group_name
1212
* @property string $group_id
13+
* @property string $group_status
1314
* @package wind\rest\models
1415
*/
1516
class AuthGroups extends \yii\db\ActiveRecord
@@ -19,7 +20,7 @@ class AuthGroups extends \yii\db\ActiveRecord
1920
const STATUS_CLOSE = '1';
2021
public $id;
2122

22-
public function __construct($id, array $config = [])
23+
public function __construct($id = null, array $config = [])
2324
{
2425
parent::__construct($config);
2526
$this->id = $id;
@@ -41,6 +42,7 @@ public function rules()
4142
return [
4243
[['group_id'], 'string', 'max' => 50],
4344
[['group_name'], 'string', 'max' => 100],
45+
[['group_status'], 'string', 'max' => 50],
4446
];
4547
}
4648

@@ -50,22 +52,26 @@ public function rules()
5052
public function attributeLabels()
5153
{
5254
return [
53-
'group_id' => 'GROUP ID',
55+
'group_id' => '分组ID',
5456
'group_name' => '分组名称',
57+
'group_status' => '分组状态',
5558
];
5659
}
5760

5861
/**
5962
* 可用列表
63+
* @param null $is_all 是否查询所有分组
6064
*
6165
* @return array|\yii\db\ActiveRecord[]
6266
*/
63-
public function lists()
67+
public function lists($is_all = null)
6468
{
6569
$model = clone $this;
6670
$query = $model->find();
6771
$query->select(['group_id', 'group_name']);
68-
$query->andWhere(['group_status' => self::STATUS_OPEN]);
72+
if ( !$is_all) {
73+
$query->andWhere(['group_status' => self::STATUS_OPEN]);
74+
}
6975
$result = $query->asArray()->all();
7076

7177
return $result;
@@ -122,12 +128,17 @@ public function revoke()
122128
*
123129
* @return array
124130
*/
125-
public function assignUser()
131+
public function assignUser($single_group = null)
126132
{
127133
$group_child_model = new AuthGroupsChild();
128134
//assign 已分配的
129135
$assign = $group_child_model->assigned($this->id);
130-
$user_id_arr = array_filter(array_column($assign, 'id'));
136+
if ($single_group) {
137+
$assign_filter = $group_child_model->assignedAll();
138+
} else {
139+
$assign_filter = $assign;
140+
}
141+
$user_id_arr = array_filter(array_column($assign_filter, 'id'));
131142
//all 所有
132143
$user_model = new \wind\rest\models\searchs\User();
133144
$all = $user_model->allUsers(['id', 'realname']);
@@ -141,5 +152,47 @@ public function assignUser()
141152
return compact(['all', 'assign']);
142153
}
143154

155+
/**
156+
* 添加
157+
*
158+
* @param $group_id
159+
* @param $group_name
160+
*
161+
* @return bool
162+
*/
163+
public function create($group_id, $group_name)
164+
{
165+
$model = $this::findOne(['group_id' => $group_id]) ?: clone $this;
166+
$model->group_id = $group_id;
167+
$model->group_name = $group_name;
168+
if ( !$model->save()) {
169+
\Yii::error($model->errors);
170+
171+
return false;
172+
}
173+
174+
return true;
175+
}
144176

177+
/**
178+
* 停用|启用
179+
*
180+
* @param $group_id
181+
* @param $group_status
182+
*
183+
* @return bool
184+
*/
185+
public function status($group_id, $group_status)
186+
{
187+
$model = $this::findOne(['group_id' => $group_id]);
188+
$model->group_id = $group_id;
189+
$model->group_status = $group_status;
190+
if ( !$model->save()) {
191+
\Yii::error($model->errors);
192+
193+
return false;
194+
}
195+
196+
return true;
197+
}
145198
}

models/AuthGroupsChild.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,16 @@ public function assigned($group_id)
107107
return $result;
108108
}
109109

110+
/**
111+
* 所有已分组的用户
112+
*
113+
* @return array|\yii\db\ActiveRecord[]
114+
*/
115+
public function assignedAll()
116+
{
117+
$model = clone $this;
118+
$query = $model->find();
119+
120+
return $query->asArray()->all();
121+
}
110122
}

0 commit comments

Comments
 (0)