8], [['cx_mch_id', 'creator_user_id', 'type'], 'integer'], [['role_ids', 'model'], 'safe'], [['role_ids', 'model', 'nickname', 'creator_user_id', 'type','mobile_phone'], 'required'], [['username', 'password','mobile_phone'], 'required', 'on' => 'add'], ]; } public function attributeLabels() { return [ 'cx_mch_id' => '平台商户ID', 'username' => '用户名', 'password' => '密码', 'nickname' => '昵称', 'mobile_phone' => '手机号', ]; } public function save() { if(!$this->validate()){ return $this->getModelError(); } $t = \Yii::$app->db->beginTransaction(); $form = new CommonUserEditForm(); $find_ = User::findOne([ 'username' => $this->username, ]); if(!empty($find_)){ if(!empty($this->model) && $this->model->id == $find_->id){ }else{ return $this->apiReturnError("用户名已存在,请更换"); } } if($this->model->isNewRecord){ $form->scenario = 'add'; // $form->type = $this->type; $form->avatar_url = User::DEFAULT_AVATAR_URL; $form->access_token = \Yii::$app->security->generateRandomString(); $form->is_modify_un = 0; $user = User::findOne(['mobile_phone' => $this->mobile_phone,'is_delete' => 0]); $name_msg = ""; if($user != null){ if($user->type != 0){ if($user->type == '2'){ $name_msg = '门店人员'; }elseif ($user->type == '6'){ $name_msg = '员工'; }elseif ($user->type == '7'){ $name_msg = 'BOSS账号'; }elseif ($user->type == '8'){ $name_msg = '总部管理员'; } return $this->apiReturnError($this->mobile_phone.'已成为'.$name_msg.'请更换手机号'); }else{ $this->model = $user; } } } $role = Role::findOne(['id' => $this->role_ids,'is_delete' => 0]); if($role == null){ return $this->apiReturnError("选择角色不存在"); } if($role->name == 'BOSS账号'){ $this->type = User::TYPE_BOSS_STAFF; }elseif ($role->name == '总部管理员'){ $this->type = User::TYPE_ADMIN_STAFF; } $form->type = $this->type; $form->cx_mch_id = $this->cx_mch_id; $form->mobile_phone = $this->mobile_phone; $form->model = $this->model; if(!empty($this->password)){ $form->password = \Yii::$app->security->generatePasswordHash($this->password); } $form->username = $this->username; $form->nickname = $this->nickname; $res = $form->save(); if($res['code'] != 0){ $t->rollBack(); return $this->apiReturnError($res['msg']); } $user_id = $res['data']['user_id']; //保存角色 $res = $this->saveUserRole($user_id, $this->role_ids, $this->cx_mch_id); if($res['code'] != 0){ $t->rollBack(); return $this->apiReturnError($res['msg']); } //保存系统管理员 $res = $this->saveSysAdmin($user_id, $this->creator_user_id, $this->cx_mch_id); if($res['code'] != 0){ $t->rollBack(); return $this->apiReturnError($res['msg']); } $t->commit(); return $this->apiReturnSuccess("保存成功"); } private function saveUserRole($user_id, $role_ids, $cx_mch_id = 0) { if(empty($this->role_ids)){ return $this->apiReturnError("角色不能为空"); } RoleUser::updateAll(['is_delete' => 1], ['is_delete' => 0, 'user_id' => $user_id, 'cx_mch_id' => $cx_mch_id]); $role_user = RoleUser::findOne(['user_id' => $user_id, 'role_id' => $role_ids]); if($role_user == null){ $role_user = new RoleUser(); $role_user->cx_mch_id = $cx_mch_id; $role_user->user_id = $user_id; $role_user->role_id = $role_ids; } $role_user->is_delete = 0; if(!$role_user->save()){ return $this->getModelError($role_user); } return $this->apiReturnSuccess(); } private function saveSysAdmin($user_id,$creator_user_id, $cx_mch_id) { $sys_admin = SysAdmin::findOne(['user_id' => $user_id, 'cx_mch_id' => $cx_mch_id, 'is_delete' => 0]); if($sys_admin == null){ $sys_admin = new SysAdmin(); $sys_admin->user_id = $user_id; $sys_admin->cx_mch_id = $cx_mch_id; $sys_admin->creator_user_id = $creator_user_id; } $sys_admin->is_delete = 0; if(!$sys_admin->save()){ return $this->getModelError($sys_admin); } return $this->apiReturnSuccess(); } }