|
|
<?php
|
|
|
namespace Admin\Event;
|
|
|
use Think\Controller;
|
|
|
/**
|
|
|
* 后台事件控制器
|
|
|
* @author 王贺
|
|
|
*/
|
|
|
class SpendEvent extends ThinkEvent {
|
|
|
public function list_($model = null,$p,$extend=array()){
|
|
|
$model || $this->error('模型名标识必须!');
|
|
|
$page = intval($p);
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
$arraypage = $page; //默认显示第一页数据
|
|
|
//解析列表规则
|
|
|
$fields = $model['fields'];
|
|
|
// 关键字搜索
|
|
|
$map = empty($model['map'])?array():$model['map'];
|
|
|
$map['tab_spend.pay_status'] = 1;
|
|
|
|
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
|
|
//读取模型数据列表
|
|
|
$name = $model['m_name'];
|
|
|
|
|
|
if($_REQUEST['data_order']!=''){
|
|
|
$data_order=reset(explode(',',$_REQUEST['data_order']));
|
|
|
$data_order_type=end(explode(',',$_REQUEST['data_order']));
|
|
|
$this->assign('userarpu_order',$data_order);
|
|
|
$this->assign('userarpu_order_type',$data_order_type);
|
|
|
$sort = $data_order==3?'desc':'asc';
|
|
|
$model['order'] = $data_order_type.' '.$sort;
|
|
|
}
|
|
|
|
|
|
$new_model = M($name,"tab_");
|
|
|
$data = $new_model
|
|
|
// 查询条件
|
|
|
->where($map)
|
|
|
/* 默认通过id逆序排列 */
|
|
|
->order($model['order'])
|
|
|
//根据字段分组
|
|
|
->group($model['group'])
|
|
|
/* 数据分页 */
|
|
|
->page($page, $row)
|
|
|
/* 执行查询 */
|
|
|
->select();
|
|
|
/* 查询记录总数 */
|
|
|
$count = $new_model
|
|
|
// 查询条件
|
|
|
->where($map)
|
|
|
/* 默认通过id逆序排列 */
|
|
|
->order($model['order'])
|
|
|
//根据字段分组
|
|
|
->group($model['group'])
|
|
|
/* 执行查询 */
|
|
|
->count();
|
|
|
//分页
|
|
|
|
|
|
$page = set_pagination($count,$row);
|
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
|
|
|
|
|
$this->assign('model', $model);
|
|
|
$this->assign('list_data', $data);
|
|
|
$this->meta_title = $model['title'].'列表';
|
|
|
$this->display($model['template_list']);
|
|
|
}
|
|
|
|
|
|
public function group_list($model = null,$p,$extend=array()){
|
|
|
$model || $this->error('模型名标识必须!');
|
|
|
$page = intval($p);
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
|
|
|
//解析列表规则
|
|
|
$fields = $model['fields'];
|
|
|
// 关键字搜索
|
|
|
$map = empty($extend)?array():$extend;
|
|
|
$map['tab_spend.pay_status'] = 1;
|
|
|
// 条件搜索
|
|
|
foreach($_REQUEST as $name=>$val){
|
|
|
switch ($name) {
|
|
|
case 'account':
|
|
|
$map['tab_spend.user_account'] = array('like','%'.$val.'%');
|
|
|
break;
|
|
|
case 'game_id':
|
|
|
$map['tab_game.id'] = $val;
|
|
|
break;
|
|
|
case 'promote_id':
|
|
|
$map['tab_spend.promote_id'] = $val;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
|
|
//读取模型数据列表
|
|
|
$name = $model['m_name'];
|
|
|
$new_model = D($name);
|
|
|
$data = D($name)
|
|
|
->field('tab_spend.*,case parent_id when 0 then promote_id else parent_id end AS parent_id,sum(pay_amount) AS total_amount,DATE_FORMAT( FROM_UNIXTIME(pay_time),"%Y-%m-%d") AS period')
|
|
|
->join('left join tab_promote ON tab_spend.promote_id = tab_promote.id')
|
|
|
// 查询条件
|
|
|
->where($map)
|
|
|
/* 默认通过id逆序排列 */
|
|
|
->order($model['order'])
|
|
|
//根据字段分组
|
|
|
->group($model['group'])
|
|
|
/* 数据分页 */
|
|
|
->page($page, $row)
|
|
|
/* 执行查询 */
|
|
|
->select();
|
|
|
/* 查询记录总数 */
|
|
|
$count = count($data);
|
|
|
//分页
|
|
|
|
|
|
|
|
|
$page = set_pagination($count,$row);
|
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
|
|
|
|
|
$this->assign('model', $model);
|
|
|
$this->assign('list_data', $data);
|
|
|
$this->meta_title = $model['title'].'列表';
|
|
|
$this->display($model['template_list']);
|
|
|
}
|
|
|
public function spend_list($model = null,$p,$extend=array()){
|
|
|
$model || $this->error('模型名标识必须!');
|
|
|
$page = intval($p);
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
$arraypage = $page; //默认显示第一页数据
|
|
|
//解析列表规则
|
|
|
$fields = $model['fields'];
|
|
|
// 关键字搜索
|
|
|
$map = empty($model['map'])?array():$model['map'];
|
|
|
$map['tab_spend.pay_status'] = 1;
|
|
|
|
|
|
|
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
|
|
//读取模型数据列表
|
|
|
$name = $model['m_name'];
|
|
|
$new_model = D($name);
|
|
|
$data = D($name)
|
|
|
// 查询条件
|
|
|
->where($map)
|
|
|
/* 默认通过id逆序排列 */
|
|
|
->order($model['order'])
|
|
|
//根据字段分组
|
|
|
->group($model['group'])
|
|
|
/* 数据分页 */
|
|
|
// ->page($page, $row)
|
|
|
/* 执行查询 */
|
|
|
->select();
|
|
|
$count=count($data);
|
|
|
//分页
|
|
|
|
|
|
$page = set_pagination($count,$row);
|
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
|
|
|
|
|
if($_REQUEST['data_order']!=''){
|
|
|
$data_order=reset(explode(',',$_REQUEST['data_order']));
|
|
|
$data_order_type=end(explode(',',$_REQUEST['data_order']));
|
|
|
$this->assign('userarpu_order',$data_order);
|
|
|
$this->assign('userarpu_order_type',$data_order_type);
|
|
|
}
|
|
|
$data=my_sort($data,$data_order_type,(int)$data_order);
|
|
|
$size=$row;//每页显示的记录数
|
|
|
$pnum = ceil(count($data) / $size); //总页数,ceil()函数用于求大于数字的最小整数
|
|
|
//用array_slice(array,offset,length) 函数在数组中根据条件取出一段值;array(数组),offset(元素的开始位置),length(组的长度)
|
|
|
$data = array_slice($data, ($arraypage-1)*$size, $size);
|
|
|
$this->assign('model', $model);
|
|
|
$this->assign('list_data', $data);
|
|
|
$this->meta_title = $model['title'].'列表';
|
|
|
$this->display($model['template_list']);
|
|
|
}
|
|
|
|
|
|
public function check_bill111($model = null,$p,$extend=array()){
|
|
|
global $countpage;
|
|
|
|
|
|
$model || $this->error('模型名标识必须!');
|
|
|
$page = intval($p);
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
|
|
|
//解析列表规则
|
|
|
$fields = $model['fields'];
|
|
|
// 关键字搜索
|
|
|
$user_map = empty($extend['user_map'])?array():$extend['user_map'];
|
|
|
$spend_map = empty($extend['spend_map'])?array():$extend['spend_map'];
|
|
|
$user = D("User");
|
|
|
$spend = D("Spend");
|
|
|
|
|
|
//读取模型数据列表
|
|
|
$data = array();
|
|
|
|
|
|
|
|
|
|
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
|
|
$user_map['is_check'] = $spend_map['is_check'] = 1;
|
|
|
$spend_map['pay_status']=1;
|
|
|
$user_map['fgame_id'] = array('neq',0);
|
|
|
$user_map1=$user_map;
|
|
|
$user_map1['parent_id']=0;
|
|
|
$user1=M("user","tab_")
|
|
|
->field('id,account,promote_id,promote_account,parent_id,fgame_id,fgame_name,count(*) as count')
|
|
|
->group("fgame_id,promote_id")
|
|
|
->where($user_map1)
|
|
|
->select();
|
|
|
$user_map['parent_id']=array("neq","0");
|
|
|
|
|
|
$user=M("user","tab_")
|
|
|
->field('id,account,promote_id,promote_account,parent_id,fgame_id,fgame_name,count(*) as count')
|
|
|
->group("fgame_id,promote_id")
|
|
|
->where($user_map)
|
|
|
->select();
|
|
|
|
|
|
// $user1 注册人数
|
|
|
foreach ($user1 as $k1 => $v1) {
|
|
|
foreach ($user as $k2 => $v2) {
|
|
|
if($v1['promote_id']==$v2['parent_id']&&$v1['fgame_id']==$v2['fgame_id']){
|
|
|
$user1[$k1]['count']+=$v2['count'];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
unset($user_map['parent_id']);
|
|
|
//查出 二级推广的父类id
|
|
|
$p1=M("promote","tab_")
|
|
|
->field("id,account,parent_id")
|
|
|
->where("parent_id <> 0 ")
|
|
|
->select();
|
|
|
|
|
|
$spend=M("spend","tab_")
|
|
|
->field('promote_id,promote_account,game_id,game_name,sum(pay_amount) as total_money')
|
|
|
->group('promote_id,game_id')
|
|
|
->where($spend_map)
|
|
|
->select();
|
|
|
|
|
|
//选出二级推广充值记录
|
|
|
foreach ($p1 as $k1 => $v1) {
|
|
|
foreach ($spend as $k2 => $v2) {
|
|
|
if($v1['id']==$v2['promote_id']){
|
|
|
$sd[$k2]=$v2;
|
|
|
$sd[$k2]['parent_id']=$v1['parent_id'];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//二级推广充值记录合并到一级
|
|
|
foreach ($sd as $k => $v) {
|
|
|
foreach ($spend as $k2 => $v2) {
|
|
|
if($v['parent_id']==$v2['promote_id']&&$v['game_id']==$v2['game_id']){
|
|
|
$spend[$k2]['total_money']=$v2['total_money']+$v['total_money'];
|
|
|
unset($spend[$k2=$k]);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
// //讲二级的推广游戏且一级没有推广的游戏充值记录 合并到一级
|
|
|
foreach ($spend as $key => $value) {
|
|
|
foreach ($p1 as $k => $v) {
|
|
|
if($value['promote_id']==$v['id']){
|
|
|
$spend[$key]['promote_id']=$v['parent_id'];
|
|
|
$spend[$key]['promote_account']=get_promote_name($v['parent_id']);
|
|
|
$spend[$key]['pp']=$value['promote_id'];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//如一级用户没有该游戏注册人数 将二级注册人数加到一级
|
|
|
foreach ($spend as $key => $value) {
|
|
|
foreach ($user as $k => $v) {
|
|
|
if($v['fgame_id']==$value['game_id']&&$v['parent_id']==$value['promote_id']){
|
|
|
$spend[$key]['total_number']=$v['count'];
|
|
|
// continue;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//将注册人数加入数组
|
|
|
foreach ($spend as $key => $value) {
|
|
|
foreach ($user1 as $k => $v) {
|
|
|
if($v['fgame_id']==$value['game_id']&&$v['promote_id']==$value['promote_id']){
|
|
|
$spend[$key]['total_number']=$v['count'];
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$timestart=$_GET['timestart'];
|
|
|
$timeend=$_GET['timeend'];
|
|
|
$this->assign('model', $model);
|
|
|
if(strlen($_GET['timeend'])>10){
|
|
|
$page=substr($_GET['timeend'],-1);
|
|
|
|
|
|
}
|
|
|
$this->assign('list_data', $this->page_array(10,$page,$spend));
|
|
|
$this->assign('_page',$this->show_array($countpage,U("Query/bill/group/1×tart=$timestart&timeend=$timeend"),$page));
|
|
|
$this->meta_title = $model['title'].'列表';
|
|
|
$this->display($model['template_list']);
|
|
|
}
|
|
|
|
|
|
|
|
|
public function check_bill($model = null,$p,$extend=array()){
|
|
|
$model || $this->error('模型名标识必须!');
|
|
|
$page = intval($p);
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
|
|
|
//解析列表规则
|
|
|
$fields = $model['fields'];
|
|
|
// 关键字搜索
|
|
|
$map0 = empty($extend[0])?array():$extend[0];
|
|
|
$map1 = empty($extend[1])?array():$extend[1];
|
|
|
|
|
|
$user = D("User");
|
|
|
$spend = D("Spend");
|
|
|
|
|
|
//读取模型数据列表
|
|
|
$data = array();
|
|
|
|
|
|
$row = 10;
|
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
|
|
$map1['is_check'] = $map0['is_check'] = 1;
|
|
|
$map0['fgame_id'] = array('neq',0);
|
|
|
|
|
|
$map1['pay_status'] = 1;
|
|
|
|
|
|
$offset = ($page-1)*$row;
|
|
|
|
|
|
$sql0 = $user->table("__USER__ as u ")
|
|
|
->field('u.id,u.promote_id,u.fgame_id as game_id,if(p.parent_id=0,u.promote_id,p.parent_id) as parent_id,u.fgame_name as game_name')
|
|
|
->join('__PROMOTE__ as p on(p.id=u.promote_id)','left')
|
|
|
->where($map0)
|
|
|
->order("u.id")
|
|
|
->group("u.id")
|
|
|
->select(false);
|
|
|
$sql0 = "select parent_id as promote_id,group_concat(promote_id) as chpids,game_id,game_name,count(id) as total_number from ("
|
|
|
.$sql0
|
|
|
." ) as a group by a.game_id,a.parent_id order by parent_id " ;
|
|
|
|
|
|
$data0 = $user->query($sql0." limit $offset,$row");
|
|
|
|
|
|
$count0 = count($user->query($sql0));
|
|
|
|
|
|
$sql1 = $spend->table("__SPEND__ as s")
|
|
|
->field("s.id,s.promote_id,s.game_id,if(p.parent_id=0,s.promote_id,p.parent_id) as parent_id,s.game_name,s.pay_amount ")
|
|
|
->join('__PROMOTE__ as p on(p.id=s.promote_id)','left')
|
|
|
->where($map1)
|
|
|
->group("id")
|
|
|
->select(false);
|
|
|
$sql1 = "select parent_id as promote_id,group_concat(promote_id) as chpids,game_id,game_name,sum(pay_amount) as total_money from ( "
|
|
|
.$sql1
|
|
|
." ) as a group by game_id,parent_id order by parent_id ";
|
|
|
|
|
|
$data1 = $spend->query($sql1." limit $offset,$row");
|
|
|
|
|
|
$count1 = count($spend->query($sql1));
|
|
|
if (!empty($data1) && !empty($data0)) {
|
|
|
foreach ($data1 as $j => $u) {
|
|
|
foreach ($data0 as $k => $v) {
|
|
|
if (($u['promote_id'] == $v['promote_id']) && ($u['game_id'] == $v['game_id'])) {
|
|
|
if ($u['chpids'] !== $v['chpids']) {
|
|
|
$uchpids = (explode(',',$u['chpids']));
|
|
|
$schpids = (explode(',',$v['chpids']));
|
|
|
$chpids = array_unique(array_merge($uchpids,$schpids));
|
|
|
sort($chpids);
|
|
|
$u['chpids'] = $v['chpids'] = implode(',',$chpids);
|
|
|
}
|
|
|
$data[] = array_merge($u,$v);unset($data1[$j]);unset($data0[$k]);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
$data = array_merge($data,$data0,$data1);
|
|
|
} elseif (!empty($data0)) {$data = $data0;}
|
|
|
elseif (!empty($data1)) {$data = $data1;}
|
|
|
|
|
|
$count = $count0>$count1?$count0:$count1;
|
|
|
|
|
|
//分页
|
|
|
|
|
|
if($count > $row){
|
|
|
$page = new \Think\Page($count, $row);
|
|
|
$page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
|
|
|
$this->assign('_page', $page->show());
|
|
|
}
|
|
|
$this->assign('model', $model);
|
|
|
$this->assign('list_data', $data);
|
|
|
$this->meta_title = $model['title'].'列表';
|
|
|
$this->display($model['template_list']);
|
|
|
}
|
|
|
|
|
|
public function page_array($count,$page,$array,$order=0){
|
|
|
global $countpage; #定全局变量
|
|
|
$page=(empty($page))?'1':$page; #判断当前页面是否为空 如果为空就表示为第一页面
|
|
|
$start=($page-1)*$count; #计算每次分页的开始位置
|
|
|
if($order==1){
|
|
|
$array=array_reverse($array);
|
|
|
}
|
|
|
$totals=count($array);
|
|
|
$countpage=ceil($totals/$count); #计算总页面数
|
|
|
$pagedata=array();
|
|
|
$pagedata=array_slice($array,$start,$count);
|
|
|
return $pagedata; #返回查询数据
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 分页及显示函数
|
|
|
* $countpage 全局变量,照写
|
|
|
* $url 当前url
|
|
|
*/
|
|
|
public function show_array($countpage,$url,$page){
|
|
|
$page=empty($page)?1:$page;
|
|
|
if($page > 1){
|
|
|
$uppage=$page-1;
|
|
|
}else{
|
|
|
$uppage=1;
|
|
|
}
|
|
|
if($page < $countpage){
|
|
|
$nextpage=$page+1;
|
|
|
|
|
|
}else{
|
|
|
$nextpage=$countpage;
|
|
|
}
|
|
|
$str='<div style="border:1px; height:30px; color:#9999CC">';
|
|
|
$str.="<p>共 {$countpage} 页 / 第 {$page} 页</p>";
|
|
|
$str.="<span class='current'><a href='$url/page/1'> 首页 </a></span>";
|
|
|
$str.="<span><a href='$url/page/{$uppage}'> 上一页 </a></span>";
|
|
|
$str.="<span><a href='$url/page/{$nextpage}'>下一页 </a></span>";
|
|
|
$str.="<span><a href='$url/page/{$countpage}'>尾页 </a></span>";
|
|
|
$str.='</div>';
|
|
|
return $str;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function cpsettl_list($model = null,$p,$extend=array()){
|
|
|
$model || $this->error('模型名标识必须!');
|
|
|
$page = intval($p);
|
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
|
//解析列表规则
|
|
|
$fields = $model['fields'];
|
|
|
// 关键字搜索
|
|
|
$map = empty($extend)?array():$extend;
|
|
|
|
|
|
|
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
//读取模型数据列表
|
|
|
$name = $model['m_name'];
|
|
|
// var_dump($fields);exit;
|
|
|
$new_model = M($name,'tab_');
|
|
|
$data = $new_model
|
|
|
->field($fields.",g.developers")
|
|
|
// 查询条件
|
|
|
->where($map)
|
|
|
/* 默认通过id逆序排列 */
|
|
|
->order($model['order'])
|
|
|
->join('tab_game as g on g.id=s.game_id','LEFT')
|
|
|
//根据字段分组
|
|
|
->group($model['group'])
|
|
|
/* 数据分页 */
|
|
|
->page($page,$row)
|
|
|
->order($model['order'])
|
|
|
/* 执行查询 */
|
|
|
->select();
|
|
|
/* 查询记录总数 */
|
|
|
$count = $new_model
|
|
|
->field($fields)
|
|
|
// 查询条件
|
|
|
->where($map)
|
|
|
/* 默认通过id逆序排列 */
|
|
|
->order($model['order'])
|
|
|
->join('tab_game as g on g.id=s.game_id','LEFT')
|
|
|
//根据字段分组
|
|
|
->group($model['group'])
|
|
|
/* 执行查询 */
|
|
|
->select();
|
|
|
$count=count($count);
|
|
|
static $alltotal=0;
|
|
|
// var_dump($data);exit;
|
|
|
foreach ($data as $key => $value) {
|
|
|
$alltotal=$alltotal+$value['total']*$value['selle_ratio']/100;
|
|
|
}
|
|
|
//分页
|
|
|
|
|
|
$page = set_pagination($count,$row);
|
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
|
|
$this->assign('model', $model);
|
|
|
$this->assign('data', $data);
|
|
|
$this->assign('alltotal', $alltotal);
|
|
|
|
|
|
$this->display($model['template_list']);
|
|
|
|
|
|
}
|
|
|
} |