Пример #1
0
 /**
  * @brief 处理实际的提现流程,只有在提现审核通过之后才会调用此方法 
  * 来产生trans
  *
  * @return  public function 
  * @retval   
  * @see 
  * @note 
  * @author 吕宝贵
  * @date 2015/12/06 17:44:54
  **/
 public function processWithdraw($withdrawId)
 {
     $withdraw = UserWithdraw::findOne($withdrawId);
     if (empty($withdraw)) {
         $this->addError('display-error', '提现申请记录不存在');
         return false;
     }
     $withdrawUser = $this->getUserAccount($withdraw->uid);
     //生成trans
     $trans = new Trans();
     $trans->trans_id_ext = $withdrawId;
     $trans->trans_type_id = Trans::TRANS_TYPE_WITHDRAW;
     $trans->status = Trans::PAY_STATUS_WAITPAY;
     $trans->pay_mode = Trans::PAY_MODE_DIRECTPAY;
     $trans->total_money = $withdraw->money;
     $trans->from_uid = $withdraw->uid;
     $trans->to_uid = $withdraw->uid;
     $trans->currency = 1;
     if (!$trans->save()) {
         $this->addError('display-error', '处理提现时保存交易信息出错');
         $this->addErrors($trans->getErrors());
         return false;
     }
     $freeze = Freeze::findOne(['source_id' => $withdraw->id]);
     if (!$freeze) {
         $this->addError('display-error', '找不到冻结记录');
         return false;
     }
     if (!$freeze->saveTransId($trans->id)) {
         $this->addError('display-error', '冻结记录回写交易信息失败');
         $this->addErrors($trans->freeze->getErrors());
         return false;
     }
     $payable = null;
     if (!($payable = Payable::findOne(['trans_id' => $trans->id]))) {
         $payable = new Payable();
     }
     $payable->trans_id = $trans->id;
     $payable->pay_uid = 0;
     $payable->receive_uid = $trans->to_uid;
     $payable->currency = 1;
     $payable->money = $trans->total_money;
     $payable->status = Payable::PAY_STATUS_WAITPAY;
     $payable->pay_method = Payable::PAY_METHOD_DIRECTPAY;
     //返回收款记录,用以跳转到第三方进行支付
     if ($payable->save()) {
         return true;
     } else {
         $this->addErrors($payable->getErrors());
         return false;
     }
 }