123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- <?php
- if (!defined('IS_INITPHP')) exit('Access Denied!');
- class BaseService {
-
-
- /**
- * 用于在检测过滤列表的方法名
- * @param string $funName 请求方法名
- * @return boolean
- */
- function checkFun($funName)
- {
- //print_r($funName);
- $bool=true;
- $noCheckFun = C("noCheckFun");
- $json = json_decode($noCheckFun[0]);
- if (strpos('|'.$json->funName.'|', '|'.$funName.'|') !== false){
- $bool=false;
- }
- return $bool;
- }
-
-
- /**
- * 用于在检测用户的合法性的方法名
- * @param DatabaseDao $dbDao Dao对象
- * @return boolean
- */
- function checkUser()
- {
- $bool=false;
- $checkUser = C("checkUser");
- $json = json_decode($checkUser[0]);
- $sqlString = $json->sqlString;
- $parameter = $json->parameter;
- $sqlString= $this->getReplace($parameter,$sqlString);
- $bool = call_user_func(array($_ENV["dbDao"],$json->sqlType),$sqlString,$json->resultType);
- return $bool;
- //测试用
- //return true;
-
- }
-
-
- /**
- * 用于在检测医院列表接口地址和appKey
- * @param DatabaseDao $dbDao Dao对象
- * @return entity
- */
- function checkHisApi()
- {
- $checkHisApi = C("checkHisApi");
- $json = json_decode($checkHisApi[0]);
- $sqlString = $json->sqlString;
- $parameter = $json->parameter;
- $sqlString= $this->getReplace($parameter,$sqlString);
- $entity = call_user_func(array($_ENV["dbDao"],$json->sqlType),$sqlString,$json->resultType);
- return $entity;
-
- }
-
-
-
- /**
- * 用于生成返回前台验证时间戳和用户token
- * @return json
- */
- function getDataToken($checkUser) {
- //验证方案
- if ($checkUser) {
- $timestamp=call_user_func(array($_ENV["commonClass"],timestamp));
- $timestampeq=call_user_func(array($_ENV["commonClass"],timestampeq),$checkUser["timestamp"]);
- $token=call_user_func(array($_ENV["commonClass"],token), $checkUser['id'],$timestamp);
- if(((float)$timestamp-(float)$timestampeq)>0){
- $checkToken = C("updateToken");
- $json = json_decode($checkToken[0]);
- $sqlString = $json->sqlString;
- $parameter = $json->parameter;
- $sqlData = array("timestamp"=>$timestamp,"token"=>$token,"id"=> $checkUser['id']);
- $sqlString= $this->getReplace($parameter,$sqlString,$sqlData);
-
- $update = call_user_func(array($_ENV["dbDao"],$json->sqlType),$sqlString,$json->resultType);
- if($update){
- $jsonData["dataToken"]["timestamp"]=$timestamp;
- $jsonData["dataToken"]["token"]=$token;
- }else{
- $jsonData["dataToken"]["timestamp"]=I('timestamp','','htmlspecialchars,trim');
- $jsonData["dataToken"]["token"]=I('token','','htmlspecialchars,trim');
- }
- }else{
- $jsonData["dataToken"]["timestamp"]=I('timestamp','','htmlspecialchars,trim');
- $jsonData["dataToken"]["token"]=I('token','','htmlspecialchars,trim');
- }
- $jsonData["dataToken"]["status"]="1";
- $jsonData["dataToken"]["info"]="验证成功";
- }else{
- $jsonData["dataToken"]["timestamp"]="";
- $jsonData["dataToken"]["token"]="";
- $jsonData["dataToken"]["status"]="0";
- $jsonData["dataToken"]["info"]="验证失败";
- }
- return $jsonData;
-
- //$jsonDataT["dataToken"]["timestamp"]="";
- //$jsonDataT["dataToken"]["token"]="";
- //$jsonDataT["dataToken"]["status"]="1";
- //$jsonDataT["dataToken"]["info"]="验证成功";
- //return $jsonDataT;
- }
-
-
-
- /**
- * 用于在获得单个参数 I D
- * @param string $param 获取参数
- * @param array $sqlData 传递给子模板的变量列表,key为变量名,value为变量值
- * @return void
- */
- function getParameter($parameter,$sqlData,$patientUser)
- {
- //print_r($parameter);
- //print_r($sqlData);
- $parameternew = explode('_', $parameter);
- if($parameternew[0]=="I"){
- return I($parameternew[1],'','rtrim');
- }else if($parameternew[0]=="J"){
- $json = I($parameternew[1],'', 'rtrim');
- return $json;
- }else if($parameternew[0]=="json"){
- $json = I('json','', 'rtrim');
- return $json;
- }else if($parameternew[0]=="JA"){
- $json = json_decode(I($parameternew[1],'', 'rtrim'));
- return $json->$parameternew[2] ? $json->$parameternew[2] : null;
- }else if($parameternew[0]=="JJ"){
- $json = json_decode(I('json','', 'rtrim'));
- return $json->$parameternew[1] ? $json->$parameternew[1] : null;
- }else if($parameternew[0]=="P"){
- //分页面
- if($parameternew[1]=="rowed"){
- $rowed =I('rowed','','trim');
- $pageSize =I('pageSize','','trim');
- if($rowed!='' && $pageSize!=''){
- return "limit ".$rowed.",";
- }else{
- return "";
- }
- }else if($parameternew[1]=="pageSize"){
- $rowed =I('rowed','','trim');
- $pageSize =I('pageSize','','trim');
- if($rowed!='' && $pageSize!=''){
- return $pageSize;
- }else{
- return "";
- }
- }else{
- return I($parameternew[1],'','trim');
- }
- }else if($parameternew[0]=="D"){
- return $sqlData[$parameternew[1]];
- }else if($parameternew[0]=="M"){
- return $patientUser[$parameternew[1]];
- }else if($parameternew[0]=="F"){
- $parameterF = explode('F_', $parameter);
- $parameterF = explode('|', $parameterF[1]);
- return call_user_func(array($_ENV["commonClass"],$parameternew[1]),$parameterF[1]);
- }else{
- return null;
- }
- }
-
-
- /**
- * 用于在获得代换his api url 替换
- * @param array $hisUrl hisUrl
- * @param string $funName 获取请求HIS参数
- * @param string $appKey 获取appKey
- * @return void
- */
- function hisApiReplace($hisUrl,$appKey,$funName)
- {
- $postUrl = $hisUrl.$funName."&appkey=".md5($appKey."|".date("Y-m-d", time()));
- return $postUrl;
- }
-
-
-
- /**
- * 用于在获得代换his api url 替换
- * @param array $hisUrl hisUrl
- * @param string $funName 获取请求HIS参数
- * @param string $appKey 获取appKey
- * @return void
- */
- function xmlDataReplace($returnXml,$replaceXmlData,$returnXmlData)
- {
- $xmlData = array();
- $replaceXmlData = explode(',', $replaceXmlData);
- if($returnXmlData=="one"){
- foreach ($replaceXmlData as $key => $replaceXml) {
- $xmlData[$replaceXml] =trim(strval($returnXml->$replaceXml));
- }
- }else if($returnXmlData=="list"){
- foreach($returnXml as $key=>$value){
- $replaceXmlDataTemp = null;
- foreach ($replaceXmlData as $key => $replaceXml) {
- $replaceXmlDataTemp[] =trim($value->$replaceXml);
- }
- $xmlData[] = array_combine($replaceXmlData,$replaceXmlDataTemp);
- }
- }else{
- $xmlData = $returnXml;
- }
- return $xmlData;
-
- }
-
-
- /**
- * 用于在获得代换SQL
- * @param array $parameter 传递给参数数组
- * @param string $sqlString 获取要代换的SQL
- * @param string $sqlData 获取要代换的Sql得到的实体类数据
- * @return void
- */
- function getReplace($parameter,$sqlString,$sqlData,$nodeType,$patientUser)
- {
- $parameter = explode(',', $parameter);
- foreach ($parameter as $key => $value) {
- if($nodeType=="if"){
- //过滤if 语句
- $temp= explode('|', $value);
- if($temp[0]=="IF"){
- $tempv=$this->getParameter($temp[1],$sqlData,$patientUser);
- if($tempv){
- //有值,要把<if></if> 整个都加入
- $sqlString = strip_tags($sqlString);
- $sqlString = str_replace("{".$temp[1]."}",$tempv,$sqlString);
- }else{
- //无值,要把<if></if> 整个都去掉
- $sqlString=preg_replace("/<(if.*?)>(.*?)<(\/if.*?)>/si","",$sqlString);
- }
- }else{
- $sqlString = str_replace("{".$value."}",$this->getParameter($value,$sqlData,$patientUser),$sqlString);
- }
- }else{
- $sqlString = str_replace("{".$value."}",$this->getParameter($value,$sqlData,$patientUser),$sqlString);
- }
- }
- return $sqlString;
- }
-
- /**
- * 用于在生成返回dataInfo的数据
- * @param array $jsonData 返回json数据
- * @param string $sqlData 数据库返回的数据
- * @param string $infoString 错误返回的提示
- * @return void
- */
- function getJson($jsonData,$sqlData,$infoString,$rows="0",$resultType="list"){
- if($sqlData){
- $jsonData["dataInfo"]["status"]="1";
- $jsonData["dataInfo"]["info"]="成功";
- $jsonData["dataInfo"]["rows"]=$rows;
- if($resultType=="list"){
- $jsonData["dataInfo"]["data"]=$sqlData;
- }else{
- $jsonData["dataInfo"]["data"][]=$sqlData;
- }
-
- }else{
- $jsonData["dataInfo"]["status"]="0";
- $jsonData["dataInfo"]["rows"]="0";
- $jsonData["dataInfo"]["info"]=$infoString;
- $jsonData["dataInfo"]["data"]="";
- }
-
- return $jsonData;
- }
-
- /**
- * 用于生成返回前台JSON
- * @param string $path 相对于View目录的路径
- * @param array $data 传递给子模板的变量列表,key为变量名,value为变量值
- * @return void
- */
- function codeJson($jsonData)
- {
- //jsonp回调参数,必需
- $callback = isset($_GET['callback']) ? trim($_GET['callback']) : '';
- Log::json(json_encode($jsonData));
- //返回格式,有回调或没有回调两种方式
- if($callback){
- echo $callback . '(' .json_encode($jsonData) .')'; //返回格式,回调来jsonp 必需 json 数据
- }else{
- echo json_encode($jsonData); //返回格式,必需 json 数据
- }
- }
-
- //一维数组(同模型)
- function getLevel($cate, $name = '') {
- $arr = array();
- foreach ($cate as $v) {
- if ($v['emrItemName'] == $name) {
- $arr[] = $v;
- }
- }
- return $arr;
-
- }
-
-
- }
- ?>
|