cxfoot/modules/admin/models/UserActionForm.php
2023-10-24 14:54:18 +08:00

477 lines
14 KiB
PHP

<?php
/**
* @author Any
* @description KISS
* @date 2020-11-5
* @version 1.0.0
*
* _____LOG_____
*
*/
namespace app\modules\admin\models;
use app\models\StoreUser;
use app\models\User;
use app\models\UserLogoutReview;
use app\models\UserOauth;
use app\models\UserToken;
use app\models\Admin;
class UserActionForm extends AdminModel
{
public $user_id;
public function rules()
{
return [
[['user_id'], 'safe'],
[['user_id'], 'required'],
];
}
public function 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_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
]);
}
/**
* 账号注销后续操作
*/
private function accountLogoutAfterStoreUser($user_id)
{
//取消关联第三方登录
StoreUser::updateAll(['is_delete' => 1],[
'is_delete' => 0,
'user_id' => $user_id
]);
}
public function logout()
{
if(!$this->validate()){
return $this->getModelError();
}
if(is_array($this->user_id)){
foreach ($this->user_id as $user_id){
$t = \Yii::$app->db->beginTransaction();
$review = UserLogoutReview::findOne(['id' => $user_id,'status' => 0,'is_delete' => 0]);
if($review == null){
return ['code' => 1, 'msg' => '申请记录不存在'];
}
$review->status = 1;
$review->status_time = time();
if(!$review->save()){
$t->rollBack();
return $this->getModelError($review);
}
$res = $this->is_super_admin($review->user_id);
if($res['code'] != 0){
$t->rollBack();
return $res;
}
$model = User::findOne([
'is_delete' => 0,
'id' => $review->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($review->user_id);
$this->accountLogoutAfterStoreUser($review->user_id);
$t->commit();
}
} else {
$t = \Yii::$app->db->beginTransaction();
$review = UserLogoutReview::findOne(['id' => $this->user_id,'status' => 0,'is_delete' => 0]);
if($review == null){
return ['code' => 1, 'msg' => '申请记录不存在'];
}
$review->status = 1;
$review->status_time = time();
if(!$review->save()){
$t->rollBack();
return $this->getModelError($review);
}
$res = $this->is_super_admin($review->user_id);
if($res['code'] != 0){
return $res;
}
$model = User::findOne([
'is_delete' => 0,
'id' => $review->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($review->user_id);
$this->accountLogoutAfterStoreUser($review->user_id);
$t->commit();
}
return [
'code' => 0,
'msg' => '操作成功'
];
}
//注销记录驳回
public function account_logout_review()
{
if(!$this->validate()){
return $this->getModelError();
}
if(is_array($this->user_id)){
foreach ($this->user_id as $user_id){
$review = UserLogoutReview::findOne(['id' => $user_id,'status' => 0,'is_delete' => 0]);
if($review == null){
return ['code' => 1, 'msg' => '申请记录不存在'];
}
$review->status = 2;
$review->status_time = time();
if(!$review->save()){
return $this->getModelError($review);
}
}
} else {
$review = UserLogoutReview::findOne(['id' => $this->user_id,'status' => 0,'is_delete' => 0]);
if($review == null){
return ['code' => 1, 'msg' => '申请记录不存在'];
}
$review->status = 2;
$review->status_time = time();
if(!$review->save()){
return $this->getModelError($review);
}
}
return [
'code' => 0,
'msg' => '操作成功'
];
}
// 变更为为观看视频
public function actionEditIsView(){
User::updateAll([
'is_view' => 0,
],[
'id' => $this->user_id,
]);
return [
'code' => 0,
'msg' => '操作成功'
];
}
}