BaseService.class.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  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"]=I('timestamp','','htmlspecialchars,trim');
  76. $jsonData["dataToken"]["token"]=I('token','','htmlspecialchars,trim');
  77. }
  78. }else{
  79. $jsonData["dataToken"]["timestamp"]=I('timestamp','','htmlspecialchars,trim');
  80. $jsonData["dataToken"]["token"]=I('token','','htmlspecialchars,trim');
  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],'','rtrim');
  110. }else if($parameternew[0]=="J"){
  111. $json = I($parameternew[1],'', 'rtrim');
  112. return $json;
  113. }else if($parameternew[0]=="json"){
  114. $json = I('json','', 'rtrim');
  115. return $json;
  116. }else if($parameternew[0]=="JA"){
  117. $json = json_decode(I($parameternew[1],'', 'rtrim'));
  118. return $json->$parameternew[2] ? $json->$parameternew[2] : null;
  119. }else if($parameternew[0]=="JJ"){
  120. $json = json_decode(I('json','', 'rtrim'));
  121. return $json->$parameternew[1] ? $json->$parameternew[1] : null;
  122. }else if($parameternew[0]=="P"){
  123. //分页面
  124. if($parameternew[1]=="rowed"){
  125. $rowed =I('rowed','','trim');
  126. $pageSize =I('pageSize','','trim');
  127. if($rowed!='' && $pageSize!=''){
  128. return "limit ".$rowed.",";
  129. }else{
  130. return "";
  131. }
  132. }else if($parameternew[1]=="pageSize"){
  133. $rowed =I('rowed','','trim');
  134. $pageSize =I('pageSize','','trim');
  135. if($rowed!='' && $pageSize!=''){
  136. return $pageSize;
  137. }else{
  138. return "";
  139. }
  140. }else{
  141. return I($parameternew[1],'','trim');
  142. }
  143. }else if($parameternew[0]=="D"){
  144. return $sqlData[$parameternew[1]];
  145. }else if($parameternew[0]=="M"){
  146. return $patientUser[$parameternew[1]];
  147. }else if($parameternew[0]=="F"){
  148. $parameterF = explode('F_', $parameter);
  149. $parameterF = explode('|', $parameterF[1]);
  150. return call_user_func(array($_ENV["commonClass"],$parameternew[1]),$parameterF[1]);
  151. }else{
  152. return null;
  153. }
  154. }
  155. /**
  156. * 用于在获得代换his api url 替换
  157. * @param array $hisUrl hisUrl
  158. * @param string $funName 获取请求HIS参数
  159. * @param string $appKey 获取appKey
  160. * @return void
  161. */
  162. function hisApiReplace($hisUrl,$appKey,$funName)
  163. {
  164. $postUrl = $hisUrl.$funName."&appkey=".md5($appKey."|".date("Y-m-d", time()));
  165. return $postUrl;
  166. }
  167. /**
  168. * 用于在获得代换his api url 替换
  169. * @param array $hisUrl hisUrl
  170. * @param string $funName 获取请求HIS参数
  171. * @param string $appKey 获取appKey
  172. * @return void
  173. */
  174. function xmlDataReplace($returnXml,$replaceXmlData,$returnXmlData)
  175. {
  176. $xmlData = array();
  177. $replaceXmlData = explode(',', $replaceXmlData);
  178. if($returnXmlData=="one"){
  179. foreach ($replaceXmlData as $key => $replaceXml) {
  180. $xmlData[$replaceXml] =trim(strval($returnXml->$replaceXml));
  181. }
  182. }else if($returnXmlData=="list"){
  183. foreach($returnXml as $key=>$value){
  184. $replaceXmlDataTemp = null;
  185. foreach ($replaceXmlData as $key => $replaceXml) {
  186. $replaceXmlDataTemp[] =trim($value->$replaceXml);
  187. }
  188. $xmlData[] = array_combine($replaceXmlData,$replaceXmlDataTemp);
  189. }
  190. }else{
  191. $xmlData = $returnXml;
  192. }
  193. return $xmlData;
  194. }
  195. /**
  196. * 用于在获得代换SQL
  197. * @param array $parameter 传递给参数数组
  198. * @param string $sqlString 获取要代换的SQL
  199. * @param string $sqlData 获取要代换的Sql得到的实体类数据
  200. * @return void
  201. */
  202. function getReplace($parameter,$sqlString,$sqlData,$nodeType,$patientUser)
  203. {
  204. $parameter = explode(',', $parameter);
  205. foreach ($parameter as $key => $value) {
  206. if($nodeType=="if"){
  207. //过滤if 语句
  208. $temp= explode('|', $value);
  209. if($temp[0]=="IF"){
  210. $tempv=$this->getParameter($temp[1],$sqlData,$patientUser);
  211. if($tempv){
  212. //有值,要把<if></if> 整个都加入
  213. $sqlString = strip_tags($sqlString);
  214. $sqlString = str_replace("{".$temp[1]."}",$tempv,$sqlString);
  215. }else{
  216. //无值,要把<if></if> 整个都去掉
  217. $sqlString=preg_replace("/<(if.*?)>(.*?)<(\/if.*?)>/si","",$sqlString);
  218. }
  219. }else{
  220. $sqlString = str_replace("{".$value."}",$this->getParameter($value,$sqlData,$patientUser),$sqlString);
  221. }
  222. }else{
  223. $sqlString = str_replace("{".$value."}",$this->getParameter($value,$sqlData,$patientUser),$sqlString);
  224. }
  225. }
  226. return $sqlString;
  227. }
  228. /**
  229. * 用于在生成返回dataInfo的数据
  230. * @param array $jsonData 返回json数据
  231. * @param string $sqlData 数据库返回的数据
  232. * @param string $infoString 错误返回的提示
  233. * @return void
  234. */
  235. function getJson($jsonData,$sqlData,$infoString,$rows="0",$resultType="list"){
  236. if($sqlData){
  237. $jsonData["dataInfo"]["status"]="1";
  238. $jsonData["dataInfo"]["info"]="成功";
  239. $jsonData["dataInfo"]["rows"]=$rows;
  240. if($resultType=="list"){
  241. $jsonData["dataInfo"]["data"]=$sqlData;
  242. }else{
  243. $jsonData["dataInfo"]["data"][]=$sqlData;
  244. }
  245. }else{
  246. $jsonData["dataInfo"]["status"]="0";
  247. $jsonData["dataInfo"]["rows"]="0";
  248. $jsonData["dataInfo"]["info"]=$infoString;
  249. $jsonData["dataInfo"]["data"]="";
  250. }
  251. return $jsonData;
  252. }
  253. /**
  254. * 用于生成返回前台JSON
  255. * @param string $path 相对于View目录的路径
  256. * @param array $data 传递给子模板的变量列表,key为变量名,value为变量值
  257. * @return void
  258. */
  259. function codeJson($jsonData)
  260. {
  261. //jsonp回调参数,必需
  262. $callback = isset($_GET['callback']) ? trim($_GET['callback']) : '';
  263. Log::json(json_encode($jsonData));
  264. //返回格式,有回调或没有回调两种方式
  265. if($callback){
  266. echo $callback . '(' .json_encode($jsonData) .')'; //返回格式,回调来jsonp 必需 json 数据
  267. }else{
  268. echo json_encode($jsonData); //返回格式,必需 json 数据
  269. }
  270. }
  271. //一维数组(同模型)
  272. function getLevel($cate, $name = '') {
  273. $arr = array();
  274. foreach ($cate as $v) {
  275. if ($v['emrItemName'] == $name) {
  276. $arr[] = $v;
  277. }
  278. }
  279. return $arr;
  280. }
  281. }
  282. ?>