优化游戏汇总

master
chenzhi 4 years ago
parent 7f9bb248dd
commit bea27fd5de

@ -11,6 +11,110 @@ use Org\UcenterSDK\Ucservice;
*/
class PlatformController extends ThinkController
{
//游戏汇总
public function game_pool(){
if(!array_key_exists("year",$_REQUEST)){
$this->redirect(ACTION_NAME, array('year' => date('Y',time())) );
}
$isExport = false;
if(isset($_REQUEST['export']) && $_REQUEST['export'] == 1){
$isExport = true;
}
$page = intval($_REQUEST['p']);
$page = $page ? $page : 1; //默认显示第一页数据
if (isset($_REQUEST['row'])) {
$row = $_REQUEST['row'];
} else {
$row = 10;
}
$year = isset($_REQUEST['year']) ? $_REQUEST['year'] : date("Y",time());
$yearMap = [strtotime("$year-1-1 00:00:00"),strtotime("$year-12-31 23:59:59")];
$gameMap = "1";
if(isset($_REQUEST['relation_game_id'])){
$gameId = $_REQUEST['relation_game_id'];
$gameMap .= " AND relation_game_id = '{$gameId}' ";
}
$gameDb = M("Game","tab_");
$data = $gameDb
->field("group_concat(id) game_id,relation_game_id,relation_game_name")
->where($gameMap)
->group("relation_game_id");
if($isExport){
$data = $data->select();
//生成头
$fp = $this->setPromotePoolTitle($year,"game");
}else{
$data = $data->page($page,$row)->select();
$countTable = $gameDb->where($gameMap)->group("relation_game_id")->select(false);
$count = M()->table("(".$countTable.") s")->count();
}
//获取游戏累计注册
$sendData = [];
foreach($data as $k=>$v){
$list = self::setYearList($year);
$this->getGameRegisterCount($list,$v['game_id'],$yearMap);
$this->getGamePayamountCount($list,$v['game_id'],$yearMap);
$v["list"] = $list;
$sendData[] = $v;
if($isExport){
unset($v['game_id'],$v['relation_game_id']);
$fp = $this->setCsvData($fp,$v);
}
}
if($isExport){
//刷新输出缓冲到浏览器
fclose($fp);
exit();
}
$th = array_keys(self::setYearList($year));
$this->assign('th', $th);
$this->assign('list_data', $sendData);
$this->assign("companyList",D("PromoteCompany")->getList());
$this->getYearList();
$page = set_pagination($count, $row);
if ($page) {
$this->assign('_page', $page);
}
$this->display();
}
//获取游戏注册量
protected function getGameRegisterCount(&$list,$gameids,$yearMap)
{
$map = [
"fgame_id"=>["in",$gameids],
"register_time"=>["between",$yearMap]
];
$Register = M("User","tab_")->field("count(id) count,FROM_UNIXTIME(`register_time`, '%Y-%m') regtime")->where($map)->group("regtime")->select();
if(empty($Register)) return ;
foreach ($Register as $v) {
$list[$v['regtime']]['register'] = $v['count'];
}
}
//获取游戏注册量
protected function getGamePayamountCount(&$list,$gameids,$yearMap)
{
$map = [
"game_id"=>["in",$gameids],
"pay_time"=>["between",$yearMap],
"pay_status"=>1
];
$Payamount = M("Spend","tab_")->field("sum(pay_amount) pay_amount,FROM_UNIXTIME(`pay_time`, '%Y-%m') paytime")->where($map)->group("paytime")->select();
if(empty($Payamount)) return ;
foreach ($Payamount as $v) {
$list[$v['paytime']]['payamount'] = $v['pay_amount'];
}
}
//推广员汇总
public function promote_pool()
{
if(!array_key_exists("year",$_REQUEST) || !array_key_exists("company_belong",$_REQUEST)){
@ -152,9 +256,16 @@ class PlatformController extends ThinkController
$this->assign('YearList', $list);
}
//获取导出头
private static function setPromotePoolTitle($year)
private static function setPromotePoolTitle($year,$type="promote")
{
$range = ["推广公司","内外团归属"];
if($type =="promote"){
$range = ["推广公司","内外团归属"];
$csvFileName = '推广公司汇总.csv';
}else{
$range = ["游戏名称"];
$csvFileName = '游戏汇总.csv';
}
$i = 1;
do {
if($i < 10){
@ -166,8 +277,7 @@ class PlatformController extends ThinkController
$range[] = $year."年".$month."月充值流水";
$i++;
} while ($i<13);
$csvFileName = '推广公司汇总.csv';
//设置好告诉浏览器要下载excel文件的headers
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');

@ -0,0 +1,188 @@
<extend name="Public/base"/>
<block name="body">
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<script type="text/javascript" src="__JS__/bootstrap.min.js"></script>
<script type="text/javascript" src="__JS__/select2.min.js"></script>
<style>
.select2-container--default .select2-selection--single {
color: #000;
resize: none;
border-width: 1px;
border-style: solid;
border-color: #a7b5bc #ced9df #ced9df #a7b5bc;
box-shadow: 0px 3px 3px #F7F8F9 inset;height:35px;
height:28px;border-radius:3px;font-size:12px;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
line-height:35px;
line-height:28px;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
height:26px;
}
.select2-container--default .select2-search--dropdown .select2-search__field {
height:26px;line-height:26px;font-size:12px;
}
.select2-results__option[aria-selected] {font-size:12px;}
th{
border-right: 1px solid #b6cad2;
}
.gotoinfo{
color: #056dae;cursor:pointer;
}
</style>
<div class="cf main-place top_nav_list navtab_list">
<div class="fr">
<a class="tabchose" href="javascript:;">游戏汇总</a>
<a class="" href="{:U('Platform/game_statistics')}">游戏注册统计</a>
<a class="" href="{:U('Platform/gamepay_statistics')}">游戏充值统计</a>
<a class="" href="{:U('Platform/resway_statistics')}">注册方式统计</a>
<a class="" href="{:U('Platform/payway_statistics')}">充值方式统计</a>
</div>
<h3 class="page_title">游戏汇总</h3>
<p class="description_text">说明:统计各游戏每月注册及充值总额(注册数:以玩家注册时玩的游戏为依据)</p>
</div>
<div class="cf top_nav_list">
<!-- 高级搜索 -->
<div class="jssearch fl cf search_list">
<div class="input-list search-title-box">
<label>搜索:</label>
</div>
<!--游戏类型搜索END-->
<div class="input-list input-list-resway search_label_rehab">
<select id="year" name="year" class="select_gallery" style="width:150px;">
<volist name="YearList" id="vo">
<option value="{$vo.value}" <if condition="I('year') && $vo.value eq I('year')">selected</if> >{$vo.name}</option>
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="relation_game_id" name="relation_game_id" class="select_gallery" >
<option value="">游戏名称</option>
<volist name=":getAllGame()" id="vo">
<option value="{$vo.game_id}" <if condition="$vo.game_id eq I('relation_game_id')">selected</if> >{$vo.game_name}</option>
</volist>
</select>
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('Platform/game_pool','model='.$model['name'].'&row='.I('row'),false)}">搜索</a>
</div>
</div>
</div>
<!-- 数据列表 -->
<div class="data_list">
<div class="">
<table>
<!-- 表头 -->
<thead>
<tr>
<th rowspan="2">游戏名称</th>
<foreach name="th" item="vo">
<th colspan="2">{$vo}</th>
</foreach>
</tr>
<tr>
<foreach name="th" item="vo">
<th>注册数</th>
<th>充值流水</th>
</foreach>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<style>
.data-table thead th, .data-table tbody td{text-align:center}
.data-table tbody td{border-right:1px solid #DDDDDD;}
.d_list .drop-down ul {z-index:999;}
</style>
<empty name="list_data" >
<tr>
<td colspan="9" class="text-center">aOh! 暂时还没有内容!</td>
</tr>
<else />
<volist name="list_data" id="data">
<tr>
<td>{$data['relation_game_name']}</td>
<foreach name="data.list" item="item" key="date">
<foreach name="item" item="it" key="type">
<td <if condition="$it GT 0">class="gotoinfo"</if> data-id="{$data.relation_game_id}" data-type="{$type}" data-date="{$date}">{$it}</td>
</foreach>
</foreach>
</tr>
</volist>
</empty>
</tbody>
</table>
</div>
</div>
<div class="page">
<a class="sch-btn" href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a>
{$_page|default=''}
</div>
</block>
<block name="script">
<script src="__STATIC__/layer/layer.js" type="text/javascript"></script>
<script type="text/javascript" src="__STATIC__/layer/extend/layer.ext.js" ></script>
<script>
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
$(".select_gallery").select2();
</script>
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('Platform/promote_statistics')}");
var registerUrl = "{:U('Platform/promote_statistics')}";
var payamountrUrl = "{:U('Platform/promotepay_statistics')}";
$(function(){
//搜索功能
$("#search").click(function(){
var url = $(this).attr('url');
var query = $('.jssearch').find('input').serialize();
query += "&" + $('.jssearch').find('select').serialize();
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,'');
query = query.replace(/^&/g,'');
if( url.indexOf('?')>0 ){
url += '&' + query;
}else{
url += '?' + query;
}
window.location.href = url;
});
//回车自动提交
$('.jssearch').find('input').keyup(function(event){
if(event.keyCode===13){
$("#search").click();
}
});
$(".gotoinfo").on("click",function(){
var data = $(this).data();
var date = data.date.split('-');
var timestart =data.date+'-' + new Date(date[0],date[1],1).getDate();
var timeend = data.date+'-' +new Date(date[0],date[1],0).getDate();
var str = "&timestart="+timestart+"&timeend="+timeend+"&company_id="+data.id;
if(data.type == "register"){
window.location.href = registerUrl+str;
}else{
window.location.href = payamountrUrl+str;
}
})
})
</script>
</block>

@ -30,6 +30,7 @@
<div class="cf main-place top_nav_list navtab_list">
<div class="fr">
<a class="" href="{:U('Platform/game_pool')}">游戏汇总</a>
<a class="tabchose" href="javascript:;">游戏注册统计</a>
<a class="" href="{:U('Platform/gamepay_statistics')}">游戏充值统计</a>
<a class="" href="{:U('Platform/resway_statistics')}">注册方式统计</a>

@ -29,6 +29,7 @@
<div class="cf main-place top_nav_list navtab_list">
<div class="fr">
<a class="" href="{:U('Platform/game_pool')}">游戏汇总</a>
<a class="" href="{:U('Platform/game_statistics')}">游戏注册统计</a>
<a class="tabchose" href="">游戏充值统计</a>
<a class="" href="{:U('Platform/resway_statistics')}">注册方式统计</a>

@ -29,6 +29,7 @@
<div class="cf main-place top_nav_list navtab_list">
<div class="fr">
<a class="" href="{:U('Platform/game_pool')}">游戏汇总</a>
<a class="" href="{:U('Platform/game_statistics')}">游戏注册统计</a>
<a class="" href="{:U('Platform/gamepay_statistics')}">游戏充值统计</a>
<a class="" href="{:U('Platform/resway_statistics')}">注册方式统计</a>

@ -30,6 +30,7 @@
<div class="cf main-place top_nav_list navtab_list">
<div class="fr">
<a class="" href="{:U('Platform/game_pool')}">游戏汇总</a>
<a class="" href="{:U('Platform/game_statistics')}">游戏注册统计</a>
<a class="" href="{:U('Platform/gamepay_statistics')}">游戏充值统计</a>
<a class="tabchose" href="javascript:;">注册方式统计</a>

Loading…
Cancel
Save