validate()){ return $this->getModelError(); } if(is_array($this->user_id)){ foreach ($this->user_id as $user_id){ $res = $this->is_super_admin($user_id); if($res['code'] != 0){ return $res; } $model = User::findOne([ 'is_delete' => 0, 'status' => User::STATUS_NORMAL, 'id' => $user_id ]); if($model == null){ continue; } $model->status = User::STATUS_FORBIDDEN; if(!$model->save()){ return $this->getModelError($model); } } } else { $res = $this->is_super_admin($this->user_id); if($res['code'] != 0){ return $res; } $model = User::findOne([ 'is_delete' => 0, 'status' => User::STATUS_NORMAL, 'id' => $this->user_id ]); if($model == null){ return [ 'code' => 1, 'msg' => '用户不存在' ]; } $model->status = User::STATUS_FORBIDDEN; if(!$model->save()){ return $this->getModelError($model); } } return [ 'code' => 0, 'msg' => '操作成功' ]; } public function cancel_forbidden() { if(!$this->validate()){ return $this->getModelError(); } if(is_array($this->user_id)){ foreach ($this->user_id as $user_id){ $res = $this->is_super_admin($user_id); if($res['code'] != 0){ return $res; } $model = User::findOne([ 'is_delete' => 0, 'status' => User::STATUS_FORBIDDEN, 'id' => $user_id ]); if($model == null){ continue; } $model->status = User::STATUS_NORMAL; if(!$model->save()){ return $this->getModelError($model); } } } else { $res = $this->is_super_admin($this->user_id); if($res['code'] != 0){ return $res; } $model = User::findOne([ 'is_delete' => 0, 'status' => User::STATUS_FORBIDDEN, 'id' => $this->user_id ]); if($model == null){ return [ 'code' => 1, 'msg' => '用户不存在' ]; } $model->status = User::STATUS_NORMAL; if(!$model->save()){ return $this->getModelError($model); } } return [ 'code' => 0, 'msg' => '操作成功' ]; } public function hangup() { if(!$this->validate()){ return $this->getModelError(); } if(is_array($this->user_id)){ foreach ($this->user_id as $user_id){ $res = $this->is_super_admin($user_id); if($res['code'] != 0){ return $res; } $model = User::findOne([ 'is_delete' => 0, 'status' => User::STATUS_NORMAL, 'id' => $user_id ]); if($model == null){ continue; } $model->status = User::STATUS_HANGUP; if(!$model->save()){ return $this->getModelError($model); } } } else { $res = $this->is_super_admin($this->user_id); if($res['code'] != 0){ return $res; } $model = User::findOne([ 'is_delete' => 0, 'status' => User::STATUS_NORMAL, 'id' => $this->user_id ]); if($model == null){ return [ 'code' => 1, 'msg' => '用户不存在' ]; } $model->status = User::STATUS_HANGUP; if(!$model->save()){ return $this->getModelError($model); } } return [ 'code' => 0, 'msg' => '操作成功' ]; } public function cancel_hangup() { if(!$this->validate()){ return $this->getModelError(); } if(is_array($this->user_id)){ foreach ($this->user_id as $user_id){ $res = $this->is_super_admin($user_id); if($res['code'] != 0){ return $res; } $model = User::findOne([ 'is_delete' => 0, 'status' => User::STATUS_HANGUP, 'id' => $user_id ]); if($model == null){ continue; } $model->status = User::STATUS_NORMAL; if(!$model->save()){ return $this->getModelError($model); } } } else { $res = $this->is_super_admin($this->user_id); if($res['code'] != 0){ return $res; } $model = User::findOne([ 'is_delete' => 0, 'status' => User::STATUS_HANGUP, 'id' => $this->user_id ]); if($model == null){ return [ 'code' => 1, 'msg' => '用户不存在' ]; } $model->status = User::STATUS_NORMAL; if(!$model->save()){ return $this->getModelError($model); } } return [ 'code' => 0, 'msg' => '操作成功' ]; } public function account_logout() { if(!$this->validate()){ return $this->getModelError(); } if(is_array($this->user_id)){ foreach ($this->user_id as $user_id){ $res = $this->is_super_admin($user_id); if($res['code'] != 0){ return $res; } $t = \Yii::$app->db->beginTransaction(); $model = User::findOne([ 'is_delete' => 0, 'status' => [User::STATUS_FORBIDDEN, User::STATUS_HANGUP], 'id' => $user_id ]); if($model == null){ continue; } $model->status = User::STATUS_ACCOUNT_LOGOUT; $model->is_delete = 1; if(!$model->save()){ $t->rollBack(); return $this->getModelError($model); } $this->accountLogoutAfter($user_id); $t->commit(); } } else { $res = $this->is_super_admin($this->user_id); if($res['code'] != 0){ return $res; } $t = \Yii::$app->db->beginTransaction(); $model = User::findOne([ 'is_delete' => 0, 'status' => [User::STATUS_FORBIDDEN, User::STATUS_HANGUP], 'id' => $this->user_id ]); if($model == null){ return [ 'code' => 1, 'msg' => '用户不存在' ]; } $model->status = User::STATUS_ACCOUNT_LOGOUT; $model->is_delete = 1; if(!$model->save()){ $t->rollBack(); return $this->getModelError($model); } $this->accountLogoutAfter($this->user_id); $t->commit(); } return [ 'code' => 0, 'msg' => '操作成功' ]; } private function is_super_admin($user_id) { if($user_id == 1){ return [ 'code' => 1, 'msg' => '没有操作权限' ]; } return [ 'code' => 0, 'msg' => 'ok' ]; } /** * 账号注销后续操作 */ private function accountLogoutAfter($user_id) { //取消关联第三方登录 UserOauth::updateAll(['is_delete' => 1],[ 'is_delete' => 0, 'user_id' => $user_id ]); //Token UserToken::updateAll(['is_delete' => 1],[ 'is_delete' => 0, 'user_id' => $user_id ]); } }