public function sendPresent($request, $response)
 {
     /*{{{*/
     $patient = DAL::get()->find('patient', $request->patientid);
     $space = DAL::get()->find('space', $request->spaceid);
     $cashCoupon = DAL::get()->find('cashcoupon', $request->couponid);
     $mes = "礼物无效或订单创建失败!请重试!";
     if ($cashCoupon->isNull()) {
         throw new BizException('代金券无效!');
     }
     //$presentId = (CashCoupon::PRICE_10 == $cashCoupon->price)?(Present::GEHL_PRESENT_ID):(Present::YDGS_PRESENT_ID);
     $presentId = CashCoupon::PRICE_10 == $cashCoupon->price ? Present::TEST_GNHL_PRESENT_ID : Present::TEST_YDGS_PRESENT_ID;
     $present = DAL::get()->find('Present', $presentId);
     $result = 4;
     if (false == $present->isNull()) {
         $presentOrder = PresentClient::getInstance()->createOrder($patient->user, $patient, $space, $present, "");
     }
     if (Account::PAY_RESULT_FAIL_COUPON == $result) {
         $mes = "代金券支付失败!";
     } else {
         if (Account::PAY_RESULT_SUCC == $result) {
             AsyncSendMessage::regAsyncMessage($presentOrder);
             //发送站内信
             $mes = "{$cashCoupon->price}元代金券使用成功!";
         }
     }
     $response->setRedirect($response->router->urlfor('present/showtelorder?message=' . $mes));
 }
 public function ajaxBuyPresent($request, $response)
 {
     /*{{{*/
     $patientId = $request->patientid;
     $presentId = $request->presentid;
     list($canSend, $errorMsg) = $this->canSendPresent($patientId, $presentId);
     $response->canSend = $canSend;
     $response->errorMsg = $errorMsg;
     if ($this->user->isNull()) {
         return 'ajaxfailsent';
     }
     if (false == $canSend) {
         return 'ajaxfailsent';
     }
     $isAllowSend = $this->isAllowSendPresent($response);
     if (false == $isAllowSend) {
         return 'notsend';
     }
     //处理老订单还是新订单
     $present = DAL::get()->find('Present', $presentId);
     $patient = DAL::get()->find('patient', $patientId);
     $presentOrder = PresentClient::getInstance()->createOrder($this->user, $patient, $this->space, $present, $request->wish, $request->old);
     $response->presentOrder = $presentOrder;
     $result = Account::PAY_RESULT_FAIL;
     $url = '';
     $couponId = 0;
     if (false == $presentOrder->isNull()) {
         $result = ScoreClient::getInstance()->payForPresent($this->user->id, $this->space->id, $presentOrder->id);
         $url = Account::resultUrl($result, 'present', $presentOrder->id);
     }
     $errorMsg = '';
     if (Account::PAY_RESULT_FAIL == $result) {
         $errorMsg = '订单提交失败';
     } else {
         if (Account::PAY_RESULT_FAIL_COUPON == $result) {
             $errorMsg = '代金券支付失败!';
         } else {
             if (Account::PAY_RESULT_NEED_RECHARGE != $result && Account::PAY_RESULT_NEED_EXCHANGE != $result && Account::PAY_RESULT_SUCC != $result) {
                 $errorMsg = '积分处理流程失败!';
             } else {
                 $ref = DAL::get()->find_by_spaceid_and_patientid_and_status('doctorpatientref', $this->space->id, $patientId, DoctorPatientRef::STATUS_INIT);
                 $response->ref = $ref;
                 $response->url = $url;
                 $response->score = $present->price;
                 $response->heartValue = $present->heartValue;
                 if (Account::PAY_RESULT_SUCC == $result) {
                     AsyncSendMessage::regAsyncMessage($presentOrder);
                     //发送站内信
                     if ($ref instanceof DoctorPatientRef) {
                         //管理员给患者的提示信息失效
                         NfsClient::getInstance()->disablePatientNotice($ref->id);
                     }
                 }
                 if ($presentOrder->isAudited()) {
                     return 'ajaxsuccesssent';
                 } else {
                     return 'ajaxsuccesscustom';
                 }
             }
         }
     }
     $response->errorMsg = $errorMsg;
     $response->result = $result;
     return 'ajaxfailsent';
 }