cxgj/modules/store/models/UserActionForm.php
2023-11-27 09:45:13 +08:00

330 lines
9.8 KiB
PHP

<?php
/**
* @author Any
* @description KISS
* @date 2020-11-5
* @version 1.0.0
*
* _____LOG_____
*
*/
namespace app\modules\store\models;
use app\models\User;
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
]);
}
}