Example #1
0
 /**
  * 开始提现
  * 
  * @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;
 }