private function getPhoneList($request, $response) {/*{{{*/ $diseaseIds_shuffle = self::$diseaseIds; shuffle($diseaseIds_shuffle); list($directDoctorList, $directSatisfactions) = PaymentClient::getInstance()->getLatestPhoneServiceDoctorAndSatisfactionListByDiseaseId(array_pop($diseaseIds_shuffle), 3); if($request->searchType == CmsTagType::HOSPITAL) { $phoneDoctorIds = DAL::get()->queryDoctorIdsByHospital('DoctorOutLine', $request->searchParam, 3); if (false == empty($phoneDoctorIds)) { $directDoctorList = DAL::get()->find('Doctor', $phoneDoctorIds); $directSatisfactions = PaymentClient::getInstance()->getDoctorSatisfactionList($phoneDoctorIds); } } if($request->searchType == CmsTagType::FACULTY) { $phoneDoctorIds = DAL::get()->queryDoctorIdsByHospitalFaculty('DoctorOutLine', $request->searchParam, 3); if (false == empty($phoneDoctorIds)) { $directDoctorList = DAL::get()->find('Doctor', $phoneDoctorIds); $directSatisfactions = PaymentClient::getInstance()->getDoctorSatisfactionList($phoneDoctorIds); } } $response->statistics = SpaceClient::getInstance()->getStatistics(); $response->directDoctorList = $directDoctorList; $response->directSatisfactions = $directSatisfactions; }/*}}}*/
public function saveDoctorPhone($request, $response) {/*{{{*/ $serviceid = $request->id; $doctorphone = $request->doctorphone; if( empty($serviceid) || empty($doctorphone)){ echo -1; exit; } PaymentClient::getInstance()->saveTempDoctorPhone4Order($serviceid, $doctorphone); echo 1; exit; }/*}}}*/
public function index($request, $response) { /*{{{*/ if (0 === stripos($_SERVER['HTTP_HOST'], 'www.')) { $jumpUrl = substr($_SERVER['HTTP_HOST'], 4); $response->exitJump("http://{$jumpUrl}", 301); } //BIZARC-2810 丰台区妇幼保健院以及其下科室,个人信息页面屏蔽 $noRecordHospitalIds = array(1867); if (in_array($this->space->host->hospitalfaculty->hospital->id, $noRecordHospitalIds)) { //DC-335 //$response->setRedirect('http://www.'.URL_PREFIX.'haodf.com/info/norecordhospitalnotice.php'); //return; } $response->module = Space::MODULE_INDEX; //wt $this->diseaseVote($request, $response); $this->getDoctorInfo($request, $response); $this->getPatientsList($request, $response); $this->getBookingCount($request, $response); $this->getArticles($request, $response); $this->getFlowInfo($request, $response); $this->getReceivedPresentList($request, $response); $this->statistics($request, $response); $this->oldAsk($request, $response); $this->getZhuantis($request, $response); //wx 显示医生患者报到补贴信息 $this->showPatientSigninSubsidy($request, $response); if ($this->space->isOpenFollowup()) { $method = $this->isSpaceLogin() ? "index4FollowupAdmin" : "index4FollowupUser"; } else { $method = $this->isSpaceLogin() ? "index4Admin" : "index4User"; } $response->bookingContract = $this->space->bookingcontract; $response->caseIsFull = $this->isDoctorCaseFull(); $response->tipstr = $this->getCaseTip(); $response->showschedule = $request->getRequest('show_schedule', 0); $response->boxPresentId = $request->boxPresentId; //首页自动打开的fancybox地址 $response->ajaxReferrer = $request->ajaxReferrer; //首页自动打开的fancybox地址 if ($this->space->isPhoneOpenedForFront($this->user->id)) { $telVisitList = PaymentClient::getInstance()->getPatientPhoneServiceList($this->space->user->id, 1, 10); $response->telVisitTotalCnt = isset($telVisitList['pageInfo']['total']) ? $telVisitList['pageInfo']['total'] : 0; $telVisitInfos = DAL::get()->queryLatestCompleteOrderIdsBySpaceId('TelOrder', $this->space->user->id, $count = 10); $response->telVisitInfos = $telVisitInfos; $options['status'] = array(TelOrder::STATUS_FINISHED, TelOrder::STATUS_CLOSED); $response->telOrderCount = TelOrderClient::getInstance()->getOrderCount4Space($this->space->id, $options); } return $this->{$method}($request, $response); }
public function doctorIncomeGroupbyDoctorOfDateSpan($request, $response) {/*{{{*/ if(false == in_array($this->curUser->name,FinancialInterceptor::$userAuditor)) { echo "权限不足"; exit; } ini_set("memory_limit","1024M"); ini_set("max_execution_time", "600"); $fromdate = $request->fromdate; $todate = $request->todate; $response->fromdate = $fromdate; $response->todate = $todate; $response->fileName = CsvFileGenerator::getDownLoadFileName(array(strtolower(__FUNCTION__)), $fromdate, $todate); $detailUrlDomain = 'hdfadmin.haodf.com/paymentfront/rpt/'; $lines = PaymentClient::getInstance()->getDoctorIncomeRptGroupbyDoctorOfDateSpan(ServiceDef::TYPE_TELORDER, $fromdate, $todate, $detailUrlDomain); $response->lines = $lines; }/*}}}*/
public function askIntentionintro($request, $response) {/*{{{*/ $caseHostUserId = $request->getRequest('spaceid', 0); $askSpace = DAL::get()->find('space', $caseHostUserId); $message = $request->message; $response->statistics = SpaceClient::getInstance()->getStatistics(); $response->message = $message; $response->askSpaceObjectBefore = $askSpace; $anserPhoneCount = PaymentClient::getInstance()->getDoctorSatisfactionCntList($askSpace->id); $anserPhoneCount = isset($anserPhoneCount[0])?$anserPhoneCount[0]['cnt'] : 0; $phoneComments = PaymentClient::getInstance()->getDoctorSatisfactionList($askSpace->host->id); $response->phoneComments = isset($phoneComments[$askSpace->host->id]['scorecnt'])?$phoneComments[$askSpace->host->id]['scorecnt'] : 0; $response->anserPhoneCount = $anserPhoneCount; //dodo::wxy 添加医生一句话 $owner = DAL::get()->find_by_relatedObjectid_and_relatedobjecttype('telowner', $askSpace->id, TelOwner::TYPE_USER); $response->owner = $owner; $docWords = (false == $owner->isNull() && $owner->isSpaceOwner())?$owner->getSpaceExt()->getDoctorWords():''; $response->wordLen = $docWords?(int)strlen($docWords):''; $response->normalWord = $docWords?$docWords:''; $response->excessWord = $docWords?XString::strString(array($docWords),0,300)."...":''; }/*}}}*/
public function showOneDetail($request, $response) { /*{{{*/ $doctorComment = null; $ticket = new NullEntity(); $doctorComment = DoctorCommentClient::getInstance()->getDoctorCommentSubClass($request->id); if ($request->msg == 'delete') { echo '此点评已经删除'; exit; } if ($doctorComment->isNull()) { echo '没有相关的点评数据'; exit; } $diseaseDoctorList = array(); if (!$doctorComment->doctor->isNull()) { $diseaseDoctorList = DiseaseDoctorClient::getInstance()->getDoctorExpertDisease($doctorComment->doctor->id, 10); } $jiaHaoStatus = ''; $userPhoneThreadList = ''; $doctor = DAL::get()->find('doctor', $doctorComment->doctor->id); if ($doctor->hasSpace()) { $spaceId = $doctor->space->id; if ($doctorComment->patientId) { $jiaHaoStatus = BookingClient::getInstance()->getPatientBookingStatus($doctorComment->patientId, $spaceId); $userPhoneThreadList = PaymentClient::getInstance()->getPatientSuccessServiceList($doctorComment->patientId, $spaceId); } } $session = SessionDefault::singleton(); $privilege = PrivilegeClient::getInstance()->getByUserName($session->UserName); $srcException = DAL::get()->queryException4Comment('doctorcomment', $doctorComment); $response->srcException = $srcException; $response->doctorComment = $doctorComment; $response->diseaseDoctorList = $diseaseDoctorList; $response->jiaHaoStatus = $jiaHaoStatus; $response->userPhoneThreadList = $userPhoneThreadList; $response->privilege = $privilege; $response->msg = $request->msg; $response->textInspectResult = DAL::get()->find_by_sourceid_and_sourcetype('DoctorCommentInspectResult', $doctorComment->id, get_class($doctorComment)); $readonlyContent = $doctorComment->getOriginalContent(); $sensContentArr = BeanFinder::get('ContentFilter')->getSensitiveWordsRecursive('comment', $readonlyContent); foreach ($sensContentArr as $sensContent) { $readonlyContent = str_replace($sensContent, "<span class='red'>{$sensContent}</span>", $readonlyContent); } $response->readonlyContent = $readonlyContent; $response->ticket = $ticket; }
public function newIntro($request, $response) { /*{{{*/ DBC::requireFalse($this->spaceIsLogin, '不允许自己提交给自己订单!'); //对没有开通电话咨询医生的链接跳转,没有owner也会跳走. if (false == $this->space->isPhoneOpenedForFront($this->user->id)) { $response->setRedirect('http://' . URL_PREFIX . '400.haodf.com/index/prompt?doctorName=' . rawurlencode($this->space->host->name) . '&doctorFaculty=' . rawurlencode($this->space->host->hospitalfaculty->faculty->name)); return; } $hospitalFacultyDoctorIds = DoctorClient::getInstance()->getHospitalFacultyDoctorLimit3($this->space->host); $facultyDoctorIds = DoctorClient::getInstance()->getFacultyDoctorLimit6($this->space->host); $facultyDoctorIds = array_diff($facultyDoctorIds, $hospitalFacultyDoctorIds); $response->num = count($facultyDoctorIds); $facultyDoctorIds = array_slice($facultyDoctorIds, 0, 3); $facultyDoctorList = DAL::get()->find('doctor', $facultyDoctorIds); $response->facultyDoctorList = $facultyDoctorList; $hospitalFacultyDoctorList = DAL::get()->find('doctor', $hospitalFacultyDoctorIds); $response->hospitalFacultyDoctorList = $hospitalFacultyDoctorList; $response->diseaseList = DiseaseClient::getInstance()->getDiseaseDoctorList(array($this->space->host->primaryId), 50); $response->casetotal = PaymentClient::getInstance()->getDoctorVoteCnt($this->space->id); $response->satisfactionLists = PaymentClient::getInstance()->getDoctorSatisfactionList($this->space->host->id); $serviceCharge = PaymentClient::getInstance()->getServiceChargeList($this->space->id); $preg = '#(\\d+.\\d+)(元)#'; $replace = '<span class="fb orange1">\\1</span>\\2'; $serviceCharge = preg_replace($preg, $replace, $serviceCharge); $response->serviceCharge = $serviceCharge; $response->doctor = $this->space->host; $owner = DAL::get()->find_by_relatedObjectid_and_relatedobjecttype('telowner', $this->space->id, TelOwner::TYPE_USER); $response->doctorWords = $owner->isNull() || $owner->getSpaceExt() == '' ? '' : $owner->getSpaceExt()->getDoctorWords(); $response->wordLength = $owner->isNull() || $owner->getSpaceExt() == '' ? '' : strlen($owner->getSpaceExt()->getDoctorWords()); $response->latestOpenCallServiceTitle = doctorOutline::getLatestOpenCallServiceTitle($owner->spaceExt->starttime4tel->toString()); $response->owner = $owner; $goodCnt = PaymentClient::getInstance()->getPatientPhoneServiceCountByScore($this->space->id, TelVisit::SCORE_GOOD); $normalCnt = PaymentClient::getInstance()->getPatientPhoneServiceCountByScore($this->space->id, TelVisit::SCORE_SOSO); $badCnt = PaymentClient::getInstance()->getPatientPhoneServiceCountByScore($this->space->id, TelVisit::SCORE_BAD); $allCnt = $goodCnt + $normalCnt + $badCnt; $response->allCnt = $allCnt; $response->goodCnt = $allCnt > 0 ? floor($goodCnt / $allCnt * 100) : 0; $response->normalCnt = $allCnt > 0 ? ceil($normalCnt / $allCnt * 100) : 0; $response->badCnt = $response->goodCnt + $response->normalCnt != 0 ? 100 - $response->goodCnt - $response->normalCnt : 0; // 常见问题 $response->commonQuestions = $owner->isNull() || $owner->getSpaceExt() == '' ? '' : $owner->getSpaceExt()->commonquestions; $options['status'] = array(TelOrder::STATUS_FINISHED, TelOrder::STATUS_CLOSED); $response->telOrderCount = TelOrderClient::getInstance()->getOrderCount4Space($this->space->id, $options); $response->productList = ProductClient::getInstance()->getProducts($this->space, array(serviceDef::TYPE_TELORDER)); }
public function ajaxForChangeFeedBack($request, $response) { /*{{{*/ $product = $request->product; $purposeAction = array(); //根据不同的ajax传值传入不同"用户目的"的参数 if ($product == "operation") { $purposeAction = array(TelOrder::ORDER_OPERATION, TelOrder::IF_SURGERY); } else { if ($product == "preperation") { $purposeAction = array(TelOrder::OUTPATIENT_TIME, TelOrder::ATTENDANCE_FLOW, TelOrder::ATTENDANCE_BEFORE_MATTER, TelOrder::ATTENDANCE_MONEY); } else { if ($product == "referral") { $purposeAction = array(TelOrder::RETURN_VISIT_TIME, TelOrder::RETURN_VISIT_CHANGE_DISEASE, TelOrder::FOLLOW_UP); } else { $purposeAction = array(TelOrder::TREAT_WAY, TelOrder::IF_SURGERY); } } } $owner = DAL::get()->find_by_relatedObject('telowner', $this->space->user); $visitorderIds = PaymentClient::getInstance()->getDoctorSatisfactionRankLimit($owner->id, $purposeAction); //回访订单ID $visitorders = DAL::get()->find('telvisit', $visitorderIds); //回访订单 $orderids = array(); //返回的反馈订单ids $orderpatientids = array(); //订单上的患者ids $feedbackforone = array(); //拿到反馈rank为1的列表 $feedbackfortwothree = array(); //拿到反馈rank为2和3的列表 foreach ($visitorders as $visitkey => $visitvalue) { $orderids[] = $visitvalue->orderid; } $orderlist = DAL::get()->find('telorder', $orderids); foreach ($orderlist as $orderkey => $ordervalue) { $orderpatientids[] = $ordervalue->patientid; } $orderpatientlist = DAL::get()->find('patient', $orderpatientids); foreach ($visitorders as $visitorderkey => $visitordervalue) { foreach ($orderlist as $orderlistkey => $orderlistvalue) { foreach ($orderpatientlist as $orderpatientkey => $orderpatientvalue) { if ($visitordervalue->orderid == $orderlistkey && $orderlistvalue->patientid == $orderpatientkey && $visitordervalue->content != "") { $userName = XString::truncate($orderpatientvalue->userName, 1, '***'); if ($visitordervalue->rank == 2 || $visitordervalue->rank == 3) { $feedbackfortwothree[][$orderlistkey . "_" . $orderlistvalue->getOrderTitleOrThreadTitle()] = $userName . "," . $visitordervalue->content . " " . $visitordervalue->ctime; } else { $feedbackforone[][$orderlistkey . "_" . $orderlistvalue->getOrderTitleOrThreadTitle()] = $userName . "," . $visitordervalue->content . " " . $visitordervalue->ctime; } } } } } $response->feedBackTwoThree = $feedbackfortwothree; $response->feedBackOne = $feedbackforone; $response->product = $product; $response->telOwner = $owner; }
public function ajaxCheckInviteMobile($request, $response) {/*{{{*/ $ownerId = $request->ownerid; $mobile = $request->mobile; $inviteLog1 = DAL::get()->find_by_ownerid_and_mobile('invitelog', $ownerId, $mobile); $inviteLog2 = DAL::get()->find_by_mobile('invitelog', $mobile); $isSelf = PaymentClient::getInstance()->checkMobileIsSelf($this->user->id, $mobile); $isUsedMobile = PaymentClient::getInstance()->checkMobileIsUsedMobile($mobile); if(false == $inviteLog1->isNull() && $inviteLog1->cnt < InviteLog::MAXCNT) { echo 1;//提示:该号码已经被您邀请过,请使用下方的重发邀请功能 return parent::DIRECT_OUTPUT; } else if(false == $inviteLog2->isNull()) { echo 2;//提示:该号码已接到其他人的邀请 return parent::DIRECT_OUTPUT; } else if($isSelf) { echo 3;//提示:不能发送给您自己 return parent::DIRECT_OUTPUT; } else if($isUsedMobile) { echo 4;//该号码已经使用过电话咨询服务,不能参加活动 return parent::DIRECT_OUTPUT; } else { echo 0; } return parent::DIRECT_OUTPUT; }/*}}}*/
/** * @brief 第三方视角的流详情展示 * @author lhl * @version branches/v2.14.23 * @date 2013-07-25 */ private function detailForBrowser($response, $request, $ref) { /*{{{*/ $this->doctorInfo($response); $response->nowPage = $nowPage = $request->getRequest('p', 1); $pageSize = 20; $pagelink = ''; $res = FlowClient::getInstance()->getFlowInfos($ref->id, $nowPage, $pageSize, array('isBrowser' => true), $isSens = true); $firstPost = $res['objects'][0]; $response->isFirstProposalPost = $this->checkFirstProposal($ref); if (false == empty($res['pageInfo'])) { $pageInfo = $res['pageInfo']; $pagelink = PageNav::getNavLink(PageNav::getPageNavTemplateForSpace($ref->url . '?p='), $pageInfo['nowpage'], $pageInfo['pagesize'], $pageInfo['total']); } $response->flowList = $res['objects']; $response->pagelink = $pagelink; $response->abnormalStatus = $this->getAbnormalStatus($res['objects']); //准备相关搜索信息 $this->getRelationSearchForBrowser($ref, $firstPost, $request, $response); $response->lastestDoctorList = array(); $response->moreFlowList = FlowClient::getInstance()->getFlowList4SEO($num = 10, $ref->id); $response->flows = array(); if ($this->space->host->isDayBirthday()) { $response->flows = FlowClient::getInstance()->getFlowListByUser($this->user->id, array('status' => DoctorPatientRef::STATUS_INIT)); } //医生开通服务 $doctorServices = SpaceClient::getInstance()->getServiceInfo($this->space->id, $this->user->id); $response->doctorServices = $doctorServices; $response->presentCnts = PresentClient::getInstance()->getCntOfPresent($this->space->id); if ($this->space->isPhoneOpenedForFront($this->user->id)) { $telVisitList = PaymentClient::getInstance()->getPatientPhoneServiceList($this->space->user->id, 1, 10); $response->telVisitTotalCnt = isset($telVisitList['pageInfo']['total']) ? $telVisitList['pageInfo']['total'] : 0; $telVisitInfos = DAL::get()->queryLatestCompleteOrderIdsBySpaceId('TelOrder', $this->space->user->id, $count = 10); $response->telVisitInfos = $telVisitInfos; $response->ScoreDesc = TelVisit::$scoreDesc; $response->callingLogs = PaymentClient::getInstance()->getDoctorRecentPhoneRecords($this->space); } $response->spaceRelatedFacultyName = $this->space->host->hospitalfaculty->faculty->name; $facultyDoctorIds = array(); if ($this->space->host instanceof Doctor) { $facultyDoctorIds = DoctorClient::getInstance()->getFacultyDoctor($this->space->host); } $facultyDoctorList = DAL::get()->find('doctor', $facultyDoctorIds); $response->facultyDoctorList = $facultyDoctorList; $response->doctorSatisfactionList = PaymentClient::getInstance()->getDoctorSatisfactionList($facultyDoctorIds); }
public function saveReasonAndStar($request, $response) {/*{{{*/ $id = $request->id; $reason = XString::convertToGbk($request->reason); $star = XString::convertToGbk($request->star); $isRecommend = $request->isrecommend; PaymentClient::getInstance()->saveReasonAndStar($id, $reason, $star, $isRecommend); echo true; return parent::DIRECT_OUTPUT; }/*}}}*/
echo $hfname; ?> </h3> </div> </div> <div class="p10"> <?php foreach ($doctors as $doctor) { $hf = $doctor->hospitalfaculty; $h = $hf->hospital; //好评投票 $diseaseList = DiseaseClient::getInstance()->getDiseaseDoctorList(array($doctor->primaryId), 50); //服务费 $serviceCharge = PaymentClient::getInstance()->getServiceChargeList($doctor->space->id); //接听点评汇总 $doctorSatisfactionList = PaymentClient::getInstance()->getDoctorSatisfactionList($doctor->id); ?> <!--start doctorDetails--> <div class="clearfix showResult-cell bb pb10 mt15"> <div class="showResult-cell-l fl mr10"> <table cellspacing="0" cellpadding="0" border="0"> <tbody><tr> <td align="center" valign="middle" style="padding: 0px; border: 1px solid #DFDFDF; height: 110px; vertical-align: middle; width: 110px;"> <a href="http://<?php echo URL_PREFIX; ?> 400.haodf.com/haodf/<?php echo $doctor->space->user->name; ?> ?from=<?php
public function telServiceEntrance($request, $response) {/*{{{*/ $response->topTitle = "电话咨询"; $this->loadMoreTelOrderList4Tel($request, $response); $this->loadMoreFeedBackList4Tel($request, $response); $response->title = $this->doctor->name."电话咨询_好大夫在线"; if(false == $this->doctor->space->isNull()) { $response->products = ProductClient::getInstance()->getProducts($this->doctor->space, array(ServiceDef::TYPE_TELORDER)); } else { $response->products = array(); } //患者投票 $response->diseaseDoctorList = DiseaseClient::getInstance()->getDiseaseDoctorList(array($this->doctor->primaryId)); //医生擅长信息 $specialize = $this->doctor->specialize ? $this->doctor->specialize : "暂无医生擅长信息"; $specialize = str_replace("\n", '', $specialize); $specialize = strip_tags(str_replace("\r", '', $specialize)); $response->specialize = $specialize; $shortSpecialize = XString::truncate($specialize, 56); $shortSpecialize = str_replace("\n", '', $shortSpecialize); $shortSpecialize = strip_tags(str_replace("\r", '', $shortSpecialize)); $response->shortSpecialize = $shortSpecialize; //满意度 $goodCnt = PaymentClient::getInstance()->getPatientPhoneServiceCountByScore($this->doctor->space->id, TelVisit::SCORE_GOOD); $normalCnt = PaymentClient::getInstance()->getPatientPhoneServiceCountByScore($this->doctor->space->id, TelVisit::SCORE_SOSO); $badCnt = PaymentClient::getInstance()->getPatientPhoneServiceCountByScore($this->doctor->space->id, TelVisit::SCORE_BAD); $allCnt = $goodCnt+$normalCnt+$badCnt; $response->goodCnt = ($allCnt>0)?floor($goodCnt / $allCnt * 100) : 0; $statistics = SpaceClient::getInstance()->getStatistics(); // 开通电话咨询的医生人数 $response->openCallDoctorNum = $statistics['opentelservicedoctors']; $response->from = $request->from; if (isset($_SESSION['telOrderInfo'])) { unset($_SESSION['telOrderInfo']); } if (isset($_SESSION['newAsk'])) { unset($_SESSION['newAsk']); } }/*}}}*/
private function getBookingInfo($diseaseFaculty, $response) {/*{{{*/ $faculty = $diseaseFaculty->faculty; $response->faculty = $faculty; $phoneDoctorIds = DAL::get()->queryDoctorIdsByFaculty('DoctorOutLine', $faculty->id, 3); $phoneServices = $topPhoneDoctor = array(); if (false == empty($phoneDoctorIds)) { $topPhoneDoctor = DAL::get()->find('Doctor', $phoneDoctorIds); $phoneServices = PaymentClient::getInstance()->getDoctorSatisfactionList($phoneDoctorIds); } $phoneDoctorCount = DoctorClient::getInstance()->getIsPhoneServiceOpenedDoctorCount($faculty); $response->topPhoneDoctor = $topPhoneDoctor; $servicePayInfo = array(); foreach($phoneServices as $phoneService) { // 解决 ARK-7955 $servicePayInfo[] = $phoneService; } $response->phoneServices = $servicePayInfo; $response->phoneDoctorCount = $phoneDoctorCount; $faculty = $diseaseFaculty->faculty; //预约加号 $spaceIds = PlussignChannelClient::getInstance()->getDoctorListByFaculty($faculty); $successOrderCount = PlussignChannelClient::getInstance()->getOrderCntOfSpaces($spaceIds); $bookingContractCount = BookingClient::getInstance()->getDoctorTotalCountByFaculty('bookingorder', $faculty); $response->bookingSpaces = DAL::get()->find('Space', $spaceIds); $response->successOrderCount = $successOrderCount; $response->bookingContractCount = $bookingContractCount; }/*}}}*/
public function getDoctorServiceInfo2ByDoctorId($doctorId) {/*{{{*/ $doctor = DAL::get()->find('doctor', $doctorId); if($doctor->isNull()) { $this->setErrorCode(132); return 0; } $caseInfo = array(); $bookingInfo = array(); $phoneInfo = array(); if($doctor->hasSpace()) { //case if($doctor->space->isCaseOpen()) { $caseInfo['caseIntro'] = $doctor->space->commonCaseNote == '' ? $doctor->specialize : $doctor->space->commonCaseNote; $caseInfo['caseStatus'] = "1"; } //booking if($doctor->space->isBookingOpened()) { $spaceBusinessRequirement = $doctor->space->getSpaceBusinessRequirement4Booking(); $bookingInfo['bookingIntro'] = $spaceBusinessRequirement->isNull()?'':$spaceBusinessRequirement->disease; } $bookingInfo['bookingStatus'] = $doctor->space->isBookingOpened() ? 1 : 0; //phone if($doctor->space->isPhoneOpenedForFront()) { $satisfactionLists = PaymentClient::getInstance()->getDoctorSatisfactionList($doctor->primaryId); //服务费 $serviceCharge = PaymentClient::getInstance()->getServiceChargeList($doctor->space->id); $serviceChargeList = explode('、', $serviceCharge); $str = ''; foreach($serviceChargeList as $key => $serviceCharge) { $str .= $serviceCharge."\n"; } $doctorSatisfaction = $satisfactionLists[$doctor->space->host->id]; $satisfaction = $doctorSatisfaction['scorecnt'] != 0?(round($doctorSatisfaction['goodscore']/$doctorSatisfaction['scorecnt'],2))*100:0; if($doctorSatisfaction['cnt'] != '' && $doctorSatisfaction['cnt'] != 0) { $str .= "已成功接听".$doctorSatisfaction['cnt']."例,满意度".$satisfaction."%"; } $phoneInfo['phoneIntro'] = $str; } $phoneInfo['phoneStatus'] = $doctor->space->isPhoneOpenedForFront() ? 1 : 0; } $this->content = array('case' => $caseInfo, 'phone' => $phoneInfo, 'booking' => $bookingInfo); }/*}}}*/
public function leaveMessagesApply($request, $response) {/*{{{*/ $space = $this->_newSpace; $mobile = $request->buyerPhone; $userName = $this->_newUser->name; $diseaseDesc = $request->diseaseDescription; $conditions = $space->host->hospitalfaculty->hospital->name.$space->name; PaymentClient::getInstance()->createPatientIntent($userName, $mobile, $diseaseDesc, $conditions, PatientIntent::INTENTETYPE_CLIENT); }/*}}}*/
private function detailWithSpace($request, $response, Doctor $doctor) {/*{{{*/ $response->newUser = $doctor->space->user; $response->scheduleWeek = ScheduleClient::getInstance()->getScheduleWeek($doctor->space->id); //最新文章 $articleList = array(); $articleCount = 0; if ($doctor->space->isOpened()) { $articleList = ArticleClient::getInstance()->getList($doctor->space->id, '', 0, 5, array('orderby'=>'fld_ArticleUpdateTime desc')); $articleCount = ArticleClient::getInstance()->getStickArticle($doctor->space->id, 0); } $response->articleList = isset($articleList['articleList']) ? $articleList['articleList'] : array() ; $response->articleCount = $articleCount; //最新回复 $doctorPatientRefs = array(); if ($doctor->space->isOpened() && $doctor->space->isCaseAndNewCaseOpen()) { $doctorPatientRefs = DAL::get()->find_all_lastpost_by_space('doctorpatientref', $doctor->space, 5); } $response->doctorPatientRefs = $doctorPatientRefs; $spaceAskedThreadsCount = SpaceClient::getInstance()->getCountOfAskedThreadsCount($doctor->space->id, $this->curUser->id); $spaceAskedFlowsCount = SpaceClient::getInstance()->getCountOfAskedFlowsCount($doctor->space->id, $this->curUser->id); $spaceRepliedThreadsCount = SpaceClient::getInstance()->getCountOfRepliedThreadsCount($doctor->space->id, $this->curUser->id); $spaceRepliedFlowsCount = SpaceClient::getInstance()->getCountOfRepliedFlowsCount($doctor->space->id, $this->curUser->id); $response->spaceAskedCount = $spaceAskedThreadsCount + $spaceAskedFlowsCount; $response->spaceRepliedCount = $spaceRepliedThreadsCount + $spaceRepliedFlowsCount; //最新在线时间 $activityTimeInfo = SpaceClient::getInstance()->getActivityTime('space', array($doctor->space->id)); $activityTime = isset($activityTimeInfo[$doctor->space->id]) ? $activityTimeInfo[$doctor->space->id] : 0; $response->activityTime = $activityTime; $owner = DAL::get()->find_by_relatedobjectid_and_relatedobjecttype('TelOwner', $doctor->space->user->id, 'User'); $response->productList = ProductClient::getInstance()->getProducts($doctor->space, array(ServiceDef::TYPE_TELORDER)); $response->owner = $owner; $response->presentCnt = PresentClient::getInstance()->getCntOfPresent($doctor->space->id); //加号 $isBooking = $doctor->space->isBookingOpened(); $contract = $spaceBusinessRequirement = array(); $successOrderCount = 0; if($isBooking) { $contract = $doctor->space->getBookingContract(); $spaceBusinessRequirement = $doctor->space->getSpaceBusinessRequirement4Booking(); //在该医生处成功加号数量 if($contract->isNull() == false) $successOrderCount = PlussignChannelClient::getInstance()->getOrderCount(array($contract->id)); } $response->isBooking = $isBooking; $response->spaceBusinessRequirement = $spaceBusinessRequirement; $response->successOrderCount = $successOrderCount; $response->telVisitInfos = array(); //电话 if ($doctor->space->isPhoneOpenedForFront()) { $telVisitList = PaymentClient::getInstance()->getPatientPhoneServiceList($doctor->space->user->id, 1, 10); $response->telVisitTotalCnt = isset($telVisitList['pageInfo']['total']) ? $telVisitList['pageInfo']['total'] : 0; $telVisitInfos = DAL::get()->queryLatestCompleteOrderIdsBySpaceId('TelOrder', $doctor->space->user->id, $count = 10); $response->telVisitInfos = $telVisitInfos; $response->ScoreDesc = TelVisit::$scoreDesc; $response->callingLogs = PaymentClient::getInstance()->getDoctorRecentPhoneRecords($doctor->space); } $response->ref = DAL::get()->find_by_userid_and_spaceid('DoctorPatientRef', $this->curUser->id, $doctor->space->id); $this->hasOnlyPatientFlow($request, $response, $doctor); }/*}}}*/
public function doctordetail($request, $response) {/*{{{*/ if (is_numeric($request->id)) { $this->_exit404(); } $doctorId = (int)Codec::getInstance()->decodeId($request->id); if((int)$doctorId <= 0) { $this->_exit404(); } $doctor = DAL::get()->find('Doctor', $doctorId); if($doctor->isNull()) { $this->_exit404(); } $response->doctor = $doctor; $space = $doctor->space; $response->space = $space; $specialize = $doctor->specialize ? $doctor->specialize : "暂无医生擅长信息"; $specialize = str_replace("\n", '', $specialize); $specialize = strip_tags(str_replace("\r", '', $specialize)); $response->specialize = $specialize; $shortSpecialize = XString::truncate($specialize, 84); $shortSpecialize = str_replace("\n", '', $shortSpecialize); $shortSpecialize = strip_tags(str_replace("\r", '', $shortSpecialize)); $response->shortSpecialize = $shortSpecialize; $response->diseaseDoctorList = DiseaseClient::getInstance()->getDiseaseDoctorList(array($doctor->primaryId)); $response->thankLetterCount = $doctor->getCureThankLetterCount(); $response->processCount = $doctor->getCureExpCount(); $response->commentDoctor = $doctor->commentDoctor; $response->title =($doctor->hospitalfaculty->isNull()) ? $doctor->name."_好大夫在线" : $doctor->name."_".$doctor->hospitalfaculty->hospital->commonName.$doctor->hospitalfaculty->name."_好大夫在线"; $doctorSpaceIsOpened = $doctor->hasSpace() && $space->isOpened(); $response->doctorSpaceIsOpened = $doctorSpaceIsOpened; //电话咨询订单 $telOrderCnt = 0; if ($doctorSpaceIsOpened) { $telOwner = DAL::get()->find_by_relatedObject('telowner', $space->user); $res = TelOrderClient::getInstance()->getList(TelOrder::SEARCH_FINISHED_CLOSE, 1, 1, $telOwner->id); $telOrderCnt = $res['pageInfo']['total']; $response->telOrder = array_shift($res['list']); } $response->telOrderCnt = $telOrderCnt; $patientPhoneServiceRes = PaymentClient::getInstance()->getPatientPhoneServiceList($space->user->id, 1, 1, -1); $patientPhoneServiceList = $patientPhoneServiceRes['lists']; $ownerIds = array(); if (false == empty($patientPhoneServiceList)) { $patientPhoneService = reset($patientPhoneServiceList); $ownerIds[] = $patientPhoneService['ownerid']; } $response->phoneService = reset($patientPhoneServiceList); $response->ownerList = DAL::get()->find('telowner', $ownerIds); $response->goodDiseaseList = DiseaseClient::getInstance()->getDiseaseDoctorList(array($doctor->primaryId), 50); $response->VOTE_DISPLAY_LIMIT = self::VOTE_DISPLAY_LIMIT; }/*}}}*/
private function getSidePhoneServiceListByHF(HospitalFaculty $hospitalFaculty, $response, $limit=5) { $phoneDoctorList = array(); $phoneDoctorIds = DAL::get()->queryDoctorIdsByHospitalFaculty('DoctorOutLine', $hospitalFaculty->hospital->id, $hospitalFaculty->faculty->id, $limit); $doctorSatisfactionList = array(); if (false == empty($phoneDoctorIds)) { $phoneDoctorList = DAL::get()->find('Doctor', $phoneDoctorIds); $doctorSatisfactionList = PaymentClient::getInstance()->getDoctorSatisfactionList($phoneDoctorIds); } $response->hfHospitalFaculty = $hospitalFaculty; $response->hfPhoneDoctorList = $phoneDoctorList; $response->hfDoctorSatisfactionList = $doctorSatisfactionList; }
<th width='6%'>看病历</th> <th width='6%'>预约难度</th> <th width='6%'>接听回复质量</th> <th width='6%'>接听时段<br />(一般情况下)</th> <th width='6%'>活跃度<br />(网上咨询)</th> <th width='6%'>回复质量<br />(网上咨询)</th> <th width='17%'>目前提供的服务</th> <th width='6%'>操作</th> </tr> </table> </div> <table class="detail-table fontcolor"> <?php foreach($doctors as $doctor) { $serviceCharge = PaymentClient::getInstance()->getServiceChargeList($doctor->space->id); $doctormark = DAL::get()->find_by_doctorid('doctormark', $doctor->getPrimaryDoctor()->id); $spacemark = DAL::get()->find_by_spaceid('spacemark', $doctor->space->id); if(false == $doctormark->isNull()) { $doctorActivity = DoctorMark::$doctorActivityDesc[$doctormark->doctorActivity]; $doctorReplyQuality = DoctorMark::$doctorReplyQualityDesc[$doctormark->doctorReplyQuality]; $isUnusual = $doctormark->isOverPublicize() || $doctormark->isReplyQualityBad() || $doctormark->isActivityAbnormal(); $doctorType = $doctormark->getDoctorType(); if($doctormark->isProjectTel() || $doctormark->isNewTel() || $doctormark->isPayDoctor()) { $doctorTypeDesc = DoctorMark::$doctorTypeDesc[$doctorType]; } else { $doctorTypeDesc = '';
public function getAllTelFeedback4Doctor($doctorId, $pageId, $pageSize) {/*{{{*/ $this->_initPageInfo($pageId, $pageSize); $doctor = DAL::get()->find('doctor', $doctorId); if($doctor->isNull()) { $this->setErrorCode(119); return 0; } $userId = $doctor->hasSpace() == false ? 0 : $doctor->space->user->id; //手机端所有评价全部显示 $score = -1; $patientPhoneServiceLists = PaymentClient::getInstance()->getPatientPhoneServiceList($userId, $pageId, $pageSize, $score); $phoneServiceLists = array(); if(isset($patientPhoneServiceLists['lists'])) { $phoneServiceLists = $patientPhoneServiceLists['lists']; } $infos = array(); $ScoreDesc = TelVisit::$scoreDesc; foreach($phoneServiceLists as $phoneServiceList) { $ownerId = $phoneServiceList['ownerid']; $owner = DAL::get()->find('telowner', $ownerId); $name = $owner->relatedObject->name; if(mb_strlen($name, 'gbk')<=8) { $name = $name; } else { $name = mb_substr($name, 0, 8, 'gbk')."..."; } $info['patientName'] = XString::truncate($name, 1, '***'); $info['score'] = $ScoreDesc[$phoneServiceList['score']]; $info['title'] = $phoneServiceList['titleForWap']; $info['content'] = $phoneServiceList['content']; $info['callingdate'] = date('Y-m-d H:i', strtotime($phoneServiceList['starttime']))." - ".date('H:i', strtotime($phoneServiceList['endtime'])); $infos[] = $info; } $this->pageInfo = $patientPhoneServiceLists['pageInfo']; $this->content = $infos; }/*}}}*/
private function getPhoneList($diseaseId, $response) {/*{{{*/ list($directDoctorList, $directSatisfactions) = PaymentClient::getInstance()->getLatestPhoneServiceDoctorAndSatisfactionListByDiseaseId($diseaseId, 3); $response->statistics = SpaceClient::getInstance()->getStatistics(); $response->directSatisfactions = $directSatisfactions; $response->directDoctorList = $directDoctorList; }/*}}}*/
private function addThread2PhoneService(array $serviceInfos) {/*{{{*/ $phoneServiceDoctorIds = array(); foreach($serviceInfos as $key => $sInfos) { foreach($sInfos as $k => $sInfo) { $phoneServiceDoctorIds[] = $sInfo['doctorid']; } } $telorders = PaymentClient::getInstance()->getLatestServiceList($phoneServiceDoctorIds); foreach ($serviceInfos as $key => $sInfos) { foreach($sInfos as $k => $sInfo) { if (isset($telorders[$sInfo['doctorid']])) { $telorder = $telorders[$sInfo['doctorid']]; if (false == $telorder->isNull()) { $serviceInfos[$key][$k]['doctorPatientRef'] = DAL::get()->find_by_spaceid_and_patientid('DoctorPatientRef', $telorder->getSpace()->id, $telorder->patient->id); } } } } return $serviceInfos; }/*}}}*/
public function addTelCustomer($request, $response) {/*{{{*/ $request->convertToGbk(); if($request->customerName) { $customerid = ($request->customerid != 0)?$request->customerid:$request->oldtelcustomerid; $telContactIds = DAL::get()->find_id_by_tel('telcustomercontact',$request->tel); if(false == empty($telContactIds)) { $telCustomerContacts = DAL::get()->find('telcustomercontact',$telContactIds); if(false == empty($telCustomerContacts)) { foreach($telCustomerContacts as $telcustomercontact) { if($telcustomercontact->customerid != $customerid) PaymentClient::getInstance()->deletetelcustomercontact($telcustomercontact->id); } } } $birthday = "{$request->dateyear}-{$request->datemonth}-{$request->dateday}"; $customerLocation = ($request->city != '')?"{$request->province}-{$request->city}":$request->province; $params = array('id'=>$customerid,'customerName'=>$request->customerName,'sex'=>$request->sex,'type'=>$request->customerType, 'fromChannel'=>$request->fromchannel,'birthday'=>$birthday,'customerLocation'=>$customerLocation,'level'=>$request->level, 'remark'=>$request->customerremark,'cname'=>$request->maintenanceuser ); $telCustomerId = PaymentClient::getInstance()->createTelCustomer($params,$this->curUser); $params = array('tel'=>$request->tel,'customerid'=>$telCustomerId, 'inComingCallCount'=>1); $telCustomerContactId = paymentClient::getInstance()->createTelCustomerContact($params); echo $telCustomerId; } else { echo 0; } return parent::DIRECT_OUTPUT; }/*}}}*/
public function passTelOrderEvent($request, $response) { /*{{{*/ PaymentClient::getInstance()->doOrderEvent($request->telorderEventId, $this->curUser); $url = $response->router->urlfor('spacebusinessrequirement/showtelordereventdetail', array('id' => $request->telorderEventId)); $response->setRedirect($url); }
private function sendTelAdMsg(DoctorPatientRef $ref) {/*{{{*/ $isPhoneOpened = $ref->space->isPhoneOpenedForFront($this->_newUser->id); if ($isPhoneOpened) { //这个用户在30天内没有已付费/已退费/已收款的电话咨询订单 $hasNoRecentlyTelOrder = PaymentClient::getInstance()->hasNORecentlyTelOrder($this->_newUser->id); $subject = "电话咨询专家,更及时的服务,更充分的沟通!"; if ($ref->spacePostCount == 1 && $ref->lastPostUser->id == $ref->space->user->id && $hasNoRecentlyTelOrder) { $statistics = SpaceClient::getInstance()->getStatistics(); $nowTime = XDateTime::now()->getDate(); $messageContent = " <li style='text-indent:2em;'>感谢您使用好大夫在线免费网上咨询服务,由于医生工作的特殊性,往往不能保证及时上网回复您的提问,请您理解,如果您希望尽快得到医生的回复或和医生更充分沟通,可以选择付费电话咨询直接与医生通话。</li> <li style='text-indent:2em;'>电话咨询服务:在您确定咨询医生并下单付费后,工作人员会立即与医生联系预约具体通话时间,90%的患者付费当天即可完成通话。通话中您能就病情,就诊时机、治疗方案等问题和医生充分沟通。目前已有".$statistics['opentelservicedoctors']."位大夫开通电话咨询服务,有".$statistics['successtelserviceorders']."名患者成功通话,满意度99%。</li> <li style='text-indent:2em;'><a href='http://{$ref->space->user->name}.haodf.com/payment/servicelist?from=testmsg&date={$nowTime}' class='red' target='_blank'>>> 立即申请和{$ref->space->name}大夫通话</a></li> <li style='text-indent:2em;'><a href='http://400.haodf.com/index/search?facultyname={$ref->space->host->hospitalfaculty->faculty->name}&from=testmsg&date={$nowTime}' class='red' target='_blank'>>> 立即选择{$ref->space->host->hospitalfaculty->faculty->name}大夫通话</a></li> <li style='text-indent:2em;'>或拨打电话".hdfPhoneNumber::TEL_SERVICE_400."</li> "; StationLetterClient::getInstance()->sendMsg(Auditor::ADMIN_USER_ID, array($this->_newUser->id), $subject, $messageContent); } } }/*}}}*/
public function doAddReserveTaskRemark($request, $response) { DBC::requireNum($request->eventId, "医生动态id是数字"); DBC::requireNotEmptyString($request->adminRemark, "备注不能为空"); PaymentClient::getInstance()->addRemark($request->eventId, $request->adminRemark, $this->curUser); $response->setRedirect($response->router->urlfor('telorder/addreservetaskremark', array('eventId'=>$request->eventId))); }
private function getPosterInfo($comment, $response) { /*{{{*/ //加号 $response->userCommentCnt = ''; $userName = $comment->getUserName(); $userPhone = $comment->getPosterMobile(); $doctor = $comment->doctor; $spaceId = $doctor->hasSpace() ? $doctor->space->id : 0; $jiaHaoStatus = 0; $userPhoneThreadList = array(); if ($comment->patientId && $spaceId > 0) { $jiaHaoStatus = BookingClient::getInstance()->getPatientBookingStatus($comment->patientId, $spaceId); $userPhoneThreadList = PaymentClient::getInstance()->getPatientSuccessServiceList($comment->patientId, $spaceId); } $response->doctor = $doctor; $response->jiaHaoStatus = $jiaHaoStatus; $response->userPhoneThreadList = $userPhoneThreadList; }
public function showTelOrder($request, $response) { /*{{{*/ $phone = $request->getRequest('phone', ''); $telOrderList = array(); $pageSize = 20; $nowPage = $request->getRequest('pageId', 1); $response->pageLink = ''; $cashCoupons = array(); if ($phone) { $telOrderResult = TelOrderClient::getInstance()->getList(TelOrder::SEARCH_CLOSE, $nowPage, $pageSize, '', array('userPhone' => $phone)); $telOrderList = $telOrderResult['list']; $pageInfo = $telOrderResult['pageInfo']; $response->pageLink = PageNav::getNavLink(PageNav::getPageNavTemplate($response->router->urlfor('present/showtelorder', array('showContent' => 1, 'pageId' => ''))), $pageInfo['nowpage'], $pageInfo['pagesize'], $pageInfo['total']); if (false == empty($telOrderList)) { foreach ($telOrderList as $telOrder) { $arr[] = $telOrder->patient->user->id; } $arr = array_unique($arr); $cashCoupons = PaymentClient::getInstance()->getCouponPriceByStatus('cashcoupon', $arr, CashCoupon::STATUS_CONFIRM); foreach ($cashCoupons as $key => $cashCoupon) { $cashCoupons[$cashCoupon['userid']][$cashCoupon['price']] = $cashCoupon['id']; unset($cashCoupons[$key]); } } } $response->cashCoupons = $cashCoupons; $response->telOrderList = $telOrderList; $response->phone = $phone; $response->message = $request->getRequest('message', ''); }
private function getCounts($ref, $response) {/*{{{*/ $presentOrders = DAL::get()->find_all_by_spaceid_and_patientid_and_status('presentorder', $ref->space->id, $ref->patient->id, PresentOrder::STATUS_PAID_YES); $response->presentOrderCnt = count($presentOrders); $response->spacePostCnt = $ref->spacePostCount; $telOrders = PaymentClient::getInstance()->getPatientSuccessServiceList($ref->patient->id, $ref->space->id); $response->telOrderCnt = count($telOrders); $bookingOrders = BookingClient::getInstance()->getList4Flow($ref->space->id, $ref->patient->id); $response->bookingOrderCnt = count($bookingOrders); $patientApply = PatientSigninClient::getInstance()->getList4Flow($ref->space->id, $ref->patient->id); $patientSignin = PatientSigninClient::getInstance()->getList4Flow($ref->space->id, $ref->patient->id); $response->oldPatientCnt = count($patientApply) + count($patientSignin); }/*}}}*/