Send.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  1. <?php
  2. namespace app\index\controller;
  3. use think\Request;
  4. use think\Db;
  5. use think\Log;
  6. //ws客户端发送消息
  7. use WebSocket\Client;
  8. //sm4
  9. use Evit\PhpGmCrypto\Encryption\EvitSM4Encryption;
  10. header("Access-Control-Allow-Origin:*"); // 制定允许其他域名访问
  11. header('Access-Control-Allow-Methods:POST'); // 响应类型
  12. header('Access-Control-Allow-Headers:x-requested-with, content-type'); // 响应头设置
  13. class Send extends \think\Controller
  14. {
  15. //base64 encode处理json串
  16. public function dataSM4() {
  17. //判断该请求是否需要生成token
  18. $token = request() -> param('token');
  19. if($token == 'noUse'){
  20. return 'noToken';
  21. }
  22. //组装请求的数据为base64格式
  23. $data['model'] = request() -> param('model');
  24. $data['network'] = request() -> param('network');
  25. $network = request() -> param('network');
  26. $dataJson = request() -> param('data');
  27. $data['input'] = json_decode($dataJson);
  28. $data = json_encode($data,JSON_UNESCAPED_UNICODE);
  29. Log::info('参数标记: ' . $data);
  30. $data = base64_encode($data);
  31. //对请求的参数进行sm4加密
  32. $smIV = getSMIV();
  33. $config = [
  34. 'mode' => 'cbc',
  35. 'key' => commonPrivateKey(), // 16 字节二进制密钥
  36. 'iv' => $smIV, // 16 字节二进制 IV
  37. 'hash' => false
  38. ];
  39. $sm4 = new EvitSM4Encryption($config);
  40. $encryptedBinary = $sm4->encrypt($data);
  41. // 将二进制结果转换为 Base64
  42. $encryptedBase64 = base64_encode($encryptedBinary);
  43. //创建最终的含有sm4的iv的数据
  44. $modifiedData['encryptedBase64'] = $encryptedBase64;
  45. $modifiedData['smIV'] = $smIV;
  46. $modifiedData['publicKey'] = commonPublicKey();
  47. $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE);
  48. $modifiedData = base64_encode($modifiedData);
  49. // 将 '+' 替换为 '-','/' 替换为 '_'
  50. $modifiedData = strtr($modifiedData, '+/', '-_');
  51. //将加密的参数发送给开放平台,获取短令牌
  52. if($network == 1){
  53. $url = commonOpenURL().'/Apis/getToken';
  54. }
  55. if($network == 2){
  56. $url = commonOpenURLLocal().'/Apis/getToken';
  57. }
  58. $encryption['information'] = $modifiedData;
  59. $token = curlPost($url,$encryption);
  60. $token = stdClassObjToArray(json_decode($token));
  61. return $token['token'];
  62. }
  63. public function dataSM41111() {
  64. //判断该请求是否需要生成token
  65. //组装请求的数据为base64格式
  66. $data['model'] = "emoon-E1-13B";
  67. $data['network'] = "1";
  68. $network = "1";
  69. $dataJson = '{
  70. "input": [
  71. {
  72. "role": "assistant",
  73. "content": "你好,我是「医梦AI客户端」,我已集成多模型协作,我还能请求MCP智能体,请问有什么可以帮你?你可以直接和我「EMOON-E1」模型自然对话,也可以:打开内涵质控-触发端,模拟HIS/EMR触发「EMOON-E2」内涵质控。我会自动识别并匹配不同的模型一起工作奥~"
  74. },
  75. {
  76. "role": "user",
  77. "content": "你是什么模型?"
  78. }
  79. ],
  80. "model": "emoon-E1-13B",
  81. "network": "1"
  82. }';
  83. $data['input'] = json_decode($dataJson);
  84. dump($data);
  85. $data = json_encode($data,JSON_UNESCAPED_UNICODE);
  86. dump($data);
  87. Log::info('参数标记: ' . $data);
  88. $data = base64_encode($data);
  89. dump($data);
  90. //对请求的参数进行sm4加密
  91. $smIV = "1234567890123456";
  92. dump("smiv".$smIV);
  93. $config = [
  94. 'mode' => 'cbc',
  95. 'key' => "aX7pKf2LtQ9sVmZ3", // 16 字节二进制密钥
  96. 'iv' => $smIV, // 16 字节二进制 IV
  97. 'hash' => false
  98. ];
  99. dump("config 加密参数");
  100. dump($config);
  101. $sm4 = new EvitSM4Encryption($config);
  102. dump("sm4 加密结果:");
  103. dump($sm4);
  104. $encryptedBinary = $sm4->encrypt($data);
  105. dump("二进制".$encryptedBinary);
  106. // 将二进制结果转换为 Base64
  107. $encryptedBase64 = base64_encode($encryptedBinary);
  108. dump("二进制 base64:".$encryptedBase64);
  109. //创建最终的含有sm4的iv的数据
  110. $modifiedData['encryptedBase64'] = $encryptedBase64;
  111. $modifiedData['smIV'] = $smIV;
  112. $modifiedData['publicKey'] = "ZpX4mTkcNwL58qAhFD1bEy7vRCMzxgKQ";
  113. $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE);
  114. dump("最后的参数 :".$modifiedData);
  115. $modifiedData = base64_encode($modifiedData);
  116. dump("最后的参数 base64jiami:".$modifiedData);
  117. // 将 '+' 替换为 '-','/' 替换为 '_'
  118. $modifiedData = strtr($modifiedData, '+/', '-_');
  119. dump("最后的参数 换符号 :".$modifiedData);
  120. //将加密的参数发送给开放平台,获取短令牌
  121. if($network == 1){
  122. $url = commonOpenURL().'/Apis/getToken';
  123. }
  124. if($network == 2){
  125. $url = commonOpenURLLocal().'/Apis/getToken';
  126. }
  127. $encryption['information'] = $modifiedData;
  128. // $encryption['information'] = "ZXlKbGJtTnllWEIwWldSQ1lYTmxOalFpT2lKclkwUmpXa3REWTNORGF6Y3pSa041TkU5MWIxbDNhVFZaYVV0VE1HVllOMVJrVTFCME16ZEthbEZpTTBKRFNqVklaVk40Um1KdFYwVmtPREJVY1VScmFGRklaRGx4WjNGWk4zbDRZMDU2WW1WR1RHRTRlRzlYYmxScmVFSndTbXBFYTJONGVEZFhNRlI2Ukc5bGMwTklTbFpKYUU1bU1WRnFiMGxsZDNJd0t6VmFTak0zVm1ZMGFsQTNRVEZ1ZG1SQk5USmFlVlJMZDBwcGJITTNjbWhRVW5GWVNWUnhVR3BOT0hKaUwyRkthRlJITWpkek1YbDJZVWRMVkdWUVpTOHlVME56U1dWUlNHTnZjR2wyZWpkcGRWUlZNMWhXTUVOQk1HMURhbGhYTjJod1ExTnVTbkZsTVhCSWRXTjRXVlZaT1V4T2IwWkJWRzE2TlRRMmRXMXlNbkpwZWxGVFduaE5TV1E1ZGxGd2VYUm9XRGhHT1d4WlYzTTVUM2NyY2pkSlRsZHdiVVpzYm5FMWJWbDZlRVoyV21sMGJYZEpUaTlITm5seGNFaDJaVUZqZVVkNVkzQjZXbVpQYmtSUlNFVnNTbU5NVlc5R2IxbFFObWh6TkRoTk5TOVJhMVJIY2pKRWFFaElOaTlaSzFCMmIxTjVWMlpKTUZCYVFsUTVNMFpWUjNJM0x5dHBSMFprV2tJMlMxcFlWVGRtV0ZKbE1FaGhUSFU1Vld4aldrTXJhREF6VVRaclZ6Rm1iMVJxVm1sWldURTBWR0ZOVDI5S1JUZzVNeXRyV25jNGNuaE1hM1ZCVERoelR5dDVTbWRQYUhGelFuQndOVWswUVVwMFMwbFhkVzVOV2tndlJUZ3ZOR2RxY20xelRURm9aMnBTT1doMlkzaE1SSFIzVjJaU2NEVTBWakl3Wml0amJXMHdaRmN6WnpCQmVEaGlLMEpNVVRocVduVTFaamRSU2s1WFRFTmlRV2hKVVRCQlV6TnNaa3R6WldwNE1UZHBNa2hpTTFJMFZqUjFRMnRwSzBGSlozaEpTMDlWV2taSWJFTmpXRGR1VWt4M1kxaGthbUUxTkRRdllVdEZSRUpOWjNKMVRHdHJTVnBCY3pKcEwwa3djR2RCU0dOMllubzFjVUZKVUdKT2FYZEhWRGt4VEZkVVMyOVNRbk0wUzBkdE5YbzBiMmxCVjNGbk5GQmxNMjFYVEhGYWNWQkhUWE5JWkRKT2EwZEpiVnBwUTBKb2IwWnVVbTUwZW1ONGJFVkhVbFowVmxGcFRtSlFWMjk2VUdWNGVtMUhlVzVNU0ZsUkwxUmlOV2RMVFRBMGNYVlplbk5RYVRsUVMydHRhSEEyVkRSSVJGaG1hM1FyWkcxNFRqQmFXVTByT0VkbVlWaGtkM2hXVERrMU9HRmhNemQzTHpsQmFsWTJZVXBvUlRrNFprRk9XRU55TnpKRFoxTkplRXhJVm5GTmNIazFVbnBYY0RaTlF6Umxia3Q1UlhnNWIxaEVUbkJEVWxGRE9UVktZMHhMZWt4bVUzWnJLMUpMTkUxc1NEWklOV2N4TnpWS0swMXhPR3QzTVhZNGFuSm1PWE5MTkZaV1JrcERNSE5XUnpFMlZWRlpibGt6YkZGRGFqRlJjMDkyZVVWMk0wWkpTM2x2YUZWUFJYTkNZalo0YmxseWFTOW1keXN6VURkdE1tdG1lWFl5WkVWbmRWRlBNM0JIY0ZCNFpVZzFiWHBvVWxSQlBUMGlMQ0p6YlVsV0lqb2lNVEl6TkRVMk56ZzVNREV5TXpRMU5pSXNJbkIxWW14cFkwdGxlU0k2SWxwd1dEUnRWR3RqVG5kTU5UaHhRV2hHUkRGaVJYazNkbEpEVFhwNFowdFJJbjA9";
  129. $token = curlPost($url,$encryption);
  130. $token = stdClassObjToArray(json_decode($token));
  131. dump($token);
  132. return $token['token'];
  133. }
  134. //base64 encode处理json串
  135. public function dataSM4simple() {
  136. //判断该请求是否需要生成token
  137. $token = request() -> param('token');
  138. if($token == 'noUse'){
  139. return 'noToken';
  140. }
  141. //组装请求的数据为base64格式
  142. $data['model'] = request() -> param('model');
  143. $network = request() -> param('network');
  144. $dataJson = request() -> param('input');
  145. $PublicKey = request() -> param('PublicKey');
  146. $PrivateKey = request() -> param('PrivateKey');
  147. $ragId = request() -> param('ragId');
  148. if($network=="内网" || $network=="2"){
  149. $network=2;
  150. }
  151. elseif($network=="外网" || $network=="1" || $network=="公网"){
  152. $network=1;
  153. }
  154. elseif($network=="" ){
  155. return "网络状态不能为空";
  156. }
  157. else{
  158. return "请输入正确的网络状态,例如:内网、外网。";
  159. }
  160. if($PublicKey=="" ){
  161. return "公钥不能为空。";
  162. }
  163. if($PublicKey=="" ){
  164. return "私钥不能为空。";
  165. }
  166. if($data['model'] =="" ){
  167. return "模型不存在,请核对参数“model”的值!";
  168. }
  169. $data['network'] = $network;
  170. $data['input'] = json_decode($dataJson);
  171. $data = json_encode($data,JSON_UNESCAPED_UNICODE);
  172. Log::info('参数标记: ' . $data);
  173. $data = base64_encode($data);
  174. //对请求的参数进行sm4加密
  175. $smIV = getSMIV();
  176. $config = [
  177. 'mode' => 'cbc',
  178. 'key' => $PrivateKey, // 16 字节二进制密钥
  179. 'iv' => $smIV, // 16 字节二进制 IV
  180. 'hash' => false
  181. ];
  182. $sm4 = new EvitSM4Encryption($config);
  183. $encryptedBinary = $sm4->encrypt($data);
  184. // 将二进制结果转换为 Base64
  185. $encryptedBase64 = base64_encode($encryptedBinary);
  186. //创建最终的含有sm4的iv的数据
  187. $modifiedData['encryptedBase64'] = $encryptedBase64;
  188. $modifiedData['smIV'] = $smIV;
  189. $modifiedData['publicKey'] = $PublicKey;
  190. $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE);
  191. $modifiedData = base64_encode($modifiedData);
  192. // 将 '+' 替换为 '-','/' 替换为 '_'
  193. $modifiedData = strtr($modifiedData, '+/', '-_');
  194. //将加密的参数发送给开放平台,获取短令牌
  195. if($network == 1){
  196. $url = commonOpenURL().'/Apis/getToken';
  197. }
  198. if($network == 2){
  199. $url = commonOpenURLLocal().'/Apis/getToken';
  200. }
  201. $encryption['information'] = $modifiedData;
  202. $token = curlPost($url,$encryption);
  203. $token = stdClassObjToArray(json_decode($token));
  204. if($token['code'] == 0){
  205. return $token['message'];
  206. }
  207. $token = $token['token'];
  208. // $url = commonOpenURLSSE().'?token='.$token.'&ragId='.$ragId.'&mcpid=37';
  209. // $response = file_get_contents($url);
  210. $url = commonOpenURLHTTP();
  211. $dataHttp["token"] = $token;
  212. $dataHttp["mcpid"] = "37";
  213. $dataHttp["ragId"] = $ragId;
  214. $a = curlPost($url,$dataHttp);
  215. $RAGdata = [
  216. "username" => "test",
  217. "password" => "test123"
  218. ];
  219. // 调用时只需传递非 Content-Type/Accept 的 Header
  220. $headers = [
  221. 'Cache-Control: no-cache',
  222. 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
  223. ];
  224. $urlRAG = "http://192.168.1.8:6039/auth/login"; // 替换为实际 URL
  225. $id = curlPostRAG($urlRAG, $RAGdata, $headers);
  226. $token = $id; // 默认启用 JSON 模式
  227. $token = json_decode($token);
  228. $token = stdClassObjToArray($token);
  229. $token = $token['data']['token'];
  230. $urlsend = "http://192.168.10.36:6039/RocketMQ/send?";
  231. $headers = [
  232. "Authorization: Bearer " . $token,
  233. 'Content-Type: application/json'
  234. ];
  235. $datasend["message"] = "test";
  236. $response = curlPost($urlsend,$datasend,$headers,true);
  237. return $response;
  238. }
  239. public function testaaa(){
  240. $RAGdata = [
  241. "username" => "test",
  242. "password" => "test123"
  243. ];
  244. // 调用时只需传递非 Content-Type/Accept 的 Header
  245. $headers = [
  246. 'Cache-Control: no-cache',
  247. 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
  248. ];
  249. $urlRAG = "http://192.168.1.8:6039/auth/login"; // 替换为实际 URL
  250. $id = curlPostRAG($urlRAG, $RAGdata, $headers);
  251. $token = $id; // 默认启用 JSON 模式
  252. $token = json_decode($token);
  253. $token = stdClassObjToArray($token);
  254. $token = $token['data']['token'];
  255. $urlsend = "http://192.168.10.36:6039/RocketMQ/send";
  256. $headers = [
  257. "Authorization: Bearer " . $token,
  258. 'Content-Type: application/json'
  259. ];
  260. $datasend["message"] = "test";
  261. $response = curlPost($urlsend,$datasend,$headers,true);
  262. dump($response);
  263. if ($response === false) {
  264. return "发送消息失败,请检查 RocketMQ 服务是否正常";
  265. }
  266. return $response;
  267. }
  268. // //base64 encode处理json串
  269. public function options() {
  270. // $url = "http://221.224.213.226:15208/topic/device-tracking/message";
  271. // $postData = json_encode(["body" => "test"]);
  272. // $ch = curl_init();
  273. // curl_setopt($ch, CURLOPT_URL, $url);
  274. // curl_setopt($ch, CURLOPT_POST, true);
  275. // curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
  276. // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 必须添加
  277. // curl_setopt($ch, CURLOPT_HTTPHEADER, [
  278. // "Content-Type: application/json",
  279. // "Content-Length: " . strlen($postData)
  280. // ]);
  281. // // 调试设置
  282. // curl_setopt($ch, CURLOPT_VERBOSE, true);
  283. // $verbose = fopen('php://temp', 'w+');
  284. // curl_setopt($ch, CURLOPT_STDERR, $verbose);
  285. // // 超时设置(秒)
  286. // curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
  287. // curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  288. // $response = curl_exec($ch);
  289. // $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  290. // if (curl_errno($ch)) {
  291. // rewind($verbose);
  292. // $verboseLog = stream_get_contents($verbose);
  293. // die(
  294. // "cURL 错误: " . curl_error($ch) . "\n" .
  295. // "HTTP 状态码: " . $httpCode . "\n" .
  296. // "调试信息:\n" . $verboseLog
  297. // );
  298. // }
  299. // curl_close($ch);
  300. // if ($httpCode === 0) {
  301. // die("服务器接受连接但未返回有效 HTTP 响应");
  302. // }
  303. // 使用示例
  304. //
  305. // return $response;
  306. }
  307. //质控病例列表
  308. public function qualityControlTrigger_old() {
  309. $token = request()->param('token/a');
  310. // $token = array("53e6d2e6967a0a85240bbc30bfc9438c","462e791fdb6d6a270b9aa3f275370b8f");
  311. // 验证token是否有效
  312. $maprule['token'] = array('in', $token);
  313. $tokenrole = db('tokenrole')->where($maprule)->select();
  314. // //判断该请求是否需要生成token
  315. // $token = request() -> param('token');
  316. // return (json_encode($token,JSON_UNESCAPED_UNICODE));
  317. // //组装请求的数据为base64格式
  318. // $maprule['token'] = array('in', $token);
  319. // $tokenrole = db('tokenrole')->where($maprule)->select();
  320. $tokenrole =json_encode($tokenrole,JSON_UNESCAPED_UNICODE);
  321. return $tokenrole;
  322. }
  323. //质控病例列表
  324. public function qualityControlTrigger() {
  325. $token = request()->param('token/a');
  326. // $token = array("53e6d2e6967a0a85240bbc30bfc9438c","462e791fdb6d6a270b9aa3f275370b8f");
  327. // 验证token是否有效
  328. $maprule['token'] = array('in', $token);
  329. $tokenrole = db('tokenrole')->where($maprule)->select();
  330. // //判断该请求是否需要生成token
  331. // $token = request() -> param('token');
  332. // return (json_encode($token,JSON_UNESCAPED_UNICODE));
  333. // //组装请求的数据为base64格式
  334. // $maprule['token'] = array('in', $token);
  335. // $tokenrole = db('tokenrole')->where($maprule)->select();
  336. $tokenrole =json_encode($tokenrole,JSON_UNESCAPED_UNICODE);
  337. return $tokenrole;
  338. }
  339. public function test(){
  340. $ruleIdArray = array('RYJLXBS0013', 'RYJLXBS0012','RYJL0002', 'RYJLXX0001', 'RYJLZS0000', 'RYJLZS0001', 'RYJLZS0002', 'RYJLZS0003', 'RYJLZS0004', 'RYJLZS0005', 'RYJLXBS0000', 'RYJLXBS0001', 'RYJLXBS0002', 'RYJLXBS0003', 'RYJLXBS0004', 'RYJLXBS0005', 'RYJLXBS0006', 'RYJLXBS0007', 'RYJLXBS0008', 'RYJLXBS0009', 'RYJLXBS0010', 'RYJLXBS0011', 'RYJLJWS0000', 'RYJLJWS0001', 'RYJLJWS0002', 'RYJLJWS0003', 'RYJLJWS0004', 'RYJLJWS0005', 'RYJLJWS0006', 'RYJLJWS0007', 'RYJLJWS0009', 'RYJLJWS0010', 'RYJLJWS0011', 'RYJLGRS0000', 'RYJLHY0002', 'RYJLJZS0000', 'RYJLJZS0001', 'RYJLTGJC0000', 'RYJLTGJC0001', 'RYJLTGJC0002', 'RYJLTGJC0003', 'RYJLTGJC0004', 'RYJLTGJC0005', 'RYJLTGJC0006', 'RYJLTGJC0007', 'RYJLTGJC0008', 'RYJLZKJC0000', 'RYJLZKJC0001', 'RYJLFZJC0000', 'RYJLFZJC0001', 'RYJLFZJC0002', 'RYJLFZJC0003', 'RYJLFZJC0004', 'RYJLFZJC0007', 'RYJLFZJC0008', 'RYJLCBZD0000', 'RYJLCBZD0001', 'SCBC0000', 'SCBC0001', 'SCBC0003', 'SCBC0004', 'SCBC0005', 'RCBC0001', 'RCBC0003', 'RCBC0007', 'RCBC0011', 'RCBC0015', 'RCBC0019', 'RCBC0024', 'RCBC0025', 'RCBC0026', 'RCBC0027', 'RCBC0028', 'RCBC0038', 'RCBC0039', 'RCBC0044', 'CYJL0008', 'CYJL0009', 'CYJL0011', 'CYJL0012', 'HZJL0000', 'HZJL0001', 'HZJL0002', 'HZJL0003', 'HZJL0005', 'SQXJ0000', 'SQXJ0001', 'RCBC0040', 'RCBC0041');
  341. $maprule['ruleid'] = array('in', $ruleIdArray);
  342. $rulename = db('rulefinal')->where($maprule)->select();
  343. dump($rulename);
  344. exit;
  345. }
  346. //存储关键字字段
  347. public function listkey(){
  348. $token = request()->param('askInfoId');
  349. $typename = request()->param('ruleKeyword');
  350. // $token ="baa1a7148c13da1c7f8b74ca0bbe3154";
  351. // $typename = "ererre采纳不采纳";
  352. $result = preg_replace('/采纳不采纳.*$/', '', $typename);
  353. // echo $result;
  354. // exit;
  355. $maprule['token'] = array('eq', $token);
  356. $data["keywords"]=$result;
  357. $data["rulescore"]=1;
  358. db('tokenrole')->where($maprule)->update($data);
  359. return "seele";
  360. }
  361. //组装病理结果与分值
  362. public function ControlResultScore_old() {
  363. $token = request()->param('token/a');
  364. $typename = request()->param('typename');
  365. // $typename = "袁**-入院记录";
  366. // $token = array("d7d7b666cf7ae1890aa6ae3efd508dad","75c72b4f66eebda4bb835e74d2e050bc","f889944de8c4ebb4de2db82468140a29");
  367. // 验证token是否有效
  368. $maprule['token'] = array('in', $token);
  369. $maprule['typename'] = array('eq', $typename);
  370. $tokenrole = db('tokenrole')->where($maprule)->select();
  371. // return $tokenrole;
  372. $j = 0;
  373. $data["deductionrulescore"] = 100;
  374. for($i=0;$i<count($tokenrole);$i++){
  375. if(strpos($tokenrole[$i]["reply"], "【规则名称】") !== false){
  376. $j++;
  377. $data["reply"][$j]=$tokenrole[$i]["reply"];
  378. $data["rulescore"][$j] = $tokenrole[$i]["rulescore"];
  379. $data["deductionrulescore"] = $data["deductionrulescore"] - $tokenrole[$i]["rulescore"];
  380. $data["keywords"][$j] = $tokenrole[$i]["keywords"];
  381. $data["accept"][$j] = strlen($tokenrole[$i]["accept"]);
  382. $data["token"][$j] = $tokenrole[$i]["token"];
  383. }
  384. }
  385. $data["content"] = $tokenrole[0]["content"];
  386. $data =json_encode($data,JSON_UNESCAPED_UNICODE);
  387. return $data;
  388. }
  389. //组装病理结果与分值
  390. public function ControlResultScore() {
  391. $token = request()->param('token/a');
  392. $typename = request()->param('typename');
  393. // $typename = "袁**-入院记录";
  394. // $token = array("d7d7b666cf7ae1890aa6ae3efd508dad","75c72b4f66eebda4bb835e74d2e050bc","f889944de8c4ebb4de2db82468140a29");
  395. // 验证token是否有效
  396. $maprule['token'] = array('in', $token);
  397. $maprule['typename'] = array('eq', $typename);
  398. $tokenrole = db('tokenrole')->where($maprule)->select();
  399. // return $tokenrole;
  400. $j = 0;
  401. $data["deductionrulescore"] = 100;
  402. for($i=0;$i<count($tokenrole);$i++){
  403. if(strpos($tokenrole[$i]["reply"], "【规则名称】") !== false){
  404. $j++;
  405. $data["reply"][$j]=$tokenrole[$i]["reply"];
  406. $data["rulescore"][$j] = $tokenrole[$i]["rulescore"];
  407. $data["deductionrulescore"] = $data["deductionrulescore"] - $tokenrole[$i]["rulescore"];
  408. $data["keywords"][$j] = $tokenrole[$i]["keywords"];
  409. $data["accept"][$j] = strlen($tokenrole[$i]["accept"]);
  410. $data["token"][$j] = $tokenrole[$i]["token"];
  411. }
  412. }
  413. $data["content"] = $tokenrole[0]["content"];
  414. $data =json_encode($data,JSON_UNESCAPED_UNICODE);
  415. return $data;
  416. }
  417. //接收ws推送消息并转发给ws服务
  418. public function websocket(){
  419. $data['user'] = request() -> param('user');
  420. $data['name'] = request() -> param('name');
  421. $data['doc'] = request() -> param('doc');
  422. $data['token'] = request() -> param('token');
  423. $data['ragId'] = request() -> param('ragId');
  424. $data['typename'] = request() -> param('typename');
  425. $data['rule'] = request() -> param('rule');
  426. $data['ruleid'] = request() -> param('ruleid');
  427. if($data['user'] && $data['name'] && $data['doc'] && $data['token']){
  428. $url = commonWebsocket();
  429. $client = new Client($url);
  430. $client->text(json_encode($data,JSON_UNESCAPED_UNICODE));
  431. $client->close();
  432. $success['code'] = 0;
  433. $success['message'] = '客户端已成功接收消息,请至客户端页面确认。';
  434. return json($success);
  435. }
  436. else{
  437. $error['code'] = 1;
  438. $error['message'] = '请求参数不能为空,请核对请求参数。';
  439. return json($error);
  440. }
  441. }
  442. //定时更新当前状态。
  443. public function regularUpdate(){
  444. $timestamp = time();
  445. $timestamp = $timestamp - 5;
  446. $mapPat['updatetime'] = array('lt',$timestamp);
  447. $mapPat['strate'] = array('eq',1);
  448. $updateData["updatetime"] = time();
  449. $updateData["strate"] = 0;
  450. $name = db('client') -> where($mapPat) -> update($updateData);
  451. }
  452. }