123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402 |
- <?php
- use Illuminate\Support\Facades\Redis;
- if (!function_exists('res_422')) {
- function res_422($msg='参数有误!'){
- return json_encode(['code' => 422, 'data' => [], 'count' => 0,'msg'=>$msg]);
- }
- }
- //这个只能用在方法末尾
- if (!function_exists('opt_return')){
- function opt_return($res,$msg=null){
- if (!$res) {
- if (!$msg){
- $msg = '操作失败';
- }
- die(json_encode(array('status' => 2, 'message' => $msg)));
- }
- die(json_encode(array('status' => 1, 'message' => '操作成功')));
- }
- }
- if (!function_exists('opt_ok')){
- function opt_ok(){
- die(json_encode(array('status' => 1, 'message' => '操作成功'),JSON_UNESCAPED_UNICODE));
- }
- }
- if (!function_exists('opt_error')){
- function opt_error($msg=null){
- if (!empty($msg)){
- die(json_encode(array('status' => 2, 'message' => $msg)));
- }
- die(json_encode(array('status' => 2, 'message' => '操作失败')));
- }
- }
- if (!function_exists('table_error')){
- function table_error($msg=null){
- if (!$msg)
- $msg = '数据查询异常,请检查参数!';
- die(json_encode(['code'=>-1,'msg'=>$msg]));
- }
- }
- if (!function_exists('format_time')){
- function format_time(&$param,$format){
- if (isset($param['stime']))
- $param['stime'][1] = date($format,$param['stime'][1]);
- if (isset($param['etime']))
- $param['etime'][1] = date($format,$param['etime'][1]+86400);
- }
- }
- function nextDay($data)
- {
- return date('Y-m-d',strtotime('+1 day', strtotime($data)));
- }
- function nowDate()
- {
- return date('Y-m-d H:i:s');
- }
- if (!function_exists('getTree')){
- function getTree($data, $pId=0)
- {
- $tree = array();
- foreach ($data as $k => $v) {
- if ($v->parentId == $pId) { //父亲找到儿子
- $v->children = getTree($data, $v->id);
- $tree[] = $v;
- //unset($data[$k]);
- }
- }
- return $tree;
- }
- }
- /**
- * 把数字1-1亿换成汉字表述,如:123->一百二十三
- * @param [num] $num [数字]
- * @return [string] [string]
- */
- if (!function_exists('numToWord')) {
- function numToWord($num)
- {
- $chiNum = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
- $chiUni = array('','十', '百', '千', '万', '亿', '十', '百', '千');
-
- $chiStr = '';
-
- $num_str = (string)$num;
-
- $count = strlen($num_str);
- $last_flag = true; //上一个 是否为0
- $zero_flag = true; //是否第一个
- $temp_num = null; //临时数字
-
- $chiStr = '';//拼接结果
- if ($count == 2) {//两位数
- $temp_num = $num_str[0];
- $chiStr = $temp_num == 1 ? $chiUni[1] : $chiNum[$temp_num].$chiUni[1];
- $temp_num = $num_str[1];
- $chiStr .= $temp_num == 0 ? '' : $chiNum[$temp_num];
- }else if($count > 2){
- $index = 0;
- for ($i=$count-1; $i >= 0 ; $i--) {
- $temp_num = $num_str[$i];
- if ($temp_num == 0) {
- if (!$zero_flag && !$last_flag ) {
- $chiStr = $chiNum[$temp_num]. $chiStr;
- $last_flag = true;
- }
- }else{
- $chiStr = $chiNum[$temp_num].$chiUni[$index%9] .$chiStr;
- $zero_flag = false;
- $last_flag = false;
- }
- $index ++;
- }
- }else{
- $chiStr = $chiNum[$num_str[0]];
- }
- return $chiStr;
- }
- }
- if (!function_exists('createNo')) {
- function createNo($prefix = '')
- {
- return $prefix . date('YmdHis') . sprintf("%03d", rand(1, 99));
- }
- }
- if (!function_exists('llog')) {
- function llog($content, $channel = '', $level = 'info')
- {
- if ($channel == '') {
- \Log::info($content);
- } else {
- switch ($level) {
- case 'info':
- \Log::channel($channel)->info($content);
- break;
- case 'error':
- \Log::channel($channel)->error($content);
- break;
- }
- }
-
- }
- }
-
- if (!function_exists('complete_pic')) {
- function complete_pic($val) {
- // $url = $remote == 'server' ? env('APP_URL') : env('API_URL');
- if ($val != '' && strpos($val, 'http') === false) {
- return env('OSS_URL') . $val;
- }
- return $val;
- }
- }
- /**
- * API请求
- * @param $url 链接
- * @param $data 参数
- */
- function Get_Curl($url, $data = null, array $heders = [], $time=6)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_TIMEOUT, $time); //单位 秒,也可以使用
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //这个是重点,规避ssl的证书检查。
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 跳过host验证
- if(!empty($heders)){
- curl_setopt($ch, CURLOPT_HTTPHEADER, $heders);
- }
- if(!empty($data)){
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- }
- $content = curl_exec($ch);
- curl_close($ch);
- return $content;
- }
- /**
- * API请求2
- * @param $url 链接
- * @param $data 参数
- */
- function curl_post_https($url,$data,$headers=null,$cookie=null){ // 模拟提交数据函数
- $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
- if(!empty($headers)){
- curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);//设置请求头
- }
- if(!empty($cookie)){
- curl_setopt($curl, CURLOPT_COOKIE, $cookie); // 带上COOKIE请求
- }
- curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
- curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
- curl_setopt($curl, CURLOPT_TIMEOUT, 10); // 设置超时限制防止死循环
- curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
- $tmpInfo = curl_exec($curl); // 执行操作
- curl_close($curl); // 关闭CURL会话
- return $tmpInfo; // 返回数据
- }
- /**
- * API请求3
- * @param $url 链接
- * @param $data 参数
- */
- function curl_get_https($url,$headers=null,$raw=null,$time=6){
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_TIMEOUT, $time);
- curl_setopt($curl, CURLOPT_HEADER, 0);
- if(!empty($headers)){
- curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);//设置请求头
- }
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
- if($raw){
- curl_setopt($curl, CURLOPT_POSTFIELDS, $raw); // Post提交的数据包
- }
- $tmpInfo = curl_exec($curl); //返回api的json对象
- curl_close($curl);
- return $tmpInfo;
- }
- /**
- * post请求
- * @param $url string api链接
- * @param $data array 参数
- * @param $time_out int 超时时间
- */
- function post_multi(string $url, array $data = [],$time_out = 5)
- {
- $headerArray = array("Content-Type: multipart/form-data;charset='utf-8'");
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_CONNECTTIMEOUT , $time_out);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
- curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- $output = curl_exec($curl);
- curl_close($curl);
- return json_decode($output,true);
- }
- /**
- * 转为十进制
- * @param string $number 十六进制的数
- * @return string
- */
- function hexToDec($number)
- {
- // 如果有0x去除它
- $number = remove0x(strtolower($number));
- $decvalues = [
- '0' => '0', '1' => '1', '2' => '2',
- '3' => '3', '4' => '4', '5' => '5',
- '6' => '6', '7' => '7', '8' => '8',
- '9' => '9', 'a' => '10', 'b' => '11',
- 'c' => '12', 'd' => '13', 'e' => '14',
- 'f' => '15'];
- $decval = '0';
- $number = strrev($number);
- for($i = 0; $i < strlen($number); $i++) {
- $decval = bcadd(bcmul(bcpow('16', $i, 0), $decvalues[$number[$i]]), $decval);
- }
- return $decval;
- }
- /**
- * 如果有0x去除它
- * @param $value
- * @return false|string
- */
- function remove0x($value)
- {
- if (strtolower(substr($value, 0, 2)) == '0x') {
- return substr($value, 2);
- }
- return $value;
- }
- /**
- * 高精度计算相除
- * @param $price [金额]
- * @param $number [多少个0]
- */
- function calculationExcept($price,$number){
- $multiple = 1; //倍数
- if($number > 0){
- for ($i=0; $i < $number; $i++) {
- $multiple = $multiple.'0';
- }
- $multiple = (int)$multiple;
- }
- $data = bcdiv($price,$multiple,$number);
- if(strpos(floatval($data),'-') == false){
- // 精度未失效
- $data = floatval($data);
- }else{
- // 精度失效
- $data = rtrim(rtrim($data, '0'), '.');
- }
- return $data;
- }
- /**
- * 获取Redis
- * @param $field 字段
- */
- function getRedis($field){
- $prefix = env('REDIS_PREFIX','sdadmin_');
- return Redis::get($prefix.$field);
- }
- /**
- * 存储Redis
- * @param $field 字段
- * @param $data 值
- */
- function setRedis($field,$data){
- $prefix = env('REDIS_PREFIX','sdadmin_');
- return Redis::set($prefix.$field,$data);
- }
- /**
- * 存储Redis,含有效期
- * @param $field 字段
- * @param $data 值
- * @param $expireSeconds 有效期,单位秒
- */
- function setexRedis($field,$expireSeconds = 60,$data){
- $prefix = env('REDIS_PREFIX','sdadmin_');
- return Redis::setex($prefix.$field,$expireSeconds,$data);
- }
- /**
- * 删除Redis
- * @param $data 值
- */
- function deleteRedis($data){
- $prefix = env('REDIS_PREFIX','sdadmin_');
- return Redis::del($prefix.$data);
- }
- /**
- * 获取Redis数组key
- * @param $data 值
- */
- function getKeyRedis(){
- return Redis::keys("_*");
- }
- /**
- * 获取真实IP
- * @param
- * @return string
- */
- function getClientIP()
- {
- $ip_address = '';
- if(getenv('HTTP_CLIENT_IP'))
- $ip_address = getenv('HTTP_CLIENT_IP');
- else if(getenv('HTTP_X_FORWARDED_FOR'))
- $ip_address = getenv('HTTP_X_FORWARDED_FOR');
- else if(getenv('HTTP_X_FORWARDED'))
- $ip_address = getenv('HTTP_X_FORWARDED');
- else if(getenv('HTTP_FORWARDED_FOR'))
- $ip_address = getenv('HTTP_FORWARDED_FOR');
- else if(getenv('HTTP_FORWARDED'))
- $ip_address = getenv('HTTP_FORWARDED');
- else if(getenv('REMOTE_ADDR'))
- $ip_address = getenv('REMOTE_ADDR');
- else
- $ip_address = 'UNKNOWN';
- return $ip_address;
- }
|