From 25ce7c87e82588c93b91718c33be398769af4079 Mon Sep 17 00:00:00 2001 From: pengda <10266652509@qq.com> Date: Mon, 2 Sep 2024 16:39:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BB=E6=A1=88=E5=AF=BC=E5=87=BA=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/define.php | 2 + control/index.php | 96 +++++++++++++++++++++---------------- model/mCase.php | 5 +- model/mUserCase.php | 62 ++++++++++-------------- view/templates/index/user_case.html | 62 ++++++++++++++++++++++++ 5 files changed, 146 insertions(+), 81 deletions(-) create mode 100644 view/templates/index/user_case.html diff --git a/config/define.php b/config/define.php index ad0c877..469854e 100644 --- a/config/define.php +++ b/config/define.php @@ -29,6 +29,8 @@ $GLOBALS['notice_qqmail_list'] = array( 'wangpd5@163.com' => 'GTKEOWXEGEUOERNR', ); + define('RQ_USER_CASE_DATA', 'rq_user_case_data_%s_%d'); + define('RQ_USER_CASE_HTML_URL', TCM_DOMAIN . '/export_pdf?key=%s'); define('USER_CASE_PDF_PATH', DATACENTER_ROOT.'/tcm_pdf/%d/'); define('USER_CASE_PDF_URL', TCM_DOMAIN.'/case_pdf/%d/%s.pdf'); diff --git a/control/index.php b/control/index.php index 0a45067..7787daf 100644 --- a/control/index.php +++ b/control/index.php @@ -131,9 +131,9 @@ class index extends publicBase { } public function ajax_user_case_detail() { - $id = $this->post('id')+0; $uid = $this->post('uid'); $token = $this->post('token'); + $id = $this->post('id')+0; if(empty($uid) || empty($token) || empty($id))$this->ajax_json(false, '非法请求'); $m_user_case = new mUserCase(); @@ -144,11 +144,11 @@ class index extends publicBase { } public function ajax_collect_log() { - $start = $this->get('start') ? $this->get('start') : 0; - $pagesize = $this->get('pagesize') ? $this->get('pagesize') : 500; + $page_num = $this->post('page_num') ? $this->post('page_num') : 1; + $page_size = $this->post('page_size') ? $this->post('page_size') : 100; - $mCase = new mCase(); - $data = $mCase->getCollectLog($start,$pagesize); + $m_case = new mCase(); + $data = $m_case->getCollectLog($page_num, $page_size); $this->ajax_json(true, '获取成功', $data); } @@ -157,73 +157,85 @@ class index extends publicBase { $code = $this->get('code'); if(!$code)$this->ajax_json(false, '非法请求'); - $mUser = new mUser(); - - $openid = $mUser->getOpenid($code); - if(!$openid)$this->ajax_json(false, $mUser->getError()); + $m_user = new mUser(); + $openid = $m_user->getOpenid($code); + if(!$openid)$this->ajax_json(false, $m_user->getError()); - $user = $mUser->getUserByOpenid($openid); + $user = $m_user->getUserByOpenid($openid); if($user){ - $data = array( - 'uid' => $user['uid'], - 'token'=> $mUser->getToken($user['uid']), - ); - $this->ajax_json(true, '登录成功', $data); + $token = $m_user->getToken($user['uid']); + $this->ajax_json(true, '登录成功', array('uid' => $user['uid'], 'token'=> $token)); } //获取唯一uid串 - $uid = $mUser->createUniqueUid($openid); - $user = $mUser->getUserByUid($uid); + $uid = $m_user->createUniqueUid($openid); + $user = $m_user->getUserByUid($uid); if($user)$this->ajax_json(false, 'uid生成失败'); - $id = $mUser->createUser(array('uid'=>$uid,'openid'=>$openid)); + $id = $m_user->createUser(array('uid'=>$uid,'openid'=>$openid)); if(!$id)$this->ajax_json(false, '用户创建失败'); - $data = array( - 'uid' => $uid, - 'token'=> $mUser->getToken($uid), - ); - - $this->ajax_json(true, '登录成功', $data); + $token = $m_user->getToken($user['uid']); + $this->ajax_json(true, '登录成功', array('uid' => $user['uid'], 'token'=> $token)); } public function ajax_contact_us(){ $this->ajax_json(true, '获取成功',array('img_url'=> CONTACT_US_IMG_URL)); } - public function ajax_pdf_url(){ + public function export_user_case_list(){ $uid = $this->post('uid'); $token = $this->post('token'); if(empty($uid) || empty($token))$this->ajax_json(false, '非法请求'); - $mUser = new mUser(); - $is_login = $mUser->validateToken($uid,$token); - if(!$is_login)$this->ajax_json(false, '请登录后操作'); + $page_num = $this->post('page_num') ? $this->post('page_num') : 1; + $page_size = $this->post('page_size') ? $this->post('page_size') : 100; - $mUserCase = new mUserCase(); + $m_user_case = new mUserCase(); + $data = $m_user_case->getUserCaseList($uid, $token, $page_num, $page_size, true, true); + if(!$data)$this->ajax_json(false, $m_user_case->getError()); - $id = $this->post('id'); - if($id){ - $data = $mUserCase->getUserCaseInfo($id, $uid); - if (!$data) $this->ajax_json(false, $mUserCase->getError()); + $data_key = sprintf(RQ_USER_CASE_DATA, $uid, 0); - $pdf_url = $mUserCase->createUserCasePdf($uid, $data); + $robj = $m_user_case->initRedis(); + $robj->setex($data_key,60,json_encode($data)); + $pdf_url = $m_user_case->createPdf($uid, $data_key); - $this->ajax_json(true, '获取成功',array('pdf_url'=> $pdf_url)); - } + $this->ajax_json(true, '获取成功',array('pdf_url'=> $pdf_url)); + } - //如果id不存在默认保存前500个医案 - $start = $this->post('start') ? $this->post('start') : 0; - $pagesize = $this->post('pagesize') ? $this->post('pagesize') : 500; + public function export_user_case(){ + $uid = $this->post('uid'); + $token = $this->post('token'); + $id = $this->post('id')+0; + if(empty($uid) || empty($token) || empty($id))$this->ajax_json(false, '非法请求'); - $data = $mUserCase->getUserCaseList($uid, $start, $pagesize, true); - if (!$data) $this->ajax_json(false, $mUserCase->getError()); + $m_user_case = new mUserCase(); + $data = $m_user_case->getUserCaseInfo($uid, $token, $id, true); + if(!$data)$this->ajax_json(false, $m_user_case->getError()); + + $data_key = sprintf(RQ_USER_CASE_DATA, $uid, $id); - $pdf_url = $mUserCase->createUserCasePdf($uid, $data); + $robj = $m_user_case->initRedis(); + $robj->setex($data_key,60,json_encode($data)); + $pdf_url = $m_user_case->createPdf($uid, $data_key); $this->ajax_json(true, '获取成功',array('pdf_url'=> $pdf_url)); } + public function export_pdf() + { + $key = $this->get('key'); + + $m_user_case = new mUserCase(); + $robj = $m_user_case->initRedis(); + $data = $robj->get($key); + + $this->view['data'] = json_decode($data,true); + $this->setViewFormat('html'); + $this->setViewTpl('index/user_case.html'); + } + public function ajax_mail(){ $uid = $this->post('uid'); $token = $this->post('token'); diff --git a/model/mCase.php b/model/mCase.php index c4f524c..8c46ebd 100644 --- a/model/mCase.php +++ b/model/mCase.php @@ -186,8 +186,9 @@ class mCase extends mBase { return true; } - public function getCollectLog($start,$pagesize) { - return $this->obj->selectAll($this->collect_log_tbl, array(), 'collect_time desc ', array($start, $pagesize)); + public function getCollectLog($page_num, $page_size) { + $offset = ($page_num - 1) * $page_size; + return $this->obj->selectAll($this->collect_log_tbl, array(), 'collect_time desc ', array($offset, $page_size)); } } \ No newline at end of file diff --git a/model/mUserCase.php b/model/mUserCase.php index 02f3702..2692451 100644 --- a/model/mUserCase.php +++ b/model/mUserCase.php @@ -104,7 +104,7 @@ class mUserCase extends mBase { return $id; } - public function getUserCaseInfo($uid, $token, $id){ + public function getUserCaseInfo($uid, $token, $id, $is_format_data = false){ $m_user = new mUser(); $is_login = $m_user->validateToken($uid,$token); if(!$is_login){$this->setError('请登录后操作');return false;} @@ -134,15 +134,18 @@ class mUserCase extends mBase { $user_herb = $this->getUserHerbByIds($user_herb_ids); if(empty($herb) && empty($user_herb)){$this->setError('找不到相关药材');return false;} - return array( + $data = array( 'user_case' => $user_case, 'case' => $case, 'herb' => array_column($herb,null,'id'), 'user_herb' => array_column($user_herb,null,'id'), ); + + if($is_format_data)return $this->formatUserCaseData($data); + return $data; } - public function getUserCaseList($uid, $token, $page_num, $page_size, $get_case_herb = false){ + public function getUserCaseList($uid, $token, $page_num, $page_size, $get_case_herb = false, $is_format_data = false){ $m_user = new mUser(); $is_login = $m_user->validateToken($uid,$token); if(!$is_login){$this->setError('请登录后操作');return false;} @@ -181,19 +184,22 @@ class mUserCase extends mBase { $user_herb = $this->getUserHerbByIds($user_herb_ids); if(empty($herb) && empty($user_herb)){$this->setError('找不到相关药材');return false;} - return array( + $data = array( 'user_case_list' => $user_case, 'case_list' => $case, 'herb' => array_column($herb,null,'id'), 'user_herb' => array_column($user_herb,null,'id'), ); + + if($is_format_data)return $this->formatUserCaseData($data); + return $data; } public function getUserHerbByIds($ids){ return $this->obj->selectIn($this->user_herb_tbl, array('id'=>$ids)); } - public function createUserCasePdf($uid, $data){ + public function formatUserCaseData($data){ //兼容单个医案导出pdf if(isset($data['user_case'])){ $data['user_case_list'][0] = $data['user_case']; @@ -202,34 +208,12 @@ class mUserCase extends mBase { unset($data['case']); } - // 创建PDF对象 - $mpdf = new mPDF(); - - $pdf_name = ""; - - $htmlContent = "
我的医案
"; - foreach ($data['user_case_list'] as $item){ - $pdf_name .= $item['name']; - + foreach ($data['user_case_list'] as &$item){ $item['patient_sex'] = $item['patient_sex']==0?'男':'女'; $item['case_time'] = date('Y年m月d日',strtotime($item['case_time'])); - $htmlContent .= "{$item['name']}
"; - $htmlContent .= "{$item['patient_name']},{$item['patient_sex']},{$item['patient_age']}岁,{$item['case_time']}诊
"; - if($item['patient_say']){ - $htmlContent .= "{$item['patient_say']}
"; - } - if($item['first_diagnosis']){ - $htmlContent .= "{$item['first_diagnosis']}
"; - } - if($item['diagnosis']){ - $htmlContent .= "{$item['diagnosis']}
"; - } - $htmlContent .= "处方 共{$item['prescribe_num']}付
"; - $case = $data['case_list'][$item['case_id']]; - $case_str = "选 ".$case['source']." ".$case['name']; + $item['case_info'] = "选 ".$case['source']." ".$case['name'].":"; $herb_arr = array(); foreach ($item['prescribe_herb'] as $herb){ @@ -243,15 +227,21 @@ class mUserCase extends mBase { } $herb_str = implode('、',$herb_arr); - $htmlContent .= "{$case_str}: {$herb_str}
"; + $item['case_herb_info'] = $herb_str; - $htmlContent .= "{$item['feedback']}
"; - } } - $pdf_name = md5($pdf_name); + return $data; + } + + public function createPdf($uid, $data_key) + { + $mpdf = new mPDF(); + $htmlContent = file_get_contents(sprintf(RQ_USER_CASE_HTML_URL, $data_key)); + + $mpdf->WriteHTML($htmlContent); + + $pdf_name = md5($data_key); $temp_dir = sprintf(USER_CASE_PDF_PATH, $uid); if(!is_dir($temp_dir)) { @@ -260,8 +250,6 @@ class mUserCase extends mBase { chgrp($temp_dir, 'nobody'); } - $mpdf->WriteHTML($htmlContent); - $mpdf->Output($temp_dir . $pdf_name . ".pdf" , 'F'); // D表示下载,I表示在浏览器中查看 return sprintf(USER_CASE_PDF_URL, $uid, $pdf_name); diff --git a/view/templates/index/user_case.html b/view/templates/index/user_case.html new file mode 100644 index 0000000..ddd8b18 --- /dev/null +++ b/view/templates/index/user_case.html @@ -0,0 +1,62 @@ + + + + + + + +