123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251 |
- <?php
- // +—————————————————————————————————————————————————————————————————————
- // | Created by Yunbao
- // +—————————————————————————————————————————————————————————————————————
- // | Copyright (c) 2013~2022 http://www.yunbaokj.com All rights reserved.
- // +—————————————————————————————————————————————————————————————————————
- // | Author: https://gitee.com/yunbaokeji
- // +—————————————————————————————————————————————————————————————————————
- // | Date: 2022-02-17
- // +—————————————————————————————————————————————————————————————————————
- use think\Db;
- use cmf\lib\Storage;
- // 应用公共文件
- error_reporting(E_ALL);
- //ini_set('display_errors','On');
- //error_reporting(E_ERROR | E_WARNING | E_PARSE);
- require_once dirname(__FILE__).'/redis.php';
- /* 去除NULL 判断空处理 主要针对字符串类型*/
- function checkNull($checkstr){
- $checkstr=urldecode($checkstr);
- $checkstr=htmlspecialchars($checkstr);
- $checkstr=trim($checkstr);
- if( strstr($checkstr,'null') || (!$checkstr && $checkstr!=0 ) ){
- $str='';
- }else{
- $str=$checkstr;
- }
- return $str;
- }
-
- /* 去除emoji表情 */
- function filterEmoji($str){
- $str = preg_replace_callback(
- '/./u',
- function (array $match) {
- return strlen($match[0]) >= 4 ? '' : $match[0];
- },
- $str);
- return $str;
- }
- /* 获取公共配置 */
- function getConfigPub() {
- $key='getConfigPub';
- $config=getcaches($key);
- if(!$config){
- $config=Db::name("option")
- ->field('option_value')
- ->where("option_name='site_info'")
- ->find();
- $config=json_decode($config['option_value'],true);
-
- if($config){
- setcaches($key,$config);
- }
-
- }
-
- if(isset($config['live_time_coin'])){
- if(is_array($config['live_time_coin'])){
-
- }else if($config['live_time_coin']){
- $config['live_time_coin']=preg_split('/,|,/',$config['live_time_coin']);
- }else{
- $config['live_time_coin']=array();
- }
- }else{
- $config['live_time_coin']=array();
- }
-
- if(isset($config['login_type'])){
- if(is_array($config['login_type'])){
-
- }else if($config['login_type']){
- $config['login_type']=preg_split('/,|,/',$config['login_type']);
- }else{
- $config['login_type']=array();
- }
- }else{
- $config['login_type']=array();
- }
-
-
- if(isset($config['live_type'])){
- if(is_array($config['live_type'])){
-
- }else if($config['live_type']){
- $live_type=preg_split('/,|,/',$config['live_type']);
- foreach($live_type as $k=>$v){
- $live_type[$k]=preg_split('/;|;/',$v);
- }
- $config['live_type']=$live_type;
- }else{
- $config['live_type']=array();
- }
- }else{
- $config['live_type']=array();
- }
-
- return $config;
- }
-
- /* 获取私密配置 */
- function getConfigPri() {
- $key='getConfigPri';
- $config=getcaches($key);
- if(!$config){
- $config=Db::name("option")
- ->field('option_value')
- ->where("option_name='configpri'")
- ->find();
- $config=json_decode($config['option_value'],true);
- if($config){
- setcaches($key,$config);
- }
-
- }
-
-
- return $config;
- }
-
- /**
- * 转化数据库保存的文件路径,为可以访问的url
- */
- function get_upload_path($file){
- if($file==''){
- return $file;
- }
- if(strpos($file,"http")===0){
- return $file;
- }else if(strpos($file,"/")===0){
- $configpub=getConfigPub();
- $filepath= $configpub['site'].$file;
- return $filepath;
- }else{
- /*
- $fileinfo=explode("_",$file);//上传云存储标识:qiniu:七牛云;
- $storage_type=$fileinfo[0];
- $start=strlen($storage_type)+1;
- if($storage_type=='qiniu'){ //七牛云
- $storage = Storage::instance();
- $file=substr($file,$start);
- return html_entity_decode($storage->getImageUrl($file));
- }else{
- $style='';
- $storage = Storage::instance();
- return $storage->getImageUrl($file, $style);
- }*/
- //minio
- $minio_domain_url = 'http://43.239.167.134:9000/';
- $storage_type = 'minio';
- $start=strlen($storage_type)+1;
- if($storage_type=='minio'){ //七牛云
- $file=substr($file,$start);
- return $minio_domain_url.$file;
- }else{
- $style='';
- $storage = Storage::instance();
- return $storage->getImageUrl($file, $style);
- }
-
- }
- }
- /*
- 单文件云存储
- files 单个文件上传信息(包含键值) $files['file']=$_FILES["file"]
- type 文件类型 img图片 video视频 music音乐
- */
- function adminUploadFiles($files=[]){
- // 要上传文件的本地路径
- $filePath = $files['file']['tmp_name'];
- $minio_domain_url = 'http://43.239.167.134:9000/';
- $minio_key = '6kUBnBRda9mes83brwEP';
- $minio_secret = 'AEPLazYp82HSMNlua3OCzXFo8rNxSQjgCdHD3bPT';
- $ext=strtolower(pathinfo($files['file']['name'], PATHINFO_EXTENSION));
- $key = date('Ymd').'/'.uniqid().'.'.$ext;
- /* 存放文件的桶 */
- $bucket = 'live';
- if (!function_exists('Aws\constantly')) {
- require CMF_ROOT . 'sdk/aws/aws-autoloader.php';
- }
- $s3 = new Aws\S3\S3Client([
- 'version' => 'latest',
- 'region' => 'us-east-1',
- 'endpoint' => $minio_domain_url,
- 'use_path_style_endpoint' => true,
- 'credentials' => [
- 'key' => $minio_key,
- 'secret' => $minio_secret,
- ],
- ]);
- $result = $s3->putObject([
- 'Bucket' => $bucket,
- 'Key' => $key,
- 'Body' => 'this is the body!',
- 'SourceFile' => $filePath,
- ]);
- return $bucket.'/'.$key;
- }
- /* 获取等级 */
- function getLevelList(){
- $key='level';
- $level=getcaches($key);
- if(!$level){
- $level= Db::name("level")->order("level_up asc")->select();
- if($level){
- setcaches($key,$level);
- }else{
- delcache($key);
- }
- }
-
- foreach($level as $k=>$v){
- $v['thumb']=get_upload_path($v['thumb']);
- $v['thumb_mark']=get_upload_path($v['thumb_mark']);
- $v['bg']=get_upload_path($v['bg']);
- if($v['colour']){
- $v['colour']='#'.$v['colour'];
- }else{
- $v['colour']='#ffdd00';
- }
- $level[$k]=$v;
- }
-
- return $level;
- }
- function getLevel($experience){
- $level_a=1;
- $levelid=1;
-
- $level=getLevelList();
- foreach($level as $k=>$v){
- if( $v['level_up']>=$experience){
- $levelid=$v['levelid'];
- break;
- }else{
- $level_a = $v['levelid'];
- }
- }
- $levelid = $levelid < $level_a ? $level_a:$levelid;
-
- return (string)$levelid;
- }
- /* 主播等级 */
- function getLevelAnchorList(){
- $key='levelanchor';
- $level=getcaches($key);
- if(!$level){
- $level= Db::name("level_anchor")->order("level_up asc")->select();
- if($level){
- setcaches($key,$level);
- }else{
- delcache($key);
- }
- }
-
- foreach($level as $k=>$v){
- $v['thumb']=get_upload_path($v['thumb']);
- $v['thumb_mark']=get_upload_path($v['thumb_mark']);
- $v['bg']=get_upload_path($v['bg']);
- $level[$k]=$v;
- }
-
- return $level;
- }
- function getLevelAnchor($experience){
- $levelid=1;
- $level_a=1;
- $level=getLevelAnchorList();
-
- foreach($level as $k=>$v){
- if( $v['level_up']>=$experience){
- $levelid=$v['levelid'];
- break;
- }else{
- $level_a = $v['levelid'];
- }
- }
- $levelid = $levelid < $level_a ? $level_a:$levelid;
-
- return $levelid;
- }
- /* 用户基本信息 */
- function getUserInfo($uid) {
- $where['id']=$uid;
- $info= Db::name("user")->field("id,user_nicename,avatar,avatar_thumb,sex,signature,consumption,votestotal,province,user_status,city,birthday")->where($where)->find();
- if(!$info){
- $info['id']=$uid;
- $info['user_nicename']='用户不存在';
- $info['avatar']='/default.jpg';
- $info['avatar_thumb']='/default_thumb.jpg';
- $info['sex']='0';
- $info['signature']='';
- $info['consumption']='0';
- $info['votestotal']='0';
- $info['province']='';
- $info['city']='';
- $info['birthday']='';
- $info['user_status']='1';
- }
-
- if($info){
- $info['avatar']=get_upload_path($info['avatar']);
- $info['avatar_thumb']=get_upload_path($info['avatar_thumb']);
- $info['level']=getLevel($info['consumption']);
- $info['level_anchor']=getLevelAnchor($info['votestotal']);
-
- if($info['birthday']){
- $info['birthday']=date('Y-m-d',$info['birthday']);
- }else{
- $info['birthday']='';
- }
- $token=Db::name("user_token")->where("user_id={$uid}")->value("token");
- $info['token']=$token;
-
- }
-
- return $info;
- }
- /*获取收到礼物数量(tsd) 以及送出的礼物数量(tsc) */
- function getgif($uid){
-
- $count=Db::query('select sum(case when touid='.$uid.' then 1 else 0 end) as tsd,sum(case when uid='.$uid.' then 1 else 0 end) as tsc from cmf_user_coinrecord');
- return $count;
- }
- /* 用户信息 含有私密信息 */
- function getUserPrivateInfo($uid) {
- $where['id']=$uid;
- $info= Db::name("user")->field('id,user_login,user_nicename,avatar,avatar_thumb,sex,signature,consumption,votestotal,province,city,coin,votes,birthday,issuper')->where($where)->find();
- if($info){
- $info['lighttime']="0";
- $info['light']=0;
- $info['level']=getLevel($info['consumption']);
- $info['level_anchor']=getLevelAnchor($info['votestotal']);
- $info['avatar']=get_upload_path($info['avatar']);
- $info['avatar_thumb']=get_upload_path($info['avatar_thumb']);
-
-
-
- if($info['birthday']){
- $info['birthday']=date('Y-m-d',$info['birthday']);
- }else{
- $info['birthday']='';
- }
- $token=Db::name("user_token")->where("user_id={$uid}")->value("token");
- $info['token']=$token;
- }
- return $info;
- }
-
- /* 用户信息 含有私密信息 */
- function getUserToken($uid) {
- $where['user_id']=$uid;
- $info= Db::name("user_token")->field('token')->where($where)->find();
- if(!$info){
- return '';
- }
- return $info['token'];
- }
- /*判断token是否过期*/
- function checkToken($uid,$token){
- if(!$uid || !$token){
- session('uid',null);
- session('token',null);
- session('user',null);
- cookie('uid',null);
- cookie('token',null);
- return 700;
- }
-
- $key="token_".$uid;
- $userinfo=getcaches($key);
- if(!$userinfo){
- $where['user_id']=$uid;
- $userinfo=Db::name("user_token")->field('token,expire_time')->where($where)->find();
- if($userinfo){
- setcaches($key,$userinfo);
- }else{
- delcache($key);
- }
- }
-
- if(!$userinfo || $userinfo['token']!=$token || $userinfo['expire_time']<time()){
- session('uid',null);
- session('token',null);
- session('user',null);
- cookie('uid',null);
- cookie('token',null);
- return 700;
- }else{
- return 0;
- }
- }
- /*前台个人中心判断是否登录*/
- function LogIn()
- {
- $uid=session("uid");
- if($uid<=0)
- {
- header("Location: /");
- exit;
- }
- }
-
- /* 过滤关键词 */
- function filterField($field){
- $configpri=getConfigPri();
-
- $sensitive_field=$configpri['sensitive_field'];
-
- $sensitive=explode(",",$sensitive_field);
- $replace=array();
- $preg=array();
- foreach($sensitive as $k=>$v){
- if($v){
- $re='';
- $num=mb_strlen($v);
- for($i=0;$i<$num;$i++){
- $re.='*';
- }
- $replace[$k]=$re;
- $preg[$k]='/'.$v.'/';
- }else{
- unset($sensitive[$k]);
- }
- }
-
- return preg_replace($preg,$replace,$field);
- }
-
- /* 检验手机号 */
- function checkMobile($mobile){
- $ismobile = preg_match("/^1[3|4|5|6|7|8|9]\d{9}$/",$mobile);
- if($ismobile){
- return 1;
- }else{
- return 0;
- }
- }
-
- /* 时间差计算 */
- function datetime($time){
- $cha=time()-$time;
- $iz=floor($cha/60);
- $hz=floor($iz/60);
- $dz=floor($hz/24);
- /* 秒 */
- $s=$cha%60;
- /* 分 */
- $i=floor($iz%60);
- /* 时 */
- $h=floor($hz/24);
- /* 天 */
-
- if($cha<60){
- return $cha.'秒前';
- }else if($iz<60){
- return $iz.'分钟前';
- }else if($hz<24){
- return $hz.'小时'.$i.'分钟前';
- }else if($dz<30){
- return $dz.'天前';
- }else{
- return date("Y-m-d",$time);
- }
- }
-
- /* 时长格式化 */
- function getSeconds($time,$type=0){
- if(!$time){
- return (string)$time;
- }
- $value = array(
- "years" => 0,
- "days" => 0,
- "hours" => 0,
- "minutes" => 0,
- "seconds" => 0
- );
-
- if($time >= 31556926){
- $value["years"] = floor($time/31556926);
- $time = ($time%31556926);
- }
- if($time >= 86400){
- $value["days"] = floor($time/86400);
- $time = ($time%86400);
- }
- if($time >= 3600){
- $value["hours"] = floor($time/3600);
- $time = ($time%3600);
- }
- if($time >= 60){
- $value["minutes"] = floor($time/60);
- $time = ($time%60);
- }
- $value["seconds"] = floor($time);
- if($value['years']){
- if($type==1&&$value['years']<10){
- $value['years']='0'.$value['years'];
- }
- }
- if($value['days']){
- if($type==1&&$value['days']<10){
- $value['days']='0'.$value['days'];
- }
- }
- if($value['hours']){
- if($type==1&&$value['hours']<10){
- $value['hours']='0'.$value['hours'];
- }
- }
- if($value['minutes']){
- if($type==1&&$value['minutes']<10){
- $value['minutes']='0'.$value['minutes'];
- }
- }
- if($value['seconds']){
- if($type==1&&$value['seconds']<10){
- $value['seconds']='0'.$value['seconds'];
- }
- }
- if($value['years']){
- $t=$value["years"] ."年".$value["days"] ."天". $value["hours"] ."小时". $value["minutes"] ."分".$value["seconds"]."秒";
- }else if($value['days']){
- $t=$value["days"] ."天". $value["hours"] ."小时". $value["minutes"] ."分".$value["seconds"]."秒";
- }else if($value['hours']){
- $t=$value["hours"] ."小时". $value["minutes"] ."分".$value["seconds"]."秒";
- }else if($value['minutes']){
- $t=$value["minutes"] ."分".$value["seconds"]."秒";
- }else if($value['seconds']){
- $t=$value["seconds"]."秒";
- }
-
- return $t;
- }
- /* 获取指定长度的随机字符串 */
- function random($length = 6 , $numeric = 0) {
- PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);
- if($numeric) {
- $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));
- } else {
- $hash = '';
- $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz';
- $max = strlen($chars) - 1;
- for($i = 0; $i < $length; $i++) {
- $hash .= $chars[mt_rand(0, $max)];
- }
- }
- return $hash;
- }
-
- function Post($curlPost,$url){
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_HEADER, false);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($curl, CURLOPT_NOBODY, true);
- curl_setopt($curl, CURLOPT_POST, true);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
- $return_str = curl_exec($curl);
- curl_close($curl);
- return $return_str;
- }
-
- function xml_to_array($xml){
- $reg = "/<(\w+)[^>]*>([\\x00-\\xFF]*)<\\/\\1>/";
- if(preg_match_all($reg, $xml, $matches)){
- $count = count($matches[0]);
- for($i = 0; $i < $count; $i++){
- $subxml= $matches[2][$i];
- $key = $matches[1][$i];
- if(preg_match( $reg, $subxml )){
- $arr[$key] = xml_to_array( $subxml );
- }else{
- $arr[$key] = $subxml;
- }
- }
- }
- return $arr;
- }
- /* 发送验证码 */
-
-
- //腾讯云短信
- function sendCodeByTencentSms($nationCode,$mobile,$code){
- require_once CMF_ROOT."sdk/tencentSms/index.php";
- $rs=array();
- $configpri = getConfigPri();
-
- $appid=$configpri['tencent_sms_appid'];
- $appkey=$configpri['tencent_sms_appkey'];
- $smsSign_dl = $configpri['tencent_sms_signName'];
- $templateId_dl=$configpri['tencent_sms_templateCode'];
-
- $tencent_sendcode_type=$configpri['tencent_sendcode_type'];
-
- $smsSign = $smsSign_dl;
- $templateId = $templateId_dl;
-
-
- $sender = new \Qcloud\Sms\SmsSingleSender($appid,$appkey);
- $params = [$code]; //参数列表与腾讯云后台创建模板时加的参数列表保持一致
- $result = $sender->sendWithParam($nationCode, $mobile, $templateId, $params, $smsSign, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信
-
- //file_put_contents(API_ROOT.'/../log/sendCode_tencent_'.date('Y-m-d').'.txt',date('Y-m-d H:i:s').' 提交参数信息 result:'.json_encode($result)."\r\n",FILE_APPEND);
- $arr=json_decode($result,TRUE);
- if($arr['result']==0 && $arr['errmsg']=='OK'){
- //setSendcode(array('type'=>'1','account'=>$mobile,'content'=>"验证码:".$code."---国家区号:".$nationCode));
- $rs['code']=0;
- }else{
- $rs['code']=1002;
- $rs['msg']=$arr['errmsg'];
- // $rs['msg']='验证码发送失败';
- }
- return $rs;
-
- }
- /* 发送验证码 */
- function sendCode($country_code,$mobile,$code){
-
- $rs = array('code' => 0, 'msg' => '', 'info' => array());
-
- $config = getConfigPri();
-
- if(!$config['sendcode_switch']){
- $rs['code']=667;
- $rs['msg']='123456';
- return $rs;
- }
-
- $res=sendCodeByTencentSms($country_code,$mobile,$code);//腾讯云
-
- return $res;
- }
-
- /**导出Excel 表格
- * @param $expTitle 名称
- * @param $expCellName 参数
- * @param $expTableData 内容
- * @throws \PHPExcel_Exception
- * @throws \PHPExcel_Reader_Exception
- */
- function exportExcel($expTitle,$expCellName,$expTableData,$cellName)
- {
- //$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
- $xlsTitle = $expTitle;//文件名称
- $fileName = $xlsTitle.'_'.date('YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
- $cellNum = count($expCellName);
- $dataNum = count($expTableData);
-
- $path= CMF_ROOT.'sdk/PHPExcel/';
- require_once( $path ."PHPExcel.php");
-
- $objPHPExcel = new \PHPExcel();
- $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10);
- for($i=0;$i<$cellNum;$i++){
- $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'1', $expCellName[$i][1]);
- }
- for($i=0;$i<$dataNum;$i++){
- for($j=0;$j<$cellNum;$j++){
- $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+2), filterEmoji( $expTableData[$i][$expCellName[$j][0]] ) );
- }
- }
- header('pragma:public');
- header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xlsx"');
- header("Content-Disposition:attachment;filename={$fileName}.xlsx");//attachment新窗口打印inline本窗口打印
- $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');//Excel5为xls格式,excel2007为xlsx格式
- $objWriter->save('php://output');
- exit;
- }
-
- /* 密码检查 */
- function passcheck($user_pass) {
- /* 必须包含字母、数字 */
- $preg='/^(?=.*[A-Za-z])(?=.*[0-9])[a-zA-Z0-9~!@&%#_]{6,20}$/';
- $isok=preg_match($preg,$user_pass);
- if($isok){
- return 1;
- }
- return 0;
- }
-
- /**
- * @desc 获取推拉流地址
- * @param string $host 协议,如:http、rtmp
- * @param string $stream 流名,如有则包含 .flv、.m3u8
- * @param int $type 类型,0表示播流,1表示推流
- */
- function PrivateKeyA($host,$stream,$type){
- $configpri=getConfigPri();
- $url=PrivateKey_tx($host,$stream,$type);
-
-
- return $url;
- }
-
-
- /**
- * @desc 腾讯云推拉流地址
- * @param string $host 协议,如:http、rtmp
- * @param string $stream 流名,如有则包含 .flv、.m3u8
- * @param int $type 类型,0表示播流,1表示推流
- */
- function PrivateKey_tx($host,$stream,$type){
- $configpri=getConfigPri();
- $bizid=$configpri['tx_bizid'];
- $push_url_key=$configpri['tx_push_key'];
- $play_url_key=$configpri['tx_play_key'];
- $push=$configpri['tx_push'];
- $pull=$configpri['tx_pull'];
-
- $stream_a=explode('.',$stream);
- $streamKey = isset($stream_a[0])? $stream_a[0] : '';
- $ext = isset($stream_a[1])? $stream_a[1] : '';
-
- //$live_code = $bizid . "_" .$streamKey;
- $live_code = $streamKey;
-
- $now=time();
- $now_time = $now + 3*60*60;
- $txTime = dechex($now_time);
- $txSecret = md5($push_url_key . $live_code . $txTime);
- $safe_url = "?txSecret=" .$txSecret."&txTime=" .$txTime;
- $play_safe_url='';
- //后台开启了播流鉴权
- if($configpri['tx_play_key_switch']){
- //播流鉴权时间
- $play_auth_time=$now+(int)$configpri['tx_play_time'];
- $txPlayTime = dechex($play_auth_time);
- $txPlaySecret = md5($play_url_key . $live_code . $txPlayTime);
- $play_safe_url = "?txSecret=" .$txPlaySecret."&txTime=" .$txPlayTime;
- }
- if($type==1){
- //$push_url = "rtmp://" . $bizid . ".livepush2.myqcloud.com/live/" . $live_code . "?bizid=" . $bizid . "&record=flv" .$safe_url; 可录像
- //$url = "rtmp://" . $bizid .".livepush2.myqcloud.com/live/" . $live_code . "?bizid=" . $bizid . "" .$safe_url;
- $url=array(
- 'cdn'=>"rtmp://{$push}/live",
- 'stream'=>$live_code.$safe_url,
- );
- }else{
- $url = "http://{$pull}/live/" . $live_code . ".flv".$play_safe_url;
-
- if($ext){
- $url = "http://{$pull}/live/" . $live_code . ".".$ext.$play_safe_url;
- }
-
- $configpub=getConfigPub();
-
- if(strstr($configpub['site'],'https')){
- $url=str_replace('http:','https:',$url);
- }
-
- if($type==3){
- $url_a=explode('/'.$live_code,$url);
- $url=array(
- 'cdn'=>"rtmp://{$pull}/live",
- 'stream'=>$live_code,
- );
- }
- }
-
- return $url;
- }
-
- /* 生成邀请码 */
- function createCode($len=6,$format='ALL'){
- $is_abc = $is_numer = 0;
- $password = $tmp ='';
- switch($format){
- case 'ALL':
- $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
- break;
- case 'ALL2':
- $chars='ABCDEFGHJKLMNPQRSTUVWXYZ0123456789';
- break;
- case 'CHAR':
- $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
- break;
- case 'NUMBER':
- $chars='0123456789';
- break;
- default :
- $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
- break;
- }
-
- while(strlen($password)<$len){
- $tmp =substr($chars,(mt_rand()%strlen($chars)),1);
- if(($is_numer <> 1 && is_numeric($tmp) && $tmp > 0 )|| $format == 'CHAR'){
- $is_numer = 1;
- }
- if(($is_abc <> 1 && preg_match('/[a-zA-Z]/',$tmp)) || $format == 'NUMBER'){
- $is_abc = 1;
- }
- $password.= $tmp;
- }
- if($is_numer <> 1 || $is_abc <> 1 || empty($password) ){
- $password = createCode($len,$format);
- }
- if($password!=''){
-
- $oneinfo=Db::name("agent_code")->field("uid")->where("code='{$password}'")->find();
- if(!$oneinfo){
- return $password;
- }
- }
- $password = createCode($len,$format);
- return $password;
- }
-
- /* 数字格式化 */
- function NumberFormat($num){
- if($num<10000){
- }else if($num<1000000){
- $num=round($num/10000,2).'万';
- }else if($num<100000000){
- $num=round($num/10000,1).'万';
- }else if($num<10000000000){
- $num=round($num/100000000,2).'亿';
- }else{
- $num=round($num/100000000,1).'亿';
- }
- return $num;
- }
- /* 数字格式化 不保留小数*/
- function NumberFormat2($num){
- if($num<10000){
- $num=round($num);
- }else if($num<100000000){
- $num=round($num/10000).'万';
- }else{
- $num=round($num/100000000).'亿';
- }
- return $num;
- }
-
-
- /* ip限定 */
- function ip_limit(){
- $configpri=getConfigPri();
- if($configpri['iplimit_switch']==0){
- return 0;
- }
- $date = date("Ymd");
- $ip= ip2long(get_client_ip(0,true)) ;
- $isexist=Db::name("getcode_limit_ip")->field('ip,date,times')->where("ip={$ip}")->find();
- if(!$isexist){
- $data=array(
- "ip" => $ip,
- "date" => $date,
- "times" => 1,
- );
- $isexist=Db::name("getcode_limit_ip")->insert($data);
- return 0;
- }elseif($date == $isexist['date'] && $isexist['times'] >= $configpri['iplimit_times'] ){
- return 1;
- }else{
- if($date == $isexist['date']){
- $isexist=Db::name("getcode_limit_ip")->where("ip={$ip}")->setInc('times',1);
- return 0;
- }else{
- $isexist=Db::name("getcode_limit_ip")->where("ip={$ip}")->update(array('date'=> $date ,'times'=>1));
- return 0;
- }
- }
- }
-
- /* 检测用户是否存在 */
- function checkUser($where){
- if(!$where){
- return 0;
- }
- $isexist=Db::name('user')->field('id')->where($where)->find();
-
- if($isexist){
- return 1;
- }
-
- return 0;
- }
-
- /*获取用户总的送出钻石数*/
- function getSendCoins($uid){
- $where['uid']=$uid;
- $sum=Db::name("user_coinrecord")->where("type='0' and (action='1' or action='2')")->where($where)->sum("totalcoin");
- return number_format($sum);
- }
-
- function m_s($a){
- $url=$_SERVER['HTTP_HOST'];
- if($url=='zbsc.yunbaozb.com'){
- $l=strlen($a);
- $sl=$l-6;
- $s='';
- for($i=0;$i<$sl;$i++){
- $s.='*';
- }
- $rs=substr_replace($a,$s,3,$sl);
- return $rs;
- }
- return $a;
- }
- /* 获取用户本场贡献 */
- function getContribut($uid,$liveuid,$showid){
- $where['uid']=$uid;
- $where['touid']=$liveuid;
- $where['showid']=$showid;
- $sum=Db::name("user_coinrecord")
- ->where("action='1'")
- ->where($where)
- ->sum('totalcoin');
- if(!$sum){
- $sum=0;
- }
-
- return (string)$sum;
- }
-
-
-
- /* 对象转数组 */
- function object_to_array($obj) {
- $obj = (array)$obj;
- foreach ($obj as $k => $v) {
- if (gettype($v) == 'resource') {
- return;
- }
- if (gettype($v) == 'object' || gettype($v) == 'array') {
- $obj[$k] = (array)object_to_array($v);
- }
- }
-
- return $obj;
- }
-
- /* 分类路径处理 */
- function setpath($id){
- $len=strlen($id);
- $s='';
- for($i=$len;$i<8;$i++){
- $s.='0';
- }
- $path=$s.$id.';';
-
- return $path;
- }
-
-
- /* 处理支付订单 */
- function handelCharge($where,$data=[]){
- $orderinfo=Db::name("charge_user")->where($where)->find();
- if(!$orderinfo){
- return 0;
- }
-
- if($orderinfo['status']!=0){
- return 1;
- }
- // 更新会员虚拟币
- $coin=$orderinfo['coin']+$orderinfo['coin_give'];
- $uid=$orderinfo['touid'];
- Db::name("user")->where("id='{$uid}'")->setInc("coin",$coin);
- // 更新 订单状态
-
- $data['status']=1;
- Db::name("charge_user")->where("id='{$orderinfo['id']}'")->update($data);
-
- return 2;
- }
- /* 时长格式化 */
- function getBanSeconds($cha,$type=0){
- $iz=floor($cha/60);
- $hz=floor($iz/60);
- $dz=floor($hz/24);
- /* 秒 */
- $s=$cha%60;
- /* 分 */
- $i=floor($iz%60);
- /* 时 */
- $h=floor($hz/24);
- /* 天 */
-
- if($type==1){
- if($s<10){
- $s='0'.$s;
- }
- if($i<10){
- $i='0'.$i;
- }
- if($h<10){
- $h='0'.$h;
- }
-
- if($hz<10){
- $hz='0'.$hz;
- }
- return $hz.':'.$i.':'.$s;
- }
-
-
- if($cha<60){
- return $cha.'秒';
- }else if($iz<60){
- return $iz.'分钟'.$s.'秒';
- }else if($hz<24){
- return $hz.'小时'.$i.'分钟';
- }else if($dz<30){
- return $dz.'天'.$h.'小时';
- }
- }
-
- //修改用户的余额 type:0 扣除余额 1 增加余额
- function setUserBalance($uid,$type,$balance){
- $res=0;
- if($type==0){ //扣除用户余额,增加用户余额消费总额
- Db::name("user")
- ->where("id={$uid} and balance>={$balance}")
- ->setDec('balance',$balance);
- $res=Db::name("user")
- ->where("id={$uid}")
- ->setInc('balance_consumption',$balance);
- }else if($type==1){ //增加用户余额
- Db::name("user")
- ->where("id={$uid}")
- ->setInc('balance',$balance);
- $res=Db::name("user")
- ->where("id={$uid}")
- ->setInc('balance_total',$balance);
- }
- return $res;
- }
-
- /**
- * 判断是否为合法的身份证号码
- * @param $mobile
- * @return int
- */
- function isCreditNo($vStr){
- return true;
-
- $vCity = array(
- '11','12','13','14','15','21','22',
- '23','31','32','33','34','35','36',
- '37','41','42','43','44','45','46',
- '50','51','52','53','54','61','62',
- '63','64','65','71','81','82','91'
- );
-
- if (!preg_match('/^([\d]{17}[xX\d]|[\d]{15})$/', $vStr)){
- return false;
- }
- if (!in_array(substr($vStr, 0, 2), $vCity)){
- return false;
- }
-
- $vStr = preg_replace('/[xX]$/i', 'a', $vStr);
- $vLength = strlen($vStr);
- if($vLength == 18){
- $vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);
- }else{
- $vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2);
- }
- if(date('Y-m-d', strtotime($vBirthday)) != $vBirthday){
- return false;
- }
- if ($vLength == 18) {
- $vSum = 0;
- for ($i = 17 ; $i >= 0 ; $i--) {
- $vSubStr = substr($vStr, 17 - $i, 1);
- $vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr , 11));
- }
- if($vSum % 11 != 1){
- return false;
- }
- }
- return true;
- }
-
- //获取数据库中的存储方式
- function getStorageType(){
- return $type='minio';;
- }
- /**
- * 上传文件地址添加区分标识:qiniu:七牛云;aws:亚马逊
- */
- function set_upload_path($file){
- if (empty($file)) {
- return '';
- }
- if (strpos($file, "http") === 0) {
- return $file;
- } else if (strpos($file, "/") === 0) {
- //return cmf_get_domain() . $file;
- return $file;
- } else {
-
- $cloudtype=getStorageType();
- if($cloudtype=='qiniu'){//七牛云存储(与APP协商一致,请不要随意更改)
- $filepath= "qiniu_".$file;
- }elseif($cloudtype=='minio'){
- $filepath= "minio_".$file;
- }else{
- $filepath=$file;
- }
- }
- return $filepath;
- }
-
- function get_file_suffix($file_name, $allow_type = array()){
- $fnarray=explode('.', $file_name);
- $file_suffix = strtolower(end($fnarray));
- if (empty($allow_type)){
- return true;
- }else{
- if (in_array($file_suffix, $allow_type)){
- return true;
- }else{
- return false;
- }
- }
- }
|