| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 | <?phpnamespace app\index\controller;use think\Controller;use \GatewayWorker\Lib\Gateway;use app\common\library\Tlssigapiv2;use think\Db;class Test extends Controller{    public function test(){        $Gateway = new Gateway();        $Gateway::$registerAddress = '127.0.0.1:2345';        $Gateway::sendToAll('来自服务端的主动推送'.date('Y-m-d H:i:s'));    }    public function ip(){        $ipaddress = ip_to_address();        echo $ipaddress;    }    public function newip(){        $ipaddress = newip_to_address();        echo $ipaddress;    }    //下载聊天记录    public function im(){        $sdkappid  = '1400818730';        $sdkappkey = 'f31aa80a36cef72829fbcdcb10aa2aadcea2944787f2b268d46021e67711326b';        $usersig   = $this->usersig($sdkappid,$sdkappkey);        $random = rand(10000000,99999999);        $url = 'https://console.tim.qq.com/v4/open_msg_svc/get_history?sdkappid='.$sdkappid.'&identifier=administrator&usersig='.$usersig.'&random='.$random.'&contenttype=json';        $data = [//            'ChatType' => 'Group',            'ChatType' => 'C2C',//            'MsgTime'  => date('YmdH',strtotime('-1 Days')),            'MsgTime'  => date('YmdH',strtotime('-1 Hours')),        ];        $tasklog = [            'type' => $data['ChatType'] == 'C2C' ? 1 : 2,            'datehour' => $data['MsgTime'],            'createtime' => time(),            'status' => 0,        ];        dump($data);        $jsonStr = json_encode($data);        $header = array(            'Content-Type: application/json; charset=utf-8',            'Content-Length: ' . strlen($jsonStr)        );        $rs = curl_post($url,$jsonStr,$header);        $rs = json_decode($rs,true);        dump($rs);        if(is_array($rs) && isset($rs['ErrorCode']) && $rs['ErrorCode'] == 0){            $tasklog['status'] = 1;            //正常的,可以下载了            if(isset($rs['File']) && !empty($rs['File'])){                foreach($rs['File'] as $key => $val){                    //下载                    $gz_path = $this->downloadfile($val['URL'],$data['ChatType'],$data['MsgTime'].'_'.$data['ChatType'].'.json.gz');                    dump($gz_path);                    //解压                    $json_path = $this->jieyagz($gz_path);                    dump($json_path);                    //分析                    $content = $this->readjson($json_path);                    dump($content);                    //入库                    if(!empty($content)){                        Db::name('imlog_c2c')->insertAll($content);                    }                }            }        }        Db::name('imlog_tasklog')->insertGetId($tasklog);        echo '结束';        exit;    }    //测试下载gz    public function test_downloadgz(){        $data = [            'ChatType' => 'C2C',            'MsgTime'  => date('YmdH',strtotime('-21 Hours')),        ];        $url = 'https://download.tim.qq.com/msg_history/v2/e9c80dce105d880ab8f62f0d267983c0edf3aff49031f5b06204c3402ddbdaf63a7b2aed.gz';        $newgz = $this->downloadfile($url,$data['ChatType'],$data['MsgTime'].'_'.$data['ChatType'].'.json.gz');    }    //下载远程文件 到指定目录    private function downloadfile($file_url, $path = '', $save_file_name = '')    {        $basepath = '/uploaded/';        if ($path) {            $basepath = $basepath . $path . '/';        }        $basepath = $basepath . date('Ymd');        $dir_path = ROOT_PATH . '/public' . $basepath;        if (!is_dir($dir_path)) {            mkdir($dir_path, 0777, true);        }        $file = file_get_contents($file_url);        //传入保存文件的名称        $filename = $save_file_name ?: pathinfo($file_url, PATHINFO_BASENAME);        $resource = fopen($dir_path. '/'. $filename, 'w');        fwrite($resource, $file);        fclose($resource);        return $dir_path . '/' . $filename;    }    //解压    private function jieyagz($gz_path = ''){//        $gz_path   = 'E:\phpstudy_pro\wwwnew\ggyuyin\/public/uploaded/C2C/20230726/2023072514_C2C.json.gz';        $json_path = substr($gz_path,0,-3);        if ($zp = gzopen($gz_path, 'r')) { // 打开压缩文件            if ($fp = fopen($json_path, 'w')) { // 打开目标文件                while (!gzeof($zp)) {                    fwrite($fp, gzread($zp, 1024 * 512)); // 逐块读取和解压缩后写入                }                fclose($fp);            }            gzclose($zp);        }        return $json_path;    }    //读取json并分析    private function readjson($json_path = ''){        $newMsgList = [];//        $json_path    = 'E:\phpstudy_pro\wwwnew\ggyuyin\/public/uploaded/C2C/20230726/2023072514_C2C.json';        $json_content = file_get_contents($json_path);        $json_content = json_decode($json_content,true);        if(!empty($json_content) && is_array($json_content) && isset($json_content['MsgList'])){            $MsgList = $json_content['MsgList'];            if(!empty($MsgList)){                foreach($MsgList as $key => $val)                {                    $newMsgList[] = [                        'ClientIP'        => $val['ClientIP'],                        'CloudCustomData' => isset($val['CloudCustomData']) ? $val['CloudCustomData'] : '',                        'From_Account'    => intval($val['From_Account']),                        'MsgBody'         => json_encode($val['MsgBody']),                        'MsgFromPlatform' => $val['MsgFromPlatform'],                        'MsgRandom'       => $val['MsgRandom'],                        'MsgSeq'          => $val['MsgSeq'],                        'MsgTimestamp'    => $val['MsgTimestamp'],                        'To_Account'      => intval($val['To_Account']),                    ];                }            }        }        return $newMsgList;    }    private function usersig($sdkappid,$key){        $api = new TLSSigAPIv2($sdkappid,$key );        $sig = $api->genUserSig('administrator');        return $sig;    }    public function test_redis(){        $redis = new Redis();        $redisconfig = config("redis");        $redis->connect($redisconfig["host"], $redisconfig["port"]);        if ($redisconfig['redis_pwd']) {            $redis->auth($redisconfig['redis_pwd']);        }        if($redisconfig['redis_selectdb'] > 0){            $redis->select($redisconfig['redis_selectdb']);        }        $party_id = 141;        $res = $redis->hGetAll("online_".$party_id);        dump($res);    }}
 |