param('token'); if($token == 'noUse'){ return 'noToken'; } //组装请求的数据为base64格式 $data['model'] = request() -> param('model'); $data['network'] = request() -> param('network'); $network = request() -> param('network'); $dataJson = request() -> param('data'); $data['input'] = json_decode($dataJson); $data = json_encode($data,JSON_UNESCAPED_UNICODE); Log::info('参数标记: ' . $data); $data = base64_encode($data); //对请求的参数进行sm4加密 $smIV = getSMIV(); $config = [ 'mode' => 'cbc', 'key' => commonPrivateKey(), // 16 字节二进制密钥 'iv' => $smIV, // 16 字节二进制 IV 'hash' => false ]; $sm4 = new EvitSM4Encryption($config); $encryptedBinary = $sm4->encrypt($data); // 将二进制结果转换为 Base64 $encryptedBase64 = base64_encode($encryptedBinary); //创建最终的含有sm4的iv的数据 $modifiedData['encryptedBase64'] = $encryptedBase64; $modifiedData['smIV'] = $smIV; $modifiedData['publicKey'] = commonPublicKey(); $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE); $modifiedData = base64_encode($modifiedData); // 将 '+' 替换为 '-','/' 替换为 '_' $modifiedData = strtr($modifiedData, '+/', '-_'); //将加密的参数发送给开放平台,获取短令牌 if($network == 1){ $url = commonOpenURL().'/Apis/getToken'; } if($network == 2){ $url = commonOpenURLLocal().'/Apis/getToken'; } $encryption['information'] = $modifiedData; $token = curlPost($url,$encryption); $token = stdClassObjToArray(json_decode($token)); return $token['token']; } public function dataSM41111() { //判断该请求是否需要生成token //组装请求的数据为base64格式 $data['model'] = "emoon-E1-13B"; $data['network'] = "1"; $network = "1"; $dataJson = '{ "input": [ { "role": "assistant", "content": "你好,我是「医梦AI客户端」,我已集成多模型协作,我还能请求MCP智能体,请问有什么可以帮你?你可以直接和我「EMOON-E1」模型自然对话,也可以:打开内涵质控-触发端,模拟HIS/EMR触发「EMOON-E2」内涵质控。我会自动识别并匹配不同的模型一起工作奥~" }, { "role": "user", "content": "你是什么模型?" } ], "model": "emoon-E1-13B", "network": "1" }'; $data['input'] = json_decode($dataJson); dump($data); $data = json_encode($data,JSON_UNESCAPED_UNICODE); dump($data); Log::info('参数标记: ' . $data); $data = base64_encode($data); dump($data); //对请求的参数进行sm4加密 $smIV = "1234567890123456"; dump("smiv".$smIV); $config = [ 'mode' => 'cbc', 'key' => "aX7pKf2LtQ9sVmZ3", // 16 字节二进制密钥 'iv' => $smIV, // 16 字节二进制 IV 'hash' => false ]; dump("config 加密参数"); dump($config); $sm4 = new EvitSM4Encryption($config); dump("sm4 加密结果:"); dump($sm4); $encryptedBinary = $sm4->encrypt($data); dump("二进制".$encryptedBinary); // 将二进制结果转换为 Base64 $encryptedBase64 = base64_encode($encryptedBinary); dump("二进制 base64:".$encryptedBase64); //创建最终的含有sm4的iv的数据 $modifiedData['encryptedBase64'] = $encryptedBase64; $modifiedData['smIV'] = $smIV; $modifiedData['publicKey'] = "ZpX4mTkcNwL58qAhFD1bEy7vRCMzxgKQ"; $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE); dump("最后的参数 :".$modifiedData); $modifiedData = base64_encode($modifiedData); dump("最后的参数 base64jiami:".$modifiedData); // 将 '+' 替换为 '-','/' 替换为 '_' $modifiedData = strtr($modifiedData, '+/', '-_'); dump("最后的参数 换符号 :".$modifiedData); //将加密的参数发送给开放平台,获取短令牌 if($network == 1){ $url = commonOpenURL().'/Apis/getToken'; } if($network == 2){ $url = commonOpenURLLocal().'/Apis/getToken'; } $encryption['information'] = $modifiedData; // $encryption['information'] = "ZXlKbGJtTnllWEIwWldSQ1lYTmxOalFpT2lKclkwUmpXa3REWTNORGF6Y3pSa041TkU5MWIxbDNhVFZaYVV0VE1HVllOMVJrVTFCME16ZEthbEZpTTBKRFNqVklaVk40Um1KdFYwVmtPREJVY1VScmFGRklaRGx4WjNGWk4zbDRZMDU2WW1WR1RHRTRlRzlYYmxScmVFSndTbXBFYTJONGVEZFhNRlI2Ukc5bGMwTklTbFpKYUU1bU1WRnFiMGxsZDNJd0t6VmFTak0zVm1ZMGFsQTNRVEZ1ZG1SQk5USmFlVlJMZDBwcGJITTNjbWhRVW5GWVNWUnhVR3BOT0hKaUwyRkthRlJITWpkek1YbDJZVWRMVkdWUVpTOHlVME56U1dWUlNHTnZjR2wyZWpkcGRWUlZNMWhXTUVOQk1HMURhbGhYTjJod1ExTnVTbkZsTVhCSWRXTjRXVlZaT1V4T2IwWkJWRzE2TlRRMmRXMXlNbkpwZWxGVFduaE5TV1E1ZGxGd2VYUm9XRGhHT1d4WlYzTTVUM2NyY2pkSlRsZHdiVVpzYm5FMWJWbDZlRVoyV21sMGJYZEpUaTlITm5seGNFaDJaVUZqZVVkNVkzQjZXbVpQYmtSUlNFVnNTbU5NVlc5R2IxbFFObWh6TkRoTk5TOVJhMVJIY2pKRWFFaElOaTlaSzFCMmIxTjVWMlpKTUZCYVFsUTVNMFpWUjNJM0x5dHBSMFprV2tJMlMxcFlWVGRtV0ZKbE1FaGhUSFU1Vld4aldrTXJhREF6VVRaclZ6Rm1iMVJxVm1sWldURTBWR0ZOVDI5S1JUZzVNeXRyV25jNGNuaE1hM1ZCVERoelR5dDVTbWRQYUhGelFuQndOVWswUVVwMFMwbFhkVzVOV2tndlJUZ3ZOR2RxY20xelRURm9aMnBTT1doMlkzaE1SSFIzVjJaU2NEVTBWakl3Wml0amJXMHdaRmN6WnpCQmVEaGlLMEpNVVRocVduVTFaamRSU2s1WFRFTmlRV2hKVVRCQlV6TnNaa3R6WldwNE1UZHBNa2hpTTFJMFZqUjFRMnRwSzBGSlozaEpTMDlWV2taSWJFTmpXRGR1VWt4M1kxaGthbUUxTkRRdllVdEZSRUpOWjNKMVRHdHJTVnBCY3pKcEwwa3djR2RCU0dOMllubzFjVUZKVUdKT2FYZEhWRGt4VEZkVVMyOVNRbk0wUzBkdE5YbzBiMmxCVjNGbk5GQmxNMjFYVEhGYWNWQkhUWE5JWkRKT2EwZEpiVnBwUTBKb2IwWnVVbTUwZW1ONGJFVkhVbFowVmxGcFRtSlFWMjk2VUdWNGVtMUhlVzVNU0ZsUkwxUmlOV2RMVFRBMGNYVlplbk5RYVRsUVMydHRhSEEyVkRSSVJGaG1hM1FyWkcxNFRqQmFXVTByT0VkbVlWaGtkM2hXVERrMU9HRmhNemQzTHpsQmFsWTJZVXBvUlRrNFprRk9XRU55TnpKRFoxTkplRXhJVm5GTmNIazFVbnBYY0RaTlF6Umxia3Q1UlhnNWIxaEVUbkJEVWxGRE9UVktZMHhMZWt4bVUzWnJLMUpMTkUxc1NEWklOV2N4TnpWS0swMXhPR3QzTVhZNGFuSm1PWE5MTkZaV1JrcERNSE5XUnpFMlZWRlpibGt6YkZGRGFqRlJjMDkyZVVWMk0wWkpTM2x2YUZWUFJYTkNZalo0YmxseWFTOW1keXN6VURkdE1tdG1lWFl5WkVWbmRWRlBNM0JIY0ZCNFpVZzFiWHBvVWxSQlBUMGlMQ0p6YlVsV0lqb2lNVEl6TkRVMk56ZzVNREV5TXpRMU5pSXNJbkIxWW14cFkwdGxlU0k2SWxwd1dEUnRWR3RqVG5kTU5UaHhRV2hHUkRGaVJYazNkbEpEVFhwNFowdFJJbjA9"; $token = curlPost($url,$encryption); $token = stdClassObjToArray(json_decode($token)); dump($token); return $token['token']; } //base64 encode处理json串 public function dataSM4simple() { //判断该请求是否需要生成token $token = request() -> param('token'); if($token == 'noUse'){ return 'noToken'; } //组装请求的数据为base64格式 $data['model'] = request() -> param('model'); $network = request() -> param('network'); $dataJson = request() -> param('input'); $PublicKey = request() -> param('PublicKey'); $PrivateKey = request() -> param('PrivateKey'); $ragId = request() -> param('ragId'); if($network=="内网" || $network=="2"){ $network=2; } elseif($network=="外网" || $network=="1" || $network=="公网"){ $network=1; } elseif($network=="" ){ return "网络状态不能为空"; } else{ return "请输入正确的网络状态,例如:内网、外网。"; } if($PublicKey=="" ){ return "公钥不能为空。"; } if($PublicKey=="" ){ return "私钥不能为空。"; } if($data['model'] =="" ){ return "模型不存在,请核对参数“model”的值!"; } $data['network'] = $network; $data['input'] = json_decode($dataJson); $data = json_encode($data,JSON_UNESCAPED_UNICODE); Log::info('参数标记: ' . $data); $data = base64_encode($data); //对请求的参数进行sm4加密 $smIV = getSMIV(); $config = [ 'mode' => 'cbc', 'key' => $PrivateKey, // 16 字节二进制密钥 'iv' => $smIV, // 16 字节二进制 IV 'hash' => false ]; $sm4 = new EvitSM4Encryption($config); $encryptedBinary = $sm4->encrypt($data); // 将二进制结果转换为 Base64 $encryptedBase64 = base64_encode($encryptedBinary); //创建最终的含有sm4的iv的数据 $modifiedData['encryptedBase64'] = $encryptedBase64; $modifiedData['smIV'] = $smIV; $modifiedData['publicKey'] = $PublicKey; $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE); $modifiedData = base64_encode($modifiedData); // 将 '+' 替换为 '-','/' 替换为 '_' $modifiedData = strtr($modifiedData, '+/', '-_'); //将加密的参数发送给开放平台,获取短令牌 if($network == 1){ $url = commonOpenURL().'/Apis/getToken'; } if($network == 2){ $url = commonOpenURLLocal().'/Apis/getToken'; } $encryption['information'] = $modifiedData; $token = curlPost($url,$encryption); $token = stdClassObjToArray(json_decode($token)); if($token['code'] == 0){ return $token['message']; } $token = $token['token']; // $url = commonOpenURLSSE().'?token='.$token.'&ragId='.$ragId.'&mcpid=37'; // $response = file_get_contents($url); $url = commonOpenURLHTTP(); $dataHttp["token"] = $token; $dataHttp["mcpid"] = "37"; $dataHttp["ragId"] = $ragId; $a = curlPost($url,$dataHttp); $RAGdata = [ "username" => "test", "password" => "test123" ]; // 调用时只需传递非 Content-Type/Accept 的 Header $headers = [ 'Cache-Control: no-cache', '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' ]; $urlRAG = "http://192.168.1.8:6039/auth/login"; // 替换为实际 URL $id = curlPostRAG($urlRAG, $RAGdata, $headers); $token = $id; // 默认启用 JSON 模式 $token = json_decode($token); $token = stdClassObjToArray($token); $token = $token['data']['token']; $urlsend = "http://192.168.10.36:6039/RocketMQ/send?"; $headers = [ "Authorization: Bearer " . $token, 'Content-Type: application/json' ]; $datasend["message"] = "test"; $response = curlPost($urlsend,$datasend,$headers,true); return $response; } public function testaaa(){ $RAGdata = [ "username" => "test", "password" => "test123" ]; // 调用时只需传递非 Content-Type/Accept 的 Header $headers = [ 'Cache-Control: no-cache', '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' ]; $urlRAG = "http://192.168.1.8:6039/auth/login"; // 替换为实际 URL $id = curlPostRAG($urlRAG, $RAGdata, $headers); $token = $id; // 默认启用 JSON 模式 $token = json_decode($token); $token = stdClassObjToArray($token); $token = $token['data']['token']; $urlsend = "http://192.168.10.36:6039/RocketMQ/send"; $headers = [ "Authorization: Bearer " . $token, 'Content-Type: application/json' ]; $datasend["message"] = "test"; $response = curlPost($urlsend,$datasend,$headers,true); dump($response); if ($response === false) { return "发送消息失败,请检查 RocketMQ 服务是否正常"; } return $response; } // //base64 encode处理json串 public function options() { // $url = "http://221.224.213.226:15208/topic/device-tracking/message"; // $postData = json_encode(["body" => "test"]); // $ch = curl_init(); // curl_setopt($ch, CURLOPT_URL, $url); // curl_setopt($ch, CURLOPT_POST, true); // curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 必须添加 // curl_setopt($ch, CURLOPT_HTTPHEADER, [ // "Content-Type: application/json", // "Content-Length: " . strlen($postData) // ]); // // 调试设置 // curl_setopt($ch, CURLOPT_VERBOSE, true); // $verbose = fopen('php://temp', 'w+'); // curl_setopt($ch, CURLOPT_STDERR, $verbose); // // 超时设置(秒) // curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); // curl_setopt($ch, CURLOPT_TIMEOUT, 10); // $response = curl_exec($ch); // $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // if (curl_errno($ch)) { // rewind($verbose); // $verboseLog = stream_get_contents($verbose); // die( // "cURL 错误: " . curl_error($ch) . "\n" . // "HTTP 状态码: " . $httpCode . "\n" . // "调试信息:\n" . $verboseLog // ); // } // curl_close($ch); // if ($httpCode === 0) { // die("服务器接受连接但未返回有效 HTTP 响应"); // } // 使用示例 // // return $response; } //质控病例列表 public function qualityControlTrigger_old() { $token = request()->param('token/a'); // $token = array("53e6d2e6967a0a85240bbc30bfc9438c","462e791fdb6d6a270b9aa3f275370b8f"); // 验证token是否有效 $maprule['token'] = array('in', $token); $tokenrole = db('tokenrole')->where($maprule)->select(); // //判断该请求是否需要生成token // $token = request() -> param('token'); // return (json_encode($token,JSON_UNESCAPED_UNICODE)); // //组装请求的数据为base64格式 // $maprule['token'] = array('in', $token); // $tokenrole = db('tokenrole')->where($maprule)->select(); $tokenrole =json_encode($tokenrole,JSON_UNESCAPED_UNICODE); return $tokenrole; } //质控病例列表 public function qualityControlTrigger() { $token = request()->param('token/a'); // $token = array("53e6d2e6967a0a85240bbc30bfc9438c","462e791fdb6d6a270b9aa3f275370b8f"); // 验证token是否有效 $maprule['token'] = array('in', $token); $tokenrole = db('tokenrole')->where($maprule)->select(); // //判断该请求是否需要生成token // $token = request() -> param('token'); // return (json_encode($token,JSON_UNESCAPED_UNICODE)); // //组装请求的数据为base64格式 // $maprule['token'] = array('in', $token); // $tokenrole = db('tokenrole')->where($maprule)->select(); $tokenrole =json_encode($tokenrole,JSON_UNESCAPED_UNICODE); return $tokenrole; } public function test(){ $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'); $maprule['ruleid'] = array('in', $ruleIdArray); $rulename = db('rulefinal')->where($maprule)->select(); dump($rulename); exit; } //存储关键字字段 public function listkey(){ $token = request()->param('askInfoId'); $typename = request()->param('ruleKeyword'); // $token ="baa1a7148c13da1c7f8b74ca0bbe3154"; // $typename = "ererre采纳不采纳"; $result = preg_replace('/采纳不采纳.*$/', '', $typename); // echo $result; // exit; $maprule['token'] = array('eq', $token); $data["keywords"]=$result; $data["rulescore"]=1; db('tokenrole')->where($maprule)->update($data); return "seele"; } //组装病理结果与分值 public function ControlResultScore_old() { $token = request()->param('token/a'); $typename = request()->param('typename'); // $typename = "袁**-入院记录"; // $token = array("d7d7b666cf7ae1890aa6ae3efd508dad","75c72b4f66eebda4bb835e74d2e050bc","f889944de8c4ebb4de2db82468140a29"); // 验证token是否有效 $maprule['token'] = array('in', $token); $maprule['typename'] = array('eq', $typename); $tokenrole = db('tokenrole')->where($maprule)->select(); // return $tokenrole; $j = 0; $data["deductionrulescore"] = 100; for($i=0;$iparam('token/a'); $typename = request()->param('typename'); // $typename = "袁**-入院记录"; // $token = array("d7d7b666cf7ae1890aa6ae3efd508dad","75c72b4f66eebda4bb835e74d2e050bc","f889944de8c4ebb4de2db82468140a29"); // 验证token是否有效 $maprule['token'] = array('in', $token); $maprule['typename'] = array('eq', $typename); $tokenrole = db('tokenrole')->where($maprule)->select(); // return $tokenrole; $j = 0; $data["deductionrulescore"] = 100; for($i=0;$i param('user'); $data['name'] = request() -> param('name'); $data['doc'] = request() -> param('doc'); $data['token'] = request() -> param('token'); $data['ragId'] = request() -> param('ragId'); $data['typename'] = request() -> param('typename'); $data['rule'] = request() -> param('rule'); $data['ruleid'] = request() -> param('ruleid'); if($data['user'] && $data['name'] && $data['doc'] && $data['token']){ $url = commonWebsocket(); $client = new Client($url); $client->text(json_encode($data,JSON_UNESCAPED_UNICODE)); $client->close(); $success['code'] = 0; $success['message'] = '客户端已成功接收消息,请至客户端页面确认。'; return json($success); } else{ $error['code'] = 1; $error['message'] = '请求参数不能为空,请核对请求参数。'; return json($error); } } //定时更新当前状态。 public function regularUpdate(){ $timestamp = time(); $timestamp = $timestamp - 5; $mapPat['updatetime'] = array('lt',$timestamp); $mapPat['strate'] = array('eq',1); $updateData["updatetime"] = time(); $updateData["strate"] = 0; $name = db('client') -> where($mapPat) -> update($updateData); } }