BaseService.class.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. <?php
  2. if (!defined('IS_INITPHP')) exit('Access Denied!');
  3. class BaseService {
  4. /**
  5. * 用于在检测过滤列表的方法名
  6. * @param string $funName 请求方法名
  7. * @return boolean
  8. */
  9. function checkFun($funName)
  10. {
  11. //print_r($funName);
  12. $bool=true;
  13. $noCheckFun = C("noCheckFun");
  14. $json = json_decode($noCheckFun[0]);
  15. if (strpos('|'.$json->funName.'|', '|'.$funName.'|') !== false){
  16. $bool=false;
  17. }
  18. return $bool;
  19. }
  20. /**
  21. * 用于在检测用户的合法性的方法名
  22. * @param DatabaseDao $dbDao Dao对象
  23. * @return boolean
  24. */
  25. function checkUser()
  26. {
  27. $bool=false;
  28. $checkUser = C("checkUser");
  29. $json = json_decode($checkUser[0]);
  30. $sqlString = $json->sqlString;
  31. $parameter = $json->parameter;
  32. $sqlString= $this->getReplace($parameter,$sqlString);
  33. $bool = call_user_func(array($_ENV["dbDao"],$json->sqlType),$sqlString,$json->resultType);
  34. return $bool;
  35. //测试用
  36. //return true;
  37. }
  38. /**
  39. * 用于在检测医院列表接口地址和appKey
  40. * @param DatabaseDao $dbDao Dao对象
  41. * @return entity
  42. */
  43. function checkHisApi()
  44. {
  45. $checkHisApi = C("checkHisApi");
  46. $json = json_decode($checkHisApi[0]);
  47. $sqlString = $json->sqlString;
  48. $parameter = $json->parameter;
  49. $sqlString= $this->getReplace($parameter,$sqlString);
  50. $entity = call_user_func(array($_ENV["dbDao"],$json->sqlType),$sqlString,$json->resultType);
  51. return $entity;
  52. }
  53. /**
  54. * 用于生成返回前台验证时间戳和用户token
  55. * @return json
  56. */
  57. function getDataToken($checkUser) {
  58. //验证方案
  59. if ($checkUser) {
  60. $timestamp=call_user_func(array($_ENV["commonClass"],timestamp));
  61. $timestampeq=call_user_func(array($_ENV["commonClass"],timestampeq),$checkUser["timestamp"]);
  62. $token=call_user_func(array($_ENV["commonClass"],token), $checkUser['id'],$timestamp);
  63. if(((float)$timestamp-(float)$timestampeq)>0){
  64. $checkToken = C("updateToken");
  65. $json = json_decode($checkToken[0]);
  66. $sqlString = $json->sqlString;
  67. $parameter = $json->parameter;
  68. $sqlData = array("timestamp"=>$timestamp,"token"=>$token,"id"=> $checkUser['id']);
  69. $sqlString= $this->getReplace($parameter,$sqlString,$sqlData);
  70. $update = call_user_func(array($_ENV["dbDao"],$json->sqlType),$sqlString,$json->resultType);
  71. if($update){
  72. $jsonData["dataToken"]["timestamp"]=$timestamp;
  73. $jsonData["dataToken"]["token"]=$token;
  74. }else{
  75. $jsonData["dataToken"]["timestamp"]=$checkUser["timestamp"];
  76. $jsonData["dataToken"]["token"]=$checkUser["token"];
  77. }
  78. }else{
  79. $jsonData["dataToken"]["timestamp"]=$checkUser["timestamp"];
  80. $jsonData["dataToken"]["token"]=$checkUser["token"];
  81. }
  82. $jsonData["dataToken"]["status"]="1";
  83. $jsonData["dataToken"]["info"]="验证成功";
  84. }else{
  85. $jsonData["dataToken"]["timestamp"]="";
  86. $jsonData["dataToken"]["token"]="";
  87. $jsonData["dataToken"]["status"]="0";
  88. $jsonData["dataToken"]["info"]="验证失败";
  89. }
  90. return $jsonData;
  91. //$jsonDataT["dataToken"]["timestamp"]="";
  92. //$jsonDataT["dataToken"]["token"]="";
  93. //$jsonDataT["dataToken"]["status"]="1";
  94. //$jsonDataT["dataToken"]["info"]="验证成功";
  95. //return $jsonDataT;
  96. }
  97. /**
  98. * 用于在获得单个参数 I D
  99. * @param string $param 获取参数
  100. * @param array $sqlData 传递给子模板的变量列表,key为变量名,value为变量值
  101. * @return void
  102. */
  103. function getParameter($parameter,$sqlData,$patientUser)
  104. {
  105. //print_r($parameter);
  106. //print_r($sqlData);
  107. $parameternew = explode('_', $parameter);
  108. if($parameternew[0]=="I"){
  109. return I($parameternew[1],'','htmlspecialchars,trim');
  110. }else if($parameternew[0]=="D"){
  111. return $sqlData[$parameternew[1]];
  112. }else if($parameternew[0]=="M"){
  113. return $patientUser[$parameternew[1]];
  114. }else if($parameternew[0]=="F"){
  115. $parameterF = explode('F_', $parameter);
  116. $parameterF = explode('|', $parameterF[1]);
  117. return call_user_func(array($_ENV["commonClass"],$parameternew[1]),$parameterF[1]);
  118. }else{
  119. return null;
  120. }
  121. }
  122. /**
  123. * 用于在获得代换his api url 替换
  124. * @param array $hisUrl hisUrl
  125. * @param string $funName 获取请求HIS参数
  126. * @param string $appKey 获取appKey
  127. * @return void
  128. */
  129. function hisApiReplace($hisUrl,$appKey,$funName)
  130. {
  131. $postUrl = $hisUrl.$funName."&appkey=".md5($appKey."|".date("Y-m-d", time()));
  132. return $postUrl;
  133. }
  134. /**
  135. * 用于在获得代换his api url 替换
  136. * @param array $hisUrl hisUrl
  137. * @param string $funName 获取请求HIS参数
  138. * @param string $appKey 获取appKey
  139. * @return void
  140. */
  141. function xmlDataReplace($returnXml,$replaceXmlData,$returnXmlData)
  142. {
  143. $xmlData = array();
  144. $replaceXmlData = explode(',', $replaceXmlData);
  145. if($returnXmlData=="one"){
  146. foreach ($replaceXmlData as $key => $replaceXml) {
  147. $xmlData[$replaceXml] =trim(strval($returnXml->$replaceXml));
  148. }
  149. }else if($returnXmlData=="list"){
  150. foreach($returnXml as $key=>$value){
  151. $replaceXmlDataTemp = null;
  152. foreach ($replaceXmlData as $key => $replaceXml) {
  153. $replaceXmlDataTemp[] =trim($value->$replaceXml);
  154. }
  155. $xmlData[] = array_combine($replaceXmlData,$replaceXmlDataTemp);
  156. }
  157. }
  158. return $xmlData;
  159. }
  160. /**
  161. * 用于在获得代换SQL
  162. * @param array $parameter 传递给参数数组
  163. * @param string $sqlString 获取要代换的SQL
  164. * @param string $sqlData 获取要代换的Sql得到的实体类数据
  165. * @return void
  166. */
  167. function getReplace($parameter,$sqlString,$sqlData,$nodeType,$patientUser)
  168. {
  169. $parameter = explode(',', $parameter);
  170. foreach ($parameter as $key => $value) {
  171. if($nodeType=="if"){
  172. //过滤if 语句
  173. $temp= explode('|', $value);
  174. if($temp[0]=="IF"){
  175. $tempv=$this->getParameter($temp[1],$sqlData,$patientUser);
  176. if($tempv){
  177. //有值,要把<if></if> 整个都加入
  178. $sqlString = strip_tags($sqlString);
  179. $sqlString = str_replace("{".$temp[1]."}",$tempv,$sqlString);
  180. }else{
  181. //无值,要把<if></if> 整个都去掉
  182. $sqlString=preg_replace("/<(if.*?)>(.*?)<(\/if.*?)>/si","",$sqlString);
  183. }
  184. }else{
  185. $sqlString = str_replace("{".$value."}",$this->getParameter($value,$sqlData,$patientUser),$sqlString);
  186. }
  187. }else{
  188. $sqlString = str_replace("{".$value."}",$this->getParameter($value,$sqlData,$patientUser),$sqlString);
  189. }
  190. }
  191. return $sqlString;
  192. }
  193. /**
  194. * 用于在生成返回dataInfo的数据
  195. * @param array $jsonData 返回json数据
  196. * @param string $sqlData 数据库返回的数据
  197. * @param string $infoString 错误返回的提示
  198. * @return void
  199. */
  200. function getJson($jsonData,$sqlData,$infoString,$rows="0",$resultType="list"){
  201. if($sqlData){
  202. $jsonData["dataInfo"]["status"]="1";
  203. $jsonData["dataInfo"]["info"]="成功";
  204. $jsonData["dataInfo"]["rows"]=$rows;
  205. if($resultType=="list"){
  206. $jsonData["dataInfo"]["data"]=$sqlData;
  207. }else{
  208. $jsonData["dataInfo"]["data"][]=$sqlData;
  209. }
  210. }else{
  211. $jsonData["dataInfo"]["status"]="0";
  212. $jsonData["dataInfo"]["rows"]="0";
  213. $jsonData["dataInfo"]["info"]=$infoString;
  214. $jsonData["dataInfo"]["data"]="";
  215. }
  216. return $jsonData;
  217. }
  218. /**
  219. * 用于生成返回前台JSON
  220. * @param string $path 相对于View目录的路径
  221. * @param array $data 传递给子模板的变量列表,key为变量名,value为变量值
  222. * @return void
  223. */
  224. function codeJson($jsonData)
  225. {
  226. //jsonp回调参数,必需
  227. $callback = isset($_GET['callback']) ? trim($_GET['callback']) : '';
  228. Log::json(json_encode($jsonData));
  229. //返回格式,有回调或没有回调两种方式
  230. if($callback){
  231. echo $callback . '(' .json_encode($jsonData) .')'; //返回格式,回调来jsonp 必需 json 数据
  232. }else{
  233. echo json_encode($jsonData); //返回格式,必需 json 数据
  234. }
  235. }
  236. }
  237. ?>