| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412 | <?php/** * Here is your custom functions. */if(!function_exists('KsortAscll')){    /**     * Notes:ascll正序排序     * @param array $params     * @return string     * User: yym     * Date: 2022/7/23     */    function KsortAscll($params = array()){        $str = '';        if(!empty($params)){            $p =  ksort($params);            if($p){                foreach ($params as $k=>$val){                    if(!$val){                        continue;                    }                    $str .= $k .'=' . $val . '&';                }                $str = rtrim($str, '&');            }        }        return $str;    }}if(!function_exists('randCode')){    /**     * Notes:生成随机验证码     * @param int $num 生成位数     * @param bool $isLetter 是否带有字母 true-纯数字 false-带有字母     * @return int|string     * User: yym     * Date: 2022/7/23     */    function randCode(int $num, $isLetter = false)    {        if($isLetter){            $codeMin = '';            $codeMax = '';            for($i=1;$i<=$num;$i++){                $codeMin.=0;                $codeMax.=9;            }            return rand(1 . substr($codeMin, 0, $num-1),$codeMax);        }        if(!$isLetter){            //如果想调整权重,自己可以根据需求修改$codeArr这个一位数组            $codeArr = ['1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','i',                'j','k','l','m','n','o','p','q','e','s','t','u','v','w','x','y','z',                '1','2','3','4','5','6','7','8','9','0'];            $codeKeys = array_rand($codeArr,$num);            shuffle($codeKeys);            $codeStr = '';            foreach ($codeKeys as $codeValue){                $codeStr .= $codeArr[$codeValue];            }            return $codeStr;        }    }}if(!function_exists('curlGet')){    /**     * Notes:curl Get请求     * @param $url     * @return mixed     * User: yym     * Date: 2022/7/26     */    function curlGet($url){        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        $output = curl_exec($ch);        curl_close($ch);        return json_decode($output, true);    }}if(!function_exists('imgToBase64')){    /**     * Notes:图片转base64     * @param $path     * @return string     * @throws Exception     * User: yym     * Date: 2022/7/28     */    function imgToBase64($path){        //对path进行判断,如果是本地文件就二进制读取并base64编码,如果是url,则返回        $img_data = "";        if (substr($path,0,strlen("http")) === "http" || substr($path,0,strlen("https")) === "https"){            $img_data = $path;        }else{            if($fp = fopen($path, "rb", 0)) {                $binary = fread($fp, filesize($path)); // 文件读取                fclose($fp);                $img_data = base64_encode($binary); // 转码            }else{                throw new Exception('图片不存在');            }        }        return $img_data;    }}if(!function_exists('curlRequest')){    /**     * Notes:CURL post请求     * @param $url     * @param $method     * @param $headers     * @param $body     * @return false|string     * @throws Exception     * User: yym     * Date: 2022/7/28     */    function curlRequest($url,$method = 'POST',$headers,$body)    {        $curl = curl_init();        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);        curl_setopt($curl, CURLOPT_URL, $url);        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);        curl_setopt($curl, CURLOPT_FAILONERROR, false);        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);        curl_setopt($curl, CURLOPT_HEADER, true);        if (1 == strpos("$".$url, "https://")){            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);        }        curl_setopt($curl, CURLOPT_POSTFIELDS, $body);        $result = curl_exec($curl);        $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);        $rheader = substr($result, 0, $header_size);        $rbody = substr($result, $header_size);        $httpCode = curl_getinfo($curl,CURLINFO_HTTP_CODE);        if($httpCode == 200){            return $rbody;        }else{            throw new Exception('错误:header-' . $rheader . "\n body:" .  $rbody, $httpCode);        }    }}if(!function_exists('getOcrInfo')){    /**     * Notes:身份证ocr识别     * @param $img_path     * @param string $type     * @return mixed     * @throws Exception     * User: yym     * Date: 2022/7/28     */    function getOcrInfo($img_path, $type = 'face')    {        $url     = "http://dm-51.data.aliyun.com/rest/160601/ocr/ocr_idcard.json";        $appcode = config('app')['aly_ocr']['app_code'] ?? '';        $headers = array();        array_push($headers, "Authorization:APPCODE " . $appcode);        //根据API的要求,定义相对应的Content-Type        array_push($headers, "Content-Type".":"."application/json; charset=UTF-8");        //如果没有configure字段,config设为空        $config = array(            "side"=>$type        );        $img_data = imgToBase64($img_path);        $request  = array(            "image" => "$img_data"        );        if(count($config) > 0){            $request["configure"] = json_encode($config);        }        $body   = json_encode($request);        $result = curlRequest($url, 'POST', $headers, $body);        $res    = json_decode($result, true);        return $res;    }}if(!function_exists('createOrderSn')){    /**     * Notes:生成订单     * @param int $length     * @return string     * User: yym     * Date: 2022/7/29     */    function createOrderSn(int $length)    {        $date = date("YmdHis");        $rand = $date . randCode($length - strlen($date), true);        if(strlen($rand) > $length)        {            createOrderSn($length);        }        if(\support\Redis::exists('order:order_sn:' . $rand))        {            sleep(1);            createOrderSn($length);        }        \support\Redis::setEx('order:order_sn:' . $rand, 10, 1);        return $rand;    }}if(!function_exists('unique2dArrayByKey')){    /**     * Notes:二位数组按照某个健去重     * @param $_2d_array     * @param $unique_key     * @return array     * User: yym     * Date: 2022/7/30     */    function unique2dArrayByKey($_2d_array, $unique_key)    {        $tmp_key[] = array();        foreach ($_2d_array as $key => &$item) {            if (is_array($item) && isset($item[$unique_key])) {                if (in_array($item[$unique_key], $tmp_key)) {                    unset($_2d_array[$key]);                } else {                    $tmp_key[] = $item[$unique_key];                }            }        }        //重置一下二维数组的索引        return array_slice($_2d_array, 0, count($_2d_array), false);    }}if(!function_exists('plog')){    /**     * Notes:     * @param $type     * @param $name     * @param string $content     * @return false|true     * User: yym     * Date: 2022/9/21     */    function plog($type, $name, $content = '')    {        if(empty($type) || empty($name)){            return false;        }        $log = array(            'log_admin_id' => request()->admin_id ?? 0,            'log_name'     => $name,            'log_type'     => $type,            'log_content'  => $content,            'log_ip'       => get_ip(),            'log_create_time' => time()        );        \app\admin\model\SystemPermLog::insert($log);        return true;    }}if(!function_exists('timeDifference')){    function timeDifference($start_time, $end_time)    {        //计算两个时间段差        $difference = strtotime(date("Y-m-d", time()) . $end_time) - strtotime(date("Y-m-d", time()) . $start_time);        $time_slot = 30 * 60;        $count = ceil($difference / $time_slot);        $data = array();        for ($i = 0; $i < $count; $i ++)        {            $time = '';            $time = date("H:i", (strtotime(date("Y-m-d", time()) . $start_time) + $i * $time_slot));            $data[$time] = 0;        }        return $data;    }}if (!function_exists('get_tree_children')) {    /**     * tree 子菜单     * @param array $data 数据     * @param string $childrenname 子数据名     * @param string $keyName 数据key名     * @param string $pidName 数据上级key名     * @return array     * User: ZQ     * Date: 2022/9/30     */    function get_tree_children(array $data, string $childrenname = 'children', string $keyName = 'id', string $pidName = 'pid')    {        $list = array();        foreach ($data as $value) {            $list[$value[$keyName]] = $value;        }        static $tree = array(); //格式化好的树        foreach ($list as $item) {            if (isset($list[$item[$pidName]])) {                $list[$item[$pidName]][$childrenname][] = &$list[$item[$keyName]];            } else {                $tree[] = &$list[$item[$keyName]];            }        }        return $tree;    }}if(!function_exists('appointment_data')){    /**     * Notes:医生设置时间处理     * @param array $data     * @param $key     * @return array|object     * User: yym     * Date: 2022/10/13     */    function appointment_data(array $data, $key)    {        if(empty($data) || empty($key))        {            return (object)array();        }        $appointment_data = json_decode($data[$key], true);        if(empty($appointment_data))        {            return (object)array();        }        $morning = array_keys($appointment_data['morning_time_data']);        $afternoon = array_keys($appointment_data['afternoon_time_data']);        $appointment = array(            'morning_start' => empty($morning) ? '' : array_shift($morning),            'morning_end'   => empty($morning) ? '' : date("H:i", strtotime(array_pop($morning)) + 30 * 60),            'appointment_sum' => !empty($appointment_data['morning_time_data']) ? array_shift($appointment_data['morning_time_data']) : (!empty($appointment_data['afternoon_time_data']) ? array_shift($appointment_data['afternoon_time_data']) : 0),            'afternoon_start' => empty($afternoon) ? '' : array_shift($afternoon),            'afternoon_end'   => empty($afternoon) ? '' : date("H:i", strtotime(array_pop($afternoon)) + 30 * 60),        );        return $appointment;    }}if(!function_exists('getRandomString')){    /**     * Notes:生成指定位数唯一字符串     * @param $len     * @param null $chars     * @return string     * User: yym     * Date: 2022/10/21     */    function getRandomString($len, $chars=null)    {        if (is_null($chars)){            $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";        }        mt_srand(10000000*(double)microtime());        for ($i = 0, $str = '', $lc = strlen($chars)-1; $i < $len; $i++){            $str .= $chars[mt_rand(0, $lc)];        }        return $str;    }}if(!function_exists('curlPost')){    /**     * Notes:CURL https 请求     * @param $url     * @param $data     * @return bool|string     * User: yym     * Date: 2022/9/5     */    function curlPost($url, $data){        $header = array(           'Accept: application/json',        );        $curl = curl_init(); // 启动一个CURL会话        curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在//        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer        // 设置请求头        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求        curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环        curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回        $tmpInfo = curl_exec($curl); // 执行操作        if (curl_errno($curl)) {            echo 'Errno'.curl_error($curl);//捕抓异常        }        curl_close($curl); // 关闭CURL会话        return $tmpInfo; // 返回数据    }}
 |