Authored by xiaofeng.yao@yoho.cn

Merge branch 'master' into test

Conflicts:
	soa/controllers/v1/LivingController.php
	soa/controllers/v1/RoomController.php
... ... @@ -4,6 +4,8 @@ namespace backend\controllers;
use Yii;
use app\models\SysConfig;
use app\models\Vest;
use backend\components\Pagination;
use common\models\RoomsNumsReport;
/**
* Site controller
*/
... ... @@ -131,6 +133,29 @@ class SystemController extends BaseController
echo json_encode($data);exit;
}
/**
* 在线人数统计
* @return type
*/
public function actionStatics()
{
$condition = Yii::$app->request->get();
$list = [];
if(array_filter($condition)){
$model = RoomsNumsReport::condition($condition);
$count = clone $model;
$pagination = new Pagination(['totalCount' => $count->count()]);
$list = $model->offset($pagination->offset)->limit($pagination->limit)->orderBy(['create_time' => SORT_ASC])->all();
}else{
$pagination = new Pagination(['totalCount' => 0]);
}
return $this->render('statics',[
'list'=>$list,
'condition'=>$condition,
'pagination'=>$pagination,
]);
}
public function actionModifycache()
{
$cache_prefix = Yii::$app->params['cache_prefix'];
... ...
<?php
use yii\web\View;
use backend\widgets\LinkPager;
$this->title = '管理后台首页';
?>
<div class="col-md-6">
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title">在线人数</h5>
</div>
<div class="panel-body">
<form class="form-inline" action="">
<div class="form-group">
<label class="sr-only" for="begin">begin</label>
<input type="text" class="form-control" name="begin" id="begin" placeholder="begin" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="<?=$condition['begin']?>">
</div><!-- form-group -->
<div class="form-group">
<label class="sr-only" for="end">end</label>
<input type="text" class="form-control" name="end" id="end" placeholder="end" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="<?=$condition['end']?>">
</div><!-- form-group -->
<div class="form-group" id="btn_bar">
<button type="submit" class="btn btn-primary mr5">查询</button>
</div>
</form>
<div class="table-responsive">
<table class="table table-dark mb30">
<thead>
<tr>
<th>时间</th>
<th>人数</th>
</tr>
</thead>
<tbody>
<?php
if($list):
foreach($list as $v):
?>
<tr>
<td><?=date('Y-m-d H:i:s',$v['create_time'])?></td>
<td><?=$v['online_num']?></td>
</tr>
<?php endforeach; endif;?>
</tbody>
</table>
</div>
<!-- table-responsive -->
<?php echo LinkPager::widget(['pagination' => $pagination]);?>
</div>
</div>
</div>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script type="text/javascript" src="/js/My97DatePicker/WdatePicker.js" ></script>
<script>
$(function () {
$('#container').highcharts({
title: {
text: 'Monthly Average Temperature',
x: -20 //center
},
subtitle: {
text: 'Source: WorldClimate.com',
x: -20
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
yAxis: {
title: {
text: '人数 (个)'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
valueSuffix: '°C'
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
series: [{
name: 'Tokyo',
data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
}, {
name: 'New York',
data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
}, {
name: 'Berlin',
data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
}, {
name: 'London',
data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
}]
});
});
</script>
... ...
<?php
namespace common\models;
use Yii;
use yii\helpers\ArrayHelper;
/**
* This is the model class for table "{{%rooms_nums_report}}".
*
* @property integer $id
* @property integer $room_id
* @property integer $like_num
* @property integer $audience_num
* @property integer $online_num
* @property integer $replay_num
* @property integer $vest_online_num
* @property integer $create_time
*/
class RoomsNumsReport extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return '{{%rooms_nums_report}}';
}
/*public function behaviors()
{
return [
[
'class' => \yii\behaviors\TimestampBehavior::className(),
'createdAtAttribute' => 'create_time',
]
];
}*/
/**
* @inheritdoc
*/
public function rules()
{
return [
[['room_id', 'like_num', 'audience_num', 'online_num', 'replay_num', 'vest_online_num', 'create_time'], 'integer'],
[['create_time'], 'required'],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'room_id' => 'Room ID',
'like_num' => 'Like Num',
'audience_num' => 'Audience Num',
'online_num' => 'Online Num',
'replay_num' => 'Replay Num',
'vest_online_num' => 'Vest Online Num',
'create_time' => 'Create Time',
];
}
/**
* 插入
* @param $parameters array 数据
* @return bool
*/
public function create($parameters)
{
$this->attributes = [
'room_id' => (int)$parameters['room'],
'like_num' => (int)$parameters['likeNums'],
'online_num' => (int)$parameters['onlineNums'],
'audience_num' => (int)$parameters['audienceNums'],
'vest_online_num' => (int)$parameters['vestOnlineNums'],
'create_time' => time()
];
return $this->save(false);
}
public static function condition($condtion)
{
$model = parent::find();
$filters = ArrayHelper::filter($condtion,['begin','end']);
if($filters['begin'] && $filters['end']){
$model->andWhere('create_time>='.strtotime($filters['begin']).' AND create_time<='.strtotime($filters['end']));
}
return $model;
}
}
... ...
... ... @@ -7,6 +7,7 @@ use common\models\RoomNums;
use common\models\Video;
use common\models\Room;
use common\models\RoomInfo;
use common\models\RoomsNumsReport;
/**
* Room controller
... ... @@ -25,6 +26,12 @@ class RoomController extends BaseController
$room_id = $gets['room'];
if ($room_id) {
//插入统计表
if (isset($gets['onlineNums']) && $gets['onlineNums']) {
$roomReportModel = new RoomsNumsReport();
$roomReportModel->create($gets);
}
//插入or更新数据表
if (!$model = RoomNums::findOne(['room_id' => $room_id])) {
$model = new RoomNums();
$model->room_id = $room_id;
... ...