分页获取频道观看日志

保利返回数据 官方文档:http://dev.polyv.net/2018/liveproduct/l-api/hqzbxx/viewlog-page/

{"code": 200, "status": "success", "message": "", "data": {"pageNumber": 1, "totalItems": 3, "contents": [
{
"playId": "1520500X1438160",
"userId": "100c666",
"channelId": 100062,
"playDuration": 341,
"stayDuration": 361,
"flowSize": 10028116,
"sessionId": "eyz0awxrlh",
"param1": "1520499775580",
"param2": "广州观众/78614",
"param3": "live",
"param4": "",
"param5": "",
"ipAddress": "59.00.41.1",
"country": "中国",
"province": "广东",
"city": "广州",
"isp": "/南沙区电信",
"referer": "https://live.polyv.cn/watch/10002",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
"operatingSystem": "Mac OS X",
"browser": "Chrome",
"isMobile": "N",
"currentDay": "2018-03-08",
"createdTime": 1520501705000,
"lastModified": 1520504494000
},
{
"playId": "1520001429802",
"userId": "1c00666",
"channelId": 150002,
"playDuration": 29,
"stayDuration": 528,
"flowSize": 1068201,
"sessionId": "ey00rlh",
"param1": "1520499775580",
"param2": "广州观众/78614",
"param3": "live",
"param4": "",
"param5": "",
"ipAddress": "59.42.00.1",
"country": "中国",
"province": "广东",
"city": "广州",
"isp": "/南沙区电信",
"referer": "https://live.polyv.cn/watch/00062",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
"operatingSystem": "Mac OS X",
"browser": "Chrome",
"isMobile": "N",
"currentDay": "2018-03-08",
"createdTime": 1520501664000,
"lastModified": 1520504494000
}, {
"playId": "15205000X1714565",
"userId": "1c600666",
"channelId": 150002,
"playDuration": 18,
"stayDuration": 20,
"flowSize": 3048444,
"sessionId": "eyz00xrlh",
"param1": "1520499775580",
"param2": "广州观众/78614",
"param3": "live",
"param4": "",
"param5": "",
"ipAddress": "59.42.00.205",
"country": "中国",
"province": "广东",
"city": "广州",
"isp": "/南沙区电信",
"referer": "https://live.polyv.cn/watch/100062",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
"operatingSystem": "Mac OS X",
"browser": "Chrome",
"isMobile": "N",
"currentDay": "2018-03-08",
"createdTime": 1520500572000,
"lastModified": 1520503294000
}], "endRow": 3, "startRow": 1, "firstPage": true, "lastPage": true, "nextPageNumber": 1, "prePageNumber": 1, "totalPages": 1, "limit": 3, "offset": 0}
}

metinfo框架:

一、模板代码

