/** * Updates an existing Group model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModel($id); $user = new User(); $advisor = new Advisor(); if ($model->load(Yii::$app->request->post()) && $model->save()) { $advisorArray = Yii::$app->request->post('id_advisor'); if (empty($advisorArray)) { $advisorArray = []; } $advisorGroupArray = ArrayHelper::map(AdvisorGroup::findAll(['id_group' => $id]), 'id_advisor', 'id_advisor'); $delArray = array_diff($advisorGroupArray, $advisorArray); foreach ($delArray as $delAdvisorId) { $delAdvisorGroup = AdvisorGroup::findOne(['id_group' => $model->primaryKey, 'id_advisor' => $delAdvisorId]); $delAdvisorGroup->delete = 1; $delAdvisorGroup->save(); } $addAdvisorGroupArray = array_diff($advisorArray, $advisorGroupArray); $advisorGroup = new AdvisorGroup(); $advisorGroup->id_group = $id; foreach ($addAdvisorGroupArray as $key => $value) { $group = clone $advisorGroup; $group->id_advisor = $value; $group->save(); } return $this->redirect(['index']); } else { return $this->render('update', ['model' => $model, 'user' => $user, 'advisor' => $advisor]); } }
public function UserUpdate($role, $content, $id) { switch ($role) { case Dict::USER_ROLE_BETTERDEBT: $model = new Betterdebt(); $modelkey = "Betterdebt"; break; case Dict::USER_ROLE_ADVISOR: $model = new Advisor(); $modelkey = "Advisor"; break; case Dict::USER_ROLE_CLIENT: $model = new Client(); $modelkey = "Client"; break; case Dict::USER_ROLE_BANK: $model = new BankUser(); $modelkey = "BankUser"; break; default: break; } if (empty($content['id_group'])) { $content['id_group'] = []; } $model = $model::findOne($id); $user = static::find()->where(['id_user' => $model->id_user])->one(); $userOld = static::find()->where(['id_user' => $model->id_user])->one(); //事务开始 $transaction = Yii::$app->db->beginTransaction(); //保存到用户信息主表 if (isset($content['User']['email'])) { $email = $content['User']['email']; } elseif (isset($content['User']['new_email'])) { $email = $content['User']['new_email']; } foreach ($content['User'] as $key => $value) { $user->{$key} = $value; } if ($userOld['email'] != $email) { $user->email = $userOld['email']; $user->new_email = $email; // 发送修改邮件的email if (!$this->changEmail($user)) { $this->_istrue = false; } } if (!$user->save()) { $this->_istrue = false; } //保存到用户信息表(advisor/client/betterdebt/bank_user) foreach ($content[$modelkey] as $key => $value) { $model->{$key} = $value; if ($key == 'date_of_birth' || $key == 'identification_expiration_date') { $model->{$key} = strtotime($value); } } if (!$model->save()) { $this->_istrue = false; } if ($modelkey == "Betterdebt") { if (empty($model->is_primary_service_member)) { //判断是否设置为primary loan officer $model->is_primary_service_member = Dict::BD_PRIMARY_MEMBER_NOT; } else { /** * 如果选择了设置为primary loan officer,则将其他的自动调回不是primary */ $rows = Betterdebt::updateAll(['is_primary_service_member' => Dict::BD_PRIMARY_MEMBER_NOT], "id_betterdebt not in ({$model->id_betterdebt}) "); } } //修改advisor时特有的 $advisorGroups = AdvisorGroup::findAll(['id_advisor' => $id]); $groupArray = ArrayHelper::map($advisorGroups, 'id_group', 'id_group'); $delgroupArray = array_diff($groupArray, $content['id_group']); foreach ($delgroupArray as $delGroupId) { $advisorGroup = AdvisorGroup::findOne(['id_group' => $delGroupId, 'id_advisor' => $model->primaryKey]); $advisorGroup->delete = 1; if (!$advisorGroup->save()) { //$this->_istrue = false; } } /* $advisorgroup_del = new AdvisorGroup(); if ($advisorgroup_del->findAll(['id_advisor' => $id])){ if (!$advisorgroup_del->deleteAll(['id_advisor' => $id])){ $this->_istrue = false; } } */ if (!empty($content['id_group'])) { $addAdvisorGroupArray = array_diff($content['id_group'], $groupArray); $advisorgroup = new AdvisorGroup(); $advisorgroup->id_advisor = $model->primaryKey; foreach ($addAdvisorGroupArray as $key => $value) { $insertadvisorgroup = clone $advisorgroup; $insertadvisorgroup->id_group = $value; if (!$insertadvisorgroup->save()) { $this->_istrue = false; } } } //事务结束提交 if ($this->_istrue) { $transaction->commit(); return true; } else { $transaction->rollback(); return false; } }