", "~", "+", "=", ",", "." )); } $charsLen = count($chars) - 1; shuffle($chars); //打乱数组顺序 $str = ''; for ($i = 0; $i < $len; $i++) { $str .= $chars[mt_rand(0, $charsLen)]; //随机取出一位 } return $str; } } if (!function_exists('setConfig')) { /** * 设置系统配置 * @param string $type 配置关键词 * @param array $data 需要保存的数组 * @return void */ function setConfig($type, $data) { $data = empty($data) ? null : $data; $content = DB::name('config')->where(['key' => $type])->find(); $json_str = json_encode($data, JSON_UNESCAPED_UNICODE); if (!empty($content)) { if ($data) { $res = DB::name('config')->where(['key' => $type])->update(['value' => $json_str]); } else { $res = DB::name('config')->where(['key' => $type])->delete(); } } else { $res = DB::name('config')->insert(array('value' => $json_str, 'key' => $type)); } return $res; } } if (!function_exists('getConfig')) { /** * 获取系统配置 * @param string $type 配置关键词 * @return void */ function getConfig($type) { $content = Db::name('config')->where(['key' => $type])->value('value'); $config = json_decode($content, true); return $config; } } if (!function_exists('imageUrl')) { /** * 图片补全路径 * @param string $type 配置关键词 * @return void */ function imageUrl($url = '') { if ($url == '') { return ''; } $pre = request()->domain(); if (strpos($url, 'http') !== false) { $path = $url; } // else if (strpos($pre, '192.168') !== false) {#测试环境 // $path = $pre . "ceshi/public/" . $url; // } else if ($url === '0') { $path = $pre; } else { $path = $pre . $url; } $path = str_replace('\\', '/', $path); return $path; } } if (!function_exists('contentUrl')) { /** * 补充富文本内容图片路径 * @param content 富文本内容 * @return 返回处理后的富文本内容 */ function contentUrl($content) { $url = request()->domain() . '/'; if (strpos($url, '192.168') !== false) {#测试环境 $url = $url . "ceshi/public/"; } $pregRule = "/<[img|IMG].*?src=[\‘|\"](.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\‘|\"].*?[\/]?>/"; $content = preg_replace($pregRule, '', htmlspecialchars_decode($content)); return $content; } } if (!function_exists('shuffle_assoc')) { /** * 二维数组打乱顺序 * @param string $list 列表数组 * @return void */ function shuffle_assoc($list) { if (!is_array($list)) { return $list; } $keys = array_keys($list); shuffle($keys); $random = array(); foreach ($keys as $k => $key) { $random[$k] = $list[$key]; } return $random; } } if (!function_exists('arraySequence')) { /** * 二位数组指定字段排序 * @param $array * @param $field * @param string $sort * @return array */ function arraySequence($array, $field, $sort = 'SORT_DESC') { $else_data = []; $arrSort = array(); $new_arrSort = array(); $len = 0; foreach ($array as $uniqid => $row) { $new_arrSort[] = $row; foreach ($row as $key => $value) { $arrSort[$key][$len] = $value; } $len++; } array_multisort($arrSort[$field], constant($sort), $new_arrSort); $new_array = array_merge($else_data, $new_arrSort); return $new_array; } } if (!function_exists('create_order_no')) { /** * 生成订单号 * @return string */ function create_order_no($pre = 'NO_', $tale = 'order', $field = 'order_num') { $order_no = $pre . date('Ymd') . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8) . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); $r = Db::name($tale)->field('id')->where([$field => $order_no])->find(); if ($r) { $order_no = create_order_no($pre); } return $order_no; } } if (!function_exists('getPrizeCode')) { /** * 获取盒子奖品编号 * @param int $len 推荐码长度 */ function getPrizeCode($len = 10, $special = false) { $chars = array( "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ); $charsLen = count($chars) - 1; shuffle($chars); //打乱数组顺序 $str = ''; for ($i = 0; $i < $len; $i++) { $str .= $chars[mt_rand(0, $charsLen)]; //随机取出一位 } $i = Db::name('goods_list')->where(['prize_code' => $str])->find(); if ($i) { $str = getPrizeCode(); } return $str; } } if (!function_exists('curlGet')) { /** * curl请求指定url (get) * @param $url * @param array $data * @return mixed */ function curlGet($url) { $headerArray = array("Content-type:application/json;", "Accept:application/json"); $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); curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray); $output = curl_exec($ch); curl_close($ch); $output = json_decode($output, true); return $output; } } if (!function_exists('curlPost')) { /** * curl请求指定url (post) * @param $url * @param array $data * @return mixed */ function curlPost($url, $data = []) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); curl_close($ch); return $result; } } if (!function_exists('admin_md5')) { /** * @param $msg 需要加密的参数 * @return bool */ function admin_md5($msg) { return sha1(md5(md5('admin_md5_password' . $msg))); } } if (!function_exists('user_md5')) { /** * @param $msg 需要加密的参数 * @return bool */ function user_md5($msg) { return sha1('md5' . md5(md5('user_md5' . $msg))); } } if (!function_exists('RegMoney')) { /** * @param $money 需要验证的金额 * @return bool */ function RegMoney($money = -1) { $preg_money = '/^(0|[1-9]\d{0,10})(\.\d{1,2})?$/'; if (!preg_match($preg_money, $money)) { return true; } return false; } } if (!function_exists('RegInt')) { /** * @param $num 需要验证的整数 * @return bool */ function RegInt($num = -1) { $preg_int = '/^[1-9]\d{0,10}$/'; if (!preg_match($preg_int, $num)) { return true; } return false; } } if (!function_exists('RegZero')) { /** * @param $num 需要验证的整数 * @return bool */ function RegZero($num = -1) { $preg_int = '/^[0-9]\d{0,10}$/'; if (!preg_match($preg_int, $num)) { return true; } return false; } } if (!function_exists('expressWuliu')) { /** * 查物流 * @param $no 订单号 * @param $type 快递公司编号 * @return array */ function expressWuliu($no = '', $type = '') { $host = "https://wuliu.market.alicloudapi.com";//api访问链接 $path = "/kdi";//API访问后缀 $method = "GET"; $appcode = getConfig('base')['logistics_code'];//开通服务后 买家中心-查看AppCode $headers = array(); array_push($headers, "Authorization:APPCODE " . $appcode); $querys = "no=" . $no . "&type=" . $type; //参数写在这里 $bodys = ""; $url = $host . $path . "?" . $querys; $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("$" . $host, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } $out_put = curl_exec($curl); $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); list($header, $body) = explode("\r\n\r\n", $out_put, 2); if ($httpCode == 200) { // print("正常请求计费(其他均不计费)
"); // print($body); $body = json_decode($body, true); if ($body['status'] == 0 && $body['msg'] == 'ok') { return ['code' => 1, 'msg' => $body['result']]; } else { return ['code' => 0, 'msg' => $body['msg']]; } } else { if ($httpCode == 400 && strpos($header, "Invalid Param Location") !== false) { // print("参数错误"); return ['code' => 0, 'msg' => '参数错误']; } elseif ($httpCode == 400 && strpos($header, "Invalid AppCode") !== false) { // print("AppCode错误"); return ['code' => 0, 'msg' => 'AppCode错误']; } elseif ($httpCode == 400 && strpos($header, "Invalid Url") !== false) { // print("请求的 Method、Path 或者环境错误"); return ['code' => 0, 'msg' => '请求的 Method、Path 或者环境错误']; } elseif ($httpCode == 403 && strpos($header, "Unauthorized") !== false) { // print("服务未被授权(或URL和Path不正确)"); return ['code' => 0, 'msg' => '服务未被授权(或URL和Path不正确)']; } elseif ($httpCode == 403 && strpos($header, "Quota Exhausted") !== false) { // print("套餐包次数用完"); return ['code' => 0, 'msg' => '套餐包次数用完']; } elseif ($httpCode == 500) { // print("API网关错误"); return ['code' => 0, 'msg' => 'API网关错误']; } elseif ($httpCode == 0) { // print("URL错误"); return ['code' => 0, 'msg' => 'URL错误']; } else { // print("参数名错误 或 其他错误"); // print($httpCode); return ['code' => 0, 'msg' => '参数名错误 或 其他错误']; $headers = explode("\r\n", $header); $headList = array(); foreach ($headers as $head) { $value = explode(':', $head); $headList[$value[0]] = $value[1]; } print($headList['x-ca-error-message']); } } } } if (!function_exists('resCheck')) { /** * @param $rs 数据库结果集的判断 * @return bool */ function resCheck($data) { foreach ($data as $value) { if (is_array($value)) { foreach ($value as $val) { if (is_array($val)) { foreach ($val as $va) { if (is_array($va)) { foreach ($va as $v) { if (!$v) { return false; } } } else { if (!$va) { return false; } } } } else { if (!$val) { return false; } } } } else { if (!$value) { return false; } } } return true; } } function p($msg = '', $type = 0) { echo '
';
    if ($type == 0) {
        print_r($msg);
    } else {
        var_dump($msg);
    }
    die;
}

if (!function_exists('thumbImage')) {
    /**
     * 缩放图片
     * @param $url 图片路径
     * @return int
     */
    function thumbImage($path = '', $width = 0, $height = 0, $radius = 0, $bg = 0)
    {
        require_once('../vendor/topthink/think-image/src/Image.php');
        $image = \think\Image::open($path);
        // 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.png
        $image->thumb($width, $height)->radius($radius, $bg)->save($path);
        return true;

    }
}

if (!function_exists('time_jian')) {
    /**
     * 缩放图片
     * @param $url 图片路径
     * @return int
     */
    function time_jian($star_time,$end_time)
    {
        // 计算两个时间戳之间的差值(单位:秒)
        $timeDiff = $end_time - $star_time;

        // 根据差值计算经过了多少秒、分钟、小时和天
        $seconds = $timeDiff % 60;
        $minutes = floor(($timeDiff / 60) % 60);
        $hours = floor(($timeDiff / (60 * 60)) % 24);
        $days = floor($timeDiff / (60 * 60 * 24));
        $str = '';
        if ($days){
            $str .= "{$days}天";
        }
        if ($hours){
            $str .= "{$hours}小时";
        }
        if ($minutes){
            $str .= "{$minutes}分钟";
        }
        if ($seconds){
            $str .= "{$seconds}秒";
        }
        return $str;
    }
}

// 订单支付日志
function writelog($filename,$content){
    $date = date('Y-m-d');
    $file = "./pay_log/".$date;
    if(!is_dir($file)){
        mkdir($file);
    }
    $file = $file."/".$filename.".txt";
    $content = "【收到信息".date("Y-m-d H:i:s",time())."】".$content."\r\n\r\n";
    $open=fopen($file,"a" );
    fwrite($open,$content);
    fclose($open);
}


//广告
function tencent_ad_attribution($click_id,$money,$account_id,$access_token,$user_action_set_id){
//    $access_token = '80a2138abe0227598ea9ae8a2a55ba69';
//    $user_action_set_id = 1200995945;
    $interface = 'user_actions/add';
    $url = 'https://api.e.qq.com/v1.1/' . $interface;

    $common_parameters = array (
        'access_token' => $access_token,
        'timestamp' => time(),
        'nonce' => md5(uniqid('', true))
    );

    $parameters = array (
        'account_id' => $account_id,
        'user_action_set_id' => $user_action_set_id,
        'actions' =>
            array (
                0 =>
                    array (
                        'url' => 'ruiou.ruiouyifanshang.com',
                        'external_action_id' => strtolower(md5(rand(100000,999999))) . '_complete_order_1492991000_30569088_1200995945',
                        'action_time' => time(),
                        'action_type' => 'COMPLETE_ORDER',
//                        'custom_action' => 'my_type',
                        'trace' => [
                            'click_id' => $click_id,
                        ],
                        'action_param' =>
                            [
                                'value' => $money
                            ]
                    ),
            ),
    );
     // dd($parameters);
    // dump($common_parameters);

    $parameters = json_encode($parameters);
    $request_url = $url . '?' . http_build_query($common_parameters);
    // var_dump($parameters);
    // dd($request_url);

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $request_url);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        "Content-Type:application/json"
    ));
    $response = curl_exec($curl);
    if (curl_error($curl)) {
        $error_msg = curl_error($curl);
        $error_no = curl_errno($curl);
        curl_close($curl);
        throw new \Exception($error_msg, $error_no);
    }
    curl_close($curl);
    \think\facade\Log::write($response,'warning');
    return $response;
    
}


    function getData($url,$header){ 

        $ch = curl_init(); 
        
        curl_setopt($ch,CURLOPT_URL,$url);
        
        curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
        
        curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
        
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
        
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,3); 
        
        $handles = curl_exec($ch); 
        
        curl_close($ch); 
        
        return $handles; 
    }