You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

374 lines
12 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace Admin\Event;
use Think\Controller;
/**
* 后台事件控制器
* @author 鹿文学
*/
class BillEvent extends ThinkEvent {
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();
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
$map1['partake_status'] = $map0['partake_status'] = 1;
$map0['game_id'] = array('neq','');
$offset = ($page-1)*$row;
$sql0 = $user->table("__USER__ as u ")
->field('u.id,u.promote_id,up.game_id,if(p.parent_id=0,u.promote_id,p.parent_id) as parent_id,up.game_name')
->join('__USER_PLAY__ as up ON (u.id=up.user_id )','left')
->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,game_id,game_name,parent_id,count(id) as total_number from ("
.$sql0
." ) as a group by game_id,promote_id order by parent_id " ;
$sql00 = "select promote_id,game_id,game_name,sum(total_number) as total_number from ("
.$sql0
.") as b group by parent_id";
$data0 = $user->query($sql00." 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,game_id,parent_id,game_name,sum(pay_amount) as total_amount from ( "
.$sql1
." ) as a group by game_id,promote_id ";
$sql11 = "select promote_id,game_id,game_name,sum(total_amount) as total_amount from ("
.$sql1
." ) as b group by parent_id ";
$data1 = $spend->query($sql11." 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'])) {
$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;
//分页
$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 bill_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['status'] = 1;
// 条件搜索
foreach($_REQUEST as $name=>$val){
switch ($name) {
case 'group':break;
case 'timestart':
$map['bill_start_time'] = array('egt',strtotime($val));
break;
case 'timeend':
$map['bill_end_time'] = array('elt',strtotime($val)+24*60*60-1);
break;
default :
if ($val == '全部') {$map[$name]=array('like','%%');}
else
$map[$name]=array('like','%'.$val.'%');
break;
}
}
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
//读取模型数据列表
$name = $model['m_name'];
$new_model = D($name);
$data = D($name)
->where($map)
->order($model['order'])
->page($page, $row)
->select();
$count = D($name)->where($map)->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 show_bill($model = null,$p,$extend=array()) {
$model || $this->error('模型名标识必须!');
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
//解析列表规则
$fields = $model['fields'];
// 关键字搜索
$map = empty($extend)?array():$extend;
$map['b.status'] = 1;
// $map['a.status'] = 1;
$map['b.settlement_status']=0;
// 条件搜索
foreach($_REQUEST as $name=>$val){
switch ($name) {
case 'group':break;
case 'timestart':
$map['bill_start_time'] = array('egt',strtotime($val));
break;
case 'timeend':
$map['bill_end_time'] = array('elt',strtotime($val)+24*60*60-1);
break;
case 'pattern':
$map['pattern']=array('like',$val);break;
case 'p':
break;
default :
if ($val == '全部') {$map['b.'.$name]=array('like','%%');}
else
$map['b.'.$name]=array('like','%'.$val.'%');
break;
}
}
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
//读取模型数据列表
$name = $model['m_name'];$table = "__".strtoupper($name)."__ as ".strtolower(substr($name,0,1));
$new_model = D($name);
$data = D($name)->field("b.*,a.money,a.ratio")
->table($table)
->join("__GAME__ as a on(a.id=b.game_id)",'LEFT')
->where($map)
->order($model['order'])
->page($page, $row)
->select();
// var_dump(D($name)->getlastsql());exit;
$count = D($name)->table($table)
->join("__APPLY__ as a on(a.game_id=b.game_id and a.promote_id = b.promote_id)","LEFT")
->where($map)->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 settlement($model = null,$p,$extend=array()) {
$model || $this->error('模型名标识必须!');
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
//解析列表规则
$fields = $model['fields'];
// 关键字搜索
$map = empty($extend)?array():$extend;
$map['status'] = 1;
// 条件搜索
foreach($_REQUEST as $name=>$val){
switch ($name) {
case 'group':break;
case 'timestart':
$map['create_time'] = array('egt',strtotime($val));
break;
case 'timeend':
$map['create_time'] = array('elt',strtotime($val)+24*60*60-1);
break;
default :
if ($val == '全部') {$map[$name]=array('like','%%');}
else
$map[$name]=array('like','%'.$val.'%');
break;
}
}
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
//读取模型数据列表
$name = $model['m_name'];
$new_model = D($name);
$data = D($name)
->where($map)
->order($model['order'])
->page($page, $row)
->select();
$count = D($name)->where($map)->count();
$total = 0;
foreach ($data as $v) {
$total += $v['sum_money'];
}
//分页
$page = set_pagination($count,$row);
if($page) {$this->assign('_page', $page);}
$this->assign('model', $model);
$this->assign('list_data', $data);
$this->assign('total',$total);
$this->meta_title = $model['title'].'列表';
$this->display($model['template_list']);
}
public function money_list($model = null,$p,$extend=array()) {
$model || $this->error('模型名标识必须!');
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
$arraypage=$page;
//解析列表规则
$fields = $model['fields'];
// 关键字搜索
$map = empty($extend)?array():$extend;
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
//读取模型数据列表
$name = $model['m_name'];
$new_model = D($name);
$data = D($name)
->field($model['fields'])
->where($map)
->order($model['order'])
->group($model['group'])
// ->page($page, $row)
->select();
// $count = D($name)->where($map)->count();
$count=count($data);
$to_map=$map;
//$to_map['status']=1;
$total = D($name)
->where($to_map)
->order($model['order'])
->page($page, $row)
->sum("sum_money*10000");
$total = $total/10000;
//分页
$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->assign('total',$total==null?0:$total);
$this->meta_title = $model['title'].'列表';
$this->display($model['template_list']);
}
}