diff --git a/data/dCase.php b/data/dCase.php index 71ba940..1780472 100644 --- a/data/dCase.php +++ b/data/dCase.php @@ -13,7 +13,7 @@ class dCase extends dBase { 'name', 'source', 'method', - 'search_num', + 'use_num', 'sort', ), 'tcm_case_herb' => array( diff --git a/model/mCase.php b/model/mCase.php index e466867..8451cfd 100644 --- a/model/mCase.php +++ b/model/mCase.php @@ -20,100 +20,183 @@ class mCase extends mBase { $this->collect_log_tbl = 'tcm_collect_log'; } - public function createCase($info){ - return $this->obj->insert($this->tbl, $info); - } - - public function updateCase($id,$data){ - return $this->obj->update($this->tbl, $data, array('sql'=>'`id`=?', 'vals'=>array($id))); - } + public function createCase($data, $herbs){ + $id = $this->obj->insert($this->tbl, $data); + if(!$id){ + $this->setError('添加失败'); + return false; + } + //格式化药方对应的药材数据 + $case_herb = $this->formatCaseHerb($id, $herbs); + //创建药方对应的药材 + $this->createCaseHerb($case_herb); - public function updateCaseSearchNum($id){ - return $this->obj->increase($this->tbl, array('sql'=>'`id`=?', 'vals'=>array($id)),'search_num'); + return $id; } - public function getCaseByName($name,$start,$pagesize) { - $sql = " `name` like '%{$name}%'"; - - $res = $this->obj->selectAll($this->tbl, array('sql'=>$sql, 'vals'=>array()), 'search_num desc,sort asc ', array($start, $pagesize)); + public function updateCase($id, $data, $herbs){ + $res = $this->obj->update($this->tbl, $data, array('sql'=>'`id`=?', 'vals'=>array($id))); + if(!$res){ + $this->setError('更新失败'); + return false; + } + //格式化药方对应的药材数据 + $case_herb = $this->formatCaseHerb($id, $herbs); + //更新药方对应的药材 + $this->compareCaseHerb($id, $case_herb); - if(empty($res)) return array(); - return $res; + return true; } - public function getCaseById($id){ - return $this->obj->select($this->tbl, array('sql'=>'`id`=?','vals'=>array($id))); + public function formatCaseHerb($case_id,$herbs){ + $case_herb = array(); + foreach ($herbs as $key=>$item) { + $temp = array(); + $temp['case_id']=$case_id; + $temp['num']=$item['num']; + $temp['sort']=$key; + + $herb = $this->getHerbByName($item['name']); + if($herb){ + $temp['herb_id'] = $herb['id']; + }else{ + $temp['herb_id'] = $this->createHerb(array('name'=>$item['name'])); + } + $case_herb[] = $temp; + } + return $case_herb; } - public function getCaseInfo($id) { - //药方信息 - $case = $this->getCaseById($id); - - //药方药材信息 - $case_herb = $this->getCaseHerbByCaseId($case['id']); - - //药材名称 - $herb_ids = array_column($case_herb,'herb_id'); - $herb = $this->getHerbByIds($herb_ids); - - $data = array( - 'case' => $case, - 'case_herb' => $case_herb, - 'herb' => array_column($herb,null,'id'), - ); - - return $data; + public function getHerbByName($name){ + return $this->obj->select($this->herb_tbl, array('sql'=>'`name`=?', 'vals'=>array($name))); } - public function getCaseByIds($ids){ - return $this->obj->selectIn($this->tbl, array('id'=>$ids)); + public function createHerb($info){ + $herb_id = $this->obj->insert($this->herb_tbl, $info); + if(empty($herb_id)){ + $this->setError('添加药材失败'); + return false; + } + return $herb_id; } public function createCaseHerb($info){ - return $this->obj->mutiInsert($this->case_herb_tbl, $info); + $res = $this->obj->mutiInsert($this->case_herb_tbl, $info); + if(!$res){ + $this->setError('添加药方药材失败'); + return false; + } + return true; } - public function getCaseHerbByCaseId($case_id){ - return $this->obj->selectAll($this->case_herb_tbl, array('sql'=>'`case_id`=?','vals'=>array($case_id)), 'sort asc '); - } + public function compareCaseHerb($id,$new_data){ + $old_data = $this->getCaseHerbByCaseId($id); - public function compareCaseHerb($old_data,$new_data){ $old_num = count($old_data); $new_num = count($new_data); - //需要删除 if($old_num>=$new_num){ + //需要删除药方对应的药材 foreach ($old_data as $key => $value) { if(!isset($new_data[$key])){ - $this->obj->delete($this->case_herb_tbl, array('sql'=>'`id`=?', 'vals'=>array($value['id']))); - continue; + $res = $this->obj->delete($this->case_herb_tbl, array('sql'=>'`id`=?', 'vals'=>array($value['id']))); + if(!$res){ + $this->setError('删除药方药材失败'); + return false; + } + } + $res = $this->obj->update($this->case_herb_tbl, $new_data[$key], array('sql'=>'`id`=?', 'vals'=>array($value['id']))); + if(!$res){ + $this->setError('更新药方药材失败'); + return false; } - $this->obj->update($this->case_herb_tbl, $new_data[$key], array('sql'=>'`id`=?', 'vals'=>array($value['id']))); } }else{ + //需要增加药方对应的药材 foreach ($new_data as $key => $value) { if(!isset($old_data[$key])){ - $this->obj->insert($this->case_herb_tbl, $value); - continue; + $res = $this->obj->insert($this->case_herb_tbl, $value); + if(!$res){ + $this->setError('添加药方药材失败'); + return false; + } } - $this->obj->update($this->case_herb_tbl, $value, array('sql'=>'`id`=?', 'vals'=>array($old_data[$key]['id']))); + if(!$res){ + $this->setError('更新药方药材失败'); + return false; + } } } return true; } - public function createHerb($info){ - return $this->obj->insert($this->herb_tbl, $info); + public function getCaseHerbByCaseId($case_id){ + return $this->obj->selectAll($this->case_herb_tbl, array('sql'=>'`case_id`=?','vals'=>array($case_id)), 'sort asc '); } - public function getHerbByName($name){ - return $this->obj->select($this->herb_tbl, array('sql'=>'`name`=?', 'vals'=>array($name))); + + public function getCaseByName($name,$start,$pagesize) { + $sql = " `name` like '%{$name}%'"; + + $res = $this->obj->selectAll($this->tbl, array('sql'=>$sql, 'vals'=>array()), 'use_num desc,sort asc ', array($start, $pagesize)); + + if(empty($res)) return array(); + return $res; } + + public function getCaseInfo($id) { + //药方信息 + $case = $this->getCaseById($id); + if(empty($case)){ + $this->setError('查询不到此药方'); + return false; + } + //药方药材信息 + $case_herb = $this->getCaseHerbByCaseId($case['id']); + if(empty($case_herb)){ + $this->setError('药方药材查询失败'); + return false; + } + //药材名称 + $herb_ids = array_column($case_herb,'herb_id'); + $herb = $this->getHerbByIds($herb_ids); + if(empty($herb)){ + $this->setError('药材名称查询失败'); + return false; + } + $data = array( + 'case' => $case, + 'case_herb' => $case_herb, + 'herb' => array_column($herb,null,'id'), + ); + return $data; + } + + public function getCaseById($id){ + return $this->obj->select($this->tbl, array('sql'=>'`id`=?','vals'=>array($id))); + } + public function getHerbByIds($ids){ return $this->obj->selectIn($this->herb_tbl, array('id'=>$ids)); } + public function getCaseByIds($ids){ + return $this->obj->selectIn($this->tbl, array('id'=>$ids)); + } + + public function updateCaseSearchNum($id){ + $res = $this->obj->increase($this->tbl, array('sql'=>'`id`=?', 'vals'=>array($id)),'use_num'); + if(!$res){ + $this->setError('药方使用次数更新失败'); + $tool_obj = new qTool(); + $tool_obj->trackLog('tcm', $id, sprintf(LOG_TRACK_SAVE_PATH, date('Y-m-d'), 'tcm_case_use_num')); + return false; + } + + return true; + } + public function getCollectLog($start,$pagesize) { return $this->obj->selectAll($this->collect_log_tbl, array(), 'collect_time desc ', array($start, $pagesize)); }