/** * 开始提现 * * @return bool */ public function save() { if ($this->validate()) { $transaction = Yii::app()->db->beginTransaction(); try { $now = time(); $trade = new UserTrade(); $trade->trade_no = UserTrade::createTradeNo($now); $trade->amount = $this->amount; $trade->type = UserTrade::TYPE_WITHDRAW; $trade->user_id = Yii::app()->user->id; $trade->status = UserTrade::STATUS_NEW; $trade->time_create = $now; $trade->time_update = $now; $trade->save(); //保存提现数据 $res_1 = $this->saveWithdrawData($trade->id, $now); //更新账户余额 $res_2 = User::model()->updateCounters(['balance' => -$this->amount], 'id = ' . Yii::app()->user->id); $transaction->commit(); if ($res_1 && $res_2) { return true; } else { $transaction->rollback(); return false; } } catch (CHttpException $e) { $transaction->rollback(); throw new CHttpException(500, '提现失败,请稍后重试'); } } return false; }