where('pid ='.$structid)->find() ){ $list = Db::name('AdminStructure')->field('id,name,pid')->where('pid ='.$structid)->select(); foreach($list as $value){ $str = structureList($value['id'],$str); } } return $str; } /** * cookies加密函数 * @param string 加密后字符串 */ function encrypt($data, $key = '5k-72crm') { $cryptdes = new com\Cryptdes($key); return $cryptdes->encrypt($data); // $prep_code = serialize($data); // $block = mcrypt_get_block_size('des', 'ecb'); // if (($pad = $block - (strlen($prep_code) % $block)) < $block) { // $prep_code .= str_repeat(chr($pad), $pad); // } // $encrypt = mcrypt_encrypt(MCRYPT_DES, $key, trim($prep_code), MCRYPT_MODE_ECB); // return base64_encode($encrypt); } /** * cookies 解密密函数 * @param array 解密后数组 */ function decrypt($data, $key = '5k-72crm') { $cryptdes = new com\Cryptdes($key); return $cryptdes->decrypt($data); // $str = base64_decode($str); // $str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB); // $block = mcrypt_get_block_size('des', 'ecb'); // $pad = ord($str[($len = strlen($str)) - 1]); // if ($pad && $pad < $block && preg_match('/' . chr($pad) . '{' . $pad . '}$/', $str)) { // $str = substr($str, 0, strlen($str) - $pad); // } // return unserialize($str); } /** * 部门树形数组 * @param type 0 下属数组, 1包含自己 */ function getSubObj($id, $objList, $separate, $is_first = 0) { $array = array(); foreach ($objList as $key => $value) { if ($key == 0 && $is_first == 1) { if ($value['id'] == 1) { $id = 0; } else { $id = $value['pid']; } } if ($id == $value['pid']) { $array[] = array('id' => $value['id'], 'name' => $separate.$value['name']); $array = array_merge($array, getSubObj($value['id'], $objList, $separate.'--')); } } return $array; } /** * 解析sql语句 * @param string $content sql内容 * @param int $limit 如果为1,则只返回一条sql语句,默认返回所有 * @param array $prefix 替换表前缀 * @return array|string 除去注释之后的sql语句数组或一条语句 */ function parse_sql($sql = '', $limit = 0, $prefix = []) { // 被替换的前缀 $from = ''; // 要替换的前缀 $to = ''; // 替换表前缀 if (!empty($prefix)) { $to = current($prefix); $from = current(array_flip($prefix)); } if ($sql != '') { // 纯sql内容 $pure_sql = []; // 多行注释标记 $comment = false; // 按行分割,兼容多个平台 $sql = str_replace(["\r\n", "\r"], "\n", $sql); $sql = explode("\n", trim($sql)); // 循环处理每一行 foreach ($sql as $key => $line) { // 跳过空行 if ($line == '') { continue; } // 跳过以#或者--开头的单行注释 if (preg_match("/^(#|--)/", $line)) { continue; } // 跳过以/**/包裹起来的单行注释 if (preg_match("/^\/\*(.*?)\*\//", $line)) { continue; } // 多行注释开始 if (substr($line, 0, 2) == '/*') { $comment = true; continue; } // 多行注释结束 if (substr($line, -2) == '*/') { $comment = false; continue; } // 多行注释没有结束,继续跳过 if ($comment) { continue; } // 替换表前缀 if ($from != '') { $line = str_replace('`'.$from, '`'.$to, $line); } if ($line == 'BEGIN;' || $line =='COMMIT;') { continue; } // sql语句 array_push($pure_sql, $line); } // 只返回一条语句 if ($limit == 1) { return implode($pure_sql, ""); } // 以数组形式返回sql语句 $pure_sql = implode($pure_sql, "\n"); $pure_sql = explode(";\n", $pure_sql); return $pure_sql; } else { return $limit == 1 ? '' : []; } } function sendRequest($url, $params = array() , $headers = array()) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if (!empty($params)) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); } if (!empty($headers)) { curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } $res = curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $value = curl_exec($ch); if (curl_errno($ch)) { $return = array(0, '连接服务器出错', -1); } else { if (!$value) { $return = array(0, '服务器返回数据异常', -1); } $return = $value; } curl_close($ch); return $return; } /** * 验证序列号 * @param * @return */ function checkWkCode($wkcode) { $pub = formatPubKey(config('public_key')); $openssl_pub = openssl_pkey_get_public($pub); // 验签 $resArr = openssl_public_decrypt(Hex2String($wkcode), $decrypted, $pub); if(!$resArr) return false; return $decrypted; } function Hex2String($hex){ $string = ''; for ($i=0; $i < strlen($hex); $i+=2){ $string .= chr(hexdec($hex[$i].$hex[$i+1])); } return $string; } //公钥格式处理 function formatPubKey($pubKey) { $fKey = "-----BEGIN PUBLIC KEY-----\n"; $len = strlen($pubKey); for($i = 0; $i < $len; ) { $fKey = $fKey . substr($pubKey, $i, 64) . "\n"; $i += 64; } $fKey .= "-----END PUBLIC KEY-----"; return $fKey; } /** * foreach循环内查询数据 * @param string $types * @param $data * * @author alvin guogaobo * @version 1.0 版本号 * @since 2021/4/15 0015 14:39 */ function foreachData($types='',$data) { switch ($types) { case 'admin_structure' : $res=Db::name('AdminUser')->where('id',$data)->value('realname'); break; case '' : $res=Db::name('AdminUser')->where('id',$data['id'])->update(['structure_id'=>$data['structure_id']]); break; case 'market': $res=Db::name('MarketData')->whereIn('id',$data)->select(); break; } return $res; }