<!--<?php
defined('IN_MET') or exit('No permission');
//require $this->template('ui/head');
header('Access-Control-Allow-Origin:*');
echo <<<EOT
-->
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>观看日志</title>
<script src="{$_M['url']['pub']}layui/layui.js"></script>
<link rel="stylesheet" href="{$_M['url']['pub']}layui/css/layui.css"></head><body style="margin: 20px;">
<div class="layui-btn-group demoTable"><button class="layui-btn" data-type="getCheckData">获取选中行数据</button><button class="layui-btn" data-type="getCheckLength">获取选中数目</button><button class="layui-btn" data-type="isAll">验证是否全选</button>
</div>
<table id="idTest" lay-filter="demo"></table>
<script type="text/html" id="barDemo"><a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script><script>
layui.use(['layer', 'form','element','table'], function(){var element = layui.element,$ = layui.jquery,table = layui.table,layer = layui.layer;//第一个实例table.render({elem: '#idTest'//,height: 315,url: '{$_M[url][own_form]}a=do_table_log&pid={$pid}&cid={$cid}&ccid={$ccid}' //数据接口,page: true //开启分页,limit: 15,limits: [10,20,30,60,90,150,300],cols: [[ //表头{type:'checkbox', fixed: 'left'},{type:'numbers', title: '序号',width:60,fixed:'left'},{field: 'channelId', title: '频道号', width:80, sort: true, fixed: 'left'},{field: 'currentDay', title: '查询日期', width:120},{field: 'playDuration', title: '播放时长', width:80},{field: 'param1', title: '用户ID', width:80},{field: 'param2', title: '用户昵称', width:120},{field: 'isMobile', title: '移动端', width:80},{field: 'createdTime', title: '开始时间', width:180},{field: 'ipAddress', title: 'IP地址', width:80},{field: 'country', title: '国家', width:80},{field: 'province', title: '省份', width:80},{field: 'city', title: '城市', width:80},{field: 'isp', title: 'ISP运营商', width:80},{field: 'userAgent', title: '用户设备', width:80},{field: 'operatingSystem', title: '操作系统', width:80},{field: 'browser', title: '浏览器', width:80},{fixed: 'right', width:178, align:'center', toolbar: '#barDemo'}]]});//监听表格复选框选择table.on('checkbox(demo)', function(obj){console.log(obj)});//监听工具条table.on('tool(demo)', function(obj){var data = obj.data;if(obj.event === 'detail'){layer.msg('ID:'+ data.id + ' 的查看操作');} else if(obj.event === 'del'){layer.confirm('真的删除行么', function(index){obj.del();layer.close(index);});} else if(obj.event === 'edit'){layer.alert('编辑行:<br>'+ JSON.stringify(data))}});var $ = layui.$, active = {getCheckData: function(){ //获取选中数据var checkStatus = table.checkStatus('idTest'),data = checkStatus.data;layer.alert(JSON.stringify(data));},getCheckLength: function(){ //获取选中数目var checkStatus = table.checkStatus('idTest'),data = checkStatus.data;layer.msg('选中了:'+ data.length + ' 个');},isAll: function(){ //验证是否全选var checkStatus = table.checkStatus('idTest');layer.msg(checkStatus.isAll ? '全选': '未全选')}};$('.demoTable .layui-btn').on('click', function(){var type = $(this).data('type');active[type] ? active[type].call(this) : '';});});
</script>
</body>
</html>
<!--
EOT;
//require $this->template('ui/foot');
?>

二、php代码:

1、模板代码:

  //观看日志public function do_look_live_log() {global $_M;//$id  = $_M[form]['id'];$pid  = $_M[form]['pid'];$cid  = $_M[form]['cid'];$ccid  = $_M[form]['ccid'];$starttime  = $_M[form]['starttime'];$endtime  = $_M[form]['endtime'];$turnovertext= $_M[form]['turnovertext'];if(!$pid || !$cid || !$ccid){echo "参数错误!";die;}//取得管理员分组$admin_name = get_met_cookie('metinfo_admin_name');//取得 管理员账号$user_id  = get_met_cookie('metinfo_admin_id');//取得 管理员ID$admin_rs=DB::get_one("SELECT id,admin_group FROM ".$_M['table']['admin_table']." WHERE id='$user_id'");$admin_group=$admin_rs['admin_group'];require $this->template('own/index_log');}

2、取数据do_table_log

 //取得服务器数据   观看日志public function do_table_log() {global $_M;//$id  = $_M[form]['id'];$pid  = $_M[form]['pid'];$cid  = $_M[form]['cid'];$ccid  = $_M[form]['ccid'];$page  = $_M[form]['page'];$limit  = $_M[form]['limit'];
//            if(!$page){
//                $page=1;
//                $limit=15;
//            }//$starttime  = $_M[form]['starttime'];//$endtime  = $_M[form]['endtime'];//取得管理员分组$admin_name = get_met_cookie('metinfo_admin_name');//取得 管理员账号$user_id  = get_met_cookie('metinfo_admin_id');//取得 管理员ID$admin_rs=DB::get_one("SELECT id,admin_group FROM ".$_M['table']['admin_table']." WHERE id='$user_id'");$admin_group=$admin_rs['admin_group'];//取得保利威视直播基础参数//签名验证必需参数$live_config=DB::get_one("SELECT userid,appid,appsecret,appname FROM ".$_M['table']['my_live_config']." WHERE id=1");$appId = $live_config['appid'];//从API设置中获取,在直播系统登记的appId$userId = $live_config['userid'];//直播账号ID$timestamp = time()*1000;$appSecret = $live_config['appsecret'];if($appId=="" || $userId=="" || $appSecret==""){echo "错误:请先配置API参数!";die;}//取得课程直播状态$p_rs = DB::get_one("SELECT ".$_M['table']['product'].".state,".$_M['table']['product_live_polyv_config'].".channelId FROM ".$_M['table']['product']." INNER JOIN ".$_M['table']['product_live_polyv_config']." ON ".$_M['table']['product_live_polyv_config'].".pid=".$_M['table']['product'].".id WHERE pid='$pid'");$channelId=$p_rs['channelId'];if(!$channelId){echo "错误:直播频道ID为空!";die;}//取得查询时间$time_rs=DB::get_one("SELECT id,starttime FROM ".$_M['table']['my_live_course']." WHERE id='$ccid'");//设置频道状态为直播中/非直播状态//接口需要的参数(非sign)赋值//$userId = "aed44fea85";//$channelId = "161044";$currentDay = date("Y-m-d",strtotime($time_rs['starttime'])); //$currentDay = "2018-04-03";  $page = $page; //页数$pageSize=$limit;//每页显示的数据$params = array('appId'=>$appId,'currentDay'=>$currentDay,'page'=>$page,'pageSize'=>$pageSize,'timestamp'=>$timestamp);// 1. 对加密数组进行字典排序foreach ($params as $key=>$value){$arr[$key] = $key;}sort($arr);$str = $appSecret;foreach ($arr as $k => $v) {$str = $str.$arr[$k].$params[$v];}$restr = $str.$appSecret;$sign = strtoupper(md5($restr));//接口请求url$url = "http://api.polyv.net/live/v2/statistics/$channelId/viewlog?appId=$appId¤tDay=$currentDay&page=$page&pageSize=$pageSize×tamp=$timestamp&sign=$sign";//输出接口请求结果$response= file_get_contents($url);//echo $response;//取得返回数组$jsonStr=$response;;$arr = json_decode($jsonStr, true);$code = $arr['code'];//code=200 说明成功$status = $arr['status'];$status = $arr['status'];$count= $arr['data']['totalItems'];//总的条数$rs = $arr['data']['contents'];//echo $channelId;$formclass = load::own_class('admin/class/livelog.class.php','new');$formclass -> livejson(0,$status,$count,$rs);//获取并输出JSON }

3、调用其它指定函数

作用:把取回的数据整layui数据格式,才能数据表格调用

$formclass = load::own_class('admin/class/livelog.class.php','new');

$formclass -> livejson(0,$status,$count,$rs);//获取并输出JSON

livelog.class.php

路径:\app\app\my_live\admin\class

代码:

<?php
class livelog{function livejson($code,$msg="",$count,$data=array()){  $result=array(  'code'=>$code,  'msg'=>$msg, 'count'=>$count,  'data'=>$data   );  //输出json  echo json_encode($result);  // exit;  }
}
?>

用layui+metinfo 实现分页获取频道观看日志相关推荐

  1. bootstrap layui 两种分页的实现

    最近做的项目中后台界面用的layui框架,前台界面用的是boostrap框架,这就导致我在做分页的过程中要考虑前台两种分页的动态实现,现在我已经爬出这个坑了,哈哈,给大家分享一下,写的不好的地方请大家 ...

  2. layui 传递前端请求_前端请求后端,后端查询完毕传到前端 ,用layui 将 数据分页...

    前端:我用的是layui框架的分页 js 文件 layui.config({ base : "script/" }).use(['form','layer','jquery','l ...

  3. 使用LayUI实现AJAX分页

    使用LayUI实现AJAX分页 首先去下载layUI,然后在页面当中加载layUI分页所需JS,CSS文件: <link rel="stylesheet" href=&quo ...

  4. 使用Youtube官方API获取频道及视频数据

    2020-06-04更新 下面附上笔者提供的源码(已经验证过功能.后续会在同一个工程中更新Facebook和Insgram的相关爬虫代码). https://github.com/zhangjz777 ...

  5. oracle分页包,Oracle分页获取数据的实现 (包和存储过程)

    本文档主要是介绍针对oracle数据库中利用包和存储过程来实现分页获取数据的内容.其实该存储过程的主题思想及主要实现我也是从网上找的,自己做了整合. 包括包头声明和包体实现部分以及C#代码具体调用部分 ...

  6. php采集分页数据,如何通过php+wordpress实现分页获取数据

    1.首先我们通过WordPress来搭建我们的博客网站,需要实现分页获取数据,我们需要了解一下WordPress给我们提供的api. 主要是get_posts()这个api的使用方法. 函数的结构大概 ...

  7. 前端学习(2024)vue之电商管理系统电商系统之根据分页获取订单列表数据

    目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...

  8. android 分页列表,android获取相册列表并分页获取

    有时候需要获取到系统所有图片,但一次性获取太多了,需要分批分页获取,网上很多资料都没有说到分页,作为一个数据库达人,怎么能受此折磨,因此尝试出来了以下方案: /** * 从本地获取相册列表 * @pa ...

  9. layui数据表格分页简单实现

    首先要了解layui分页和 一般的后台分页不一样. 至少:我用的layui是基于前台分页的. 后台分页,都是根据前台传递了pageNum和limit这些分页参送给后台,后台根据参数进行了分页查询返回给 ...

最新文章

  1. 彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
  2. 在block中进行行循环
  3. GMM 模型需不需归一化问题
  4. mfc 固定编辑框输入上限和下限_餐饮行业案例:固定工资、底薪提成改成这样,员工为自己拼命干...
  5. 3g无线图传点到点模式与服务器模式比较,RTK网络模式分类及网络制式的选择
  6. 01.elasticsearch-mapping全面解析
  7. 复杂性思维中文第二版 附录 A、算法分析
  8. CreateThread和_beginthread的区别
  9. Zephyr下使用TFLite进行语音识别
  10. 接口自动化测试框架搭建(9、自动化测试case的编写)--python+HTMLTestRunnerCN+request+unittest+mock+db
  11. 74xx系列芯片类型及功能概览
  12. VMware虚拟机安装Ubuntu 2022最新版详细图文安装教程(VMware虚拟机安装+Ubuntu下载+VMware虚拟机配置运行)
  13. Android打造通用标题栏——让你的App统一标题栏风格
  14. STM32F429--STM32的PWM占空比产生与测量
  15. 华为OD机试题 - 数据分类(JavaScript)| 代码+思路+重要知识点
  16. clk_mux及对应的约束
  17. branca.colormap自带的json文件对颜色的定义
  18. 全国2010年1月电子商务与电子政务试题
  19. PAT 乙级 数字黑洞
  20. 记录 logback加入springboot后多余的初始化日志

热门文章

  1. 永磁材料介绍和ANSYS Workbench永磁体仿真
  2. 解决IE文件无法正常下载,其他浏览器可以正常下载
  3. 基于 8051单片机的线跟随小车
  4. 用伪类添加翘边阴影::before和::after
  5. python算法技巧——列表、字符串实用技巧
  6. 蔚来回应测试车坠楼:初步确认为意外事故;首发苹果M2,新MacBook Pro 13英寸正式开售:9999元起|极客头条
  7. 如何将抖音快手短视频好看视频等任何直播平台视频转为MP4
  8. 近期工作心得(总结篇)
  9. Python Png转格式为Pdf。
  10. win32,win64编程永恒;语言编程需要注意的64位