addRule('aa',DateRangeValidator::class); //$m->addRule('xx','string'); $m->addRule('page','default',['value'=>1]); $m->addRule('pageSize','default',['value'=>10]); $m->addRule('page','integer',['max'=>1000]); $m->addRule('pageSize','integer',['min'=>1,'max'=>50]); $m->load($this->post()); if(!$m->validate()){ throw new Exception(json_encode($m->getFirstErrors())); } $query = Admin::find()->where(['is_sub'=>1])->andWhere([ 'role'=>\Yii::$app->user->identity->role, 'mall_id'=>\Yii::$app->user->identity->mall_id, 'is_delete'=>0 ]); $this->field = [ Admin::class => [ 'uid','username','mobile','last_login_time','last_login_ip'=>function($m){ return $m->last_login_ip ? long2ip($m->last_login_ip) : ''; } ] ]; $dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort'=>[ 'defaultOrder'=>['uid'=>SORT_DESC] ], 'pagination'=>[ 'defaultPageSize'=>$m->pageSize, 'params'=>['page'=>$m->page] ] ]); // add conditions that should always apply here return $dataProvider; } public function actionSave(){ $id = (int)$this->get('id'); $model = $this->findModel($id); $data = $this->post(); $data['password'] = \Yii::$app->security->generatePasswordHash($data['password']); $data['role'] = \Yii::$app->user->identity->role; $data['mall_id'] = \Yii::$app->user->identity->mall_id; $data['is_sub'] = 1; $data['last_login_ip'] = isset($data['last_login_ip']) && $data['last_login_ip'] ? ip2long($data['last_login_ip']) : 0; if($model->load($data,'') && $model->save()){ return []; }else{ throw new Exception("保存失败:".current($model->getFirstErrors())); } } public function actionMenuByUid(){ $params = $this->requestValidate($this->post(),[ ['admin_id','required'], ]); $roleMenus = RoleMenu::findAll(['role_id' => \Yii::$app->user->identity->role]); $roleKeys = ArrayHelper::getColumn($roleMenus,'menuUrl'); $menus = Menu::find()->where(['in','menuUrl',$roleKeys])->asArray()->all(); $userMenus = SubAccountMenu::findAll(['admin_id'=>$params->admin_id]); $keys = ArrayHelper::getColumn($userMenus,'menuUrl'); return[ 'menus'=>ArrayHelper::itemsMerge($menus,0,'menuUrl','parentPath','children'), 'checked'=>$keys ]; } public function actionDel(){ $params = $this->requestValidate($this->post(),[ ['admin_id','required'] ]); $model = $this->findModel($params->admin_id); if(!$model || $model->is_sub!==1){ throw new Exception("账号不存在"); } $model->delete(); // $model->updateAttributes(['is_delete'=>1]); return []; } public function actionSaveMenu(){ $params = $this->requestValidate($this->post(),[ ['admin_id','required'], ['admin_id','integer'], ['ids','required'] ]); if(is_array($params->ids)){ $insert = []; foreach ($params->ids as $id){ $insert[] = [ 'admin_id'=>$params->admin_id, 'menuUrl'=>$id, 'created_at'=>time(), 'updated_at'=>time() ]; } SubAccountMenu::deleteAll(['admin_id'=>$params->admin_id]); SubAccountMenu::getDb()->createCommand()->batchInsert(SubAccountMenu::tableName(),array_keys($insert[0]),$insert)->execute(); } return []; } /** * @param $id * @return ActiveRecord * @throws NotFoundHttpException */ protected function findModel($id) { if ($id == 0) { return new $this->modelClass(); } if (($model = $this->modelClass::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } } }