public function postTopic($request, $response) { $groupIds = $request->groupIds; if(!$groupIds) { $response->message = '没有选择话题所在的组!'; MsgHtml::msg($response->message, 'http://'.URL_PREFIX.'passport.haodf.com/mypatient/post', array('delay' => 6, 'button' => 'back')); return false; } $title = $request->title; $content = preg_replace("/<\/?a[^>]*>/i", "", $request->content); if(XString::cntrim($title) == '' || XString::cntrim($content) == '') { $response->message = '话题标题和内容都不能为空!'; MsgHtml::msg($response->message, 'http://'.URL_PREFIX.'passport.haodf.com/mypatient/post', array('delay' => 6, 'button' => 'back')); return false; } $groups = DAL::get()->find('regroup', $groupIds); foreach($groups as $group) { if($group->reboard->isNull() == false) { $member = ForumClient::getInstance()->getMemberByUserIdAndGroupId($this->user->id, $group->id); if($member->isNull() == false && $member->isForbiddened()) { $response->message = '您的发言没有成功,可能是已被禁止发言!服务电话:'.HdfPhoneNumber::PHONE_FENZHEN; MsgHtml::msg($response->message, 'http://'.URL_PREFIX.'passport.haodf.com/mypatient/index', array('delay' => 6, 'button' => 'back')); return false; } ResidentEvilClient::getInstance()->createTopic($group->space, $group->reboard, $this->user, $title, $content); } } $response->message = '话题发表成功!'; MsgHtml::msg($response->message, 'http://'.URL_PREFIX.'passport.haodf.com/mypatient/index', array('delay' => 6, 'button' => 'back')); }
private function buildData($datas) {/*{{{*/ $res = array(); if (false == $datas) { return $res; } foreach($datas as $hospital) { $intro = (empty($hospital->conclusion))?$hospital->intro:$hospital->conclusion; $intro = XString::truncate(strip_tags($intro),500); $hospitalFacultyInfo = $this->getHospitalFacultyForm($hospital->id); $res[$hospital->id]['item'] = array( 'key' => $hospital->name, 'title' => $hospital->name, 'synonym' => $hospital->synonyms, 'url' => $hospital->getUrl(), 'grade' => $hospital->getGradeStr(), 'address' => $hospital->address, 'phone' => $hospital->phone, 'way' => XString::cntrim(strip_tags($hospital->addressInfo)), 'intro' => XString::cntrim(strip_tags($intro)), 'zixunInfo' => ($hospital->spaceCount)?"咨询".$hospital->spaceCount."位大夫":"", 'zixunInfoUrl' => ($hospital->spaceCount)?$hospital->getDoctorUrl():"", 'hospitalInfo' => "科室".$hospital->facultyCount."个, 大夫".$hospital->doctorCount."人", 'hospitalFacultyCnt' => $hospital->facultyCount, 'hospitalInfoUrl' => $hospital->getScheduleUrl(), 'hospitalFacultyInfo' => $hospitalFacultyInfo, ); unset($hospital); } return $res; }/*}}}*/
public function newCaseWithMultiPatients($userId, $doctorId, $title, $tag, $content1, $content2, $content3, $attachmentIds, $deviceType, $patientId, $name, $sex, $relation, $province, $city, $mobile, $birthday) {/*{{{*/ $request = new Request(); /*********start*****修复错误数据:userId为0,手动修复userId,关联到的patient提示重新登录*********/ if ($userId <= 0) { //错误数据:patient关联的userId为0,提示用户重新登录 if (in_array($patientId, self::$patientIds)) { $content = array('gotodetailnotice' => '您在好大夫在线的登陆账号存在安全隐患,我们已通过短信给您发送了新的账号和密码,如果未收的短信请等候或联系我们!'); if ($request->os == 'ios') { $content['sign'] = '1'; } $this->content = $content; return 0; } } /*********end*******修复错误数据:userId为0,手动修复userId,关联到的patient提示重新登录*********/ /* if($request->os == 'ios') { $ver = $request->v; error_log("[".XDateTime::now()."] ".print_r("userid=$userId, doctorid=$doctorId, title=$title, $tag, $content1, $content2, $content3, $attachmentIds, $deviceType, $patientId, $name, $sex, $relation, $province, $city, $mobile, $birthday, $ver", true)."\n", 3, "/tmp/whd1.log"); } */ if(strlen($name) > 20) { $this->setErrorCode(339); return 0; } $databucket = new Databucket(); if($databucket->isThreadServiceSuspendTime()) { $this->setErrorCode(901); return 0; } $user = DAL::get()->find('user', $userId); if ($userId <=0 || $user->isNull()) { $this->setErrorCode(107); return 0; } $errorcode = $this->checkPatientInfo4NewCase($patientId, $name, $sex, $relation, $province, $city, $birthday, $mobile); if($errorcode != 0) { $this->setErrorCode($errorcode); return 0; } if(0 == $patientId) {/*{{{*/ $birthday = ($birthday != "") ? date('Y-m-d',$birthday) : ""; $params = array( 'name' => $name, 'sex' => $sex, 'relation' => $relation, 'province' => $province, 'birthday' => $birthday, 'city' => $city, 'mobile' => $mobile, ); $patient = PatientClient::getInstance()->add($user, $params); }/*}}}*/ else { if(isset($user->patients[$patientId])) { PatientClient::getInstance()->updateMobile($patientId, $mobile); $patient = $user->patients[$patientId]; } else { $this->setErrorCode(316); return 0; } } $askSpace = new NullEntity(); //兼容android客户端,doctorId传null字符串的bug if ($doctorId == 'null') { $doctorId = 0; $appVer = $request->v; } if($doctorId) { $doctor = DAL::get()->find('doctor', $doctorId); if($doctor->isNull()) { $this->setErrorCode(132); return 0; } $askSpace = $doctor->space; if($askSpace->isNull()) { $this->setErrorCode(144); return 0; } try { SpaceClient::getInstance()->ensureAllowAskRule($user, $askSpace); } catch(Exception $ex) { $this->setErrorCode(320); return 0; } } $options = array(); $options['title'] = $title; $options['disease'] = $tag; $options['content'] = $content1; if ($content2) { $options['content'] .= "\n\n曾经治疗情况和效果:\n\n".$content2; } $options['attachmentIds'] = $attachmentIds; $options['facultyId'] = 0; //就诊过的医院 $options['prehospital'] = ''; if($askSpace->isNull() == false) { $options['facultyId'] = $askSpace->host->hospitalfaculty->faculty->id; } $options['deviceType'] = $deviceType; $options['title'] = htmlspecialchars_decode($options['title'], ENT_QUOTES); $options['disease'] = htmlspecialchars_decode($options['disease'], ENT_QUOTES); if(mb_strlen(XString::cntrim($options['title'])) < 5 || mb_strlen(XString::cntrim($options['title'])) > 10) { $this->setErrorCode(167); return 0; } if(mb_strlen(XString::cntrim($options['disease'])) < 1 || mb_strlen(XString::cntrim($options['disease'])) > 20) { $this->setErrorCode(304); return 0; } if ($user->isNull() || $patient->isNull()) { error_log(print_r(debug_backtrace(), true), 3, '/tmp/ask_user_null.log'); $this->setErrorCode(206); return 0; } $noticeAfterCase = "您的咨询将由网站医学助理按病情转交合适的医生回复。70%的咨询可在3天内得到医生回复,未回复的咨询将在7天后过期。如病情紧急建议直接去医院就诊。"; /*加点患者提问成功扣分*/ $res = ScoreClient::getInstance()->ask($user->id); $src = $deviceType; $hospital = $options['prehospital']; $disease = $options['disease']; $title = $options['title']; $content = $options['content']; $hopeHelp = $content3; if($options['attachmentIds']) { $attachmentIds = explode("," , $options['attachmentIds']); } else { $attachmentIds = array(); } $thread = IntentionClient::getInstance()->add4ThreadFromWap($patient, $askSpace, $src, $hospital, $content, $attachmentIds, $disease, $title, '', $hopeHelp); //todo::伪装展示 $this->content = array('threadId' => $thread->id, 'caseType' => 'thread', 'sign' => 0, 'noticeAfterCase' => $noticeAfterCase); if ($thread->isNull()) { $this->setErrorCode(169); return 0; } }/*}}}*/
/** 发表话题**/ public function postTopic($request, $response) { /*{{{*/ $groupIds = array($request->defaultid); if ($request->groupIds) { $groupIds = array_diff(array_merge($request->groupIds, $groupIds), array(null)); } DBC::requireFalse(empty($groupIds), '小组不能为空'); $title = $request->title; $content = preg_replace("/<\\/?a[^>]*>/i", "", $request->getUnSafeData('content')); DBC::requireFalse(XString::cntrim($title) == '' || XString::cntrim($content) == '', '话题标题和内容都不能为空'); $res = ResidentEvilClient::getInstance()->createTopics2Groups($this->space->id, $groupIds, $this->user->id, $title, $content); if (false == $res && $this->user->id != $this->space->id) { $this->message('您的发言没有成功,可能是已被禁止发言!服务电话:' . HdfPhoneNumber::PHONE_FENZHEN, $response, array('url' => $this->space->getPatientIndexUrl())); return; } $this->message('话题发表成功!', $response, array('url' => $this->space->getPatientIndexUrl())); }
/** 编辑文章提交 */ public function updatePost($request, $response) { /*{{{*/ DBC::requireFalse(XString::cntrim($request->article_title) == '' || XString::cntrim($request->getUnSafeData('article_content')) == '', '文章标题和内容都不能为空'); $categoryId = intval($request->getRequest('category_id', 0)); DBC::requireFalse($categoryId == 0, '请选择文章分类'); $category = DAL::get()->find('ArticleCategory', $categoryId); $article = DAL::get()->find('article', $request->article_id); DBC::requireFalse($article->isNull(), '编辑文章出错,请重试'); $articleContent = htmlspecialchars($request->getUnSafeData('article_content'), ENT_COMPAT | ENT_HTML401, 'ISO-8859-1'); $articleContent = preg_replace("'&lt;script&gt;.*?&lt;/script&gt;'", "", $articleContent); $data = array('topLevel' => $request->top_level, 'docAttachmentId' => $request->getRequest('docAttachmentId', 0), 'title' => $request->article_title, 'content' => $articleContent, 'tags' => $request->article_tags, 'source' => $request->article_source, 'articleCategory' => $category, 'status' => Article::STATUS_INIT); $data['tags'] = str_replace("选择合适的关键词使文章更容易被搜索到(请用空格或逗号分隔)", '', $data['tags']); ArticleClient::getInstance()->modifyArticle($article->id, $data); $listUrl = $article->isClassicsCase() ? $response->router->urlfor('article/classicsCaseList') : $response->router->urlfor('article/index'); $this->message('文章修改成功', $response, array('text' => '查看修改的文章', 'url' => $response->router->urlfor('article/detail', array('article_id' => $article->id)), 'reserveText' => '返回文章列表', 'reserveUrl' => $listUrl, 'articleId' => $article->id)); }
public static function getLengthOfGBKString($str) {/*{{{*/ $str = mb_convert_encoding($str, 'gbk', 'auto'); return mb_strlen(XString::cntrim($str)); }/*}}}*/
public function newComment($os, $deviceId, $userId, $doctorId, $tag, $effect, $attitude, $comment, $type, $name, $phone, $treatment, $deviceType = 'Android') {/*{{{*/ $doctor = DAL::get()->find('doctor', $doctorId); //加上判断(如果传了电话信息,并且电话信息不为空,增加电话信息判断) if(isset($phone) && trim($phone) != '') { if(false == XString::isMobile($phone)) { $this->setErrorCode(110); return 0; } } if($doctor->isNull()) { $this->setErrorCode(132); return 0; } if($doctor->inPunishTime()) { $this->setErrorCode(187); return 0; } if(false == $deviceId) { $deviceId = XIpLocation::getIp(); } if(false == $os) { $this->setErrorCode(191); return 0; } if(mb_strlen(XString::cntrim($tag)) <= 0 || mb_strlen(XString::cntrim($tag)) > 50) { $this->setErrorCode(183); return 0; } if(DoctorComment::COMMENT_TYPE_UNKNOWN != $type && (mb_strlen(XString::cntrim($name)) <= 0 || mb_strlen(XString::cntrim($name)) > 10)) { $this->setErrorCode(190); return 0; } if(false == in_array($type, self::$typeList)) { $this->setErrorCode(188); return 0; } if(DoctorComment::COMMENT_TYPE_PROCESS == $type) { if(false == in_array($effect, self::$skillList)) { $this->setErrorCode(184); return 0; } if(false == in_array($attitude, self::$attitudeList)) { $this->setErrorCode(185); return 0; } if(mb_strlen(XString::cntrim($comment)) < 50 || mb_strlen(XString::cntrim($comment)) > 5000) { $this->setErrorCode(186); return 0; } $comment = "<span class=gray>看病过程:</span>".$comment; } else if(DoctorComment::COMMENT_TYPE_UNKNOWN == $type) { if($doctor->trustIndex == 100 && ($effect == DoctorComment::VOTE_BUMANYI || $attitude == DoctorComment::VOTE_BUMANYI)) { $this->setErrorCode('193'); return 0; } if(false == in_array($effect, self::$skillList)) { $this->setErrorCode(184); return 0; } if(false == in_array($attitude, self::$attitudeList)) { $this->setErrorCode(185); return 0; } } else if(DoctorComment::COMMENT_TYPE_THANK_LETTER == $type) { if(false == in_array($effect, self::$thankSkillList)) { $this->setErrorCode(184); return 0; } if(false == in_array($attitude, self::$thankAttitudeList)) { $this->setErrorCode(185); return 0; } if(mb_strlen(XString::cntrim($comment)) < 50 || mb_strlen(XString::cntrim($comment)) > 5000) { $this->setErrorCode(186); return 0; } } $params = self::_getCommentParams($userId, $doctorId, $tag, $effect, $attitude, $comment, $type, $name, $phone, $treatment, $os, $deviceId, $deviceType); if(DoctorComment::COMMENT_TYPE_UNKNOWN == $type) { try { $doctorCommentId = self::_doAddVote($userId, $doctor, $params); } catch(BizException $ex) { $this->setErrorCode(188); return 0; } } else { if(false == $params['userRealName']) { $this->setErrorCode("190"); return 0; } if(false == XString::isMobile($params['userMobile'])) { $this->setErrorCode(110); return 0; } $doctorCommentId = self::_doAddComment($userId, $doctor, $params); } }/*}}}*/
/** 编辑文章提交(D,HF) */ public function updatePost($request, $response) {/*{{{*/ if (XString::cntrim($request->article_title) == '' || XString::cntrim($request->getUnSafeData('article_content')) == '') { $this->message('文章标题和内容都不能为空', $response); return false; } $categoryId = intval($request->getRequest('category_id', 0)); $article = DAL::get()->find('article', $request->article_id); if($article->isNull()){ $this->message('编辑文章出错,请重试', $response); return false; } if ($categoryId == 0) { $this->message('请选择文章分类', $response); return false; } $category = DAL::get()->find('ArticleCategory', $categoryId); $data = array( 'topLevel' => $request->top_level, 'docAttachmentId' => $request->getRequest('docAttachmentId', 0), 'title' => $request->article_title, 'content' => $request->getUnSafeData('article_content'), 'tags' => $request->article_tags, 'source' => $request->article_source, 'articleCategory'=>$category, 'status' => Article::STATUS_INIT ); ArticleClient::getInstance()->modifyArticle($article->id, $data); $listUrl = ($article->isClassicsCase() ? $response->router->urlfor('article/classicsCaseList') : $response->router->urlfor('article/index')); $this->message('文章修改成功', $response, array( 'buttons' => array( array('text' => '查看修改的文章', 'url' => $response->router->urlfor('article/detail', array('article_id' => $article->id))), array('text' => '返回文章列表', 'url' => $listUrl), ), )); }/*}}}*/
/** * @brief 提交咨询意向 * @author cs * @exampleUrl dev.mobile-api.haodf.com/patientapi/intention_newCaseWithPatient?userId=581662815&doctorId=238324&title=xxx&tag=xxx&content1=xxx&content2=xxx&content3=xxx&attachmentIds=&deviceType=android&patientId=1163360744 * * @Param $userId 用户id * @Param $doctorId 咨询医生id * @Param $title 标题 * @Param $tag 疾病 * @Param $content1 内容1 * @Param $content2 内容2 * @Param $content3 内容3 * @Param $attachmentIds 附件ids(逗号分割) * @Param $deviceType 设备类型 * @Param $patientId 患者id * * @Returns */ public function newCaseWithPatient($userId, $doctorId, $title, $tag, $content1, $content2, $content3, $attachmentIds, $deviceType, $patientId) {/*{{{*/ if($this->isThreadServiceSuspendTime()) { $this->setErrorCode(901); return 0; } $user = DAL::get()->find('user', $userId); if ($userId <=0 || $user->isNull()) { $this->setErrorCode(107); return 0; } $patient = DAL::get()->find('patient', $patientId); if ($patient->isNull()) { $this->setErrorCode(316); return 0; } if(false == isset($user->patients[$patient->id])) { $this->setErrorCode(316); return 0; } $askSpace = new NullEntity(); if ($doctorId == 'null') { $doctorId = 0; } if($doctorId) { $doctor = DAL::get()->find('doctor', $doctorId); if($doctor->isNull()) { $this->setErrorCode(132); return 0; } $askSpace = $doctor->space; if($askSpace->isNull()) { $this->setErrorCode(144); return 0; } try { SpaceClient::getInstance()->ensureAllowAskRule($user, $askSpace); } catch(Exception $ex) { $this->setErrorCode(320); return 0; } } $title = htmlspecialchars_decode($title, ENT_QUOTES); $tag = htmlspecialchars_decode($tag, ENT_QUOTES); if(mb_strlen(XString::cntrim($title)) < 5 || mb_strlen(XString::cntrim($title)) > 10) { $this->setErrorCode(167); return 0; } if(mb_strlen(XString::cntrim($tag)) < 1 || mb_strlen(XString::cntrim($tag)) > 20) { $this->setErrorCode(304); return 0; } $content = $content1; if ($content2) { $content .= "\n\n曾经治疗情况和效果:\n\n".$content2; } $attachmentArrs = $attachmentIds ? explode("," , $attachmentIds) : array(); $deviceType = ($deviceType == 'Android') ? Intention::SRC_ANDROID : Intention::SRC_IOS; $intention = IntentionClient::getInstance()->add4ThreadFromWap($patient, $askSpace, $deviceType, '', $content, $attachmentArrs, $tag, $title, '', $content3); if ($intention->isNull()) { $this->setErrorCode(169); return 0; } $res = ScoreClient::getInstance()->ask($user->id); $noticeAfterCase = "您的咨询将由网站医学助理按病情转交合适的医生回复。70%的咨询可在3天内得到医生回复,未回复的咨询将在7天后过期。如病情紧急建议直接去医院就诊。"; $this->content = array('threadId' => $intention->id, 'caseType' => 'thread', 'sign' => 0, 'noticeAfterCase' => $noticeAfterCase); }/*}}}*/